@digitaldefiance/ecies-lib 4.4.1 → 4.4.3

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 (590) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +4 -0
  3. package/package.json +10 -7
  4. package/src/builders/ecies-builder.ts +39 -0
  5. package/src/builders/{index.js → index.ts} +1 -1
  6. package/src/builders/member-builder.ts +155 -0
  7. package/src/constants.ts +609 -0
  8. package/src/core/errors/crypto-error.ts +78 -0
  9. package/src/core/{index.js → index.ts} +1 -1
  10. package/src/core/types/result.ts +19 -0
  11. package/src/email-string.ts +82 -0
  12. package/src/enumerations/disposed-error-type.ts +11 -0
  13. package/src/enumerations/ecies-cipher-suite.ts +4 -0
  14. package/src/enumerations/ecies-encryption-type.ts +41 -0
  15. package/src/enumerations/ecies-error-type.ts +43 -0
  16. package/src/enumerations/ecies-string-key.ts +205 -0
  17. package/src/enumerations/ecies-version.ts +3 -0
  18. package/src/enumerations/guid-brand-type.ts +26 -0
  19. package/src/enumerations/guid-error-type.ts +6 -0
  20. package/src/enumerations/id-provider-error-type.ts +50 -0
  21. package/src/enumerations/{index.js → index.ts} +0 -1
  22. package/src/enumerations/invalid-email-type.ts +5 -0
  23. package/src/enumerations/length-encoding-type.ts +6 -0
  24. package/src/enumerations/length-error-type.ts +5 -0
  25. package/src/enumerations/member-error-type.ts +106 -0
  26. package/src/enumerations/{member-type.d.ts → member-type.ts} +7 -6
  27. package/src/enumerations/password-login-error-type.ts +4 -0
  28. package/src/enumerations/pbkdf2-error-type.ts +5 -0
  29. package/src/enumerations/pbkdf2-profile.ts +5 -0
  30. package/src/enumerations/secure-storage-error-type.ts +5 -0
  31. package/src/errors/disposed.ts +36 -0
  32. package/src/errors/ecies.ts +153 -0
  33. package/src/errors/guid.ts +130 -0
  34. package/src/errors/id-provider.ts +40 -0
  35. package/src/errors/{index.d.ts → index.ts} +0 -1
  36. package/src/errors/invalid-email.ts +23 -0
  37. package/src/errors/length.ts +19 -0
  38. package/src/errors/member.ts +20 -0
  39. package/src/errors/pbkdf2.ts +20 -0
  40. package/src/errors/secure-storage.ts +17 -0
  41. package/src/errors/simple-ecies.ts +21 -0
  42. package/src/errors/simple-test-error.ts +6 -0
  43. package/src/i18n-setup.ts +130 -0
  44. package/src/{index.js → index.ts} +64 -7
  45. package/src/interfaces/checksum-config.ts +4 -0
  46. package/src/interfaces/checksum-consts.ts +13 -0
  47. package/src/interfaces/configuration-provenance.ts +54 -0
  48. package/src/interfaces/constants.ts +75 -0
  49. package/src/interfaces/ecies-config.ts +8 -0
  50. package/src/interfaces/ecies-consts.ts +74 -0
  51. package/src/interfaces/ecies-file-service.ts +6 -0
  52. package/src/interfaces/encrypted-chunk.ts +64 -0
  53. package/src/interfaces/encryption-state.ts +19 -0
  54. package/src/interfaces/frontend-member-operational.ts +77 -0
  55. package/src/interfaces/guid.ts +86 -0
  56. package/src/interfaces/id-provider.ts +152 -0
  57. package/src/interfaces/{index.d.ts → index.ts} +0 -1
  58. package/src/interfaces/invariant.ts +60 -0
  59. package/src/interfaces/library-error.ts +23 -0
  60. package/src/interfaces/{member-storage.d.ts → member-storage.ts} +11 -10
  61. package/src/interfaces/{member-with-mnemonic.d.ts → member-with-mnemonic.ts} +3 -3
  62. package/src/interfaces/member.ts +84 -0
  63. package/src/interfaces/multi-recipient-chunk.ts +61 -0
  64. package/src/interfaces/pbkdf2-config.ts +6 -0
  65. package/src/interfaces/pbkdf2-consts.ts +10 -0
  66. package/src/interfaces/pbkdf2-result.ts +5 -0
  67. package/src/interfaces/stream-config.ts +17 -0
  68. package/src/interfaces/stream-header.ts +34 -0
  69. package/src/interfaces/stream-progress.ts +31 -0
  70. package/src/lib/configuration-provenance-utils.ts +26 -0
  71. package/src/lib/crypto-container.ts +64 -0
  72. package/src/lib/guid.ts +1097 -0
  73. package/src/lib/id-providers/custom-provider.ts +109 -0
  74. package/src/lib/id-providers/guidv4-provider.ts +141 -0
  75. package/src/lib/id-providers/{index.d.ts → index.ts} +6 -5
  76. package/src/lib/id-providers/objectid-provider.ts +125 -0
  77. package/src/lib/id-providers/uuid-provider.ts +133 -0
  78. package/src/lib/{index.js → index.ts} +2 -2
  79. package/src/lib/invariant-validator.ts +133 -0
  80. package/src/lib/invariants/encryption-algorithm-consistency.ts +73 -0
  81. package/src/lib/invariants/{index.js → index.ts} +0 -1
  82. package/src/lib/invariants/pbkdf2-profiles-validity.ts +78 -0
  83. package/src/lib/invariants/recipient-id-consistency.ts +46 -0
  84. package/src/lib/multi-recipient-chunk-utils.ts +63 -0
  85. package/src/member.ts +495 -0
  86. package/src/{pbkdf2-profiles.d.ts → pbkdf2-profiles.ts} +2 -2
  87. package/src/phone-number.ts +18 -0
  88. package/src/regexes.ts +10 -0
  89. package/src/secure-buffer.ts +226 -0
  90. package/src/secure-string.ts +244 -0
  91. package/src/services/aes-gcm.ts +220 -0
  92. package/src/services/chunk-processor.ts +188 -0
  93. package/src/services/ecies/README.md +147 -0
  94. package/src/services/ecies/crypto-core.ts +292 -0
  95. package/src/services/ecies/example.ts +185 -0
  96. package/src/services/ecies/file.ts +167 -0
  97. package/src/services/ecies/{index.js → index.ts} +2 -1
  98. package/src/services/ecies/integration.ts +241 -0
  99. package/src/services/ecies/interfaces.ts +62 -0
  100. package/src/services/ecies/manual-test.ts +219 -0
  101. package/src/services/ecies/multi-recipient.ts +545 -0
  102. package/src/services/ecies/service.ts +370 -0
  103. package/src/services/ecies/signature.ts +93 -0
  104. package/src/services/ecies/single-recipient.ts +476 -0
  105. package/src/services/encryption-stream.ts +435 -0
  106. package/src/services/{index.js → index.ts} +0 -1
  107. package/src/services/multi-recipient-processor.ts +377 -0
  108. package/src/services/password-login.ts +226 -0
  109. package/src/services/pbkdf2.ts +169 -0
  110. package/src/services/progress-tracker.ts +128 -0
  111. package/src/services/resumable-encryption.ts +135 -0
  112. package/src/services/xor.ts +65 -0
  113. package/src/test-mocks/index.ts +1 -0
  114. package/src/test-mocks/mock-frontend-member.ts +276 -0
  115. package/src/{testing.js → testing.ts} +0 -1
  116. package/src/translations/{de.js → de.ts} +112 -56
  117. package/src/translations/{en-US.js → en-US.ts} +116 -58
  118. package/src/translations/{es.js → es.ts} +134 -67
  119. package/src/translations/{fr.js → fr.ts} +129 -64
  120. package/src/translations/{ja.js → ja.ts} +111 -55
  121. package/src/translations/{uk.js → uk.ts} +132 -67
  122. package/src/translations/{zh-cn.js → zh-cn.ts} +60 -29
  123. package/src/types/deep-partial.ts +11 -0
  124. package/src/{types.d.ts → types.ts} +15 -7
  125. package/src/utils/encryption-type-utils.ts +76 -0
  126. package/src/utils.ts +329 -0
  127. package/src/builders/ecies-builder.d.ts +0 -18
  128. package/src/builders/ecies-builder.d.ts.map +0 -1
  129. package/src/builders/ecies-builder.js +0 -30
  130. package/src/builders/ecies-builder.js.map +0 -1
  131. package/src/builders/index.d.ts +0 -6
  132. package/src/builders/index.d.ts.map +0 -1
  133. package/src/builders/index.js.map +0 -1
  134. package/src/builders/member-builder.d.ts +0 -51
  135. package/src/builders/member-builder.d.ts.map +0 -1
  136. package/src/builders/member-builder.js +0 -97
  137. package/src/builders/member-builder.js.map +0 -1
  138. package/src/constants.d.ts +0 -60
  139. package/src/constants.d.ts.map +0 -1
  140. package/src/constants.js +0 -446
  141. package/src/constants.js.map +0 -1
  142. package/src/core/errors/crypto-error.d.ts +0 -34
  143. package/src/core/errors/crypto-error.d.ts.map +0 -1
  144. package/src/core/errors/crypto-error.js +0 -56
  145. package/src/core/errors/crypto-error.js.map +0 -1
  146. package/src/core/index.d.ts +0 -6
  147. package/src/core/index.d.ts.map +0 -1
  148. package/src/core/index.js.map +0 -1
  149. package/src/core/types/result.d.ts +0 -16
  150. package/src/core/types/result.d.ts.map +0 -1
  151. package/src/core/types/result.js +0 -12
  152. package/src/core/types/result.js.map +0 -1
  153. package/src/email-string.d.ts +0 -42
  154. package/src/email-string.d.ts.map +0 -1
  155. package/src/email-string.js +0 -67
  156. package/src/email-string.js.map +0 -1
  157. package/src/enumerations/disposed-error-type.d.ts +0 -12
  158. package/src/enumerations/disposed-error-type.d.ts.map +0 -1
  159. package/src/enumerations/disposed-error-type.js +0 -13
  160. package/src/enumerations/disposed-error-type.js.map +0 -1
  161. package/src/enumerations/ecies-cipher-suite.d.ts +0 -4
  162. package/src/enumerations/ecies-cipher-suite.d.ts.map +0 -1
  163. package/src/enumerations/ecies-cipher-suite.js +0 -6
  164. package/src/enumerations/ecies-cipher-suite.js.map +0 -1
  165. package/src/enumerations/ecies-encryption-type.d.ts +0 -11
  166. package/src/enumerations/ecies-encryption-type.d.ts.map +0 -1
  167. package/src/enumerations/ecies-encryption-type.js +0 -27
  168. package/src/enumerations/ecies-encryption-type.js.map +0 -1
  169. package/src/enumerations/ecies-error-type.d.ts +0 -44
  170. package/src/enumerations/ecies-error-type.d.ts.map +0 -1
  171. package/src/enumerations/ecies-error-type.js +0 -45
  172. package/src/enumerations/ecies-error-type.js.map +0 -1
  173. package/src/enumerations/ecies-string-key.d.ts +0 -192
  174. package/src/enumerations/ecies-string-key.d.ts.map +0 -1
  175. package/src/enumerations/ecies-string-key.js +0 -199
  176. package/src/enumerations/ecies-string-key.js.map +0 -1
  177. package/src/enumerations/ecies-version.d.ts +0 -4
  178. package/src/enumerations/ecies-version.d.ts.map +0 -1
  179. package/src/enumerations/ecies-version.js +0 -5
  180. package/src/enumerations/ecies-version.js.map +0 -1
  181. package/src/enumerations/guid-brand-type.d.ts +0 -27
  182. package/src/enumerations/guid-brand-type.d.ts.map +0 -1
  183. package/src/enumerations/guid-brand-type.js +0 -28
  184. package/src/enumerations/guid-brand-type.js.map +0 -1
  185. package/src/enumerations/guid-error-type.d.ts +0 -7
  186. package/src/enumerations/guid-error-type.d.ts.map +0 -1
  187. package/src/enumerations/guid-error-type.js +0 -8
  188. package/src/enumerations/guid-error-type.js.map +0 -1
  189. package/src/enumerations/id-provider-error-type.d.ts +0 -43
  190. package/src/enumerations/id-provider-error-type.d.ts.map +0 -1
  191. package/src/enumerations/id-provider-error-type.js +0 -44
  192. package/src/enumerations/id-provider-error-type.js.map +0 -1
  193. package/src/enumerations/index.d.ts +0 -18
  194. package/src/enumerations/index.d.ts.map +0 -1
  195. package/src/enumerations/index.js.map +0 -1
  196. package/src/enumerations/invalid-email-type.d.ts +0 -6
  197. package/src/enumerations/invalid-email-type.d.ts.map +0 -1
  198. package/src/enumerations/invalid-email-type.js +0 -7
  199. package/src/enumerations/invalid-email-type.js.map +0 -1
  200. package/src/enumerations/length-encoding-type.d.ts +0 -7
  201. package/src/enumerations/length-encoding-type.d.ts.map +0 -1
  202. package/src/enumerations/length-encoding-type.js +0 -8
  203. package/src/enumerations/length-encoding-type.js.map +0 -1
  204. package/src/enumerations/length-error-type.d.ts +0 -6
  205. package/src/enumerations/length-error-type.d.ts.map +0 -1
  206. package/src/enumerations/length-error-type.js +0 -7
  207. package/src/enumerations/length-error-type.js.map +0 -1
  208. package/src/enumerations/member-error-type.d.ts +0 -87
  209. package/src/enumerations/member-error-type.d.ts.map +0 -1
  210. package/src/enumerations/member-error-type.js +0 -88
  211. package/src/enumerations/member-error-type.js.map +0 -1
  212. package/src/enumerations/member-type.d.ts.map +0 -1
  213. package/src/enumerations/member-type.js +0 -16
  214. package/src/enumerations/member-type.js.map +0 -1
  215. package/src/enumerations/password-login-error-type.d.ts +0 -5
  216. package/src/enumerations/password-login-error-type.d.ts.map +0 -1
  217. package/src/enumerations/password-login-error-type.js +0 -6
  218. package/src/enumerations/password-login-error-type.js.map +0 -1
  219. package/src/enumerations/pbkdf2-error-type.d.ts +0 -6
  220. package/src/enumerations/pbkdf2-error-type.d.ts.map +0 -1
  221. package/src/enumerations/pbkdf2-error-type.js +0 -7
  222. package/src/enumerations/pbkdf2-error-type.js.map +0 -1
  223. package/src/enumerations/pbkdf2-profile.d.ts +0 -6
  224. package/src/enumerations/pbkdf2-profile.d.ts.map +0 -1
  225. package/src/enumerations/pbkdf2-profile.js +0 -7
  226. package/src/enumerations/pbkdf2-profile.js.map +0 -1
  227. package/src/enumerations/secure-storage-error-type.d.ts +0 -6
  228. package/src/enumerations/secure-storage-error-type.d.ts.map +0 -1
  229. package/src/enumerations/secure-storage-error-type.js +0 -7
  230. package/src/enumerations/secure-storage-error-type.js.map +0 -1
  231. package/src/errors/disposed.d.ts +0 -22
  232. package/src/errors/disposed.d.ts.map +0 -1
  233. package/src/errors/disposed.js +0 -28
  234. package/src/errors/disposed.js.map +0 -1
  235. package/src/errors/ecies.d.ts +0 -52
  236. package/src/errors/ecies.d.ts.map +0 -1
  237. package/src/errors/ecies.js +0 -78
  238. package/src/errors/ecies.js.map +0 -1
  239. package/src/errors/guid.d.ts +0 -49
  240. package/src/errors/guid.d.ts.map +0 -1
  241. package/src/errors/guid.js +0 -96
  242. package/src/errors/guid.js.map +0 -1
  243. package/src/errors/id-provider.d.ts +0 -23
  244. package/src/errors/id-provider.d.ts.map +0 -1
  245. package/src/errors/id-provider.js +0 -29
  246. package/src/errors/id-provider.js.map +0 -1
  247. package/src/errors/index.d.ts.map +0 -1
  248. package/src/errors/index.js +0 -10
  249. package/src/errors/index.js.map +0 -1
  250. package/src/errors/invalid-email.d.ts +0 -8
  251. package/src/errors/invalid-email.d.ts.map +0 -1
  252. package/src/errors/invalid-email.js +0 -15
  253. package/src/errors/invalid-email.js.map +0 -1
  254. package/src/errors/length.d.ts +0 -7
  255. package/src/errors/length.d.ts.map +0 -1
  256. package/src/errors/length.js +0 -11
  257. package/src/errors/length.js.map +0 -1
  258. package/src/errors/member.d.ts +0 -7
  259. package/src/errors/member.d.ts.map +0 -1
  260. package/src/errors/member.js +0 -11
  261. package/src/errors/member.js.map +0 -1
  262. package/src/errors/pbkdf2.d.ts +0 -7
  263. package/src/errors/pbkdf2.d.ts.map +0 -1
  264. package/src/errors/pbkdf2.js +0 -11
  265. package/src/errors/pbkdf2.js.map +0 -1
  266. package/src/errors/secure-storage.d.ts +0 -7
  267. package/src/errors/secure-storage.d.ts.map +0 -1
  268. package/src/errors/secure-storage.js +0 -12
  269. package/src/errors/secure-storage.js.map +0 -1
  270. package/src/errors/simple-ecies.d.ts +0 -6
  271. package/src/errors/simple-ecies.d.ts.map +0 -1
  272. package/src/errors/simple-ecies.js +0 -12
  273. package/src/errors/simple-ecies.js.map +0 -1
  274. package/src/errors/simple-test-error.d.ts +0 -4
  275. package/src/errors/simple-test-error.d.ts.map +0 -1
  276. package/src/errors/simple-test-error.js +0 -7
  277. package/src/errors/simple-test-error.js.map +0 -1
  278. package/src/i18n-setup.d.ts +0 -32
  279. package/src/i18n-setup.d.ts.map +0 -1
  280. package/src/i18n-setup.js +0 -101
  281. package/src/i18n-setup.js.map +0 -1
  282. package/src/index.d.ts +0 -80
  283. package/src/index.d.ts.map +0 -1
  284. package/src/index.js.map +0 -1
  285. package/src/interfaces/checksum-config.d.ts +0 -5
  286. package/src/interfaces/checksum-config.d.ts.map +0 -1
  287. package/src/interfaces/checksum-config.js +0 -2
  288. package/src/interfaces/checksum-config.js.map +0 -1
  289. package/src/interfaces/checksum-consts.d.ts +0 -11
  290. package/src/interfaces/checksum-consts.d.ts.map +0 -1
  291. package/src/interfaces/checksum-consts.js +0 -2
  292. package/src/interfaces/checksum-consts.js.map +0 -1
  293. package/src/interfaces/configuration-provenance.d.ts +0 -43
  294. package/src/interfaces/configuration-provenance.d.ts.map +0 -1
  295. package/src/interfaces/configuration-provenance.js +0 -3
  296. package/src/interfaces/configuration-provenance.js.map +0 -1
  297. package/src/interfaces/constants.d.ts +0 -70
  298. package/src/interfaces/constants.d.ts.map +0 -1
  299. package/src/interfaces/constants.js +0 -2
  300. package/src/interfaces/constants.js.map +0 -1
  301. package/src/interfaces/ecies-config.d.ts +0 -9
  302. package/src/interfaces/ecies-config.d.ts.map +0 -1
  303. package/src/interfaces/ecies-config.js +0 -2
  304. package/src/interfaces/ecies-config.js.map +0 -1
  305. package/src/interfaces/ecies-consts.d.ts +0 -61
  306. package/src/interfaces/ecies-consts.d.ts.map +0 -1
  307. package/src/interfaces/ecies-consts.js +0 -2
  308. package/src/interfaces/ecies-consts.js.map +0 -1
  309. package/src/interfaces/ecies-file-service.d.ts +0 -7
  310. package/src/interfaces/ecies-file-service.d.ts.map +0 -1
  311. package/src/interfaces/ecies-file-service.js +0 -2
  312. package/src/interfaces/ecies-file-service.js.map +0 -1
  313. package/src/interfaces/encrypted-chunk.d.ts +0 -55
  314. package/src/interfaces/encrypted-chunk.d.ts.map +0 -1
  315. package/src/interfaces/encrypted-chunk.js +0 -12
  316. package/src/interfaces/encrypted-chunk.js.map +0 -1
  317. package/src/interfaces/encryption-state.d.ts +0 -18
  318. package/src/interfaces/encryption-state.d.ts.map +0 -1
  319. package/src/interfaces/encryption-state.js +0 -2
  320. package/src/interfaces/encryption-state.js.map +0 -1
  321. package/src/interfaces/frontend-member-operational.d.ts +0 -51
  322. package/src/interfaces/frontend-member-operational.d.ts.map +0 -1
  323. package/src/interfaces/frontend-member-operational.js +0 -2
  324. package/src/interfaces/frontend-member-operational.js.map +0 -1
  325. package/src/interfaces/guid.d.ts +0 -78
  326. package/src/interfaces/guid.d.ts.map +0 -1
  327. package/src/interfaces/guid.js +0 -2
  328. package/src/interfaces/guid.js.map +0 -1
  329. package/src/interfaces/id-provider.d.ts +0 -107
  330. package/src/interfaces/id-provider.d.ts.map +0 -1
  331. package/src/interfaces/id-provider.js +0 -52
  332. package/src/interfaces/id-provider.js.map +0 -1
  333. package/src/interfaces/index.d.ts.map +0 -1
  334. package/src/interfaces/index.js +0 -13
  335. package/src/interfaces/index.js.map +0 -1
  336. package/src/interfaces/invariant.d.ts +0 -46
  337. package/src/interfaces/invariant.d.ts.map +0 -1
  338. package/src/interfaces/invariant.js +0 -18
  339. package/src/interfaces/invariant.js.map +0 -1
  340. package/src/interfaces/library-error.d.ts +0 -23
  341. package/src/interfaces/library-error.d.ts.map +0 -1
  342. package/src/interfaces/library-error.js +0 -2
  343. package/src/interfaces/library-error.js.map +0 -1
  344. package/src/interfaces/member-storage.d.ts.map +0 -1
  345. package/src/interfaces/member-storage.js +0 -2
  346. package/src/interfaces/member-storage.js.map +0 -1
  347. package/src/interfaces/member-with-mnemonic.d.ts.map +0 -1
  348. package/src/interfaces/member-with-mnemonic.js +0 -2
  349. package/src/interfaces/member-with-mnemonic.js.map +0 -1
  350. package/src/interfaces/member.d.ts +0 -55
  351. package/src/interfaces/member.d.ts.map +0 -1
  352. package/src/interfaces/member.js +0 -2
  353. package/src/interfaces/member.js.map +0 -1
  354. package/src/interfaces/multi-recipient-chunk.d.ts +0 -54
  355. package/src/interfaces/multi-recipient-chunk.d.ts.map +0 -1
  356. package/src/interfaces/multi-recipient-chunk.js +0 -11
  357. package/src/interfaces/multi-recipient-chunk.js.map +0 -1
  358. package/src/interfaces/pbkdf2-config.d.ts +0 -7
  359. package/src/interfaces/pbkdf2-config.d.ts.map +0 -1
  360. package/src/interfaces/pbkdf2-config.js +0 -2
  361. package/src/interfaces/pbkdf2-config.js.map +0 -1
  362. package/src/interfaces/pbkdf2-consts.d.ts +0 -9
  363. package/src/interfaces/pbkdf2-consts.d.ts.map +0 -1
  364. package/src/interfaces/pbkdf2-consts.js +0 -2
  365. package/src/interfaces/pbkdf2-consts.js.map +0 -1
  366. package/src/interfaces/pbkdf2-result.d.ts +0 -6
  367. package/src/interfaces/pbkdf2-result.d.ts.map +0 -1
  368. package/src/interfaces/pbkdf2-result.js +0 -2
  369. package/src/interfaces/pbkdf2-result.js.map +0 -1
  370. package/src/interfaces/stream-config.d.ts +0 -14
  371. package/src/interfaces/stream-config.d.ts.map +0 -1
  372. package/src/interfaces/stream-config.js +0 -8
  373. package/src/interfaces/stream-config.js.map +0 -1
  374. package/src/interfaces/stream-header.d.ts +0 -29
  375. package/src/interfaces/stream-header.d.ts.map +0 -1
  376. package/src/interfaces/stream-header.js +0 -9
  377. package/src/interfaces/stream-header.js.map +0 -1
  378. package/src/interfaces/stream-progress.d.ts +0 -33
  379. package/src/interfaces/stream-progress.d.ts.map +0 -1
  380. package/src/interfaces/stream-progress.js +0 -2
  381. package/src/interfaces/stream-progress.js.map +0 -1
  382. package/src/lib/configuration-provenance-utils.d.ts +0 -11
  383. package/src/lib/configuration-provenance-utils.d.ts.map +0 -1
  384. package/src/lib/configuration-provenance-utils.js +0 -23
  385. package/src/lib/configuration-provenance-utils.js.map +0 -1
  386. package/src/lib/crypto-container.d.ts +0 -25
  387. package/src/lib/crypto-container.d.ts.map +0 -1
  388. package/src/lib/crypto-container.js +0 -46
  389. package/src/lib/crypto-container.js.map +0 -1
  390. package/src/lib/guid.d.ts +0 -344
  391. package/src/lib/guid.d.ts.map +0 -1
  392. package/src/lib/guid.js +0 -914
  393. package/src/lib/guid.js.map +0 -1
  394. package/src/lib/id-providers/custom-provider.d.ts +0 -46
  395. package/src/lib/id-providers/custom-provider.d.ts.map +0 -1
  396. package/src/lib/id-providers/custom-provider.js +0 -85
  397. package/src/lib/id-providers/custom-provider.js.map +0 -1
  398. package/src/lib/id-providers/guidv4-provider.d.ts +0 -56
  399. package/src/lib/id-providers/guidv4-provider.d.ts.map +0 -1
  400. package/src/lib/id-providers/guidv4-provider.js +0 -122
  401. package/src/lib/id-providers/guidv4-provider.js.map +0 -1
  402. package/src/lib/id-providers/index.d.ts.map +0 -1
  403. package/src/lib/id-providers/index.js +0 -29
  404. package/src/lib/id-providers/index.js.map +0 -1
  405. package/src/lib/id-providers/objectid-provider.d.ts +0 -43
  406. package/src/lib/id-providers/objectid-provider.d.ts.map +0 -1
  407. package/src/lib/id-providers/objectid-provider.js +0 -104
  408. package/src/lib/id-providers/objectid-provider.js.map +0 -1
  409. package/src/lib/id-providers/uuid-provider.d.ts +0 -52
  410. package/src/lib/id-providers/uuid-provider.d.ts.map +0 -1
  411. package/src/lib/id-providers/uuid-provider.js +0 -110
  412. package/src/lib/id-providers/uuid-provider.js.map +0 -1
  413. package/src/lib/index.d.ts +0 -6
  414. package/src/lib/index.d.ts.map +0 -1
  415. package/src/lib/index.js.map +0 -1
  416. package/src/lib/invariant-validator.d.ts +0 -59
  417. package/src/lib/invariant-validator.d.ts.map +0 -1
  418. package/src/lib/invariant-validator.js +0 -97
  419. package/src/lib/invariant-validator.js.map +0 -1
  420. package/src/lib/invariants/encryption-algorithm-consistency.d.ts +0 -17
  421. package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +0 -1
  422. package/src/lib/invariants/encryption-algorithm-consistency.js +0 -49
  423. package/src/lib/invariants/encryption-algorithm-consistency.js.map +0 -1
  424. package/src/lib/invariants/index.d.ts +0 -4
  425. package/src/lib/invariants/index.d.ts.map +0 -1
  426. package/src/lib/invariants/index.js.map +0 -1
  427. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +0 -16
  428. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +0 -1
  429. package/src/lib/invariants/pbkdf2-profiles-validity.js +0 -58
  430. package/src/lib/invariants/pbkdf2-profiles-validity.js.map +0 -1
  431. package/src/lib/invariants/recipient-id-consistency.d.ts +0 -18
  432. package/src/lib/invariants/recipient-id-consistency.d.ts.map +0 -1
  433. package/src/lib/invariants/recipient-id-consistency.js +0 -31
  434. package/src/lib/invariants/recipient-id-consistency.js.map +0 -1
  435. package/src/lib/multi-recipient-chunk-utils.d.ts +0 -38
  436. package/src/lib/multi-recipient-chunk-utils.d.ts.map +0 -1
  437. package/src/lib/multi-recipient-chunk-utils.js +0 -41
  438. package/src/lib/multi-recipient-chunk-utils.js.map +0 -1
  439. package/src/member.d.ts +0 -92
  440. package/src/member.d.ts.map +0 -1
  441. package/src/member.js +0 -322
  442. package/src/member.js.map +0 -1
  443. package/src/pbkdf2-profiles.d.ts.map +0 -1
  444. package/src/pbkdf2-profiles.js +0 -2
  445. package/src/pbkdf2-profiles.js.map +0 -1
  446. package/src/phone-number.d.ts +0 -6
  447. package/src/phone-number.d.ts.map +0 -1
  448. package/src/phone-number.js +0 -18
  449. package/src/phone-number.js.map +0 -1
  450. package/src/regexes.d.ts +0 -7
  451. package/src/regexes.d.ts.map +0 -1
  452. package/src/regexes.js +0 -7
  453. package/src/regexes.js.map +0 -1
  454. package/src/secure-buffer.d.ts +0 -61
  455. package/src/secure-buffer.d.ts.map +0 -1
  456. package/src/secure-buffer.js +0 -201
  457. package/src/secure-buffer.js.map +0 -1
  458. package/src/secure-string.d.ts +0 -46
  459. package/src/secure-string.d.ts.map +0 -1
  460. package/src/secure-string.js +0 -206
  461. package/src/secure-string.js.map +0 -1
  462. package/src/services/aes-gcm.d.ts +0 -57
  463. package/src/services/aes-gcm.d.ts.map +0 -1
  464. package/src/services/aes-gcm.js +0 -142
  465. package/src/services/aes-gcm.js.map +0 -1
  466. package/src/services/chunk-processor.d.ts +0 -31
  467. package/src/services/chunk-processor.d.ts.map +0 -1
  468. package/src/services/chunk-processor.js +0 -145
  469. package/src/services/chunk-processor.js.map +0 -1
  470. package/src/services/ecies/crypto-core.d.ts +0 -72
  471. package/src/services/ecies/crypto-core.d.ts.map +0 -1
  472. package/src/services/ecies/crypto-core.js +0 -205
  473. package/src/services/ecies/crypto-core.js.map +0 -1
  474. package/src/services/ecies/example.d.ts +0 -25
  475. package/src/services/ecies/example.d.ts.map +0 -1
  476. package/src/services/ecies/example.js +0 -121
  477. package/src/services/ecies/example.js.map +0 -1
  478. package/src/services/ecies/file.d.ts +0 -18
  479. package/src/services/ecies/file.d.ts.map +0 -1
  480. package/src/services/ecies/file.js +0 -106
  481. package/src/services/ecies/file.js.map +0 -1
  482. package/src/services/ecies/index.d.ts +0 -38
  483. package/src/services/ecies/index.d.ts.map +0 -1
  484. package/src/services/ecies/index.js.map +0 -1
  485. package/src/services/ecies/integration.d.ts +0 -59
  486. package/src/services/ecies/integration.d.ts.map +0 -1
  487. package/src/services/ecies/integration.js +0 -167
  488. package/src/services/ecies/integration.js.map +0 -1
  489. package/src/services/ecies/interfaces.d.ts +0 -54
  490. package/src/services/ecies/interfaces.d.ts.map +0 -1
  491. package/src/services/ecies/interfaces.js +0 -5
  492. package/src/services/ecies/interfaces.js.map +0 -1
  493. package/src/services/ecies/manual-test.d.ts +0 -29
  494. package/src/services/ecies/manual-test.d.ts.map +0 -1
  495. package/src/services/ecies/manual-test.js +0 -163
  496. package/src/services/ecies/manual-test.js.map +0 -1
  497. package/src/services/ecies/multi-recipient.d.ts +0 -56
  498. package/src/services/ecies/multi-recipient.d.ts.map +0 -1
  499. package/src/services/ecies/multi-recipient.js +0 -344
  500. package/src/services/ecies/multi-recipient.js.map +0 -1
  501. package/src/services/ecies/service.d.ts +0 -120
  502. package/src/services/ecies/service.d.ts.map +0 -1
  503. package/src/services/ecies/service.js +0 -210
  504. package/src/services/ecies/service.js.map +0 -1
  505. package/src/services/ecies/signature.d.ts +0 -27
  506. package/src/services/ecies/signature.d.ts.map +0 -1
  507. package/src/services/ecies/signature.js +0 -72
  508. package/src/services/ecies/signature.js.map +0 -1
  509. package/src/services/ecies/single-recipient.d.ts +0 -46
  510. package/src/services/ecies/single-recipient.d.ts.map +0 -1
  511. package/src/services/ecies/single-recipient.js +0 -322
  512. package/src/services/ecies/single-recipient.js.map +0 -1
  513. package/src/services/encryption-stream.d.ts +0 -71
  514. package/src/services/encryption-stream.d.ts.map +0 -1
  515. package/src/services/encryption-stream.js +0 -295
  516. package/src/services/encryption-stream.js.map +0 -1
  517. package/src/services/index.d.ts +0 -11
  518. package/src/services/index.d.ts.map +0 -1
  519. package/src/services/index.js.map +0 -1
  520. package/src/services/multi-recipient-processor.d.ts +0 -35
  521. package/src/services/multi-recipient-processor.d.ts.map +0 -1
  522. package/src/services/multi-recipient-processor.js +0 -289
  523. package/src/services/multi-recipient-processor.js.map +0 -1
  524. package/src/services/password-login.d.ts +0 -47
  525. package/src/services/password-login.d.ts.map +0 -1
  526. package/src/services/password-login.js +0 -115
  527. package/src/services/password-login.js.map +0 -1
  528. package/src/services/pbkdf2.d.ts +0 -54
  529. package/src/services/pbkdf2.d.ts.map +0 -1
  530. package/src/services/pbkdf2.js +0 -108
  531. package/src/services/pbkdf2.js.map +0 -1
  532. package/src/services/progress-tracker.d.ts +0 -23
  533. package/src/services/progress-tracker.d.ts.map +0 -1
  534. package/src/services/progress-tracker.js +0 -103
  535. package/src/services/progress-tracker.js.map +0 -1
  536. package/src/services/resumable-encryption.d.ts +0 -19
  537. package/src/services/resumable-encryption.d.ts.map +0 -1
  538. package/src/services/resumable-encryption.js +0 -105
  539. package/src/services/resumable-encryption.js.map +0 -1
  540. package/src/services/xor.d.ts +0 -37
  541. package/src/services/xor.d.ts.map +0 -1
  542. package/src/services/xor.js +0 -63
  543. package/src/services/xor.js.map +0 -1
  544. package/src/test-mocks/index.d.ts +0 -2
  545. package/src/test-mocks/index.d.ts.map +0 -1
  546. package/src/test-mocks/index.js +0 -2
  547. package/src/test-mocks/index.js.map +0 -1
  548. package/src/test-mocks/mock-frontend-member.d.ts +0 -85
  549. package/src/test-mocks/mock-frontend-member.d.ts.map +0 -1
  550. package/src/test-mocks/mock-frontend-member.js +0 -190
  551. package/src/test-mocks/mock-frontend-member.js.map +0 -1
  552. package/src/testing.d.ts +0 -2
  553. package/src/testing.d.ts.map +0 -1
  554. package/src/testing.js.map +0 -1
  555. package/src/translations/de.d.ts +0 -4
  556. package/src/translations/de.d.ts.map +0 -1
  557. package/src/translations/de.js.map +0 -1
  558. package/src/translations/en-US.d.ts +0 -4
  559. package/src/translations/en-US.d.ts.map +0 -1
  560. package/src/translations/en-US.js.map +0 -1
  561. package/src/translations/es.d.ts +0 -4
  562. package/src/translations/es.d.ts.map +0 -1
  563. package/src/translations/es.js.map +0 -1
  564. package/src/translations/fr.d.ts +0 -4
  565. package/src/translations/fr.d.ts.map +0 -1
  566. package/src/translations/fr.js.map +0 -1
  567. package/src/translations/ja.d.ts +0 -4
  568. package/src/translations/ja.d.ts.map +0 -1
  569. package/src/translations/ja.js.map +0 -1
  570. package/src/translations/uk.d.ts +0 -4
  571. package/src/translations/uk.d.ts.map +0 -1
  572. package/src/translations/uk.js.map +0 -1
  573. package/src/translations/zh-cn.d.ts +0 -4
  574. package/src/translations/zh-cn.d.ts.map +0 -1
  575. package/src/translations/zh-cn.js.map +0 -1
  576. package/src/types/deep-partial.d.ts +0 -4
  577. package/src/types/deep-partial.d.ts.map +0 -1
  578. package/src/types/deep-partial.js +0 -2
  579. package/src/types/deep-partial.js.map +0 -1
  580. package/src/types.d.ts.map +0 -1
  581. package/src/types.js +0 -2
  582. package/src/types.js.map +0 -1
  583. package/src/utils/encryption-type-utils.d.ts +0 -29
  584. package/src/utils/encryption-type-utils.d.ts.map +0 -1
  585. package/src/utils/encryption-type-utils.js +0 -61
  586. package/src/utils/encryption-type-utils.js.map +0 -1
  587. package/src/utils.d.ts +0 -68
  588. package/src/utils.d.ts.map +0 -1
  589. package/src/utils.js +0 -273
  590. package/src/utils.js.map +0 -1
@@ -0,0 +1,435 @@
1
+ import { IECIESConstants } from '../interfaces/ecies-consts';
2
+ import { Constants } from '../constants';
3
+ import { IConstants } from '../interfaces/constants';
4
+ import { IStreamConfig, DEFAULT_STREAM_CONFIG } from '../interfaces/stream-config';
5
+ import { IEncryptedChunk } from '../interfaces/encrypted-chunk';
6
+ import { IStreamHeader, STREAM_HEADER_CONSTANTS } from '../interfaces/stream-header';
7
+ import { IStreamProgress } from '../interfaces/stream-progress';
8
+ import { EciesEncryptionTypeEnum } from '../enumerations/ecies-encryption-type';
9
+ import { ECIESService } from './ecies/service';
10
+ import { ChunkProcessor } from './chunk-processor';
11
+ import { ProgressTracker } from './progress-tracker';
12
+ import { MultiRecipientProcessor } from './multi-recipient-processor';
13
+ import { IMultiRecipientChunk } from '../interfaces/multi-recipient-chunk';
14
+ import { EciesComponentId, getEciesI18nEngine } from '../i18n-setup';
15
+ import { EciesStringKey } from '../enumerations';
16
+
17
+ /**
18
+ * Options for stream encryption
19
+ */
20
+ export interface IEncryptStreamOptions {
21
+ chunkSize?: number;
22
+ signal?: AbortSignal;
23
+ includeChecksums?: boolean;
24
+ onProgress?: (progress: IStreamProgress) => void;
25
+ }
26
+
27
+ export interface IMultiRecipientStreamOptions extends IEncryptStreamOptions {
28
+ recipients: Array<{ id: Uint8Array; publicKey: Uint8Array }>;
29
+ }
30
+
31
+ /**
32
+ * Options for stream decryption
33
+ */
34
+ export interface IDecryptStreamOptions {
35
+ signal?: AbortSignal;
36
+ onProgress?: (progress: IStreamProgress) => void;
37
+ }
38
+
39
+ /**
40
+ * Streaming encryption/decryption service
41
+ */
42
+ export class EncryptionStream {
43
+ private readonly processor: ChunkProcessor;
44
+ private readonly multiRecipientProcessor: MultiRecipientProcessor;
45
+
46
+ constructor(
47
+ private readonly ecies: ECIESService,
48
+ private readonly config: IStreamConfig = DEFAULT_STREAM_CONFIG,
49
+ private readonly eciesConsts: IECIESConstants = Constants.ECIES,
50
+ private readonly constants: IConstants = Constants
51
+ ) {
52
+ this.processor = new ChunkProcessor(ecies, eciesConsts);
53
+ this.multiRecipientProcessor = new MultiRecipientProcessor(ecies, constants);
54
+ }
55
+
56
+ /**
57
+ * Build stream header
58
+ */
59
+ buildStreamHeader(header: IStreamHeader): Uint8Array {
60
+ const buffer = new Uint8Array(STREAM_HEADER_CONSTANTS.HEADER_SIZE);
61
+ const view = new DataView(buffer.buffer);
62
+
63
+ view.setUint32(0, header.magic, false);
64
+ view.setUint16(4, header.version, false);
65
+ view.setUint8(6, header.encryptionType);
66
+ view.setUint32(7, header.chunkSize, false);
67
+ view.setUint32(11, header.totalChunks, false);
68
+ view.setBigUint64(15, BigInt(header.totalBytes), false);
69
+ view.setBigUint64(23, BigInt(header.timestamp), false);
70
+ // Bytes 31-127: reserved (zeros)
71
+
72
+ return buffer;
73
+ }
74
+
75
+ /**
76
+ * Parse stream header
77
+ */
78
+ parseStreamHeader(data: Uint8Array): IStreamHeader {
79
+ const engine = getEciesI18nEngine();
80
+ if (data.length < STREAM_HEADER_CONSTANTS.HEADER_SIZE) {
81
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_DataTooShortForHeader));
82
+ }
83
+
84
+ const view = new DataView(data.buffer, data.byteOffset);
85
+
86
+ const magic = view.getUint32(0, false);
87
+ if (magic !== STREAM_HEADER_CONSTANTS.MAGIC) {
88
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidMagicBytes));
89
+ }
90
+
91
+ const version = view.getUint16(4, false);
92
+ if (version !== STREAM_HEADER_CONSTANTS.VERSION) {
93
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_UnsupportedVersion));
94
+ }
95
+
96
+ return {
97
+ magic,
98
+ version,
99
+ encryptionType: view.getUint8(6) as EciesEncryptionTypeEnum,
100
+ chunkSize: view.getUint32(7, false),
101
+ totalChunks: view.getUint32(11, false),
102
+ totalBytes: Number(view.getBigUint64(15, false)),
103
+ timestamp: Number(view.getBigUint64(23, false)),
104
+ };
105
+ }
106
+
107
+ /**
108
+ * Encrypt data stream
109
+ */
110
+ async *encryptStream(
111
+ source: AsyncIterable<Uint8Array>,
112
+ publicKey: Uint8Array,
113
+ options: IEncryptStreamOptions = {}
114
+ ): AsyncGenerator<IEncryptedChunk, void, unknown> {
115
+ const engine = getEciesI18nEngine();
116
+ // Validate public key (65 bytes uncompressed with 0x04 prefix)
117
+ if (!publicKey || (publicKey.length !== 65 && publicKey.length !== 33)) {
118
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidPublicKeyLength));
119
+ }
120
+
121
+ const chunkSize = options.chunkSize ?? this.config.chunkSize;
122
+ const includeChecksums = options.includeChecksums ?? this.config.includeChecksums;
123
+ const signal = options.signal;
124
+ const onProgress = options.onProgress;
125
+
126
+ let buffer = new Uint8Array(0);
127
+ let chunkIndex = 0;
128
+ let lastYieldedChunk: IEncryptedChunk | null = null;
129
+ let tracker: ProgressTracker | undefined;
130
+ let totalBytesRead = 0;
131
+ const maxSingleChunk = 100 * 1024 * 1024; // 100MB max per source chunk
132
+
133
+ for await (const data of source) {
134
+ // Check for cancellation
135
+ if (signal?.aborted) {
136
+ throw new DOMException(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_EncryptionCancelled), 'AbortError');
137
+ }
138
+
139
+ // Prevent buffer exhaustion from single large source chunk
140
+ if (data.length > maxSingleChunk) {
141
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_BufferOverflowTemplate, { max: maxSingleChunk }));
142
+ }
143
+
144
+ // Append to buffer
145
+ const newBuffer = new Uint8Array(buffer.length + data.length);
146
+ newBuffer.set(buffer);
147
+ newBuffer.set(data, buffer.length);
148
+ buffer = newBuffer;
149
+ totalBytesRead += data.length;
150
+
151
+ // Initialize tracker on first data
152
+ if (!tracker && onProgress) {
153
+ tracker = new ProgressTracker();
154
+ }
155
+
156
+ // Process complete chunks
157
+ while (buffer.length >= chunkSize) {
158
+ if (signal?.aborted) {
159
+ throw new DOMException('Encryption cancelled', 'AbortError');
160
+ }
161
+
162
+ const chunkData = buffer.slice(0, chunkSize);
163
+ buffer = buffer.slice(chunkSize);
164
+
165
+ const encryptedChunk = await this.processor.encryptChunk(
166
+ chunkData,
167
+ publicKey,
168
+ chunkIndex++,
169
+ false,
170
+ includeChecksums
171
+ );
172
+
173
+ lastYieldedChunk = encryptedChunk;
174
+ yield encryptedChunk;
175
+
176
+ // Report progress
177
+ if (tracker && onProgress) {
178
+ onProgress(tracker.update(chunkSize));
179
+ }
180
+ }
181
+ }
182
+
183
+ // Process remaining data as last chunk
184
+ if (buffer.length > 0) {
185
+ if (signal?.aborted) {
186
+ throw new DOMException('Encryption cancelled', 'AbortError');
187
+ }
188
+
189
+ const encryptedChunk = await this.processor.encryptChunk(
190
+ buffer,
191
+ publicKey,
192
+ chunkIndex,
193
+ true,
194
+ includeChecksums
195
+ );
196
+
197
+ yield encryptedChunk;
198
+
199
+ // Report final progress
200
+ if (tracker && onProgress) {
201
+ onProgress(tracker.update(buffer.length));
202
+ }
203
+ } else if (chunkIndex === 0) {
204
+ // Empty stream - yield nothing
205
+ return;
206
+ } else if (lastYieldedChunk) {
207
+ // Mark the last yielded chunk as last
208
+ lastYieldedChunk.isLast = true;
209
+ }
210
+ }
211
+
212
+ /**
213
+ * Encrypt stream for multiple recipients
214
+ * Uses shared symmetric key encrypted for each recipient
215
+ */
216
+ async *encryptStreamMultiple(
217
+ source: AsyncIterable<Uint8Array>,
218
+ recipients: Array<{ id: Uint8Array; publicKey: Uint8Array }>,
219
+ options: IEncryptStreamOptions = {}
220
+ ): AsyncGenerator<IMultiRecipientChunk, void, unknown> {
221
+ const engine = getEciesI18nEngine();
222
+ if (recipients.length === 0) {
223
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_AtLeastOneRecipientRequired));
224
+ }
225
+ if (recipients.length > 65535) {
226
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_MaxRecipientsExceeded));
227
+ }
228
+
229
+ // Validate all recipient public keys
230
+ for (const recipient of recipients) {
231
+ if (!recipient.publicKey || (recipient.publicKey.length !== 65 && recipient.publicKey.length !== 33)) {
232
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidRecipientPublicKeyLength));
233
+ }
234
+ if (!recipient.id || recipient.id.length !== this.constants.MEMBER_ID_LENGTH) {
235
+ throw new Error(engine.translate(
236
+ EciesComponentId,
237
+ EciesStringKey.Error_Stream_InvalidRecipientIdLengthTemplate,
238
+ { expected: this.constants.MEMBER_ID_LENGTH }
239
+ ));
240
+ }
241
+ }
242
+
243
+ const chunkSize = options.chunkSize ?? this.config.chunkSize;
244
+ const signal = options.signal;
245
+ const onProgress = options.onProgress;
246
+
247
+ // Generate shared symmetric key for this stream
248
+ const symmetricKey = crypto.getRandomValues(new Uint8Array(32));
249
+
250
+ let buffer = new Uint8Array(0);
251
+ let chunkIndex = 0;
252
+ let tracker: ProgressTracker | undefined;
253
+ const maxSingleChunk = 100 * 1024 * 1024;
254
+
255
+ for await (const data of source) {
256
+ if (signal?.aborted) {
257
+ throw new DOMException('Encryption cancelled', 'AbortError');
258
+ }
259
+
260
+ if (data.length > maxSingleChunk) {
261
+ throw new Error(`Buffer overflow: source chunk exceeds ${maxSingleChunk} bytes`);
262
+ }
263
+
264
+ const newBuffer = new Uint8Array(buffer.length + data.length);
265
+ newBuffer.set(buffer);
266
+ newBuffer.set(data, buffer.length);
267
+ buffer = newBuffer;
268
+
269
+ if (!tracker && onProgress) {
270
+ tracker = new ProgressTracker();
271
+ }
272
+
273
+ while (buffer.length >= chunkSize) {
274
+ if (signal?.aborted) {
275
+ throw new DOMException('Encryption cancelled', 'AbortError');
276
+ }
277
+
278
+ const chunkData = buffer.slice(0, chunkSize);
279
+ buffer = buffer.slice(chunkSize);
280
+
281
+ const encryptedChunk = await this.multiRecipientProcessor.encryptChunk(
282
+ chunkData,
283
+ recipients,
284
+ chunkIndex++,
285
+ false,
286
+ symmetricKey
287
+ );
288
+
289
+ yield encryptedChunk;
290
+
291
+ if (tracker && onProgress) {
292
+ onProgress(tracker.update(chunkSize));
293
+ }
294
+ }
295
+ }
296
+
297
+ // Process remaining data as last chunk
298
+ if (buffer.length > 0) {
299
+ if (signal?.aborted) {
300
+ throw new DOMException('Encryption cancelled', 'AbortError');
301
+ }
302
+
303
+ const encryptedChunk = await this.multiRecipientProcessor.encryptChunk(
304
+ buffer,
305
+ recipients,
306
+ chunkIndex,
307
+ true,
308
+ symmetricKey
309
+ );
310
+
311
+ yield encryptedChunk;
312
+
313
+ if (tracker && onProgress) {
314
+ onProgress(tracker.update(buffer.length));
315
+ }
316
+ } else if (chunkIndex > 0) {
317
+ // Mark last yielded chunk - need to re-yield with isLast=true
318
+ // This is handled by the processor setting isLast flag
319
+ }
320
+ }
321
+
322
+ /**
323
+ * Decrypt multi-recipient stream
324
+ */
325
+ async *decryptStreamMultiple(
326
+ source: AsyncIterable<Uint8Array>,
327
+ recipientId: Uint8Array,
328
+ privateKey: Uint8Array,
329
+ options: IDecryptStreamOptions = {}
330
+ ): AsyncGenerator<Uint8Array, void, unknown> {
331
+ const engine = getEciesI18nEngine();
332
+ if (!recipientId || recipientId.length !== this.constants.MEMBER_ID_LENGTH) {
333
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidRecipientIdLengthTemplate, { expected: this.constants.MEMBER_ID_LENGTH }));
334
+ }
335
+ if (!privateKey || privateKey.length !== 32) {
336
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidPrivateKeyMust32Bytes));
337
+ }
338
+
339
+ const signal = options.signal;
340
+ const onProgress = options.onProgress;
341
+ let expectedIndex = 0;
342
+ let tracker: ProgressTracker | undefined;
343
+
344
+ if (onProgress) {
345
+ tracker = new ProgressTracker();
346
+ }
347
+
348
+ for await (const chunkData of source) {
349
+ if (signal?.aborted) {
350
+ throw new DOMException(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_DecryptionCancelled), 'AbortError');
351
+ }
352
+
353
+ const { data, header } = await this.multiRecipientProcessor.decryptChunk(
354
+ chunkData,
355
+ recipientId,
356
+ privateKey
357
+ );
358
+
359
+ if (header.chunkIndex !== expectedIndex) {
360
+ throw new Error(
361
+ engine.translate(EciesComponentId, EciesStringKey.Error_Stream_ChunkSequenceErrorTemplate, { expected: expectedIndex, actual: header.chunkIndex })
362
+ );
363
+ }
364
+
365
+ expectedIndex++;
366
+ yield data;
367
+
368
+ if (tracker && onProgress) {
369
+ onProgress(tracker.update(data.length));
370
+ }
371
+
372
+ const isLast = (header.flags & 0x01) !== 0;
373
+ if (isLast) {
374
+ break;
375
+ }
376
+ }
377
+ }
378
+
379
+ /**
380
+ * Decrypt data stream
381
+ */
382
+ async *decryptStream(
383
+ source: AsyncIterable<Uint8Array>,
384
+ privateKey: Uint8Array,
385
+ options: IDecryptStreamOptions = {}
386
+ ): AsyncGenerator<Uint8Array, void, unknown> {
387
+ const engine = getEciesI18nEngine();
388
+ // Validate private key
389
+ if (!privateKey || privateKey.length !== 32) {
390
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidPrivateKeyMust32Bytes));
391
+ }
392
+
393
+ const signal = options.signal;
394
+ const onProgress = options.onProgress;
395
+ let expectedIndex = 0;
396
+ let tracker: ProgressTracker | undefined;
397
+
398
+ if (onProgress) {
399
+ tracker = new ProgressTracker();
400
+ }
401
+
402
+ for await (const chunkData of source) {
403
+ // Check for cancellation
404
+ if (signal?.aborted) {
405
+ throw new DOMException(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_DecryptionCancelled), 'AbortError');
406
+ }
407
+
408
+ const { data, header } = await this.processor.decryptChunk(
409
+ chunkData,
410
+ privateKey
411
+ );
412
+
413
+ // Validate sequence
414
+ if (header.index !== expectedIndex) {
415
+ throw new Error(
416
+ engine.translate(EciesComponentId, EciesStringKey.Error_Stream_ChunkSequenceErrorTemplate, { expected: expectedIndex, actual: header.index })
417
+ );
418
+ }
419
+
420
+ expectedIndex++;
421
+ yield data;
422
+
423
+ // Report progress
424
+ if (tracker && onProgress) {
425
+ onProgress(tracker.update(data.length));
426
+ }
427
+
428
+ // Check if this was the last chunk
429
+ const isLast = (header.flags & 0x01) !== 0;
430
+ if (isLast) {
431
+ break;
432
+ }
433
+ }
434
+ }
435
+ }
@@ -8,4 +8,3 @@ export * from './pbkdf2';
8
8
  export * from './progress-tracker';
9
9
  export * from './resumable-encryption';
10
10
  export * from './xor';
11
- //# sourceMappingURL=index.js.map