@digitaldefiance/ecies-lib 4.4.13 → 4.4.15

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 (597) hide show
  1. package/package.json +5 -4
  2. package/src/builders/ecies-builder.d.ts +18 -0
  3. package/src/builders/ecies-builder.d.ts.map +1 -0
  4. package/src/builders/ecies-builder.js +34 -0
  5. package/src/builders/ecies-builder.js.map +1 -0
  6. package/src/builders/{index.ts → index.d.ts} +1 -1
  7. package/src/builders/index.d.ts.map +1 -0
  8. package/src/builders/index.js +9 -0
  9. package/src/builders/index.js.map +1 -0
  10. package/src/builders/member-builder.d.ts +51 -0
  11. package/src/builders/member-builder.d.ts.map +1 -0
  12. package/src/builders/member-builder.js +101 -0
  13. package/src/builders/member-builder.js.map +1 -0
  14. package/src/constants.d.ts +60 -0
  15. package/src/constants.d.ts.map +1 -0
  16. package/src/constants.js +457 -0
  17. package/src/constants.js.map +1 -0
  18. package/src/core/errors/crypto-error.d.ts +34 -0
  19. package/src/core/errors/crypto-error.d.ts.map +1 -0
  20. package/src/core/errors/crypto-error.js +60 -0
  21. package/src/core/errors/crypto-error.js.map +1 -0
  22. package/src/core/{index.ts → index.d.ts} +1 -1
  23. package/src/core/index.d.ts.map +1 -0
  24. package/src/core/index.js +9 -0
  25. package/src/core/index.js.map +1 -0
  26. package/src/core/types/result.d.ts +16 -0
  27. package/src/core/types/result.d.ts.map +1 -0
  28. package/src/core/types/result.js +16 -0
  29. package/src/core/types/result.js.map +1 -0
  30. package/src/email-string.d.ts +42 -0
  31. package/src/email-string.d.ts.map +1 -0
  32. package/src/email-string.js +72 -0
  33. package/src/email-string.js.map +1 -0
  34. package/src/enumerations/disposed-error-type.d.ts +12 -0
  35. package/src/enumerations/disposed-error-type.d.ts.map +1 -0
  36. package/src/enumerations/disposed-error-type.js +16 -0
  37. package/src/enumerations/disposed-error-type.js.map +1 -0
  38. package/src/enumerations/ecies-cipher-suite.d.ts +4 -0
  39. package/src/enumerations/ecies-cipher-suite.d.ts.map +1 -0
  40. package/src/enumerations/ecies-cipher-suite.js +9 -0
  41. package/src/enumerations/ecies-cipher-suite.js.map +1 -0
  42. package/src/enumerations/ecies-encryption-type.d.ts +11 -0
  43. package/src/enumerations/ecies-encryption-type.d.ts.map +1 -0
  44. package/src/enumerations/ecies-encryption-type.js +30 -0
  45. package/src/enumerations/ecies-encryption-type.js.map +1 -0
  46. package/src/enumerations/ecies-error-type.d.ts +44 -0
  47. package/src/enumerations/ecies-error-type.d.ts.map +1 -0
  48. package/src/enumerations/ecies-error-type.js +48 -0
  49. package/src/enumerations/ecies-error-type.js.map +1 -0
  50. package/src/enumerations/ecies-string-key.d.ts +192 -0
  51. package/src/enumerations/ecies-string-key.d.ts.map +1 -0
  52. package/src/enumerations/ecies-string-key.js +202 -0
  53. package/src/enumerations/ecies-string-key.js.map +1 -0
  54. package/src/enumerations/ecies-version.d.ts +4 -0
  55. package/src/enumerations/ecies-version.d.ts.map +1 -0
  56. package/src/enumerations/ecies-version.js +8 -0
  57. package/src/enumerations/ecies-version.js.map +1 -0
  58. package/src/enumerations/guid-brand-type.d.ts +27 -0
  59. package/src/enumerations/guid-brand-type.d.ts.map +1 -0
  60. package/src/enumerations/guid-brand-type.js +31 -0
  61. package/src/enumerations/guid-brand-type.js.map +1 -0
  62. package/src/enumerations/guid-error-type.d.ts +7 -0
  63. package/src/enumerations/guid-error-type.d.ts.map +1 -0
  64. package/src/enumerations/guid-error-type.js +11 -0
  65. package/src/enumerations/guid-error-type.js.map +1 -0
  66. package/src/enumerations/id-provider-error-type.d.ts +43 -0
  67. package/src/enumerations/id-provider-error-type.d.ts.map +1 -0
  68. package/src/enumerations/id-provider-error-type.js +47 -0
  69. package/src/enumerations/id-provider-error-type.js.map +1 -0
  70. package/src/enumerations/{index.ts → index.d.ts} +1 -0
  71. package/src/enumerations/index.d.ts.map +1 -0
  72. package/src/enumerations/index.js +21 -0
  73. package/src/enumerations/index.js.map +1 -0
  74. package/src/enumerations/invalid-email-type.d.ts +6 -0
  75. package/src/enumerations/invalid-email-type.d.ts.map +1 -0
  76. package/src/enumerations/invalid-email-type.js +10 -0
  77. package/src/enumerations/invalid-email-type.js.map +1 -0
  78. package/src/enumerations/length-encoding-type.d.ts +7 -0
  79. package/src/enumerations/length-encoding-type.d.ts.map +1 -0
  80. package/src/enumerations/length-encoding-type.js +11 -0
  81. package/src/enumerations/length-encoding-type.js.map +1 -0
  82. package/src/enumerations/length-error-type.d.ts +6 -0
  83. package/src/enumerations/length-error-type.d.ts.map +1 -0
  84. package/src/enumerations/length-error-type.js +10 -0
  85. package/src/enumerations/length-error-type.js.map +1 -0
  86. package/src/enumerations/member-error-type.d.ts +87 -0
  87. package/src/enumerations/member-error-type.d.ts.map +1 -0
  88. package/src/enumerations/member-error-type.js +91 -0
  89. package/src/enumerations/member-error-type.js.map +1 -0
  90. package/src/enumerations/{member-type.ts → member-type.d.ts} +6 -7
  91. package/src/enumerations/member-type.d.ts.map +1 -0
  92. package/src/enumerations/member-type.js +19 -0
  93. package/src/enumerations/member-type.js.map +1 -0
  94. package/src/enumerations/password-login-error-type.d.ts +5 -0
  95. package/src/enumerations/password-login-error-type.d.ts.map +1 -0
  96. package/src/enumerations/password-login-error-type.js +9 -0
  97. package/src/enumerations/password-login-error-type.js.map +1 -0
  98. package/src/enumerations/pbkdf2-error-type.d.ts +6 -0
  99. package/src/enumerations/pbkdf2-error-type.d.ts.map +1 -0
  100. package/src/enumerations/pbkdf2-error-type.js +10 -0
  101. package/src/enumerations/pbkdf2-error-type.js.map +1 -0
  102. package/src/enumerations/pbkdf2-profile.d.ts +6 -0
  103. package/src/enumerations/pbkdf2-profile.d.ts.map +1 -0
  104. package/src/enumerations/pbkdf2-profile.js +10 -0
  105. package/src/enumerations/pbkdf2-profile.js.map +1 -0
  106. package/src/enumerations/secure-storage-error-type.d.ts +6 -0
  107. package/src/enumerations/secure-storage-error-type.d.ts.map +1 -0
  108. package/src/enumerations/secure-storage-error-type.js +10 -0
  109. package/src/enumerations/secure-storage-error-type.js.map +1 -0
  110. package/src/errors/disposed.d.ts +22 -0
  111. package/src/errors/disposed.d.ts.map +1 -0
  112. package/src/errors/disposed.js +32 -0
  113. package/src/errors/disposed.js.map +1 -0
  114. package/src/errors/ecies.d.ts +52 -0
  115. package/src/errors/ecies.d.ts.map +1 -0
  116. package/src/errors/ecies.js +82 -0
  117. package/src/errors/ecies.js.map +1 -0
  118. package/src/errors/guid.d.ts +49 -0
  119. package/src/errors/guid.d.ts.map +1 -0
  120. package/src/errors/guid.js +100 -0
  121. package/src/errors/guid.js.map +1 -0
  122. package/src/errors/id-provider.d.ts +23 -0
  123. package/src/errors/id-provider.d.ts.map +1 -0
  124. package/src/errors/id-provider.js +33 -0
  125. package/src/errors/id-provider.js.map +1 -0
  126. package/src/errors/{index.ts → index.d.ts} +1 -0
  127. package/src/errors/index.d.ts.map +1 -0
  128. package/src/errors/index.js +13 -0
  129. package/src/errors/index.js.map +1 -0
  130. package/src/errors/invalid-email.d.ts +8 -0
  131. package/src/errors/invalid-email.d.ts.map +1 -0
  132. package/src/errors/invalid-email.js +19 -0
  133. package/src/errors/invalid-email.js.map +1 -0
  134. package/src/errors/length.d.ts +7 -0
  135. package/src/errors/length.d.ts.map +1 -0
  136. package/src/errors/length.js +15 -0
  137. package/src/errors/length.js.map +1 -0
  138. package/src/errors/member.d.ts +7 -0
  139. package/src/errors/member.d.ts.map +1 -0
  140. package/src/errors/member.js +15 -0
  141. package/src/errors/member.js.map +1 -0
  142. package/src/errors/pbkdf2.d.ts +7 -0
  143. package/src/errors/pbkdf2.d.ts.map +1 -0
  144. package/src/errors/pbkdf2.js +15 -0
  145. package/src/errors/pbkdf2.js.map +1 -0
  146. package/src/errors/secure-storage.d.ts +7 -0
  147. package/src/errors/secure-storage.d.ts.map +1 -0
  148. package/src/errors/secure-storage.js +16 -0
  149. package/src/errors/secure-storage.js.map +1 -0
  150. package/src/errors/simple-ecies.d.ts +6 -0
  151. package/src/errors/simple-ecies.d.ts.map +1 -0
  152. package/src/errors/simple-ecies.js +16 -0
  153. package/src/errors/simple-ecies.js.map +1 -0
  154. package/src/errors/simple-test-error.d.ts +4 -0
  155. package/src/errors/simple-test-error.d.ts.map +1 -0
  156. package/src/errors/simple-test-error.js +11 -0
  157. package/src/errors/simple-test-error.js.map +1 -0
  158. package/src/i18n-setup.d.ts +32 -0
  159. package/src/i18n-setup.d.ts.map +1 -0
  160. package/src/i18n-setup.js +109 -0
  161. package/src/i18n-setup.js.map +1 -0
  162. package/src/{index.ts → index.d.ts} +12 -72
  163. package/src/index.d.ts.map +1 -0
  164. package/src/index.js +146 -0
  165. package/src/index.js.map +1 -0
  166. package/src/interfaces/checksum-config.d.ts +5 -0
  167. package/src/interfaces/checksum-config.d.ts.map +1 -0
  168. package/src/interfaces/checksum-config.js +3 -0
  169. package/src/interfaces/checksum-config.js.map +1 -0
  170. package/src/interfaces/checksum-consts.d.ts +11 -0
  171. package/src/interfaces/checksum-consts.d.ts.map +1 -0
  172. package/src/interfaces/checksum-consts.js +3 -0
  173. package/src/interfaces/checksum-consts.js.map +1 -0
  174. package/src/interfaces/configuration-provenance.d.ts +43 -0
  175. package/src/interfaces/configuration-provenance.d.ts.map +1 -0
  176. package/src/interfaces/configuration-provenance.js +8 -0
  177. package/src/interfaces/configuration-provenance.js.map +1 -0
  178. package/src/interfaces/constants.d.ts +70 -0
  179. package/src/interfaces/constants.d.ts.map +1 -0
  180. package/src/interfaces/constants.js +3 -0
  181. package/src/interfaces/constants.js.map +1 -0
  182. package/src/interfaces/ecies-config.d.ts +9 -0
  183. package/src/interfaces/ecies-config.d.ts.map +1 -0
  184. package/src/interfaces/ecies-config.js +3 -0
  185. package/src/interfaces/ecies-config.js.map +1 -0
  186. package/src/interfaces/ecies-consts.d.ts +61 -0
  187. package/src/interfaces/ecies-consts.d.ts.map +1 -0
  188. package/src/interfaces/ecies-consts.js +3 -0
  189. package/src/interfaces/ecies-consts.js.map +1 -0
  190. package/src/interfaces/ecies-file-service.d.ts +7 -0
  191. package/src/interfaces/ecies-file-service.d.ts.map +1 -0
  192. package/src/interfaces/ecies-file-service.js +3 -0
  193. package/src/interfaces/ecies-file-service.js.map +1 -0
  194. package/src/interfaces/encrypted-chunk.d.ts +55 -0
  195. package/src/interfaces/encrypted-chunk.d.ts.map +1 -0
  196. package/src/interfaces/encrypted-chunk.js +15 -0
  197. package/src/interfaces/encrypted-chunk.js.map +1 -0
  198. package/src/interfaces/encryption-state.d.ts +18 -0
  199. package/src/interfaces/encryption-state.d.ts.map +1 -0
  200. package/src/interfaces/encryption-state.js +5 -0
  201. package/src/interfaces/encryption-state.js.map +1 -0
  202. package/src/interfaces/frontend-member-operational.d.ts +51 -0
  203. package/src/interfaces/frontend-member-operational.d.ts.map +1 -0
  204. package/src/interfaces/frontend-member-operational.js +3 -0
  205. package/src/interfaces/frontend-member-operational.js.map +1 -0
  206. package/src/interfaces/guid.d.ts +78 -0
  207. package/src/interfaces/guid.d.ts.map +1 -0
  208. package/src/interfaces/guid.js +3 -0
  209. package/src/interfaces/guid.js.map +1 -0
  210. package/src/interfaces/id-provider.d.ts +107 -0
  211. package/src/interfaces/id-provider.d.ts.map +1 -0
  212. package/src/interfaces/id-provider.js +56 -0
  213. package/src/interfaces/id-provider.js.map +1 -0
  214. package/src/interfaces/{index.ts → index.d.ts} +1 -0
  215. package/src/interfaces/index.d.ts.map +1 -0
  216. package/src/interfaces/index.js +16 -0
  217. package/src/interfaces/index.js.map +1 -0
  218. package/src/interfaces/invariant.d.ts +46 -0
  219. package/src/interfaces/invariant.d.ts.map +1 -0
  220. package/src/interfaces/invariant.js +22 -0
  221. package/src/interfaces/invariant.js.map +1 -0
  222. package/src/interfaces/library-error.d.ts +23 -0
  223. package/src/interfaces/library-error.d.ts.map +1 -0
  224. package/src/interfaces/library-error.js +3 -0
  225. package/src/interfaces/library-error.js.map +1 -0
  226. package/src/interfaces/{member-storage.ts → member-storage.d.ts} +10 -11
  227. package/src/interfaces/member-storage.d.ts.map +1 -0
  228. package/src/interfaces/member-storage.js +3 -0
  229. package/src/interfaces/member-storage.js.map +1 -0
  230. package/src/interfaces/{member-with-mnemonic.ts → member-with-mnemonic.d.ts} +3 -3
  231. package/src/interfaces/member-with-mnemonic.d.ts.map +1 -0
  232. package/src/interfaces/member-with-mnemonic.js +3 -0
  233. package/src/interfaces/member-with-mnemonic.js.map +1 -0
  234. package/src/interfaces/member.d.ts +55 -0
  235. package/src/interfaces/member.d.ts.map +1 -0
  236. package/src/interfaces/member.js +3 -0
  237. package/src/interfaces/member.js.map +1 -0
  238. package/src/interfaces/multi-recipient-chunk.d.ts +54 -0
  239. package/src/interfaces/multi-recipient-chunk.d.ts.map +1 -0
  240. package/src/interfaces/multi-recipient-chunk.js +16 -0
  241. package/src/interfaces/multi-recipient-chunk.js.map +1 -0
  242. package/src/interfaces/pbkdf2-config.d.ts +7 -0
  243. package/src/interfaces/pbkdf2-config.d.ts.map +1 -0
  244. package/src/interfaces/pbkdf2-config.js +3 -0
  245. package/src/interfaces/pbkdf2-config.js.map +1 -0
  246. package/src/interfaces/pbkdf2-consts.d.ts +9 -0
  247. package/src/interfaces/pbkdf2-consts.d.ts.map +1 -0
  248. package/src/interfaces/pbkdf2-consts.js +3 -0
  249. package/src/interfaces/pbkdf2-consts.js.map +1 -0
  250. package/src/interfaces/pbkdf2-result.d.ts +6 -0
  251. package/src/interfaces/pbkdf2-result.d.ts.map +1 -0
  252. package/src/interfaces/pbkdf2-result.js +3 -0
  253. package/src/interfaces/pbkdf2-result.js.map +1 -0
  254. package/src/interfaces/stream-config.d.ts +14 -0
  255. package/src/interfaces/stream-config.d.ts.map +1 -0
  256. package/src/interfaces/stream-config.js +11 -0
  257. package/src/interfaces/stream-config.js.map +1 -0
  258. package/src/interfaces/stream-header.d.ts +29 -0
  259. package/src/interfaces/stream-header.d.ts.map +1 -0
  260. package/src/interfaces/stream-header.js +12 -0
  261. package/src/interfaces/stream-header.js.map +1 -0
  262. package/src/interfaces/stream-progress.d.ts +33 -0
  263. package/src/interfaces/stream-progress.d.ts.map +1 -0
  264. package/src/interfaces/stream-progress.js +3 -0
  265. package/src/interfaces/stream-progress.js.map +1 -0
  266. package/src/lib/configuration-provenance-utils.d.ts +11 -0
  267. package/src/lib/configuration-provenance-utils.d.ts.map +1 -0
  268. package/src/lib/configuration-provenance-utils.js +30 -0
  269. package/src/lib/configuration-provenance-utils.js.map +1 -0
  270. package/src/lib/crypto-container.d.ts +25 -0
  271. package/src/lib/crypto-container.d.ts.map +1 -0
  272. package/src/lib/crypto-container.js +50 -0
  273. package/src/lib/crypto-container.js.map +1 -0
  274. package/src/lib/guid.d.ts +344 -0
  275. package/src/lib/guid.d.ts.map +1 -0
  276. package/src/lib/guid.js +919 -0
  277. package/src/lib/guid.js.map +1 -0
  278. package/src/lib/id-providers/custom-provider.d.ts +46 -0
  279. package/src/lib/id-providers/custom-provider.d.ts.map +1 -0
  280. package/src/lib/id-providers/custom-provider.js +89 -0
  281. package/src/lib/id-providers/custom-provider.js.map +1 -0
  282. package/src/lib/id-providers/guidv4-provider.d.ts +56 -0
  283. package/src/lib/id-providers/guidv4-provider.d.ts.map +1 -0
  284. package/src/lib/id-providers/guidv4-provider.js +126 -0
  285. package/src/lib/id-providers/guidv4-provider.js.map +1 -0
  286. package/src/lib/id-providers/{index.ts → index.d.ts} +5 -6
  287. package/src/lib/id-providers/index.d.ts.map +1 -0
  288. package/src/lib/id-providers/index.js +37 -0
  289. package/src/lib/id-providers/index.js.map +1 -0
  290. package/src/lib/id-providers/objectid-provider.d.ts +43 -0
  291. package/src/lib/id-providers/objectid-provider.d.ts.map +1 -0
  292. package/src/lib/id-providers/objectid-provider.js +108 -0
  293. package/src/lib/id-providers/objectid-provider.js.map +1 -0
  294. package/src/lib/id-providers/uuid-provider.d.ts +52 -0
  295. package/src/lib/id-providers/uuid-provider.d.ts.map +1 -0
  296. package/src/lib/id-providers/uuid-provider.js +114 -0
  297. package/src/lib/id-providers/uuid-provider.js.map +1 -0
  298. package/src/lib/{index.ts → index.d.ts} +2 -2
  299. package/src/lib/index.d.ts.map +1 -0
  300. package/src/lib/index.js +9 -0
  301. package/src/lib/index.js.map +1 -0
  302. package/src/lib/invariant-validator.d.ts +59 -0
  303. package/src/lib/invariant-validator.d.ts.map +1 -0
  304. package/src/lib/invariant-validator.js +101 -0
  305. package/src/lib/invariant-validator.js.map +1 -0
  306. package/src/lib/invariants/encryption-algorithm-consistency.d.ts +17 -0
  307. package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +1 -0
  308. package/src/lib/invariants/encryption-algorithm-consistency.js +53 -0
  309. package/src/lib/invariants/encryption-algorithm-consistency.js.map +1 -0
  310. package/src/lib/invariants/{index.ts → index.d.ts} +1 -0
  311. package/src/lib/invariants/index.d.ts.map +1 -0
  312. package/src/lib/invariants/index.js +7 -0
  313. package/src/lib/invariants/index.js.map +1 -0
  314. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +16 -0
  315. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +1 -0
  316. package/src/lib/invariants/pbkdf2-profiles-validity.js +62 -0
  317. package/src/lib/invariants/pbkdf2-profiles-validity.js.map +1 -0
  318. package/src/lib/invariants/recipient-id-consistency.d.ts +18 -0
  319. package/src/lib/invariants/recipient-id-consistency.d.ts.map +1 -0
  320. package/src/lib/invariants/recipient-id-consistency.js +35 -0
  321. package/src/lib/invariants/recipient-id-consistency.js.map +1 -0
  322. package/src/lib/multi-recipient-chunk-utils.d.ts +38 -0
  323. package/src/lib/multi-recipient-chunk-utils.d.ts.map +1 -0
  324. package/src/lib/multi-recipient-chunk-utils.js +45 -0
  325. package/src/lib/multi-recipient-chunk-utils.js.map +1 -0
  326. package/src/member.d.ts +92 -0
  327. package/src/member.d.ts.map +1 -0
  328. package/src/member.js +327 -0
  329. package/src/member.js.map +1 -0
  330. package/src/{pbkdf2-profiles.ts → pbkdf2-profiles.d.ts} +2 -2
  331. package/src/pbkdf2-profiles.d.ts.map +1 -0
  332. package/src/pbkdf2-profiles.js +3 -0
  333. package/src/pbkdf2-profiles.js.map +1 -0
  334. package/src/phone-number.d.ts +6 -0
  335. package/src/phone-number.d.ts.map +1 -0
  336. package/src/phone-number.js +22 -0
  337. package/src/phone-number.js.map +1 -0
  338. package/src/regexes.d.ts +7 -0
  339. package/src/regexes.d.ts.map +1 -0
  340. package/src/regexes.js +10 -0
  341. package/src/regexes.js.map +1 -0
  342. package/src/secure-buffer.d.ts +61 -0
  343. package/src/secure-buffer.d.ts.map +1 -0
  344. package/src/secure-buffer.js +205 -0
  345. package/src/secure-buffer.js.map +1 -0
  346. package/src/secure-string.d.ts +46 -0
  347. package/src/secure-string.d.ts.map +1 -0
  348. package/src/secure-string.js +210 -0
  349. package/src/secure-string.js.map +1 -0
  350. package/src/services/aes-gcm.d.ts +57 -0
  351. package/src/services/aes-gcm.d.ts.map +1 -0
  352. package/src/services/aes-gcm.js +146 -0
  353. package/src/services/aes-gcm.js.map +1 -0
  354. package/src/services/chunk-processor.d.ts +31 -0
  355. package/src/services/chunk-processor.d.ts.map +1 -0
  356. package/src/services/chunk-processor.js +149 -0
  357. package/src/services/chunk-processor.js.map +1 -0
  358. package/src/services/ecies/crypto-core.d.ts +72 -0
  359. package/src/services/ecies/crypto-core.d.ts.map +1 -0
  360. package/src/services/ecies/crypto-core.js +209 -0
  361. package/src/services/ecies/crypto-core.js.map +1 -0
  362. package/src/services/ecies/example.d.ts +25 -0
  363. package/src/services/ecies/example.d.ts.map +1 -0
  364. package/src/services/ecies/example.js +128 -0
  365. package/src/services/ecies/example.js.map +1 -0
  366. package/src/services/ecies/file.d.ts +18 -0
  367. package/src/services/ecies/file.d.ts.map +1 -0
  368. package/src/services/ecies/file.js +110 -0
  369. package/src/services/ecies/file.js.map +1 -0
  370. package/src/services/ecies/{index.ts → index.d.ts} +1 -3
  371. package/src/services/ecies/index.d.ts.map +1 -0
  372. package/src/services/ecies/index.js +44 -0
  373. package/src/services/ecies/index.js.map +1 -0
  374. package/src/services/ecies/integration.d.ts +59 -0
  375. package/src/services/ecies/integration.d.ts.map +1 -0
  376. package/src/services/ecies/integration.js +172 -0
  377. package/src/services/ecies/integration.js.map +1 -0
  378. package/src/services/ecies/interfaces.d.ts +54 -0
  379. package/src/services/ecies/interfaces.d.ts.map +1 -0
  380. package/src/services/ecies/interfaces.js +6 -0
  381. package/src/services/ecies/interfaces.js.map +1 -0
  382. package/src/services/ecies/manual-test.d.ts +29 -0
  383. package/src/services/ecies/manual-test.d.ts.map +1 -0
  384. package/src/services/ecies/manual-test.js +171 -0
  385. package/src/services/ecies/manual-test.js.map +1 -0
  386. package/src/services/ecies/multi-recipient.d.ts +56 -0
  387. package/src/services/ecies/multi-recipient.d.ts.map +1 -0
  388. package/src/services/ecies/multi-recipient.js +348 -0
  389. package/src/services/ecies/multi-recipient.js.map +1 -0
  390. package/src/services/ecies/service.d.ts +120 -0
  391. package/src/services/ecies/service.d.ts.map +1 -0
  392. package/src/services/ecies/service.js +214 -0
  393. package/src/services/ecies/service.js.map +1 -0
  394. package/src/services/ecies/signature.d.ts +27 -0
  395. package/src/services/ecies/signature.d.ts.map +1 -0
  396. package/src/services/ecies/signature.js +76 -0
  397. package/src/services/ecies/signature.js.map +1 -0
  398. package/src/services/ecies/single-recipient.d.ts +46 -0
  399. package/src/services/ecies/single-recipient.d.ts.map +1 -0
  400. package/src/services/ecies/single-recipient.js +326 -0
  401. package/src/services/ecies/single-recipient.js.map +1 -0
  402. package/src/services/encryption-stream.d.ts +71 -0
  403. package/src/services/encryption-stream.d.ts.map +1 -0
  404. package/src/services/encryption-stream.js +299 -0
  405. package/src/services/encryption-stream.js.map +1 -0
  406. package/src/services/{index.ts → index.d.ts} +1 -0
  407. package/src/services/index.d.ts.map +1 -0
  408. package/src/services/index.js +14 -0
  409. package/src/services/index.js.map +1 -0
  410. package/src/services/multi-recipient-processor.d.ts +35 -0
  411. package/src/services/multi-recipient-processor.d.ts.map +1 -0
  412. package/src/services/multi-recipient-processor.js +293 -0
  413. package/src/services/multi-recipient-processor.js.map +1 -0
  414. package/src/services/password-login.d.ts +47 -0
  415. package/src/services/password-login.d.ts.map +1 -0
  416. package/src/services/password-login.js +119 -0
  417. package/src/services/password-login.js.map +1 -0
  418. package/src/services/pbkdf2.d.ts +54 -0
  419. package/src/services/pbkdf2.d.ts.map +1 -0
  420. package/src/services/pbkdf2.js +112 -0
  421. package/src/services/pbkdf2.js.map +1 -0
  422. package/src/services/progress-tracker.d.ts +23 -0
  423. package/src/services/progress-tracker.d.ts.map +1 -0
  424. package/src/services/progress-tracker.js +107 -0
  425. package/src/services/progress-tracker.js.map +1 -0
  426. package/src/services/resumable-encryption.d.ts +19 -0
  427. package/src/services/resumable-encryption.d.ts.map +1 -0
  428. package/src/services/resumable-encryption.js +109 -0
  429. package/src/services/resumable-encryption.js.map +1 -0
  430. package/src/services/xor.d.ts +37 -0
  431. package/src/services/xor.d.ts.map +1 -0
  432. package/src/services/xor.js +67 -0
  433. package/src/services/xor.js.map +1 -0
  434. package/src/test-mocks/index.d.ts +2 -0
  435. package/src/test-mocks/index.d.ts.map +1 -0
  436. package/src/test-mocks/index.js +5 -0
  437. package/src/test-mocks/index.js.map +1 -0
  438. package/src/test-mocks/mock-frontend-member.d.ts +85 -0
  439. package/src/test-mocks/mock-frontend-member.d.ts.map +1 -0
  440. package/src/test-mocks/mock-frontend-member.js +194 -0
  441. package/src/test-mocks/mock-frontend-member.js.map +1 -0
  442. package/src/testing.d.ts +2 -0
  443. package/src/testing.d.ts.map +1 -0
  444. package/src/testing.js +6 -0
  445. package/src/testing.js.map +1 -0
  446. package/src/translations/de.d.ts +4 -0
  447. package/src/translations/de.d.ts.map +1 -0
  448. package/src/translations/de.js +207 -0
  449. package/src/translations/de.js.map +1 -0
  450. package/src/translations/en-US.d.ts +4 -0
  451. package/src/translations/en-US.d.ts.map +1 -0
  452. package/src/translations/en-US.js +207 -0
  453. package/src/translations/en-US.js.map +1 -0
  454. package/src/translations/es.d.ts +4 -0
  455. package/src/translations/es.d.ts.map +1 -0
  456. package/src/translations/es.js +207 -0
  457. package/src/translations/es.js.map +1 -0
  458. package/src/translations/fr.d.ts +4 -0
  459. package/src/translations/fr.d.ts.map +1 -0
  460. package/src/translations/fr.js +207 -0
  461. package/src/translations/fr.js.map +1 -0
  462. package/src/translations/ja.d.ts +4 -0
  463. package/src/translations/ja.d.ts.map +1 -0
  464. package/src/translations/ja.js +206 -0
  465. package/src/translations/ja.js.map +1 -0
  466. package/src/translations/uk.d.ts +4 -0
  467. package/src/translations/uk.d.ts.map +1 -0
  468. package/src/translations/uk.js +209 -0
  469. package/src/translations/uk.js.map +1 -0
  470. package/src/translations/zh-cn.d.ts +4 -0
  471. package/src/translations/zh-cn.d.ts.map +1 -0
  472. package/src/translations/zh-cn.js +206 -0
  473. package/src/translations/zh-cn.js.map +1 -0
  474. package/src/types/deep-partial.d.ts +4 -0
  475. package/src/types/deep-partial.d.ts.map +1 -0
  476. package/src/types/deep-partial.js +3 -0
  477. package/src/types/deep-partial.js.map +1 -0
  478. package/src/{types.ts → types.d.ts} +7 -15
  479. package/src/types.d.ts.map +1 -0
  480. package/src/types.js +3 -0
  481. package/src/types.js.map +1 -0
  482. package/src/utils/encryption-type-utils.d.ts +29 -0
  483. package/src/utils/encryption-type-utils.d.ts.map +1 -0
  484. package/src/utils/encryption-type-utils.js +67 -0
  485. package/src/utils/encryption-type-utils.js.map +1 -0
  486. package/src/utils.d.ts +68 -0
  487. package/src/utils.d.ts.map +1 -0
  488. package/src/utils.js +291 -0
  489. package/src/utils.js.map +1 -0
  490. package/LICENSE +0 -21
  491. package/src/builders/ecies-builder.ts +0 -39
  492. package/src/builders/member-builder.ts +0 -155
  493. package/src/constants.ts +0 -609
  494. package/src/core/errors/crypto-error.ts +0 -78
  495. package/src/core/types/result.ts +0 -19
  496. package/src/email-string.ts +0 -82
  497. package/src/enumerations/disposed-error-type.ts +0 -11
  498. package/src/enumerations/ecies-cipher-suite.ts +0 -4
  499. package/src/enumerations/ecies-encryption-type.ts +0 -41
  500. package/src/enumerations/ecies-error-type.ts +0 -43
  501. package/src/enumerations/ecies-string-key.ts +0 -205
  502. package/src/enumerations/ecies-version.ts +0 -3
  503. package/src/enumerations/guid-brand-type.ts +0 -26
  504. package/src/enumerations/guid-error-type.ts +0 -6
  505. package/src/enumerations/id-provider-error-type.ts +0 -50
  506. package/src/enumerations/invalid-email-type.ts +0 -5
  507. package/src/enumerations/length-encoding-type.ts +0 -6
  508. package/src/enumerations/length-error-type.ts +0 -5
  509. package/src/enumerations/member-error-type.ts +0 -106
  510. package/src/enumerations/password-login-error-type.ts +0 -4
  511. package/src/enumerations/pbkdf2-error-type.ts +0 -5
  512. package/src/enumerations/pbkdf2-profile.ts +0 -5
  513. package/src/enumerations/secure-storage-error-type.ts +0 -5
  514. package/src/errors/disposed.ts +0 -36
  515. package/src/errors/ecies.ts +0 -153
  516. package/src/errors/guid.ts +0 -130
  517. package/src/errors/id-provider.ts +0 -40
  518. package/src/errors/invalid-email.ts +0 -23
  519. package/src/errors/length.ts +0 -19
  520. package/src/errors/member.ts +0 -20
  521. package/src/errors/pbkdf2.ts +0 -20
  522. package/src/errors/secure-storage.ts +0 -17
  523. package/src/errors/simple-ecies.ts +0 -21
  524. package/src/errors/simple-test-error.ts +0 -6
  525. package/src/i18n-setup.ts +0 -130
  526. package/src/interfaces/checksum-config.ts +0 -4
  527. package/src/interfaces/checksum-consts.ts +0 -13
  528. package/src/interfaces/configuration-provenance.ts +0 -54
  529. package/src/interfaces/constants.ts +0 -75
  530. package/src/interfaces/ecies-config.ts +0 -8
  531. package/src/interfaces/ecies-consts.ts +0 -76
  532. package/src/interfaces/ecies-file-service.ts +0 -6
  533. package/src/interfaces/encrypted-chunk.ts +0 -64
  534. package/src/interfaces/encryption-state.ts +0 -19
  535. package/src/interfaces/frontend-member-operational.ts +0 -77
  536. package/src/interfaces/guid.ts +0 -86
  537. package/src/interfaces/id-provider.ts +0 -152
  538. package/src/interfaces/invariant.ts +0 -60
  539. package/src/interfaces/library-error.ts +0 -23
  540. package/src/interfaces/member.ts +0 -84
  541. package/src/interfaces/multi-recipient-chunk.ts +0 -61
  542. package/src/interfaces/pbkdf2-config.ts +0 -6
  543. package/src/interfaces/pbkdf2-consts.ts +0 -10
  544. package/src/interfaces/pbkdf2-result.ts +0 -5
  545. package/src/interfaces/stream-config.ts +0 -17
  546. package/src/interfaces/stream-header.ts +0 -34
  547. package/src/interfaces/stream-progress.ts +0 -31
  548. package/src/lib/configuration-provenance-utils.ts +0 -29
  549. package/src/lib/crypto-container.ts +0 -64
  550. package/src/lib/guid.ts +0 -1097
  551. package/src/lib/id-providers/custom-provider.ts +0 -109
  552. package/src/lib/id-providers/guidv4-provider.ts +0 -141
  553. package/src/lib/id-providers/objectid-provider.ts +0 -125
  554. package/src/lib/id-providers/uuid-provider.ts +0 -133
  555. package/src/lib/invariant-validator.ts +0 -133
  556. package/src/lib/invariants/encryption-algorithm-consistency.ts +0 -73
  557. package/src/lib/invariants/pbkdf2-profiles-validity.ts +0 -78
  558. package/src/lib/invariants/recipient-id-consistency.ts +0 -46
  559. package/src/lib/multi-recipient-chunk-utils.ts +0 -63
  560. package/src/member.ts +0 -495
  561. package/src/phone-number.ts +0 -18
  562. package/src/regexes.ts +0 -10
  563. package/src/secure-buffer.ts +0 -226
  564. package/src/secure-string.ts +0 -244
  565. package/src/services/aes-gcm.ts +0 -220
  566. package/src/services/chunk-processor.ts +0 -188
  567. package/src/services/ecies/README.md +0 -147
  568. package/src/services/ecies/crypto-core.ts +0 -292
  569. package/src/services/ecies/example.ts +0 -185
  570. package/src/services/ecies/file.ts +0 -167
  571. package/src/services/ecies/integration.ts +0 -241
  572. package/src/services/ecies/interfaces.ts +0 -62
  573. package/src/services/ecies/manual-test.ts +0 -219
  574. package/src/services/ecies/multi-recipient.ts +0 -545
  575. package/src/services/ecies/service.ts +0 -370
  576. package/src/services/ecies/signature.ts +0 -93
  577. package/src/services/ecies/single-recipient.ts +0 -476
  578. package/src/services/encryption-stream.ts +0 -435
  579. package/src/services/multi-recipient-processor.ts +0 -377
  580. package/src/services/password-login.ts +0 -226
  581. package/src/services/pbkdf2.ts +0 -169
  582. package/src/services/progress-tracker.ts +0 -128
  583. package/src/services/resumable-encryption.ts +0 -135
  584. package/src/services/xor.ts +0 -65
  585. package/src/test-mocks/index.ts +0 -1
  586. package/src/test-mocks/mock-frontend-member.ts +0 -276
  587. package/src/testing.ts +0 -2
  588. package/src/translations/de.ts +0 -260
  589. package/src/translations/en-US.ts +0 -262
  590. package/src/translations/es.ts +0 -271
  591. package/src/translations/fr.ts +0 -269
  592. package/src/translations/ja.ts +0 -259
  593. package/src/translations/uk.ts +0 -271
  594. package/src/translations/zh-cn.ts +0 -234
  595. package/src/types/deep-partial.ts +0 -11
  596. package/src/utils/encryption-type-utils.ts +0 -76
  597. package/src/utils.ts +0 -329
@@ -1,78 +0,0 @@
1
- import { IConstants } from '../../interfaces/constants';
2
- import { BaseInvariant } from '../../interfaces/invariant';
3
- import { Pbkdf2ProfileEnum } from '../../enumerations/pbkdf2-profile';
4
-
5
- /**
6
- * Validates that PBKDF2 profiles have sensible parameters.
7
- *
8
- * Checks:
9
- * - iterations > 0 and not too low (security risk)
10
- * - saltBytes > 0 and reasonable
11
- * - hashBytes > 0 and matches expected hash output
12
- */
13
- export class Pbkdf2ProfilesValidityInvariant extends BaseInvariant {
14
- constructor() {
15
- super(
16
- 'Pbkdf2ProfilesValidity',
17
- 'PBKDF2 profiles must have valid cryptographic parameters'
18
- );
19
- }
20
-
21
- check(config: IConstants): boolean {
22
- const profiles = [
23
- config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.BROWSER_PASSWORD],
24
- config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.HIGH_SECURITY],
25
- config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.TEST_FAST],
26
- ];
27
-
28
- for (const profile of profiles) {
29
- // iterations must be positive and reasonable
30
- if (profile.iterations < 1000 || profile.iterations > 10_000_000) {
31
- return false;
32
- }
33
-
34
- // saltBytes must be at least 16 bytes (128 bits)
35
- if (profile.saltBytes < 16 || profile.saltBytes > 256) {
36
- return false;
37
- }
38
-
39
- // hashBytes must be positive and reasonable for sha256
40
- if (profile.hashBytes < 16 || profile.hashBytes > 64) {
41
- return false;
42
- }
43
- }
44
-
45
- return true;
46
- }
47
-
48
- errorMessage(config: IConstants): string {
49
- const issues: string[] = [];
50
- const profileTests = [
51
- { name: 'BROWSER_PASSWORD', profile: config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.BROWSER_PASSWORD] },
52
- { name: 'HIGH_SECURITY', profile: config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.HIGH_SECURITY] },
53
- { name: 'TEST_FAST', profile: config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.TEST_FAST] },
54
- ];
55
-
56
- for (const { name, profile } of profileTests) {
57
- if (profile.iterations < 1000 || profile.iterations > 10_000_000) {
58
- issues.push(
59
- `${name}.iterations (${profile.iterations}) must be between 1000 and 10,000,000`
60
- );
61
- }
62
-
63
- if (profile.saltBytes < 16 || profile.saltBytes > 256) {
64
- issues.push(
65
- `${name}.saltBytes (${profile.saltBytes}) must be between 16 and 256`
66
- );
67
- }
68
-
69
- if (profile.hashBytes < 16 || profile.hashBytes > 64) {
70
- issues.push(
71
- `${name}.hashBytes (${profile.hashBytes}) must be between 16 and 64`
72
- );
73
- }
74
- }
75
-
76
- return `Invariant '${this.name}' failed:\n ${issues.join('\n ')}`;
77
- }
78
- }
@@ -1,46 +0,0 @@
1
- import { IConstants } from '../../interfaces/constants';
2
- import { BaseInvariant } from '../../interfaces/invariant';
3
-
4
- /**
5
- * Validates that all recipient ID size configurations are consistent.
6
- *
7
- * This invariant would have caught the 12 vs 32 byte discrepancy.
8
- *
9
- * Checks:
10
- * - MEMBER_ID_LENGTH === idProvider.byteLength
11
- * - ECIES.MULTIPLE.RECIPIENT_ID_SIZE === idProvider.byteLength
12
- * - All three values must be in sync
13
- */
14
- export class RecipientIdConsistencyInvariant extends BaseInvariant {
15
- constructor() {
16
- super(
17
- 'RecipientIdConsistency',
18
- 'All recipient ID size configurations must match the ID provider byte length'
19
- );
20
- }
21
-
22
- check(config: IConstants): boolean {
23
- return (
24
- config.MEMBER_ID_LENGTH === config.idProvider.byteLength &&
25
- config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE === config.idProvider.byteLength
26
- );
27
- }
28
-
29
- errorMessage(config: IConstants): string {
30
- const issues: string[] = [];
31
-
32
- if (config.MEMBER_ID_LENGTH !== config.idProvider.byteLength) {
33
- issues.push(
34
- `MEMBER_ID_LENGTH (${config.MEMBER_ID_LENGTH}) !== idProvider.byteLength (${config.idProvider.byteLength})`
35
- );
36
- }
37
-
38
- if (config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE !== config.idProvider.byteLength) {
39
- issues.push(
40
- `ECIES.MULTIPLE.RECIPIENT_ID_SIZE (${config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE}) !== idProvider.byteLength (${config.idProvider.byteLength})`
41
- );
42
- }
43
-
44
- return `Invariant '${this.name}' failed:\n ${issues.join('\n ')}`;
45
- }
46
- }
@@ -1,63 +0,0 @@
1
- /**
2
- * Multi-recipient format constants structure
3
- */
4
- export interface IMultiRecipientConstants {
5
- readonly MAGIC: number;
6
- readonly VERSION: number;
7
- readonly HEADER_SIZE: number;
8
- readonly RECIPIENT_ID_SIZE: number;
9
- readonly KEY_SIZE_BYTES: number;
10
- readonly FLAG_IS_LAST: number;
11
- readonly FLAG_HAS_CHECKSUM: number;
12
- readonly MAX_RECIPIENTS: number;
13
- }
14
-
15
- /**
16
- * Get multi-recipient constants for a specific recipient ID size.
17
- * This allows the format to adapt to different ID providers.
18
- *
19
- * @param recipientIdSize - The byte length of recipient IDs (from ID provider)
20
- * @returns Frozen constants object for the multi-recipient format
21
- *
22
- * @example
23
- * ```typescript
24
- * // For ObjectID (12 bytes)
25
- * const constants = getMultiRecipientConstants(12);
26
- *
27
- * // For GUID (16 bytes)
28
- * const constants = getMultiRecipientConstants(16);
29
- * ```
30
- */
31
- export function getMultiRecipientConstants(
32
- recipientIdSize: number,
33
- ): IMultiRecipientConstants {
34
- if (
35
- !Number.isInteger(recipientIdSize) ||
36
- recipientIdSize < 1 ||
37
- recipientIdSize > 255
38
- ) {
39
- throw new Error(
40
- `Invalid recipientIdSize: ${recipientIdSize}. Must be an integer between 1 and 255.`,
41
- );
42
- }
43
-
44
- return Object.freeze({
45
- MAGIC: 0x4d524543, // "MREC"
46
- VERSION: 0x0002, // Updated to 0x0002 for Shared Ephemeral Key support
47
- HEADER_SIZE: 64, // Increased to 64 bytes to accommodate Ephemeral Public Key (33 bytes)
48
- RECIPIENT_ID_SIZE: recipientIdSize,
49
- KEY_SIZE_BYTES: 2,
50
- FLAG_IS_LAST: 0x01,
51
- FLAG_HAS_CHECKSUM: 0x02,
52
- MAX_RECIPIENTS: 65535,
53
- });
54
- }
55
-
56
- /**
57
- * Default multi-recipient constants using ObjectID size (12 bytes).
58
- *
59
- * @deprecated Use getMultiRecipientConstants(config.idProvider.byteLength) instead
60
- * for dynamic ID size support. This constant is provided for backward compatibility only.
61
- */
62
- export const MULTI_RECIPIENT_CONSTANTS: IMultiRecipientConstants =
63
- getMultiRecipientConstants(12);
package/src/member.ts DELETED
@@ -1,495 +0,0 @@
1
- import { Wallet } from '@ethereumjs/wallet';
2
- import { Constants, ECIES } from './constants';
3
- import { EmailString } from './email-string';
4
- import MemberErrorType from './enumerations/member-error-type';
5
- import MemberType from './enumerations/member-type';
6
- import { MemberError } from './errors/member';
7
- import { IECIESConstants } from './interfaces/ecies-consts';
8
- import { IEncryptedChunk } from './interfaces/encrypted-chunk';
9
- import { IFrontendMemberOperational } from './interfaces/frontend-member-operational';
10
- import { IMember } from './interfaces/member';
11
- import { IMemberStorageData } from './interfaces/member-storage';
12
- import { IMemberWithMnemonic } from './interfaces/member-with-mnemonic';
13
- import { SecureBuffer } from './secure-buffer';
14
- import { SecureString } from './secure-string';
15
- import { ECIESService } from './services/ecies/service';
16
- import { EncryptionStream } from './services/encryption-stream';
17
- import { SignatureUint8Array } from './types';
18
- import {
19
- base64ToUint8Array,
20
- uint8ArrayToBase64,
21
- uint8ArrayToHex,
22
- } from './utils';
23
-
24
- /**
25
- * Represents a member with cryptographic capabilities.
26
- * This class provides methods for signing, verifying, encrypting, and decrypting data.
27
- * It also manages the member's keys and wallet.
28
- */
29
- export class Member implements IMember, IFrontendMemberOperational<Uint8Array> {
30
- private readonly _eciesService: ECIESService;
31
- private readonly _id: Uint8Array;
32
- private readonly _type: MemberType;
33
- private readonly _name: string;
34
- private readonly _email: EmailString;
35
- private readonly _publicKey: Uint8Array;
36
- private readonly _creatorId: Uint8Array;
37
- private readonly _dateCreated: Date;
38
- private readonly _dateUpdated: Date;
39
- private _privateKey?: SecureBuffer;
40
- private _wallet?: Wallet;
41
-
42
- constructor(
43
- // Add injected services as parameters
44
- eciesService: ECIESService,
45
- // Original parameters
46
- type: MemberType,
47
- name: string,
48
- email: EmailString,
49
- publicKey: Uint8Array,
50
- privateKey?: SecureBuffer,
51
- wallet?: Wallet,
52
- id?: Uint8Array,
53
- dateCreated?: Date,
54
- dateUpdated?: Date,
55
- creatorId?: Uint8Array,
56
- ) {
57
- // Assign injected services
58
- this._eciesService = eciesService;
59
- // Assign original parameters
60
- this._type = type;
61
- this._id = id ?? Constants.idProvider.generate();
62
- this._name = name;
63
- if (!this._name || this._name.length == 0) {
64
- throw new MemberError(MemberErrorType.MissingMemberName);
65
- }
66
- if (this._name.trim() != this._name) {
67
- throw new MemberError(MemberErrorType.InvalidMemberNameWhitespace);
68
- }
69
- this._email = email;
70
- this._publicKey = publicKey;
71
- this._privateKey = privateKey;
72
- this._wallet = wallet;
73
-
74
- // don't create a new date object with nearly identical values to the existing one
75
- let _now: null | Date = null;
76
- const now = function () {
77
- if (!_now) {
78
- _now = new Date();
79
- }
80
- return _now;
81
- };
82
- this._dateCreated = dateCreated ?? now();
83
- this._dateUpdated = dateUpdated ?? now();
84
- this._creatorId = creatorId ?? this._id;
85
- }
86
-
87
- // Required getters
88
- public get id(): Uint8Array {
89
- return this._id;
90
- }
91
- public get type(): MemberType {
92
- return this._type;
93
- }
94
- public get name(): string {
95
- return this._name;
96
- }
97
- public get email(): EmailString {
98
- return this._email;
99
- }
100
- public get publicKey(): Uint8Array {
101
- return this._publicKey;
102
- }
103
- public get creatorId(): Uint8Array {
104
- return this._creatorId;
105
- }
106
- public get dateCreated(): Date {
107
- return this._dateCreated;
108
- }
109
- public get dateUpdated(): Date {
110
- return this._dateUpdated;
111
- }
112
-
113
- // Optional private data getters
114
- public get privateKey(): SecureBuffer | undefined {
115
- return this._privateKey;
116
- }
117
- public get wallet(): Wallet {
118
- if (!this._wallet) {
119
- throw new MemberError(MemberErrorType.NoWallet);
120
- }
121
- return this._wallet;
122
- }
123
-
124
- // State getters
125
- public get hasPrivateKey(): boolean {
126
- return this._privateKey !== undefined;
127
- }
128
-
129
- public unloadPrivateKey(): void {
130
- // Do not dispose here; tests expect the same SecureBuffer instance to remain usable
131
- // when reloaded into another member in the same process.
132
- this._privateKey = undefined;
133
- }
134
-
135
- public unloadWallet(): void {
136
- this._wallet = undefined;
137
- }
138
-
139
- public unloadWalletAndPrivateKey(): void {
140
- this.unloadWallet();
141
- this.unloadPrivateKey();
142
- }
143
-
144
- public loadWallet(
145
- mnemonic: SecureString,
146
- eciesParams?: IECIESConstants,
147
- ): void {
148
- if (this._wallet) {
149
- throw new MemberError(MemberErrorType.WalletAlreadyLoaded);
150
- }
151
- const eciesConsts = eciesParams ?? ECIES;
152
- const { wallet } = this._eciesService.walletAndSeedFromMnemonic(mnemonic);
153
- const privateKey = wallet.getPrivateKey();
154
- // Use service to get compressed public key
155
- const publicKey = this._eciesService.getPublicKey(privateKey);
156
-
157
- if (uint8ArrayToHex(publicKey) !== uint8ArrayToHex(this._publicKey)) {
158
- throw new MemberError(MemberErrorType.InvalidMnemonic);
159
- }
160
- this._wallet = wallet;
161
- this._privateKey?.dispose();
162
- this._privateKey = new SecureBuffer(privateKey);
163
- }
164
-
165
- /**
166
- * Loads the private key and optionally the voting private key.
167
- *
168
- * @param privateKey The private key to load.
169
- * @param votingPrivateKey The voting private key to load.
170
- */
171
- public loadPrivateKey(privateKey: SecureBuffer): void {
172
- this._privateKey = privateKey;
173
- }
174
-
175
- public sign(data: Uint8Array): SignatureUint8Array {
176
- if (!this._privateKey) {
177
- throw new MemberError(MemberErrorType.MissingPrivateKey);
178
- }
179
- return this._eciesService.signMessage(this._privateKey.value, data);
180
- }
181
-
182
- public signData(data: Uint8Array): SignatureUint8Array {
183
- if (!this._privateKey) {
184
- throw new MemberError(MemberErrorType.MissingPrivateKey);
185
- }
186
- return this._eciesService.signMessage(
187
- new Uint8Array(this._privateKey.value),
188
- data,
189
- );
190
- }
191
-
192
- public verify(signature: SignatureUint8Array, data: Uint8Array): boolean {
193
- return this._eciesService.verifyMessage(this._publicKey, data, signature);
194
- }
195
-
196
- public verifySignature(
197
- data: Uint8Array,
198
- signature: Uint8Array,
199
- publicKey: Uint8Array,
200
- ): boolean {
201
- return this._eciesService.verifyMessage(
202
- publicKey,
203
- data,
204
- signature as SignatureUint8Array,
205
- );
206
- }
207
-
208
- private static readonly MAX_ENCRYPTION_SIZE = 1024 * 1024 * 10; // 10MB limit
209
- private static readonly VALID_STRING_REGEX = /^[\x20-\x7E\n\r\t]*$/; // Printable ASCII + common whitespace
210
-
211
- /**
212
- * Encrypt data stream (for large data)
213
- */
214
- async *encryptDataStream(
215
- source: AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>,
216
- options?: {
217
- recipientPublicKey?: Uint8Array;
218
- onProgress?: (progress: {
219
- bytesProcessed: number;
220
- chunksProcessed: number;
221
- }) => void;
222
- signal?: AbortSignal;
223
- },
224
- ): AsyncGenerator<IEncryptedChunk, void, unknown> {
225
- if (!this._privateKey && !options?.recipientPublicKey) {
226
- throw new MemberError(MemberErrorType.MissingPrivateKey);
227
- }
228
-
229
- const targetPublicKey = options?.recipientPublicKey || this._publicKey;
230
- const stream = new EncryptionStream(this._eciesService);
231
-
232
- // Convert ReadableStream to AsyncIterable if needed
233
- const asyncSource =
234
- 'getReader' in source
235
- ? this.readableStreamToAsyncIterable(
236
- source as ReadableStream<Uint8Array>,
237
- )
238
- : (source as AsyncIterable<Uint8Array>);
239
-
240
- let bytesProcessed = 0;
241
- let chunksProcessed = 0;
242
-
243
- for await (const chunk of stream.encryptStream(
244
- asyncSource,
245
- targetPublicKey,
246
- {
247
- signal: options?.signal,
248
- },
249
- )) {
250
- bytesProcessed += chunk.metadata?.originalSize || 0;
251
- chunksProcessed++;
252
-
253
- if (options?.onProgress) {
254
- options.onProgress({ bytesProcessed, chunksProcessed });
255
- }
256
-
257
- yield chunk;
258
- }
259
- }
260
-
261
- /**
262
- * Decrypt data stream (for large data)
263
- */
264
- async *decryptDataStream(
265
- source: AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>,
266
- options?: {
267
- onProgress?: (progress: {
268
- bytesProcessed: number;
269
- chunksProcessed: number;
270
- }) => void;
271
- signal?: AbortSignal;
272
- },
273
- ): AsyncGenerator<Uint8Array, void, unknown> {
274
- if (!this._privateKey) {
275
- throw new MemberError(MemberErrorType.MissingPrivateKey);
276
- }
277
-
278
- const stream = new EncryptionStream(this._eciesService);
279
-
280
- // Convert ReadableStream to AsyncIterable if needed
281
- const asyncSource =
282
- 'getReader' in source
283
- ? this.readableStreamToAsyncIterable(
284
- source as ReadableStream<Uint8Array>,
285
- )
286
- : (source as AsyncIterable<Uint8Array>);
287
-
288
- let bytesProcessed = 0;
289
- let chunksProcessed = 0;
290
-
291
- for await (const chunk of stream.decryptStream(
292
- asyncSource,
293
- new Uint8Array(this._privateKey.value),
294
- { signal: options?.signal },
295
- )) {
296
- bytesProcessed += chunk.length;
297
- chunksProcessed++;
298
-
299
- if (options?.onProgress) {
300
- options.onProgress({ bytesProcessed, chunksProcessed });
301
- }
302
-
303
- yield chunk;
304
- }
305
- }
306
-
307
- /**
308
- * Convert ReadableStream to AsyncIterable
309
- */
310
- private async *readableStreamToAsyncIterable(
311
- stream: ReadableStream<Uint8Array>,
312
- ): AsyncIterable<Uint8Array> {
313
- const reader = stream.getReader();
314
- try {
315
- while (true) {
316
- const { done, value } = await reader.read();
317
- if (done) break;
318
- yield value;
319
- }
320
- } finally {
321
- reader.releaseLock();
322
- }
323
- }
324
-
325
- public async encryptData(
326
- data: string | Uint8Array,
327
- recipientPublicKey?: Uint8Array,
328
- ): Promise<Uint8Array> {
329
- // Validate input
330
- if (!data) {
331
- throw new MemberError(MemberErrorType.MissingEncryptionData);
332
- }
333
-
334
- // Check size limit
335
- const arr: Uint8Array =
336
- data instanceof Uint8Array ? data : new TextEncoder().encode(data);
337
- if (arr.length > Member.MAX_ENCRYPTION_SIZE) {
338
- throw new MemberError(MemberErrorType.EncryptionDataTooLarge);
339
- }
340
-
341
- // Use recipient public key or self public key
342
- const targetPublicKey = recipientPublicKey || this._publicKey;
343
-
344
- return await this._eciesService.encryptSimpleOrSingle(
345
- false,
346
- targetPublicKey,
347
- arr,
348
- );
349
- }
350
-
351
- public async decryptData(encryptedData: Uint8Array): Promise<Uint8Array> {
352
- if (!this._privateKey) {
353
- throw new MemberError(MemberErrorType.MissingPrivateKey);
354
- }
355
- // decryptSingleWithHeader now returns the Uint8Array directly
356
- return await this._eciesService.decryptSimpleOrSingleWithHeader(
357
- false,
358
- new Uint8Array(this._privateKey.value),
359
- encryptedData,
360
- );
361
- }
362
-
363
- public toJson(): string {
364
- const storage: IMemberStorageData = {
365
- id: Constants.idProvider.serialize(this._id),
366
- type: this._type,
367
- name: this._name,
368
- email: this._email.toString(),
369
- publicKey: uint8ArrayToBase64(this._publicKey),
370
- creatorId: Constants.idProvider.serialize(this._creatorId),
371
- dateCreated: this._dateCreated.toISOString(),
372
- dateUpdated: this._dateUpdated.toISOString(),
373
- };
374
- return JSON.stringify(storage);
375
- }
376
-
377
- public dispose(): void {
378
- // Ensure secret material is zeroized when disposing
379
- try {
380
- this._privateKey?.dispose();
381
- } finally {
382
- this.unloadWalletAndPrivateKey();
383
- }
384
- }
385
-
386
- public static fromJson(
387
- json: string,
388
- // Add injected services as parameters
389
- eciesService: ECIESService,
390
- ): Member {
391
- let storage: IMemberStorageData;
392
- try {
393
- storage = JSON.parse(json);
394
- } catch (error) {
395
- throw new MemberError(MemberErrorType.InvalidMemberData);
396
- }
397
- const email = new EmailString(storage.email);
398
-
399
- // Pass injected services to constructor
400
- const dateCreated = new Date(storage.dateCreated);
401
- return new Member(
402
- eciesService,
403
- storage.type,
404
- storage.name,
405
- email,
406
- base64ToUint8Array(storage.publicKey),
407
- undefined,
408
- undefined,
409
- Constants.idProvider.deserialize(storage.id),
410
- dateCreated,
411
- new Date(storage.dateUpdated),
412
- Constants.idProvider.deserialize(storage.creatorId),
413
- );
414
- }
415
-
416
- public static fromMnemonic(
417
- mnemonic: SecureString,
418
- eciesService: ECIESService,
419
- eciesParams?: IECIESConstants,
420
- name = 'Test User',
421
- email = new EmailString('test@example.com'),
422
- ): Member {
423
- const eciesConsts = eciesParams ?? ECIES;
424
- const { wallet } = eciesService.walletAndSeedFromMnemonic(mnemonic);
425
- const privateKey = wallet.getPrivateKey();
426
- // Use service to get compressed public key
427
- const publicKey = eciesService.getPublicKey(privateKey);
428
-
429
- return new Member(
430
- eciesService,
431
- MemberType.User,
432
- name,
433
- email,
434
- publicKey,
435
- new SecureBuffer(privateKey),
436
- wallet,
437
- );
438
- }
439
-
440
- public static newMember(
441
- // Add injected services as parameters
442
- eciesService: ECIESService,
443
- // Original parameters
444
- type: MemberType,
445
- name: string,
446
- email: EmailString,
447
- forceMnemonic?: SecureString,
448
- createdBy?: Uint8Array,
449
- eciesParams?: IECIESConstants,
450
- ): IMemberWithMnemonic {
451
- // Validate inputs first
452
- if (!name || name.length == 0) {
453
- throw new MemberError(MemberErrorType.MissingMemberName);
454
- }
455
- if (name.trim() != name) {
456
- throw new MemberError(MemberErrorType.InvalidMemberNameWhitespace);
457
- }
458
- if (!email || email.toString().length == 0) {
459
- throw new MemberError(MemberErrorType.MissingEmail);
460
- }
461
- if (email.toString().trim() != email.toString()) {
462
- throw new MemberError(MemberErrorType.InvalidEmailWhitespace);
463
- }
464
-
465
- const eciesConsts = eciesParams ?? ECIES;
466
- // Use injected services
467
- const mnemonic = forceMnemonic ?? eciesService.generateNewMnemonic();
468
- const { wallet } = eciesService.walletAndSeedFromMnemonic(mnemonic);
469
-
470
- // Get private key from wallet
471
- const privateKey = wallet.getPrivateKey();
472
- // Get compressed public key
473
- const publicKey = eciesService.getPublicKey(privateKey);
474
-
475
- const newId = Constants.idProvider.generate();
476
- const dateCreated = new Date();
477
- return {
478
- // Pass injected services to constructor
479
- member: new Member(
480
- eciesService,
481
- type,
482
- name,
483
- email,
484
- publicKey,
485
- new SecureBuffer(privateKey),
486
- wallet,
487
- newId,
488
- dateCreated,
489
- dateCreated,
490
- createdBy ?? newId,
491
- ),
492
- mnemonic,
493
- };
494
- }
495
- }
@@ -1,18 +0,0 @@
1
- import { EciesStringKey } from './enumerations';
2
- import { EciesComponentId, getEciesI18nEngine } from './i18n-setup';
3
- import { PhoneNumberRegex } from './regexes';
4
-
5
- export class PhoneNumber {
6
- private readonly _number: string;
7
- constructor(number: string) {
8
- // make sure the phone number fits the regex
9
- if (!PhoneNumberRegex.test(number)) {
10
- const engine = getEciesI18nEngine();
11
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_PhoneNumber_InvalidTemplate, { phoneNumber: number }));
12
- }
13
- this._number = number;
14
- }
15
- public get number(): string {
16
- return this._number;
17
- }
18
- }
package/src/regexes.ts DELETED
@@ -1,10 +0,0 @@
1
- export const PASSWORD_REGEX =
2
- /^(?=.*[A-Za-z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?])[A-Za-z\d!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]{8,}$/;
3
-
4
- export const MNEMONIC_REGEX =
5
- /^(?:\w+\s){11}\w+$|^(?:\w+\s){14}\w+$|^(?:\w+\s){17}\w+$|^(?:\w+\s){20}\w+$|^(?:\w+\s){23}\w+$/i;
6
-
7
- /**
8
- * Phone number regex to validate phone numbers
9
- */
10
- export const PhoneNumberRegex = /^(\+\d{1,3}[- ]?)?\d{10}$/; // Matches international phone numbers with optional country code