@digitaldefiance/ecies-lib 1.1.24 → 1.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/README.md +4 -0
  2. package/package.json +5 -4
  3. package/src/constants.d.ts +46 -0
  4. package/src/constants.d.ts.map +1 -0
  5. package/src/constants.js +358 -0
  6. package/src/constants.js.map +1 -0
  7. package/src/email-string.d.ts +42 -0
  8. package/src/email-string.d.ts.map +1 -0
  9. package/src/email-string.js +73 -0
  10. package/src/email-string.js.map +1 -0
  11. package/src/enumerations/ecies-encryption-type.d.ts +15 -0
  12. package/src/enumerations/ecies-encryption-type.d.ts.map +1 -0
  13. package/src/enumerations/ecies-encryption-type.js +71 -0
  14. package/src/enumerations/ecies-encryption-type.js.map +1 -0
  15. package/src/enumerations/ecies-error-type.d.ts +32 -0
  16. package/src/enumerations/ecies-error-type.d.ts.map +1 -0
  17. package/src/enumerations/ecies-error-type.js +36 -0
  18. package/src/enumerations/ecies-error-type.js.map +1 -0
  19. package/src/enumerations/ecies-string-key.d.ts +96 -0
  20. package/src/enumerations/ecies-string-key.d.ts.map +1 -0
  21. package/src/enumerations/ecies-string-key.js +105 -0
  22. package/src/enumerations/ecies-string-key.js.map +1 -0
  23. package/src/enumerations/guid-brand-type.d.ts +27 -0
  24. package/src/enumerations/guid-brand-type.d.ts.map +1 -0
  25. package/src/enumerations/guid-brand-type.js +31 -0
  26. package/src/enumerations/guid-brand-type.js.map +1 -0
  27. package/src/enumerations/guid-error-type.d.ts +7 -0
  28. package/src/enumerations/guid-error-type.d.ts.map +1 -0
  29. package/src/enumerations/guid-error-type.js +11 -0
  30. package/src/enumerations/guid-error-type.js.map +1 -0
  31. package/src/enumerations/{index.ts → index.d.ts} +1 -0
  32. package/src/enumerations/index.d.ts.map +1 -0
  33. package/src/enumerations/index.js +18 -0
  34. package/src/enumerations/index.js.map +1 -0
  35. package/src/enumerations/invalid-email-type.d.ts +6 -0
  36. package/src/enumerations/invalid-email-type.d.ts.map +1 -0
  37. package/src/enumerations/invalid-email-type.js +10 -0
  38. package/src/enumerations/invalid-email-type.js.map +1 -0
  39. package/src/enumerations/length-encoding-type.d.ts +7 -0
  40. package/src/enumerations/length-encoding-type.d.ts.map +1 -0
  41. package/src/enumerations/length-encoding-type.js +11 -0
  42. package/src/enumerations/length-encoding-type.js.map +1 -0
  43. package/src/enumerations/length-error-type.d.ts +6 -0
  44. package/src/enumerations/length-error-type.d.ts.map +1 -0
  45. package/src/enumerations/length-error-type.js +10 -0
  46. package/src/enumerations/length-error-type.js.map +1 -0
  47. package/src/enumerations/member-error-type.d.ts +87 -0
  48. package/src/enumerations/member-error-type.d.ts.map +1 -0
  49. package/src/enumerations/member-error-type.js +91 -0
  50. package/src/enumerations/member-error-type.js.map +1 -0
  51. package/src/enumerations/{member-type.ts → member-type.d.ts} +6 -7
  52. package/src/enumerations/member-type.d.ts.map +1 -0
  53. package/src/enumerations/member-type.js +19 -0
  54. package/src/enumerations/member-type.js.map +1 -0
  55. package/src/enumerations/password-login-error-type.d.ts +5 -0
  56. package/src/enumerations/password-login-error-type.d.ts.map +1 -0
  57. package/src/enumerations/password-login-error-type.js +9 -0
  58. package/src/enumerations/password-login-error-type.js.map +1 -0
  59. package/src/enumerations/pbkdf2-error-type.d.ts +6 -0
  60. package/src/enumerations/pbkdf2-error-type.d.ts.map +1 -0
  61. package/src/enumerations/pbkdf2-error-type.js +10 -0
  62. package/src/enumerations/pbkdf2-error-type.js.map +1 -0
  63. package/src/enumerations/pbkdf2-profile.d.ts +6 -0
  64. package/src/enumerations/pbkdf2-profile.d.ts.map +1 -0
  65. package/src/enumerations/pbkdf2-profile.js +10 -0
  66. package/src/enumerations/pbkdf2-profile.js.map +1 -0
  67. package/src/enumerations/secure-storage-error-type.d.ts +6 -0
  68. package/src/enumerations/secure-storage-error-type.d.ts.map +1 -0
  69. package/src/enumerations/secure-storage-error-type.js +10 -0
  70. package/src/enumerations/secure-storage-error-type.js.map +1 -0
  71. package/src/errors/disposed.d.ts +4 -0
  72. package/src/errors/disposed.d.ts.map +1 -0
  73. package/src/errors/disposed.js +20 -0
  74. package/src/errors/disposed.js.map +1 -0
  75. package/src/errors/ecies.d.ts +7 -0
  76. package/src/errors/ecies.d.ts.map +1 -0
  77. package/src/errors/ecies.js +15 -0
  78. package/src/errors/ecies.js.map +1 -0
  79. package/src/errors/guid.d.ts +15 -0
  80. package/src/errors/guid.d.ts.map +1 -0
  81. package/src/errors/guid.js +26 -0
  82. package/src/errors/guid.js.map +1 -0
  83. package/src/errors/{index.ts → index.d.ts} +1 -0
  84. package/src/errors/index.d.ts.map +1 -0
  85. package/src/errors/index.js +12 -0
  86. package/src/errors/index.js.map +1 -0
  87. package/src/errors/invalid-email.d.ts +7 -0
  88. package/src/errors/invalid-email.d.ts.map +1 -0
  89. package/src/errors/invalid-email.js +14 -0
  90. package/src/errors/invalid-email.js.map +1 -0
  91. package/src/errors/length.d.ts +7 -0
  92. package/src/errors/length.d.ts.map +1 -0
  93. package/src/errors/length.js +14 -0
  94. package/src/errors/length.js.map +1 -0
  95. package/src/errors/member.d.ts +7 -0
  96. package/src/errors/member.d.ts.map +1 -0
  97. package/src/errors/member.js +14 -0
  98. package/src/errors/member.js.map +1 -0
  99. package/src/errors/pbkdf2.d.ts +7 -0
  100. package/src/errors/pbkdf2.d.ts.map +1 -0
  101. package/src/errors/pbkdf2.js +14 -0
  102. package/src/errors/pbkdf2.js.map +1 -0
  103. package/src/errors/secure-storage.d.ts +7 -0
  104. package/src/errors/secure-storage.d.ts.map +1 -0
  105. package/src/errors/secure-storage.js +15 -0
  106. package/src/errors/secure-storage.js.map +1 -0
  107. package/src/errors/simple-ecies.d.ts +6 -0
  108. package/src/errors/simple-ecies.d.ts.map +1 -0
  109. package/src/errors/simple-ecies.js +15 -0
  110. package/src/errors/simple-ecies.js.map +1 -0
  111. package/src/errors/simple-test-error.d.ts +4 -0
  112. package/src/errors/simple-test-error.d.ts.map +1 -0
  113. package/src/errors/simple-test-error.js +11 -0
  114. package/src/errors/simple-test-error.js.map +1 -0
  115. package/src/guid.d.ts +153 -0
  116. package/src/guid.d.ts.map +1 -0
  117. package/src/guid.js +615 -0
  118. package/src/guid.js.map +1 -0
  119. package/src/i18n-setup.d.ts +24 -0
  120. package/src/i18n-setup.d.ts.map +1 -0
  121. package/src/i18n-setup.js +837 -0
  122. package/src/i18n-setup.js.map +1 -0
  123. package/src/{index.ts → index.d.ts} +1 -0
  124. package/src/index.d.ts.map +1 -0
  125. package/src/index.js +19 -0
  126. package/src/index.js.map +1 -0
  127. package/src/interfaces/checksum-config.d.ts +5 -0
  128. package/src/interfaces/checksum-config.d.ts.map +1 -0
  129. package/src/interfaces/checksum-config.js +3 -0
  130. package/src/interfaces/checksum-config.js.map +1 -0
  131. package/src/interfaces/checksum-consts.d.ts +11 -0
  132. package/src/interfaces/checksum-consts.d.ts.map +1 -0
  133. package/src/interfaces/checksum-consts.js +3 -0
  134. package/src/interfaces/checksum-consts.js.map +1 -0
  135. package/src/interfaces/constants.d.ts +45 -0
  136. package/src/interfaces/constants.d.ts.map +1 -0
  137. package/src/interfaces/constants.js +3 -0
  138. package/src/interfaces/constants.js.map +1 -0
  139. package/src/interfaces/ecies-config.d.ts +9 -0
  140. package/src/interfaces/ecies-config.d.ts.map +1 -0
  141. package/src/interfaces/ecies-config.js +3 -0
  142. package/src/interfaces/ecies-config.js.map +1 -0
  143. package/src/interfaces/ecies-consts.d.ts +58 -0
  144. package/src/interfaces/ecies-consts.d.ts.map +1 -0
  145. package/src/interfaces/ecies-consts.js +3 -0
  146. package/src/interfaces/ecies-consts.js.map +1 -0
  147. package/src/interfaces/ecies-file-service.d.ts +7 -0
  148. package/src/interfaces/ecies-file-service.d.ts.map +1 -0
  149. package/src/interfaces/ecies-file-service.js +3 -0
  150. package/src/interfaces/ecies-file-service.js.map +1 -0
  151. package/src/interfaces/guid.d.ts +45 -0
  152. package/src/interfaces/guid.d.ts.map +1 -0
  153. package/src/interfaces/guid.js +3 -0
  154. package/src/interfaces/guid.js.map +1 -0
  155. package/src/interfaces/{index.ts → index.d.ts} +1 -0
  156. package/src/interfaces/index.d.ts.map +1 -0
  157. package/src/interfaces/index.js +17 -0
  158. package/src/interfaces/index.js.map +1 -0
  159. package/src/interfaces/library-error.d.ts +23 -0
  160. package/src/interfaces/library-error.d.ts.map +1 -0
  161. package/src/interfaces/library-error.js +3 -0
  162. package/src/interfaces/library-error.js.map +1 -0
  163. package/src/interfaces/member-operational.d.ts +40 -0
  164. package/src/interfaces/member-operational.d.ts.map +1 -0
  165. package/src/interfaces/member-operational.js +3 -0
  166. package/src/interfaces/member-operational.js.map +1 -0
  167. package/src/interfaces/{member-storage.ts → member-storage.d.ts} +10 -11
  168. package/src/interfaces/member-storage.d.ts.map +1 -0
  169. package/src/interfaces/member-storage.js +3 -0
  170. package/src/interfaces/member-storage.js.map +1 -0
  171. package/src/interfaces/{member-with-mnemonic.ts → member-with-mnemonic.d.ts} +3 -3
  172. package/src/interfaces/member-with-mnemonic.d.ts.map +1 -0
  173. package/src/interfaces/member-with-mnemonic.js +3 -0
  174. package/src/interfaces/member-with-mnemonic.js.map +1 -0
  175. package/src/interfaces/pbkdf2-config.d.ts +7 -0
  176. package/src/interfaces/pbkdf2-config.d.ts.map +1 -0
  177. package/src/interfaces/pbkdf2-config.js +3 -0
  178. package/src/interfaces/pbkdf2-config.js.map +1 -0
  179. package/src/interfaces/pbkdf2-consts.d.ts +9 -0
  180. package/src/interfaces/pbkdf2-consts.d.ts.map +1 -0
  181. package/src/interfaces/pbkdf2-consts.js +3 -0
  182. package/src/interfaces/pbkdf2-consts.js.map +1 -0
  183. package/src/interfaces/pbkdf2-result.d.ts +6 -0
  184. package/src/interfaces/pbkdf2-result.d.ts.map +1 -0
  185. package/src/interfaces/pbkdf2-result.js +3 -0
  186. package/src/interfaces/pbkdf2-result.js.map +1 -0
  187. package/src/member.d.ts +66 -0
  188. package/src/member.d.ts.map +1 -0
  189. package/src/member.js +269 -0
  190. package/src/member.js.map +1 -0
  191. package/src/{pbkdf2-profiles.ts → pbkdf2-profiles.d.ts} +2 -2
  192. package/src/pbkdf2-profiles.d.ts.map +1 -0
  193. package/src/pbkdf2-profiles.js +3 -0
  194. package/src/pbkdf2-profiles.js.map +1 -0
  195. package/src/phone-number.d.ts +6 -0
  196. package/src/phone-number.d.ts.map +1 -0
  197. package/src/phone-number.js +22 -0
  198. package/src/phone-number.js.map +1 -0
  199. package/src/regexes.d.ts +7 -0
  200. package/src/regexes.d.ts.map +1 -0
  201. package/src/regexes.js +10 -0
  202. package/src/regexes.js.map +1 -0
  203. package/src/secure-buffer.d.ts +38 -0
  204. package/src/secure-buffer.d.ts.map +1 -0
  205. package/src/secure-buffer.js +168 -0
  206. package/src/secure-buffer.js.map +1 -0
  207. package/src/secure-string.d.ts +39 -0
  208. package/src/secure-string.d.ts.map +1 -0
  209. package/src/secure-string.js +195 -0
  210. package/src/secure-string.js.map +1 -0
  211. package/src/services/aes-gcm.d.ts +57 -0
  212. package/src/services/aes-gcm.d.ts.map +1 -0
  213. package/src/services/aes-gcm.js +111 -0
  214. package/src/services/aes-gcm.js.map +1 -0
  215. package/src/services/ecies/crypto-core.d.ts +51 -0
  216. package/src/services/ecies/crypto-core.d.ts.map +1 -0
  217. package/src/services/ecies/crypto-core.js +139 -0
  218. package/src/services/ecies/crypto-core.js.map +1 -0
  219. package/src/services/ecies/example.d.ts +25 -0
  220. package/src/services/ecies/example.d.ts.map +1 -0
  221. package/src/services/ecies/example.js +128 -0
  222. package/src/services/ecies/example.js.map +1 -0
  223. package/src/services/ecies/file.d.ts +18 -0
  224. package/src/services/ecies/file.d.ts.map +1 -0
  225. package/src/services/ecies/file.js +110 -0
  226. package/src/services/ecies/file.js.map +1 -0
  227. package/src/services/ecies/{index.ts → index.d.ts} +1 -3
  228. package/src/services/ecies/index.d.ts.map +1 -0
  229. package/src/services/ecies/index.js +44 -0
  230. package/src/services/ecies/index.js.map +1 -0
  231. package/src/services/ecies/integration.d.ts +59 -0
  232. package/src/services/ecies/integration.d.ts.map +1 -0
  233. package/src/services/ecies/integration.js +172 -0
  234. package/src/services/ecies/integration.js.map +1 -0
  235. package/src/services/ecies/interfaces.d.ts +51 -0
  236. package/src/services/ecies/interfaces.d.ts.map +1 -0
  237. package/src/services/ecies/interfaces.js +6 -0
  238. package/src/services/ecies/interfaces.js.map +1 -0
  239. package/src/services/ecies/manual-test.d.ts +29 -0
  240. package/src/services/ecies/manual-test.d.ts.map +1 -0
  241. package/src/services/ecies/manual-test.js +171 -0
  242. package/src/services/ecies/manual-test.js.map +1 -0
  243. package/src/services/ecies/multi-recipient.d.ts +52 -0
  244. package/src/services/ecies/multi-recipient.d.ts.map +1 -0
  245. package/src/services/ecies/multi-recipient.js +243 -0
  246. package/src/services/ecies/multi-recipient.js.map +1 -0
  247. package/src/services/ecies/service.d.ts +104 -0
  248. package/src/services/ecies/service.d.ts.map +1 -0
  249. package/src/services/ecies/service.js +192 -0
  250. package/src/services/ecies/service.js.map +1 -0
  251. package/src/services/ecies/signature.d.ts +27 -0
  252. package/src/services/ecies/signature.d.ts.map +1 -0
  253. package/src/services/ecies/signature.js +76 -0
  254. package/src/services/ecies/signature.js.map +1 -0
  255. package/src/services/ecies/single-recipient.d.ts +46 -0
  256. package/src/services/ecies/single-recipient.d.ts.map +1 -0
  257. package/src/services/ecies/single-recipient.js +212 -0
  258. package/src/services/ecies/single-recipient.js.map +1 -0
  259. package/src/services/{index.ts → index.d.ts} +1 -0
  260. package/src/services/index.d.ts.map +1 -0
  261. package/src/services/index.js +9 -0
  262. package/src/services/index.js.map +1 -0
  263. package/src/services/password-login.d.ts +49 -0
  264. package/src/services/password-login.d.ts.map +1 -0
  265. package/src/services/password-login.js +121 -0
  266. package/src/services/password-login.js.map +1 -0
  267. package/src/services/pbkdf2.d.ts +56 -0
  268. package/src/services/pbkdf2.d.ts.map +1 -0
  269. package/src/services/pbkdf2.js +114 -0
  270. package/src/services/pbkdf2.js.map +1 -0
  271. package/src/services/xor.d.ts +37 -0
  272. package/src/services/xor.d.ts.map +1 -0
  273. package/src/services/xor.js +67 -0
  274. package/src/services/xor.js.map +1 -0
  275. package/src/types/deep-partial.d.ts +4 -0
  276. package/src/types/deep-partial.d.ts.map +1 -0
  277. package/src/types/deep-partial.js +3 -0
  278. package/src/types/deep-partial.js.map +1 -0
  279. package/src/{types.ts → types.d.ts} +4 -10
  280. package/src/types.d.ts.map +1 -0
  281. package/src/types.js +3 -0
  282. package/src/types.js.map +1 -0
  283. package/src/utils.d.ts +68 -0
  284. package/src/utils.d.ts.map +1 -0
  285. package/src/utils.js +288 -0
  286. package/src/utils.js.map +1 -0
  287. package/LICENSE +0 -21
  288. package/src/constants.ts +0 -474
  289. package/src/email-string.ts +0 -83
  290. package/src/enumerations/ecies-encryption-type.ts +0 -102
  291. package/src/enumerations/ecies-error-type.ts +0 -31
  292. package/src/enumerations/ecies-string-key.ts +0 -108
  293. package/src/enumerations/guid-brand-type.ts +0 -26
  294. package/src/enumerations/guid-error-type.ts +0 -6
  295. package/src/enumerations/invalid-email-type.ts +0 -5
  296. package/src/enumerations/length-encoding-type.ts +0 -6
  297. package/src/enumerations/length-error-type.ts +0 -5
  298. package/src/enumerations/member-error-type.ts +0 -106
  299. package/src/enumerations/password-login-error-type.ts +0 -4
  300. package/src/enumerations/pbkdf2-error-type.ts +0 -5
  301. package/src/enumerations/pbkdf2-profile.ts +0 -5
  302. package/src/enumerations/secure-storage-error-type.ts +0 -5
  303. package/src/errors/disposed.ts +0 -15
  304. package/src/errors/ecies.ts +0 -34
  305. package/src/errors/guid.ts +0 -34
  306. package/src/errors/invalid-email.ts +0 -11
  307. package/src/errors/length.ts +0 -11
  308. package/src/errors/member.ts +0 -12
  309. package/src/errors/pbkdf2.ts +0 -12
  310. package/src/errors/secure-storage.ts +0 -13
  311. package/src/errors/simple-ecies.ts +0 -18
  312. package/src/errors/simple-test-error.ts +0 -6
  313. package/src/guid.ts +0 -800
  314. package/src/i18n-setup.ts +0 -1312
  315. package/src/interfaces/checksum-config.ts +0 -4
  316. package/src/interfaces/checksum-consts.ts +0 -13
  317. package/src/interfaces/constants.ts +0 -48
  318. package/src/interfaces/ecies-config.ts +0 -8
  319. package/src/interfaces/ecies-consts.ts +0 -70
  320. package/src/interfaces/ecies-file-service.ts +0 -6
  321. package/src/interfaces/guid.ts +0 -53
  322. package/src/interfaces/library-error.ts +0 -23
  323. package/src/interfaces/member-operational.ts +0 -54
  324. package/src/interfaces/pbkdf2-config.ts +0 -6
  325. package/src/interfaces/pbkdf2-consts.ts +0 -10
  326. package/src/interfaces/pbkdf2-result.ts +0 -5
  327. package/src/member.ts +0 -429
  328. package/src/phone-number.ts +0 -18
  329. package/src/regexes.ts +0 -10
  330. package/src/secure-buffer.ts +0 -183
  331. package/src/secure-string.ts +0 -229
  332. package/src/services/aes-gcm.ts +0 -177
  333. package/src/services/ecies/README.md +0 -147
  334. package/src/services/ecies/crypto-core.ts +0 -180
  335. package/src/services/ecies/example.ts +0 -185
  336. package/src/services/ecies/file.ts +0 -167
  337. package/src/services/ecies/integration.ts +0 -241
  338. package/src/services/ecies/interfaces.ts +0 -59
  339. package/src/services/ecies/manual-test.ts +0 -219
  340. package/src/services/ecies/multi-recipient.ts +0 -394
  341. package/src/services/ecies/service.ts +0 -317
  342. package/src/services/ecies/signature.ts +0 -93
  343. package/src/services/ecies/single-recipient.ts +0 -340
  344. package/src/services/password-login.ts +0 -228
  345. package/src/services/pbkdf2.ts +0 -172
  346. package/src/services/xor.ts +0 -65
  347. package/src/types/deep-partial.ts +0 -11
  348. package/src/utils.ts +0 -331
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/utils.ts"],"names":[],"mappings":"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"}
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Digital Defiance
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
package/src/constants.ts DELETED
@@ -1,474 +0,0 @@
1
- import { ObjectId } from 'bson';
2
- import { ECIESErrorTypeEnum, EciesStringKey } from './enumerations';
3
- import { Pbkdf2ProfileEnum } from './enumerations/pbkdf2-profile';
4
- import { ECIESError } from './errors/ecies';
5
- import { EciesComponentId, getEciesI18nEngine } from './i18n-setup';
6
- import { IChecksumConsts } from './interfaces';
7
- import { IConstants } from './interfaces/constants';
8
- import { DeepPartial } from './types/deep-partial';
9
- import { IECIESConstants } from './interfaces/ecies-consts';
10
- import { IPBkdf2Consts } from './interfaces/pbkdf2-consts';
11
- import { Pbkdf2Profiles } from './pbkdf2-profiles';
12
- import { MNEMONIC_REGEX, PASSWORD_REGEX } from './regexes';
13
-
14
- export const UINT8_SIZE: number = 1 as const;
15
- export const UINT16_SIZE: number = 2 as const;
16
- export const UINT16_MAX: number = 65535 as const;
17
- export const UINT32_SIZE: number = 4 as const;
18
- export const UINT32_MAX: number = 4294967295 as const;
19
- export const UINT64_SIZE: number = 8 as const;
20
- export const UINT64_MAX: bigint = 18446744073709551615n as const;
21
- export const GUID_SIZE: number = 16 as const;
22
-
23
- const objectIdLength = new ObjectId().toHexString().length / 2;
24
-
25
- if (objectIdLength !== 12) {
26
- console.warn(
27
- 'ObjectID length may have changed, breaking encryption',
28
- objectIdLength,
29
- );
30
- }
31
-
32
- /**
33
- * Constants for checksum operations
34
- * These values are critical for data integrity and MUST NOT be changed
35
- * in an already established system as it will break all existing checksums.
36
- */
37
- export const CHECKSUM: IChecksumConsts = Object.freeze({
38
- /** Default hash bits for SHA3 */
39
- SHA3_DEFAULT_HASH_BITS: 512 as const,
40
-
41
- /** Length of a SHA3 checksum buffer in bytes */
42
- SHA3_BUFFER_LENGTH: 64 as const,
43
-
44
- /** algorithm to use for checksum */
45
- ALGORITHM: 'sha3-512' as const,
46
-
47
- /** encoding to use for checksum */
48
- ENCODING: 'hex' as const,
49
- } as const);
50
-
51
- export const PBKDF2: IPBkdf2Consts = Object.freeze({
52
- ALGORITHM: 'SHA-256' as const,
53
- SALT_BYTES: 32 as const,
54
- /**
55
- * Number of pbkdf2 iterations per second when hashing a password.
56
- * This is the high-security default for user login operations.
57
- */
58
- ITERATIONS_PER_SECOND: 1304000 as const,
59
- } as const);
60
-
61
- export const PBKDF2_PROFILES: Pbkdf2Profiles = Object.freeze({
62
- [Pbkdf2ProfileEnum.BROWSER_PASSWORD]: Object.freeze({
63
- hashBytes: 32 as const,
64
- saltBytes: 64 as const,
65
- iterations: 2000000 as const,
66
- algorithm: 'SHA-512' as const,
67
- } as const),
68
- [Pbkdf2ProfileEnum.HIGH_SECURITY]: Object.freeze({
69
- hashBytes: 64 as const,
70
- saltBytes: 32 as const,
71
- iterations: 5000000 as const,
72
- algorithm: 'SHA-256' as const,
73
- } as const),
74
- [Pbkdf2ProfileEnum.TEST_FAST]: Object.freeze({
75
- hashBytes: 32 as const,
76
- saltBytes: 64 as const,
77
- iterations: 1000 as const,
78
- algorithm: 'SHA-512' as const,
79
- } as const),
80
- } as const);
81
-
82
- const ECIES_SYMMETRIC_KEY_SIZE = 32 as const;
83
- const ECIES_PUBLIC_KEY_LENGTH = 65 as const;
84
- const ECIES_RAW_PUBLIC_KEY_LENGTH = 64 as const;
85
- const ECIES_IV_SIZE = 16 as const;
86
- const ECIES_AUTH_TAG_SIZE = 16 as const;
87
- const ECIES_MULTIPLE_RECIPIENT_ID_SIZE = 16 as const;
88
-
89
- // Define the expected value for SIMPLE.FIXED_OVERHEAD_SIZE
90
- const expectedSimpleOverhead =
91
- UINT8_SIZE + ECIES_PUBLIC_KEY_LENGTH + ECIES_IV_SIZE + ECIES_AUTH_TAG_SIZE;
92
-
93
- // Define the expected value for MULTIPLE.FIXED_OVERHEAD_SIZE
94
- // Includes: type (1) + IV (16) + auth tag (16) = 33 (no CRC, AES-GCM provides authentication)
95
- const expectedMultipleOverhead =
96
- UINT8_SIZE + ECIES_IV_SIZE + ECIES_AUTH_TAG_SIZE;
97
-
98
- // Update ENCRYPTED_KEY_SIZE to match Simple encryption (no CRC)
99
- const expectedMultipleEncryptedKeySize =
100
- ECIES_PUBLIC_KEY_LENGTH +
101
- ECIES_IV_SIZE +
102
- ECIES_AUTH_TAG_SIZE +
103
- ECIES_SYMMETRIC_KEY_SIZE;
104
-
105
- export const ECIES: IECIESConstants = Object.freeze({
106
- /** The elliptic curve to use for all ECDSA operations */
107
- CURVE_NAME: 'secp256k1' as const,
108
-
109
- /** The primary key derivation path for HD wallets */
110
- PRIMARY_KEY_DERIVATION_PATH: "m/44'/60'/0'/0/0" as const,
111
-
112
- SYMMETRIC_ALGORITHM_CONFIGURATION: 'aes-256-gcm' as const,
113
-
114
- /** Length of ECDSA signatures in bytes */
115
- SIGNATURE_SIZE: 64 as const,
116
-
117
- /** Length of raw public keys in bytes (without 0x04 prefix) */
118
- RAW_PUBLIC_KEY_LENGTH: ECIES_RAW_PUBLIC_KEY_LENGTH,
119
-
120
- /** Length of public keys in bytes (with 0x04 prefix) */
121
- PUBLIC_KEY_LENGTH: ECIES_PUBLIC_KEY_LENGTH,
122
-
123
- PUBLIC_KEY_MAGIC: 0x04 as const,
124
-
125
- /** Mnemonic strength in bits. This will produce a 32-bit key for ECDSA */
126
- MNEMONIC_STRENGTH: 256 as const,
127
-
128
- /** Symmetric encryption algorithm configuration */
129
- SYMMETRIC: Object.freeze({
130
- ALGORITHM: 'aes' as const,
131
- MODE: 'gcm' as const,
132
- KEY_BITS: 256 as const,
133
- KEY_SIZE: ECIES_SYMMETRIC_KEY_SIZE, // KEY_BITS / 8
134
- } as const),
135
-
136
- IV_SIZE: ECIES_IV_SIZE,
137
- AUTH_TAG_SIZE: ECIES_AUTH_TAG_SIZE,
138
- MAX_RAW_DATA_SIZE: 9007199254740991 as const, // 2^53 - 1 (max safe integer for JS)
139
-
140
- /**
141
- * Message encrypts without data length or crc
142
- */
143
- SIMPLE: Object.freeze({
144
- FIXED_OVERHEAD_SIZE: expectedSimpleOverhead, // type (1) + public key (65) + IV (16) + auth tag (16)
145
- DATA_LENGTH_SIZE: 0 as const,
146
- } as const),
147
-
148
- /**
149
- * Message encrypts with data length but no CRC (AES-GCM provides authentication)
150
- */
151
- SINGLE: Object.freeze({
152
- FIXED_OVERHEAD_SIZE: 106 as const, // type (1) + public key (65) + IV (16) + auth tag (16) + data length (8)
153
- DATA_LENGTH_SIZE: 8,
154
- } as const),
155
-
156
- /**
157
- * Message encrypts for multiple recipients
158
- */
159
- MULTIPLE: Object.freeze({
160
- FIXED_OVERHEAD_SIZE: expectedMultipleOverhead, // type (1) + IV (16) + auth tag (16), no CRC
161
- ENCRYPTED_KEY_SIZE: expectedMultipleEncryptedKeySize, // 129
162
- MAX_RECIPIENTS: 65535,
163
- RECIPIENT_ID_SIZE: ECIES_MULTIPLE_RECIPIENT_ID_SIZE,
164
- RECIPIENT_COUNT_SIZE: 2,
165
- DATA_LENGTH_SIZE: 8,
166
- } as const),
167
-
168
- ENCRYPTION_TYPE: Object.freeze({
169
- SIMPLE: 33 as const,
170
- SINGLE: 66 as const,
171
- MULTIPLE: 99 as const,
172
- } as const),
173
- });
174
-
175
- export const Constants: IConstants = Object.freeze({
176
- UINT8_SIZE: UINT8_SIZE,
177
- UINT16_SIZE: UINT16_SIZE,
178
- UINT16_MAX: UINT16_MAX,
179
- UINT32_SIZE: UINT32_SIZE,
180
- UINT32_MAX: UINT32_MAX,
181
- UINT64_SIZE: UINT64_SIZE,
182
- UINT64_MAX: UINT64_MAX,
183
- HEX_RADIX: 16 as const,
184
- GUID_SIZE: GUID_SIZE,
185
- OBJECT_ID_LENGTH: objectIdLength,
186
- CHECKSUM: CHECKSUM,
187
- ECIES: ECIES,
188
- PBKDF2: PBKDF2,
189
- PBKDF2_PROFILES: PBKDF2_PROFILES,
190
- /**
191
- * Number of rounds for bcrypt hashing. Higher values increase security but also consume more CPU resources.
192
- */
193
- BcryptRounds: 10 as const,
194
- /**
195
- * Minimum password length
196
- */
197
- PasswordMinLength: 8 as const,
198
- /**
199
- * The regular expression for valid passwords.
200
- */
201
- PasswordRegex: PASSWORD_REGEX,
202
- /**
203
- * The regular expression for valid mnemonic phrases.
204
- * BIP39 - supports 12, 15, 18, 21, or 24 word mnemonics
205
- */
206
- MnemonicRegex: MNEMONIC_REGEX,
207
- /**
208
- * Matches a 64-character hexadecimal string (SHA-256).
209
- */
210
- HmacRegex: /^[a-f0-9]{64}$/,
211
- } as const);
212
-
213
- export type ConfigurationKey = string | symbol;
214
-
215
- const DEFAULT_CONFIGURATION_KEY: ConfigurationKey = Symbol.for(
216
- 'digitaldefiance.ecies.constants.default',
217
- );
218
-
219
- function isPlainObject(value: unknown): value is Record<string, unknown> {
220
- if (value === null) {
221
- return false;
222
- }
223
- if (typeof value !== 'object') {
224
- return false;
225
- }
226
- if (Array.isArray(value)) {
227
- return false;
228
- }
229
- if (value instanceof RegExp || value instanceof Date) {
230
- return false;
231
- }
232
- return Object.getPrototypeOf(value) === Object.prototype;
233
- }
234
-
235
- function deepClone<T>(input: T): T {
236
- if (input === null) {
237
- return input;
238
- }
239
- if (Array.isArray(input)) {
240
- return input.map((item) => deepClone(item)) as unknown as T;
241
- }
242
- if (input instanceof RegExp) {
243
- return new RegExp(input.source, input.flags) as unknown as T;
244
- }
245
- if (input instanceof Date) {
246
- return new Date(input.getTime()) as unknown as T;
247
- }
248
- if (isPlainObject(input)) {
249
- const result: Record<string, unknown> = {};
250
- for (const [key, value] of Object.entries(input)) {
251
- result[key] = deepClone(value);
252
- }
253
- return result as T;
254
- }
255
- return input;
256
- }
257
-
258
- function applyOverrides<T>(target: T, overrides?: DeepPartial<T>): T {
259
- if (!overrides) {
260
- return target;
261
- }
262
-
263
- for (const [key, overrideValue] of Object.entries(overrides)) {
264
- const typedKey = key as keyof T;
265
- if (overrideValue === undefined) {
266
- continue;
267
- }
268
-
269
- const currentValue = (target as any)[typedKey];
270
-
271
- if (isPlainObject(currentValue) && isPlainObject(overrideValue)) {
272
- (target as any)[typedKey] = applyOverrides(
273
- currentValue,
274
- overrideValue as any,
275
- );
276
- } else {
277
- (target as any)[typedKey] = deepClone(overrideValue);
278
- }
279
- }
280
-
281
- return target;
282
- }
283
-
284
- function deepFreeze<T>(value: T): T {
285
- if (value === null || typeof value !== 'object') {
286
- return value;
287
- }
288
- if (Object.isFrozen(value)) {
289
- return value;
290
- }
291
-
292
- Object.freeze(value);
293
-
294
- for (const property of Object.getOwnPropertyNames(value)) {
295
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
296
- const nestedValue = (value as any)[property];
297
- deepFreeze(nestedValue);
298
- }
299
-
300
- return value;
301
- }
302
-
303
- function computeMultipleEncryptedKeySize(ecies: IECIESConstants): number {
304
- return (
305
- ecies.PUBLIC_KEY_LENGTH +
306
- ecies.IV_SIZE +
307
- ecies.AUTH_TAG_SIZE +
308
- ecies.SYMMETRIC.KEY_SIZE
309
- );
310
- }
311
-
312
- function validateConstants(config: IConstants): void {
313
- const checksum = config.CHECKSUM;
314
- const ecies = config.ECIES;
315
-
316
- if (
317
- checksum.SHA3_BUFFER_LENGTH !== checksum.SHA3_DEFAULT_HASH_BITS / 8 ||
318
- checksum.SHA3_BUFFER_LENGTH !== checksum.SHA3_DEFAULT_HASH_BITS / 8
319
- ) {
320
- const engine = getEciesI18nEngine();
321
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidChecksumConstants));
322
- }
323
-
324
- const expectedEncryptedKeySize = computeMultipleEncryptedKeySize(ecies);
325
- if (ecies.MULTIPLE.ENCRYPTED_KEY_SIZE !== expectedEncryptedKeySize) {
326
- throw new ECIESError(
327
- ECIESErrorTypeEnum.InvalidECIESMultipleEncryptedKeySize,
328
- getEciesI18nEngine() as any,
329
- );
330
- }
331
-
332
- if (ecies.PUBLIC_KEY_LENGTH !== ecies.RAW_PUBLIC_KEY_LENGTH + 1) {
333
- throw new ECIESError(
334
- ECIESErrorTypeEnum.InvalidECIESPublicKeyLength,
335
- getEciesI18nEngine() as any,
336
- );
337
- }
338
-
339
- if (ecies.MULTIPLE.RECIPIENT_COUNT_SIZE !== UINT16_SIZE) {
340
- throw new ECIESError(
341
- ECIESErrorTypeEnum.InvalidECIESMultipleRecipientCountSize,
342
- getEciesI18nEngine() as any,
343
- );
344
- }
345
-
346
- if (ecies.MULTIPLE.DATA_LENGTH_SIZE !== UINT64_SIZE) {
347
- throw new ECIESError(
348
- ECIESErrorTypeEnum.InvalidECIESMultipleDataLengthSize,
349
- getEciesI18nEngine() as any,
350
- );
351
- }
352
-
353
- if (ecies.MULTIPLE.RECIPIENT_ID_SIZE !== GUID_SIZE) {
354
- throw new ECIESError(
355
- ECIESErrorTypeEnum.InvalidECIESMultipleRecipientIdSize,
356
- getEciesI18nEngine() as any,
357
- );
358
- }
359
-
360
- }
361
-
362
- validateConstants(Constants);
363
-
364
- const configurationRegistry = new Map<ConfigurationKey, IConstants>();
365
- configurationRegistry.set(DEFAULT_CONFIGURATION_KEY, Constants);
366
-
367
- function isFullConstantsConfig(value: unknown): value is IConstants {
368
- if (!isPlainObject(value)) {
369
- return false;
370
- }
371
- const candidate = value as Partial<IConstants>;
372
- return (
373
- candidate.CHECKSUM !== undefined &&
374
- candidate.ECIES !== undefined &&
375
- candidate.PBKDF2 !== undefined &&
376
- candidate.PBKDF2_PROFILES !== undefined
377
- );
378
- }
379
-
380
- export function createRuntimeConfiguration(
381
- overrides?: DeepPartial<IConstants>,
382
- base: IConstants = Constants,
383
- ): IConstants {
384
- const merged = deepClone(base);
385
- applyOverrides(merged, overrides);
386
- validateConstants(merged);
387
- return deepFreeze(merged);
388
- }
389
-
390
- export class ConstantsRegistry {
391
- public static readonly DEFAULT_KEY = DEFAULT_CONFIGURATION_KEY;
392
-
393
- public static listKeys(): ConfigurationKey[] {
394
- return Array.from(configurationRegistry.keys());
395
- }
396
-
397
- public static has(key: ConfigurationKey): boolean {
398
- return configurationRegistry.has(key);
399
- }
400
-
401
- public static get(key: ConfigurationKey = DEFAULT_CONFIGURATION_KEY): IConstants {
402
- return (
403
- configurationRegistry.get(key) ??
404
- configurationRegistry.get(DEFAULT_CONFIGURATION_KEY)!
405
- );
406
- }
407
-
408
- public static create(
409
- overrides?: DeepPartial<IConstants>,
410
- baseKey: ConfigurationKey = DEFAULT_CONFIGURATION_KEY,
411
- ): IConstants {
412
- const baseConfig = ConstantsRegistry.get(baseKey);
413
- return createRuntimeConfiguration(overrides, baseConfig);
414
- }
415
-
416
- public static register(
417
- key: ConfigurationKey,
418
- configOrOverrides?: DeepPartial<IConstants> | IConstants,
419
- options?: { baseKey?: ConfigurationKey },
420
- ): IConstants {
421
- if (key === DEFAULT_CONFIGURATION_KEY) {
422
- const engine = getEciesI18nEngine();
423
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_CannotOverwriteDefaultConfiguration));
424
- }
425
-
426
- const baseKey = options?.baseKey ?? DEFAULT_CONFIGURATION_KEY;
427
- const baseConfig = ConstantsRegistry.get(baseKey);
428
-
429
- const configuration = isFullConstantsConfig(configOrOverrides)
430
- ? createRuntimeConfiguration(undefined, configOrOverrides)
431
- : createRuntimeConfiguration(configOrOverrides, baseConfig);
432
-
433
- configurationRegistry.set(key, configuration);
434
- return configuration;
435
- }
436
-
437
- public static unregister(key: ConfigurationKey): boolean {
438
- if (key === DEFAULT_CONFIGURATION_KEY) {
439
- return false;
440
- }
441
- return configurationRegistry.delete(key);
442
- }
443
-
444
- public static clear(): void {
445
- configurationRegistry.clear();
446
- configurationRegistry.set(DEFAULT_CONFIGURATION_KEY, Constants);
447
- }
448
- }
449
-
450
- export function getRuntimeConfiguration(
451
- key: ConfigurationKey = DEFAULT_CONFIGURATION_KEY,
452
- ): IConstants {
453
- return ConstantsRegistry.get(key);
454
- }
455
-
456
- export function registerRuntimeConfiguration(
457
- key: ConfigurationKey,
458
- configOrOverrides?: DeepPartial<IConstants> | IConstants,
459
- options?: { baseKey?: ConfigurationKey },
460
- ): IConstants {
461
- return ConstantsRegistry.register(key, configOrOverrides, options);
462
- }
463
-
464
- export function unregisterRuntimeConfiguration(
465
- key: ConfigurationKey,
466
- ): boolean {
467
- return ConstantsRegistry.unregister(key);
468
- }
469
-
470
- export function clearRuntimeConfigurations(): void {
471
- ConstantsRegistry.clear();
472
- }
473
-
474
- export { PASSWORD_REGEX, MNEMONIC_REGEX } from './regexes';
@@ -1,83 +0,0 @@
1
- import validator from 'validator';
2
- import { InvalidEmailErrorType } from './enumerations/invalid-email-type';
3
- import { InvalidEmailError } from './errors/invalid-email';
4
- import { getEciesI18nEngine } from './i18n-setup';
5
-
6
- /**
7
- * EmailString represents a validated email address.
8
- * It ensures that the email is not empty, does not have leading or trailing spaces,
9
- * and is a valid email format.
10
- */
11
- export class EmailString {
12
- public readonly email: string;
13
-
14
- /**
15
- * Creates an instance of EmailString.
16
- * @param email - The email address to validate and store.
17
- * @throws Will throw an error if the email is invalid.
18
- */
19
- constructor(email: string) {
20
- const trimmedEmail = email.trim();
21
- if (trimmedEmail.length == 0) {
22
- throw new InvalidEmailError(
23
- InvalidEmailErrorType.Missing,
24
- getEciesI18nEngine() as any,
25
- );
26
- }
27
- if (trimmedEmail.length != email.length) {
28
- throw new InvalidEmailError(
29
- InvalidEmailErrorType.Whitespace,
30
- getEciesI18nEngine() as any,
31
- );
32
- }
33
- if (!validator.isEmail(trimmedEmail)) {
34
- throw new InvalidEmailError(
35
- InvalidEmailErrorType.Invalid,
36
- getEciesI18nEngine() as any,
37
- );
38
- }
39
- this.email = trimmedEmail;
40
- }
41
-
42
- /**
43
- * Returns the email address as a string.
44
- * @returns The email address.
45
- */
46
- public toString(): string {
47
- return this.email;
48
- }
49
-
50
- /**
51
- * Checks if this email address is equal to another email address.
52
- * @param other - The other email address to compare.
53
- * @returns True if the email addresses are equal, false otherwise.
54
- */
55
- public equals(other: EmailString): boolean {
56
- return this.email === other.email;
57
- }
58
-
59
- /**
60
- * Converts the email address to a JSON string.
61
- * @returns The email address as a JSON string.
62
- */
63
- public toJson(): string {
64
- return JSON.stringify(this.email);
65
- }
66
-
67
- /**
68
- * Creates an EmailString instance from a JSON string.
69
- * @param email - The JSON string representing the email address.
70
- * @returns The EmailString instance.
71
- */
72
- public static fromJson(email: string): EmailString {
73
- return new EmailString(JSON.parse(email));
74
- }
75
-
76
- /**
77
- * Gets the length of the email address.
78
- * @returns The length of the email address.
79
- */
80
- public get length(): number {
81
- return this.email.length;
82
- }
83
- }
@@ -1,102 +0,0 @@
1
- import { ECIESError } from '../errors/ecies';
2
- import { getEciesI18nEngine } from '../i18n-setup';
3
- import { ECIESErrorTypeEnum } from './ecies-error-type';
4
-
5
- export type EciesEncryptionType = 'simple' | 'single' | 'multiple';
6
-
7
- export enum EciesEncryptionTypeEnum {
8
- Simple = 33,
9
- Single = 66,
10
- Multiple = 99,
11
- }
12
-
13
- export const EciesEncryptionTypeMap: Record<
14
- EciesEncryptionType,
15
- EciesEncryptionTypeEnum
16
- > = {
17
- simple: EciesEncryptionTypeEnum.Simple,
18
- single: EciesEncryptionTypeEnum.Single,
19
- multiple: EciesEncryptionTypeEnum.Multiple,
20
- };
21
-
22
- export const EciesEncryptionTypeStringMap: Record<EciesEncryptionType, string> =
23
- {
24
- simple: 'simple',
25
- single: 'single',
26
- multiple: 'multiple',
27
- };
28
-
29
- export const EciesEncryptionTypeEnumTypeMap: Record<
30
- EciesEncryptionTypeEnum,
31
- EciesEncryptionType
32
- > = {
33
- [EciesEncryptionTypeEnum.Simple]: 'simple',
34
- [EciesEncryptionTypeEnum.Single]: 'single',
35
- [EciesEncryptionTypeEnum.Multiple]: 'multiple',
36
- };
37
-
38
- export const EciesEncryptionTypeEnumStringMap: Record<
39
- EciesEncryptionTypeEnum,
40
- string
41
- > = {
42
- [EciesEncryptionTypeEnum.Simple]: 'simple',
43
- [EciesEncryptionTypeEnum.Single]: 'single',
44
- [EciesEncryptionTypeEnum.Multiple]: 'multiple',
45
- };
46
-
47
- export function encryptionTypeToString(
48
- type: EciesEncryptionType | EciesEncryptionTypeEnum,
49
- ): string {
50
- // if enum
51
- let resultType: EciesEncryptionType;
52
- if (typeof type === 'number') {
53
- resultType = EciesEncryptionTypeEnumTypeMap[type];
54
- if (resultType === undefined) {
55
- throw new ECIESError(
56
- ECIESErrorTypeEnum.InvalidEncryptionType,
57
- getEciesI18nEngine() as any,
58
- );
59
- }
60
- } else {
61
- resultType = type;
62
- }
63
- const result = EciesEncryptionTypeStringMap[resultType];
64
- if (result === undefined) {
65
- throw new ECIESError(
66
- ECIESErrorTypeEnum.InvalidEncryptionType,
67
- getEciesI18nEngine() as any,
68
- );
69
- }
70
- return result;
71
- }
72
-
73
- export function encryptionTypeEnumToType(
74
- type: EciesEncryptionTypeEnum,
75
- ): EciesEncryptionType {
76
- const result = EciesEncryptionTypeEnumTypeMap[type];
77
- if (result === undefined) {
78
- throw new ECIESError(
79
- ECIESErrorTypeEnum.InvalidEncryptionType,
80
- getEciesI18nEngine() as any,
81
- );
82
- }
83
- return result;
84
- }
85
-
86
- export function validateEciesEncryptionTypeEnum(
87
- type: EciesEncryptionTypeEnum,
88
- ): boolean {
89
- return Object.values(EciesEncryptionTypeEnum).includes(type);
90
- }
91
-
92
- export function ensureEciesEncryptionTypeEnum(
93
- type: EciesEncryptionTypeEnum,
94
- ): EciesEncryptionTypeEnum {
95
- if (!validateEciesEncryptionTypeEnum(type)) {
96
- throw new ECIESError(
97
- ECIESErrorTypeEnum.InvalidEncryptionType,
98
- getEciesI18nEngine() as any,
99
- );
100
- }
101
- return type;
102
- }