@digitaldefiance/ecies-lib 4.4.2 → 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 (589) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +9 -6
  3. package/src/builders/ecies-builder.ts +39 -0
  4. package/src/builders/{index.js → index.ts} +1 -1
  5. package/src/builders/member-builder.ts +155 -0
  6. package/src/constants.ts +609 -0
  7. package/src/core/errors/crypto-error.ts +78 -0
  8. package/src/core/{index.js → index.ts} +1 -1
  9. package/src/core/types/result.ts +19 -0
  10. package/src/email-string.ts +82 -0
  11. package/src/enumerations/disposed-error-type.ts +11 -0
  12. package/src/enumerations/ecies-cipher-suite.ts +4 -0
  13. package/src/enumerations/ecies-encryption-type.ts +41 -0
  14. package/src/enumerations/ecies-error-type.ts +43 -0
  15. package/src/enumerations/ecies-string-key.ts +205 -0
  16. package/src/enumerations/ecies-version.ts +3 -0
  17. package/src/enumerations/guid-brand-type.ts +26 -0
  18. package/src/enumerations/guid-error-type.ts +6 -0
  19. package/src/enumerations/id-provider-error-type.ts +50 -0
  20. package/src/enumerations/{index.js → index.ts} +0 -1
  21. package/src/enumerations/invalid-email-type.ts +5 -0
  22. package/src/enumerations/length-encoding-type.ts +6 -0
  23. package/src/enumerations/length-error-type.ts +5 -0
  24. package/src/enumerations/member-error-type.ts +106 -0
  25. package/src/enumerations/{member-type.d.ts → member-type.ts} +7 -6
  26. package/src/enumerations/password-login-error-type.ts +4 -0
  27. package/src/enumerations/pbkdf2-error-type.ts +5 -0
  28. package/src/enumerations/pbkdf2-profile.ts +5 -0
  29. package/src/enumerations/secure-storage-error-type.ts +5 -0
  30. package/src/errors/disposed.ts +36 -0
  31. package/src/errors/ecies.ts +153 -0
  32. package/src/errors/guid.ts +130 -0
  33. package/src/errors/id-provider.ts +40 -0
  34. package/src/errors/{index.d.ts → index.ts} +0 -1
  35. package/src/errors/invalid-email.ts +23 -0
  36. package/src/errors/length.ts +19 -0
  37. package/src/errors/member.ts +20 -0
  38. package/src/errors/pbkdf2.ts +20 -0
  39. package/src/errors/secure-storage.ts +17 -0
  40. package/src/errors/simple-ecies.ts +21 -0
  41. package/src/errors/simple-test-error.ts +6 -0
  42. package/src/i18n-setup.ts +130 -0
  43. package/src/{index.js → index.ts} +64 -7
  44. package/src/interfaces/checksum-config.ts +4 -0
  45. package/src/interfaces/checksum-consts.ts +13 -0
  46. package/src/interfaces/configuration-provenance.ts +54 -0
  47. package/src/interfaces/constants.ts +75 -0
  48. package/src/interfaces/ecies-config.ts +8 -0
  49. package/src/interfaces/ecies-consts.ts +74 -0
  50. package/src/interfaces/ecies-file-service.ts +6 -0
  51. package/src/interfaces/encrypted-chunk.ts +64 -0
  52. package/src/interfaces/encryption-state.ts +19 -0
  53. package/src/interfaces/frontend-member-operational.ts +77 -0
  54. package/src/interfaces/guid.ts +86 -0
  55. package/src/interfaces/id-provider.ts +152 -0
  56. package/src/interfaces/{index.d.ts → index.ts} +0 -1
  57. package/src/interfaces/invariant.ts +60 -0
  58. package/src/interfaces/library-error.ts +23 -0
  59. package/src/interfaces/{member-storage.d.ts → member-storage.ts} +11 -10
  60. package/src/interfaces/{member-with-mnemonic.d.ts → member-with-mnemonic.ts} +3 -3
  61. package/src/interfaces/member.ts +84 -0
  62. package/src/interfaces/multi-recipient-chunk.ts +61 -0
  63. package/src/interfaces/pbkdf2-config.ts +6 -0
  64. package/src/interfaces/pbkdf2-consts.ts +10 -0
  65. package/src/interfaces/pbkdf2-result.ts +5 -0
  66. package/src/interfaces/stream-config.ts +17 -0
  67. package/src/interfaces/stream-header.ts +34 -0
  68. package/src/interfaces/stream-progress.ts +31 -0
  69. package/src/lib/configuration-provenance-utils.ts +26 -0
  70. package/src/lib/crypto-container.ts +64 -0
  71. package/src/lib/guid.ts +1097 -0
  72. package/src/lib/id-providers/custom-provider.ts +109 -0
  73. package/src/lib/id-providers/guidv4-provider.ts +141 -0
  74. package/src/lib/id-providers/{index.d.ts → index.ts} +6 -5
  75. package/src/lib/id-providers/objectid-provider.ts +125 -0
  76. package/src/lib/id-providers/uuid-provider.ts +133 -0
  77. package/src/lib/{index.js → index.ts} +2 -2
  78. package/src/lib/invariant-validator.ts +133 -0
  79. package/src/lib/invariants/encryption-algorithm-consistency.ts +73 -0
  80. package/src/lib/invariants/{index.js → index.ts} +0 -1
  81. package/src/lib/invariants/pbkdf2-profiles-validity.ts +78 -0
  82. package/src/lib/invariants/recipient-id-consistency.ts +46 -0
  83. package/src/lib/multi-recipient-chunk-utils.ts +63 -0
  84. package/src/member.ts +495 -0
  85. package/src/{pbkdf2-profiles.d.ts → pbkdf2-profiles.ts} +2 -2
  86. package/src/phone-number.ts +18 -0
  87. package/src/regexes.ts +10 -0
  88. package/src/secure-buffer.ts +226 -0
  89. package/src/secure-string.ts +244 -0
  90. package/src/services/aes-gcm.ts +220 -0
  91. package/src/services/chunk-processor.ts +188 -0
  92. package/src/services/ecies/README.md +147 -0
  93. package/src/services/ecies/crypto-core.ts +292 -0
  94. package/src/services/ecies/example.ts +185 -0
  95. package/src/services/ecies/file.ts +167 -0
  96. package/src/services/ecies/{index.js → index.ts} +2 -1
  97. package/src/services/ecies/integration.ts +241 -0
  98. package/src/services/ecies/interfaces.ts +62 -0
  99. package/src/services/ecies/manual-test.ts +219 -0
  100. package/src/services/ecies/multi-recipient.ts +545 -0
  101. package/src/services/ecies/service.ts +370 -0
  102. package/src/services/ecies/signature.ts +93 -0
  103. package/src/services/ecies/single-recipient.ts +476 -0
  104. package/src/services/encryption-stream.ts +435 -0
  105. package/src/services/{index.js → index.ts} +0 -1
  106. package/src/services/multi-recipient-processor.ts +377 -0
  107. package/src/services/password-login.ts +226 -0
  108. package/src/services/pbkdf2.ts +169 -0
  109. package/src/services/progress-tracker.ts +128 -0
  110. package/src/services/resumable-encryption.ts +135 -0
  111. package/src/services/xor.ts +65 -0
  112. package/src/test-mocks/index.ts +1 -0
  113. package/src/test-mocks/mock-frontend-member.ts +276 -0
  114. package/src/{testing.js → testing.ts} +0 -1
  115. package/src/translations/{de.js → de.ts} +112 -56
  116. package/src/translations/{en-US.js → en-US.ts} +116 -58
  117. package/src/translations/{es.js → es.ts} +134 -67
  118. package/src/translations/{fr.js → fr.ts} +129 -64
  119. package/src/translations/{ja.js → ja.ts} +111 -55
  120. package/src/translations/{uk.js → uk.ts} +132 -67
  121. package/src/translations/{zh-cn.js → zh-cn.ts} +60 -29
  122. package/src/types/deep-partial.ts +11 -0
  123. package/src/{types.d.ts → types.ts} +15 -7
  124. package/src/utils/encryption-type-utils.ts +76 -0
  125. package/src/utils.ts +329 -0
  126. package/src/builders/ecies-builder.d.ts +0 -18
  127. package/src/builders/ecies-builder.d.ts.map +0 -1
  128. package/src/builders/ecies-builder.js +0 -30
  129. package/src/builders/ecies-builder.js.map +0 -1
  130. package/src/builders/index.d.ts +0 -6
  131. package/src/builders/index.d.ts.map +0 -1
  132. package/src/builders/index.js.map +0 -1
  133. package/src/builders/member-builder.d.ts +0 -51
  134. package/src/builders/member-builder.d.ts.map +0 -1
  135. package/src/builders/member-builder.js +0 -97
  136. package/src/builders/member-builder.js.map +0 -1
  137. package/src/constants.d.ts +0 -60
  138. package/src/constants.d.ts.map +0 -1
  139. package/src/constants.js +0 -446
  140. package/src/constants.js.map +0 -1
  141. package/src/core/errors/crypto-error.d.ts +0 -34
  142. package/src/core/errors/crypto-error.d.ts.map +0 -1
  143. package/src/core/errors/crypto-error.js +0 -56
  144. package/src/core/errors/crypto-error.js.map +0 -1
  145. package/src/core/index.d.ts +0 -6
  146. package/src/core/index.d.ts.map +0 -1
  147. package/src/core/index.js.map +0 -1
  148. package/src/core/types/result.d.ts +0 -16
  149. package/src/core/types/result.d.ts.map +0 -1
  150. package/src/core/types/result.js +0 -12
  151. package/src/core/types/result.js.map +0 -1
  152. package/src/email-string.d.ts +0 -42
  153. package/src/email-string.d.ts.map +0 -1
  154. package/src/email-string.js +0 -67
  155. package/src/email-string.js.map +0 -1
  156. package/src/enumerations/disposed-error-type.d.ts +0 -12
  157. package/src/enumerations/disposed-error-type.d.ts.map +0 -1
  158. package/src/enumerations/disposed-error-type.js +0 -13
  159. package/src/enumerations/disposed-error-type.js.map +0 -1
  160. package/src/enumerations/ecies-cipher-suite.d.ts +0 -4
  161. package/src/enumerations/ecies-cipher-suite.d.ts.map +0 -1
  162. package/src/enumerations/ecies-cipher-suite.js +0 -6
  163. package/src/enumerations/ecies-cipher-suite.js.map +0 -1
  164. package/src/enumerations/ecies-encryption-type.d.ts +0 -11
  165. package/src/enumerations/ecies-encryption-type.d.ts.map +0 -1
  166. package/src/enumerations/ecies-encryption-type.js +0 -27
  167. package/src/enumerations/ecies-encryption-type.js.map +0 -1
  168. package/src/enumerations/ecies-error-type.d.ts +0 -44
  169. package/src/enumerations/ecies-error-type.d.ts.map +0 -1
  170. package/src/enumerations/ecies-error-type.js +0 -45
  171. package/src/enumerations/ecies-error-type.js.map +0 -1
  172. package/src/enumerations/ecies-string-key.d.ts +0 -192
  173. package/src/enumerations/ecies-string-key.d.ts.map +0 -1
  174. package/src/enumerations/ecies-string-key.js +0 -199
  175. package/src/enumerations/ecies-string-key.js.map +0 -1
  176. package/src/enumerations/ecies-version.d.ts +0 -4
  177. package/src/enumerations/ecies-version.d.ts.map +0 -1
  178. package/src/enumerations/ecies-version.js +0 -5
  179. package/src/enumerations/ecies-version.js.map +0 -1
  180. package/src/enumerations/guid-brand-type.d.ts +0 -27
  181. package/src/enumerations/guid-brand-type.d.ts.map +0 -1
  182. package/src/enumerations/guid-brand-type.js +0 -28
  183. package/src/enumerations/guid-brand-type.js.map +0 -1
  184. package/src/enumerations/guid-error-type.d.ts +0 -7
  185. package/src/enumerations/guid-error-type.d.ts.map +0 -1
  186. package/src/enumerations/guid-error-type.js +0 -8
  187. package/src/enumerations/guid-error-type.js.map +0 -1
  188. package/src/enumerations/id-provider-error-type.d.ts +0 -43
  189. package/src/enumerations/id-provider-error-type.d.ts.map +0 -1
  190. package/src/enumerations/id-provider-error-type.js +0 -44
  191. package/src/enumerations/id-provider-error-type.js.map +0 -1
  192. package/src/enumerations/index.d.ts +0 -18
  193. package/src/enumerations/index.d.ts.map +0 -1
  194. package/src/enumerations/index.js.map +0 -1
  195. package/src/enumerations/invalid-email-type.d.ts +0 -6
  196. package/src/enumerations/invalid-email-type.d.ts.map +0 -1
  197. package/src/enumerations/invalid-email-type.js +0 -7
  198. package/src/enumerations/invalid-email-type.js.map +0 -1
  199. package/src/enumerations/length-encoding-type.d.ts +0 -7
  200. package/src/enumerations/length-encoding-type.d.ts.map +0 -1
  201. package/src/enumerations/length-encoding-type.js +0 -8
  202. package/src/enumerations/length-encoding-type.js.map +0 -1
  203. package/src/enumerations/length-error-type.d.ts +0 -6
  204. package/src/enumerations/length-error-type.d.ts.map +0 -1
  205. package/src/enumerations/length-error-type.js +0 -7
  206. package/src/enumerations/length-error-type.js.map +0 -1
  207. package/src/enumerations/member-error-type.d.ts +0 -87
  208. package/src/enumerations/member-error-type.d.ts.map +0 -1
  209. package/src/enumerations/member-error-type.js +0 -88
  210. package/src/enumerations/member-error-type.js.map +0 -1
  211. package/src/enumerations/member-type.d.ts.map +0 -1
  212. package/src/enumerations/member-type.js +0 -16
  213. package/src/enumerations/member-type.js.map +0 -1
  214. package/src/enumerations/password-login-error-type.d.ts +0 -5
  215. package/src/enumerations/password-login-error-type.d.ts.map +0 -1
  216. package/src/enumerations/password-login-error-type.js +0 -6
  217. package/src/enumerations/password-login-error-type.js.map +0 -1
  218. package/src/enumerations/pbkdf2-error-type.d.ts +0 -6
  219. package/src/enumerations/pbkdf2-error-type.d.ts.map +0 -1
  220. package/src/enumerations/pbkdf2-error-type.js +0 -7
  221. package/src/enumerations/pbkdf2-error-type.js.map +0 -1
  222. package/src/enumerations/pbkdf2-profile.d.ts +0 -6
  223. package/src/enumerations/pbkdf2-profile.d.ts.map +0 -1
  224. package/src/enumerations/pbkdf2-profile.js +0 -7
  225. package/src/enumerations/pbkdf2-profile.js.map +0 -1
  226. package/src/enumerations/secure-storage-error-type.d.ts +0 -6
  227. package/src/enumerations/secure-storage-error-type.d.ts.map +0 -1
  228. package/src/enumerations/secure-storage-error-type.js +0 -7
  229. package/src/enumerations/secure-storage-error-type.js.map +0 -1
  230. package/src/errors/disposed.d.ts +0 -22
  231. package/src/errors/disposed.d.ts.map +0 -1
  232. package/src/errors/disposed.js +0 -28
  233. package/src/errors/disposed.js.map +0 -1
  234. package/src/errors/ecies.d.ts +0 -52
  235. package/src/errors/ecies.d.ts.map +0 -1
  236. package/src/errors/ecies.js +0 -78
  237. package/src/errors/ecies.js.map +0 -1
  238. package/src/errors/guid.d.ts +0 -49
  239. package/src/errors/guid.d.ts.map +0 -1
  240. package/src/errors/guid.js +0 -96
  241. package/src/errors/guid.js.map +0 -1
  242. package/src/errors/id-provider.d.ts +0 -23
  243. package/src/errors/id-provider.d.ts.map +0 -1
  244. package/src/errors/id-provider.js +0 -29
  245. package/src/errors/id-provider.js.map +0 -1
  246. package/src/errors/index.d.ts.map +0 -1
  247. package/src/errors/index.js +0 -10
  248. package/src/errors/index.js.map +0 -1
  249. package/src/errors/invalid-email.d.ts +0 -8
  250. package/src/errors/invalid-email.d.ts.map +0 -1
  251. package/src/errors/invalid-email.js +0 -15
  252. package/src/errors/invalid-email.js.map +0 -1
  253. package/src/errors/length.d.ts +0 -7
  254. package/src/errors/length.d.ts.map +0 -1
  255. package/src/errors/length.js +0 -11
  256. package/src/errors/length.js.map +0 -1
  257. package/src/errors/member.d.ts +0 -7
  258. package/src/errors/member.d.ts.map +0 -1
  259. package/src/errors/member.js +0 -11
  260. package/src/errors/member.js.map +0 -1
  261. package/src/errors/pbkdf2.d.ts +0 -7
  262. package/src/errors/pbkdf2.d.ts.map +0 -1
  263. package/src/errors/pbkdf2.js +0 -11
  264. package/src/errors/pbkdf2.js.map +0 -1
  265. package/src/errors/secure-storage.d.ts +0 -7
  266. package/src/errors/secure-storage.d.ts.map +0 -1
  267. package/src/errors/secure-storage.js +0 -12
  268. package/src/errors/secure-storage.js.map +0 -1
  269. package/src/errors/simple-ecies.d.ts +0 -6
  270. package/src/errors/simple-ecies.d.ts.map +0 -1
  271. package/src/errors/simple-ecies.js +0 -12
  272. package/src/errors/simple-ecies.js.map +0 -1
  273. package/src/errors/simple-test-error.d.ts +0 -4
  274. package/src/errors/simple-test-error.d.ts.map +0 -1
  275. package/src/errors/simple-test-error.js +0 -7
  276. package/src/errors/simple-test-error.js.map +0 -1
  277. package/src/i18n-setup.d.ts +0 -32
  278. package/src/i18n-setup.d.ts.map +0 -1
  279. package/src/i18n-setup.js +0 -101
  280. package/src/i18n-setup.js.map +0 -1
  281. package/src/index.d.ts +0 -80
  282. package/src/index.d.ts.map +0 -1
  283. package/src/index.js.map +0 -1
  284. package/src/interfaces/checksum-config.d.ts +0 -5
  285. package/src/interfaces/checksum-config.d.ts.map +0 -1
  286. package/src/interfaces/checksum-config.js +0 -2
  287. package/src/interfaces/checksum-config.js.map +0 -1
  288. package/src/interfaces/checksum-consts.d.ts +0 -11
  289. package/src/interfaces/checksum-consts.d.ts.map +0 -1
  290. package/src/interfaces/checksum-consts.js +0 -2
  291. package/src/interfaces/checksum-consts.js.map +0 -1
  292. package/src/interfaces/configuration-provenance.d.ts +0 -43
  293. package/src/interfaces/configuration-provenance.d.ts.map +0 -1
  294. package/src/interfaces/configuration-provenance.js +0 -3
  295. package/src/interfaces/configuration-provenance.js.map +0 -1
  296. package/src/interfaces/constants.d.ts +0 -70
  297. package/src/interfaces/constants.d.ts.map +0 -1
  298. package/src/interfaces/constants.js +0 -2
  299. package/src/interfaces/constants.js.map +0 -1
  300. package/src/interfaces/ecies-config.d.ts +0 -9
  301. package/src/interfaces/ecies-config.d.ts.map +0 -1
  302. package/src/interfaces/ecies-config.js +0 -2
  303. package/src/interfaces/ecies-config.js.map +0 -1
  304. package/src/interfaces/ecies-consts.d.ts +0 -61
  305. package/src/interfaces/ecies-consts.d.ts.map +0 -1
  306. package/src/interfaces/ecies-consts.js +0 -2
  307. package/src/interfaces/ecies-consts.js.map +0 -1
  308. package/src/interfaces/ecies-file-service.d.ts +0 -7
  309. package/src/interfaces/ecies-file-service.d.ts.map +0 -1
  310. package/src/interfaces/ecies-file-service.js +0 -2
  311. package/src/interfaces/ecies-file-service.js.map +0 -1
  312. package/src/interfaces/encrypted-chunk.d.ts +0 -55
  313. package/src/interfaces/encrypted-chunk.d.ts.map +0 -1
  314. package/src/interfaces/encrypted-chunk.js +0 -12
  315. package/src/interfaces/encrypted-chunk.js.map +0 -1
  316. package/src/interfaces/encryption-state.d.ts +0 -18
  317. package/src/interfaces/encryption-state.d.ts.map +0 -1
  318. package/src/interfaces/encryption-state.js +0 -2
  319. package/src/interfaces/encryption-state.js.map +0 -1
  320. package/src/interfaces/frontend-member-operational.d.ts +0 -51
  321. package/src/interfaces/frontend-member-operational.d.ts.map +0 -1
  322. package/src/interfaces/frontend-member-operational.js +0 -2
  323. package/src/interfaces/frontend-member-operational.js.map +0 -1
  324. package/src/interfaces/guid.d.ts +0 -78
  325. package/src/interfaces/guid.d.ts.map +0 -1
  326. package/src/interfaces/guid.js +0 -2
  327. package/src/interfaces/guid.js.map +0 -1
  328. package/src/interfaces/id-provider.d.ts +0 -107
  329. package/src/interfaces/id-provider.d.ts.map +0 -1
  330. package/src/interfaces/id-provider.js +0 -52
  331. package/src/interfaces/id-provider.js.map +0 -1
  332. package/src/interfaces/index.d.ts.map +0 -1
  333. package/src/interfaces/index.js +0 -13
  334. package/src/interfaces/index.js.map +0 -1
  335. package/src/interfaces/invariant.d.ts +0 -46
  336. package/src/interfaces/invariant.d.ts.map +0 -1
  337. package/src/interfaces/invariant.js +0 -18
  338. package/src/interfaces/invariant.js.map +0 -1
  339. package/src/interfaces/library-error.d.ts +0 -23
  340. package/src/interfaces/library-error.d.ts.map +0 -1
  341. package/src/interfaces/library-error.js +0 -2
  342. package/src/interfaces/library-error.js.map +0 -1
  343. package/src/interfaces/member-storage.d.ts.map +0 -1
  344. package/src/interfaces/member-storage.js +0 -2
  345. package/src/interfaces/member-storage.js.map +0 -1
  346. package/src/interfaces/member-with-mnemonic.d.ts.map +0 -1
  347. package/src/interfaces/member-with-mnemonic.js +0 -2
  348. package/src/interfaces/member-with-mnemonic.js.map +0 -1
  349. package/src/interfaces/member.d.ts +0 -55
  350. package/src/interfaces/member.d.ts.map +0 -1
  351. package/src/interfaces/member.js +0 -2
  352. package/src/interfaces/member.js.map +0 -1
  353. package/src/interfaces/multi-recipient-chunk.d.ts +0 -54
  354. package/src/interfaces/multi-recipient-chunk.d.ts.map +0 -1
  355. package/src/interfaces/multi-recipient-chunk.js +0 -11
  356. package/src/interfaces/multi-recipient-chunk.js.map +0 -1
  357. package/src/interfaces/pbkdf2-config.d.ts +0 -7
  358. package/src/interfaces/pbkdf2-config.d.ts.map +0 -1
  359. package/src/interfaces/pbkdf2-config.js +0 -2
  360. package/src/interfaces/pbkdf2-config.js.map +0 -1
  361. package/src/interfaces/pbkdf2-consts.d.ts +0 -9
  362. package/src/interfaces/pbkdf2-consts.d.ts.map +0 -1
  363. package/src/interfaces/pbkdf2-consts.js +0 -2
  364. package/src/interfaces/pbkdf2-consts.js.map +0 -1
  365. package/src/interfaces/pbkdf2-result.d.ts +0 -6
  366. package/src/interfaces/pbkdf2-result.d.ts.map +0 -1
  367. package/src/interfaces/pbkdf2-result.js +0 -2
  368. package/src/interfaces/pbkdf2-result.js.map +0 -1
  369. package/src/interfaces/stream-config.d.ts +0 -14
  370. package/src/interfaces/stream-config.d.ts.map +0 -1
  371. package/src/interfaces/stream-config.js +0 -8
  372. package/src/interfaces/stream-config.js.map +0 -1
  373. package/src/interfaces/stream-header.d.ts +0 -29
  374. package/src/interfaces/stream-header.d.ts.map +0 -1
  375. package/src/interfaces/stream-header.js +0 -9
  376. package/src/interfaces/stream-header.js.map +0 -1
  377. package/src/interfaces/stream-progress.d.ts +0 -33
  378. package/src/interfaces/stream-progress.d.ts.map +0 -1
  379. package/src/interfaces/stream-progress.js +0 -2
  380. package/src/interfaces/stream-progress.js.map +0 -1
  381. package/src/lib/configuration-provenance-utils.d.ts +0 -11
  382. package/src/lib/configuration-provenance-utils.d.ts.map +0 -1
  383. package/src/lib/configuration-provenance-utils.js +0 -23
  384. package/src/lib/configuration-provenance-utils.js.map +0 -1
  385. package/src/lib/crypto-container.d.ts +0 -25
  386. package/src/lib/crypto-container.d.ts.map +0 -1
  387. package/src/lib/crypto-container.js +0 -46
  388. package/src/lib/crypto-container.js.map +0 -1
  389. package/src/lib/guid.d.ts +0 -344
  390. package/src/lib/guid.d.ts.map +0 -1
  391. package/src/lib/guid.js +0 -914
  392. package/src/lib/guid.js.map +0 -1
  393. package/src/lib/id-providers/custom-provider.d.ts +0 -46
  394. package/src/lib/id-providers/custom-provider.d.ts.map +0 -1
  395. package/src/lib/id-providers/custom-provider.js +0 -85
  396. package/src/lib/id-providers/custom-provider.js.map +0 -1
  397. package/src/lib/id-providers/guidv4-provider.d.ts +0 -56
  398. package/src/lib/id-providers/guidv4-provider.d.ts.map +0 -1
  399. package/src/lib/id-providers/guidv4-provider.js +0 -122
  400. package/src/lib/id-providers/guidv4-provider.js.map +0 -1
  401. package/src/lib/id-providers/index.d.ts.map +0 -1
  402. package/src/lib/id-providers/index.js +0 -29
  403. package/src/lib/id-providers/index.js.map +0 -1
  404. package/src/lib/id-providers/objectid-provider.d.ts +0 -43
  405. package/src/lib/id-providers/objectid-provider.d.ts.map +0 -1
  406. package/src/lib/id-providers/objectid-provider.js +0 -104
  407. package/src/lib/id-providers/objectid-provider.js.map +0 -1
  408. package/src/lib/id-providers/uuid-provider.d.ts +0 -52
  409. package/src/lib/id-providers/uuid-provider.d.ts.map +0 -1
  410. package/src/lib/id-providers/uuid-provider.js +0 -110
  411. package/src/lib/id-providers/uuid-provider.js.map +0 -1
  412. package/src/lib/index.d.ts +0 -6
  413. package/src/lib/index.d.ts.map +0 -1
  414. package/src/lib/index.js.map +0 -1
  415. package/src/lib/invariant-validator.d.ts +0 -59
  416. package/src/lib/invariant-validator.d.ts.map +0 -1
  417. package/src/lib/invariant-validator.js +0 -97
  418. package/src/lib/invariant-validator.js.map +0 -1
  419. package/src/lib/invariants/encryption-algorithm-consistency.d.ts +0 -17
  420. package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +0 -1
  421. package/src/lib/invariants/encryption-algorithm-consistency.js +0 -49
  422. package/src/lib/invariants/encryption-algorithm-consistency.js.map +0 -1
  423. package/src/lib/invariants/index.d.ts +0 -4
  424. package/src/lib/invariants/index.d.ts.map +0 -1
  425. package/src/lib/invariants/index.js.map +0 -1
  426. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +0 -16
  427. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +0 -1
  428. package/src/lib/invariants/pbkdf2-profiles-validity.js +0 -58
  429. package/src/lib/invariants/pbkdf2-profiles-validity.js.map +0 -1
  430. package/src/lib/invariants/recipient-id-consistency.d.ts +0 -18
  431. package/src/lib/invariants/recipient-id-consistency.d.ts.map +0 -1
  432. package/src/lib/invariants/recipient-id-consistency.js +0 -31
  433. package/src/lib/invariants/recipient-id-consistency.js.map +0 -1
  434. package/src/lib/multi-recipient-chunk-utils.d.ts +0 -38
  435. package/src/lib/multi-recipient-chunk-utils.d.ts.map +0 -1
  436. package/src/lib/multi-recipient-chunk-utils.js +0 -41
  437. package/src/lib/multi-recipient-chunk-utils.js.map +0 -1
  438. package/src/member.d.ts +0 -92
  439. package/src/member.d.ts.map +0 -1
  440. package/src/member.js +0 -322
  441. package/src/member.js.map +0 -1
  442. package/src/pbkdf2-profiles.d.ts.map +0 -1
  443. package/src/pbkdf2-profiles.js +0 -2
  444. package/src/pbkdf2-profiles.js.map +0 -1
  445. package/src/phone-number.d.ts +0 -6
  446. package/src/phone-number.d.ts.map +0 -1
  447. package/src/phone-number.js +0 -18
  448. package/src/phone-number.js.map +0 -1
  449. package/src/regexes.d.ts +0 -7
  450. package/src/regexes.d.ts.map +0 -1
  451. package/src/regexes.js +0 -7
  452. package/src/regexes.js.map +0 -1
  453. package/src/secure-buffer.d.ts +0 -61
  454. package/src/secure-buffer.d.ts.map +0 -1
  455. package/src/secure-buffer.js +0 -201
  456. package/src/secure-buffer.js.map +0 -1
  457. package/src/secure-string.d.ts +0 -46
  458. package/src/secure-string.d.ts.map +0 -1
  459. package/src/secure-string.js +0 -206
  460. package/src/secure-string.js.map +0 -1
  461. package/src/services/aes-gcm.d.ts +0 -57
  462. package/src/services/aes-gcm.d.ts.map +0 -1
  463. package/src/services/aes-gcm.js +0 -142
  464. package/src/services/aes-gcm.js.map +0 -1
  465. package/src/services/chunk-processor.d.ts +0 -31
  466. package/src/services/chunk-processor.d.ts.map +0 -1
  467. package/src/services/chunk-processor.js +0 -145
  468. package/src/services/chunk-processor.js.map +0 -1
  469. package/src/services/ecies/crypto-core.d.ts +0 -72
  470. package/src/services/ecies/crypto-core.d.ts.map +0 -1
  471. package/src/services/ecies/crypto-core.js +0 -205
  472. package/src/services/ecies/crypto-core.js.map +0 -1
  473. package/src/services/ecies/example.d.ts +0 -25
  474. package/src/services/ecies/example.d.ts.map +0 -1
  475. package/src/services/ecies/example.js +0 -121
  476. package/src/services/ecies/example.js.map +0 -1
  477. package/src/services/ecies/file.d.ts +0 -18
  478. package/src/services/ecies/file.d.ts.map +0 -1
  479. package/src/services/ecies/file.js +0 -106
  480. package/src/services/ecies/file.js.map +0 -1
  481. package/src/services/ecies/index.d.ts +0 -38
  482. package/src/services/ecies/index.d.ts.map +0 -1
  483. package/src/services/ecies/index.js.map +0 -1
  484. package/src/services/ecies/integration.d.ts +0 -59
  485. package/src/services/ecies/integration.d.ts.map +0 -1
  486. package/src/services/ecies/integration.js +0 -167
  487. package/src/services/ecies/integration.js.map +0 -1
  488. package/src/services/ecies/interfaces.d.ts +0 -54
  489. package/src/services/ecies/interfaces.d.ts.map +0 -1
  490. package/src/services/ecies/interfaces.js +0 -5
  491. package/src/services/ecies/interfaces.js.map +0 -1
  492. package/src/services/ecies/manual-test.d.ts +0 -29
  493. package/src/services/ecies/manual-test.d.ts.map +0 -1
  494. package/src/services/ecies/manual-test.js +0 -163
  495. package/src/services/ecies/manual-test.js.map +0 -1
  496. package/src/services/ecies/multi-recipient.d.ts +0 -56
  497. package/src/services/ecies/multi-recipient.d.ts.map +0 -1
  498. package/src/services/ecies/multi-recipient.js +0 -344
  499. package/src/services/ecies/multi-recipient.js.map +0 -1
  500. package/src/services/ecies/service.d.ts +0 -120
  501. package/src/services/ecies/service.d.ts.map +0 -1
  502. package/src/services/ecies/service.js +0 -210
  503. package/src/services/ecies/service.js.map +0 -1
  504. package/src/services/ecies/signature.d.ts +0 -27
  505. package/src/services/ecies/signature.d.ts.map +0 -1
  506. package/src/services/ecies/signature.js +0 -72
  507. package/src/services/ecies/signature.js.map +0 -1
  508. package/src/services/ecies/single-recipient.d.ts +0 -46
  509. package/src/services/ecies/single-recipient.d.ts.map +0 -1
  510. package/src/services/ecies/single-recipient.js +0 -322
  511. package/src/services/ecies/single-recipient.js.map +0 -1
  512. package/src/services/encryption-stream.d.ts +0 -71
  513. package/src/services/encryption-stream.d.ts.map +0 -1
  514. package/src/services/encryption-stream.js +0 -295
  515. package/src/services/encryption-stream.js.map +0 -1
  516. package/src/services/index.d.ts +0 -11
  517. package/src/services/index.d.ts.map +0 -1
  518. package/src/services/index.js.map +0 -1
  519. package/src/services/multi-recipient-processor.d.ts +0 -35
  520. package/src/services/multi-recipient-processor.d.ts.map +0 -1
  521. package/src/services/multi-recipient-processor.js +0 -289
  522. package/src/services/multi-recipient-processor.js.map +0 -1
  523. package/src/services/password-login.d.ts +0 -47
  524. package/src/services/password-login.d.ts.map +0 -1
  525. package/src/services/password-login.js +0 -115
  526. package/src/services/password-login.js.map +0 -1
  527. package/src/services/pbkdf2.d.ts +0 -54
  528. package/src/services/pbkdf2.d.ts.map +0 -1
  529. package/src/services/pbkdf2.js +0 -108
  530. package/src/services/pbkdf2.js.map +0 -1
  531. package/src/services/progress-tracker.d.ts +0 -23
  532. package/src/services/progress-tracker.d.ts.map +0 -1
  533. package/src/services/progress-tracker.js +0 -103
  534. package/src/services/progress-tracker.js.map +0 -1
  535. package/src/services/resumable-encryption.d.ts +0 -19
  536. package/src/services/resumable-encryption.d.ts.map +0 -1
  537. package/src/services/resumable-encryption.js +0 -105
  538. package/src/services/resumable-encryption.js.map +0 -1
  539. package/src/services/xor.d.ts +0 -37
  540. package/src/services/xor.d.ts.map +0 -1
  541. package/src/services/xor.js +0 -63
  542. package/src/services/xor.js.map +0 -1
  543. package/src/test-mocks/index.d.ts +0 -2
  544. package/src/test-mocks/index.d.ts.map +0 -1
  545. package/src/test-mocks/index.js +0 -2
  546. package/src/test-mocks/index.js.map +0 -1
  547. package/src/test-mocks/mock-frontend-member.d.ts +0 -85
  548. package/src/test-mocks/mock-frontend-member.d.ts.map +0 -1
  549. package/src/test-mocks/mock-frontend-member.js +0 -190
  550. package/src/test-mocks/mock-frontend-member.js.map +0 -1
  551. package/src/testing.d.ts +0 -2
  552. package/src/testing.d.ts.map +0 -1
  553. package/src/testing.js.map +0 -1
  554. package/src/translations/de.d.ts +0 -4
  555. package/src/translations/de.d.ts.map +0 -1
  556. package/src/translations/de.js.map +0 -1
  557. package/src/translations/en-US.d.ts +0 -4
  558. package/src/translations/en-US.d.ts.map +0 -1
  559. package/src/translations/en-US.js.map +0 -1
  560. package/src/translations/es.d.ts +0 -4
  561. package/src/translations/es.d.ts.map +0 -1
  562. package/src/translations/es.js.map +0 -1
  563. package/src/translations/fr.d.ts +0 -4
  564. package/src/translations/fr.d.ts.map +0 -1
  565. package/src/translations/fr.js.map +0 -1
  566. package/src/translations/ja.d.ts +0 -4
  567. package/src/translations/ja.d.ts.map +0 -1
  568. package/src/translations/ja.js.map +0 -1
  569. package/src/translations/uk.d.ts +0 -4
  570. package/src/translations/uk.d.ts.map +0 -1
  571. package/src/translations/uk.js.map +0 -1
  572. package/src/translations/zh-cn.d.ts +0 -4
  573. package/src/translations/zh-cn.d.ts.map +0 -1
  574. package/src/translations/zh-cn.js.map +0 -1
  575. package/src/types/deep-partial.d.ts +0 -4
  576. package/src/types/deep-partial.d.ts.map +0 -1
  577. package/src/types/deep-partial.js +0 -2
  578. package/src/types/deep-partial.js.map +0 -1
  579. package/src/types.d.ts.map +0 -1
  580. package/src/types.js +0 -2
  581. package/src/types.js.map +0 -1
  582. package/src/utils/encryption-type-utils.d.ts +0 -29
  583. package/src/utils/encryption-type-utils.d.ts.map +0 -1
  584. package/src/utils/encryption-type-utils.js +0 -61
  585. package/src/utils/encryption-type-utils.js.map +0 -1
  586. package/src/utils.d.ts +0 -68
  587. package/src/utils.d.ts.map +0 -1
  588. package/src/utils.js +0 -273
  589. package/src/utils.js.map +0 -1
@@ -1,295 +0,0 @@
1
- import { Constants } from '../constants';
2
- import { DEFAULT_STREAM_CONFIG } from '../interfaces/stream-config';
3
- import { STREAM_HEADER_CONSTANTS } from '../interfaces/stream-header';
4
- import { ChunkProcessor } from './chunk-processor';
5
- import { ProgressTracker } from './progress-tracker';
6
- import { MultiRecipientProcessor } from './multi-recipient-processor';
7
- import { EciesComponentId, getEciesI18nEngine } from '../i18n-setup';
8
- import { EciesStringKey } from '../enumerations';
9
- /**
10
- * Streaming encryption/decryption service
11
- */
12
- export class EncryptionStream {
13
- ecies;
14
- config;
15
- eciesConsts;
16
- constants;
17
- processor;
18
- multiRecipientProcessor;
19
- constructor(ecies, config = DEFAULT_STREAM_CONFIG, eciesConsts = Constants.ECIES, constants = Constants) {
20
- this.ecies = ecies;
21
- this.config = config;
22
- this.eciesConsts = eciesConsts;
23
- this.constants = constants;
24
- this.processor = new ChunkProcessor(ecies, eciesConsts);
25
- this.multiRecipientProcessor = new MultiRecipientProcessor(ecies, constants);
26
- }
27
- /**
28
- * Build stream header
29
- */
30
- buildStreamHeader(header) {
31
- const buffer = new Uint8Array(STREAM_HEADER_CONSTANTS.HEADER_SIZE);
32
- const view = new DataView(buffer.buffer);
33
- view.setUint32(0, header.magic, false);
34
- view.setUint16(4, header.version, false);
35
- view.setUint8(6, header.encryptionType);
36
- view.setUint32(7, header.chunkSize, false);
37
- view.setUint32(11, header.totalChunks, false);
38
- view.setBigUint64(15, BigInt(header.totalBytes), false);
39
- view.setBigUint64(23, BigInt(header.timestamp), false);
40
- // Bytes 31-127: reserved (zeros)
41
- return buffer;
42
- }
43
- /**
44
- * Parse stream header
45
- */
46
- parseStreamHeader(data) {
47
- const engine = getEciesI18nEngine();
48
- if (data.length < STREAM_HEADER_CONSTANTS.HEADER_SIZE) {
49
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_DataTooShortForHeader));
50
- }
51
- const view = new DataView(data.buffer, data.byteOffset);
52
- const magic = view.getUint32(0, false);
53
- if (magic !== STREAM_HEADER_CONSTANTS.MAGIC) {
54
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidMagicBytes));
55
- }
56
- const version = view.getUint16(4, false);
57
- if (version !== STREAM_HEADER_CONSTANTS.VERSION) {
58
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_UnsupportedVersion));
59
- }
60
- return {
61
- magic,
62
- version,
63
- encryptionType: view.getUint8(6),
64
- chunkSize: view.getUint32(7, false),
65
- totalChunks: view.getUint32(11, false),
66
- totalBytes: Number(view.getBigUint64(15, false)),
67
- timestamp: Number(view.getBigUint64(23, false)),
68
- };
69
- }
70
- /**
71
- * Encrypt data stream
72
- */
73
- async *encryptStream(source, publicKey, options = {}) {
74
- const engine = getEciesI18nEngine();
75
- // Validate public key (65 bytes uncompressed with 0x04 prefix)
76
- if (!publicKey || (publicKey.length !== 65 && publicKey.length !== 33)) {
77
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidPublicKeyLength));
78
- }
79
- const chunkSize = options.chunkSize ?? this.config.chunkSize;
80
- const includeChecksums = options.includeChecksums ?? this.config.includeChecksums;
81
- const signal = options.signal;
82
- const onProgress = options.onProgress;
83
- let buffer = new Uint8Array(0);
84
- let chunkIndex = 0;
85
- let lastYieldedChunk = null;
86
- let tracker;
87
- let totalBytesRead = 0;
88
- const maxSingleChunk = 100 * 1024 * 1024; // 100MB max per source chunk
89
- for await (const data of source) {
90
- // Check for cancellation
91
- if (signal?.aborted) {
92
- throw new DOMException(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_EncryptionCancelled), 'AbortError');
93
- }
94
- // Prevent buffer exhaustion from single large source chunk
95
- if (data.length > maxSingleChunk) {
96
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_BufferOverflowTemplate, { max: maxSingleChunk }));
97
- }
98
- // Append to buffer
99
- const newBuffer = new Uint8Array(buffer.length + data.length);
100
- newBuffer.set(buffer);
101
- newBuffer.set(data, buffer.length);
102
- buffer = newBuffer;
103
- totalBytesRead += data.length;
104
- // Initialize tracker on first data
105
- if (!tracker && onProgress) {
106
- tracker = new ProgressTracker();
107
- }
108
- // Process complete chunks
109
- while (buffer.length >= chunkSize) {
110
- if (signal?.aborted) {
111
- throw new DOMException('Encryption cancelled', 'AbortError');
112
- }
113
- const chunkData = buffer.slice(0, chunkSize);
114
- buffer = buffer.slice(chunkSize);
115
- const encryptedChunk = await this.processor.encryptChunk(chunkData, publicKey, chunkIndex++, false, includeChecksums);
116
- lastYieldedChunk = encryptedChunk;
117
- yield encryptedChunk;
118
- // Report progress
119
- if (tracker && onProgress) {
120
- onProgress(tracker.update(chunkSize));
121
- }
122
- }
123
- }
124
- // Process remaining data as last chunk
125
- if (buffer.length > 0) {
126
- if (signal?.aborted) {
127
- throw new DOMException('Encryption cancelled', 'AbortError');
128
- }
129
- const encryptedChunk = await this.processor.encryptChunk(buffer, publicKey, chunkIndex, true, includeChecksums);
130
- yield encryptedChunk;
131
- // Report final progress
132
- if (tracker && onProgress) {
133
- onProgress(tracker.update(buffer.length));
134
- }
135
- }
136
- else if (chunkIndex === 0) {
137
- // Empty stream - yield nothing
138
- return;
139
- }
140
- else if (lastYieldedChunk) {
141
- // Mark the last yielded chunk as last
142
- lastYieldedChunk.isLast = true;
143
- }
144
- }
145
- /**
146
- * Encrypt stream for multiple recipients
147
- * Uses shared symmetric key encrypted for each recipient
148
- */
149
- async *encryptStreamMultiple(source, recipients, options = {}) {
150
- const engine = getEciesI18nEngine();
151
- if (recipients.length === 0) {
152
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_AtLeastOneRecipientRequired));
153
- }
154
- if (recipients.length > 65535) {
155
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_MaxRecipientsExceeded));
156
- }
157
- // Validate all recipient public keys
158
- for (const recipient of recipients) {
159
- if (!recipient.publicKey || (recipient.publicKey.length !== 65 && recipient.publicKey.length !== 33)) {
160
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidRecipientPublicKeyLength));
161
- }
162
- if (!recipient.id || recipient.id.length !== this.constants.MEMBER_ID_LENGTH) {
163
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidRecipientIdLengthTemplate, { expected: this.constants.MEMBER_ID_LENGTH }));
164
- }
165
- }
166
- const chunkSize = options.chunkSize ?? this.config.chunkSize;
167
- const signal = options.signal;
168
- const onProgress = options.onProgress;
169
- // Generate shared symmetric key for this stream
170
- const symmetricKey = crypto.getRandomValues(new Uint8Array(32));
171
- let buffer = new Uint8Array(0);
172
- let chunkIndex = 0;
173
- let tracker;
174
- const maxSingleChunk = 100 * 1024 * 1024;
175
- for await (const data of source) {
176
- if (signal?.aborted) {
177
- throw new DOMException('Encryption cancelled', 'AbortError');
178
- }
179
- if (data.length > maxSingleChunk) {
180
- throw new Error(`Buffer overflow: source chunk exceeds ${maxSingleChunk} bytes`);
181
- }
182
- const newBuffer = new Uint8Array(buffer.length + data.length);
183
- newBuffer.set(buffer);
184
- newBuffer.set(data, buffer.length);
185
- buffer = newBuffer;
186
- if (!tracker && onProgress) {
187
- tracker = new ProgressTracker();
188
- }
189
- while (buffer.length >= chunkSize) {
190
- if (signal?.aborted) {
191
- throw new DOMException('Encryption cancelled', 'AbortError');
192
- }
193
- const chunkData = buffer.slice(0, chunkSize);
194
- buffer = buffer.slice(chunkSize);
195
- const encryptedChunk = await this.multiRecipientProcessor.encryptChunk(chunkData, recipients, chunkIndex++, false, symmetricKey);
196
- yield encryptedChunk;
197
- if (tracker && onProgress) {
198
- onProgress(tracker.update(chunkSize));
199
- }
200
- }
201
- }
202
- // Process remaining data as last chunk
203
- if (buffer.length > 0) {
204
- if (signal?.aborted) {
205
- throw new DOMException('Encryption cancelled', 'AbortError');
206
- }
207
- const encryptedChunk = await this.multiRecipientProcessor.encryptChunk(buffer, recipients, chunkIndex, true, symmetricKey);
208
- yield encryptedChunk;
209
- if (tracker && onProgress) {
210
- onProgress(tracker.update(buffer.length));
211
- }
212
- }
213
- else if (chunkIndex > 0) {
214
- // Mark last yielded chunk - need to re-yield with isLast=true
215
- // This is handled by the processor setting isLast flag
216
- }
217
- }
218
- /**
219
- * Decrypt multi-recipient stream
220
- */
221
- async *decryptStreamMultiple(source, recipientId, privateKey, options = {}) {
222
- const engine = getEciesI18nEngine();
223
- if (!recipientId || recipientId.length !== this.constants.MEMBER_ID_LENGTH) {
224
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidRecipientIdLengthTemplate, { expected: this.constants.MEMBER_ID_LENGTH }));
225
- }
226
- if (!privateKey || privateKey.length !== 32) {
227
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidPrivateKeyMust32Bytes));
228
- }
229
- const signal = options.signal;
230
- const onProgress = options.onProgress;
231
- let expectedIndex = 0;
232
- let tracker;
233
- if (onProgress) {
234
- tracker = new ProgressTracker();
235
- }
236
- for await (const chunkData of source) {
237
- if (signal?.aborted) {
238
- throw new DOMException(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_DecryptionCancelled), 'AbortError');
239
- }
240
- const { data, header } = await this.multiRecipientProcessor.decryptChunk(chunkData, recipientId, privateKey);
241
- if (header.chunkIndex !== expectedIndex) {
242
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_ChunkSequenceErrorTemplate, { expected: expectedIndex, actual: header.chunkIndex }));
243
- }
244
- expectedIndex++;
245
- yield data;
246
- if (tracker && onProgress) {
247
- onProgress(tracker.update(data.length));
248
- }
249
- const isLast = (header.flags & 0x01) !== 0;
250
- if (isLast) {
251
- break;
252
- }
253
- }
254
- }
255
- /**
256
- * Decrypt data stream
257
- */
258
- async *decryptStream(source, privateKey, options = {}) {
259
- const engine = getEciesI18nEngine();
260
- // Validate private key
261
- if (!privateKey || privateKey.length !== 32) {
262
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_InvalidPrivateKeyMust32Bytes));
263
- }
264
- const signal = options.signal;
265
- const onProgress = options.onProgress;
266
- let expectedIndex = 0;
267
- let tracker;
268
- if (onProgress) {
269
- tracker = new ProgressTracker();
270
- }
271
- for await (const chunkData of source) {
272
- // Check for cancellation
273
- if (signal?.aborted) {
274
- throw new DOMException(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_DecryptionCancelled), 'AbortError');
275
- }
276
- const { data, header } = await this.processor.decryptChunk(chunkData, privateKey);
277
- // Validate sequence
278
- if (header.index !== expectedIndex) {
279
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Stream_ChunkSequenceErrorTemplate, { expected: expectedIndex, actual: header.index }));
280
- }
281
- expectedIndex++;
282
- yield data;
283
- // Report progress
284
- if (tracker && onProgress) {
285
- onProgress(tracker.update(data.length));
286
- }
287
- // Check if this was the last chunk
288
- const isLast = (header.flags & 0x01) !== 0;
289
- if (isLast) {
290
- break;
291
- }
292
- }
293
- }
294
- }
295
- //# sourceMappingURL=encryption-stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encryption-stream.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/encryption-stream.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export * from './aes-gcm';
2
- export * from './chunk-processor';
3
- export * from './ecies';
4
- export * from './encryption-stream';
5
- export * from './multi-recipient-processor';
6
- export * from './password-login';
7
- export * from './pbkdf2';
8
- export * from './progress-tracker';
9
- export * from './resumable-encryption';
10
- export * from './xor';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,OAAO,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,OAAO,CAAC"}
@@ -1,35 +0,0 @@
1
- import { ECIESService } from './ecies/service';
2
- import { IMultiRecipientChunk, IMultiRecipientChunkHeader } from '../interfaces/multi-recipient-chunk';
3
- import { IConstants } from '../interfaces/constants';
4
- /**
5
- * Processes multi-recipient chunks using symmetric encryption.
6
- * Supports dynamic recipient ID sizes based on the configured ID provider.
7
- */
8
- export declare class MultiRecipientProcessor {
9
- private readonly ecies;
10
- private readonly config;
11
- private readonly recipientIdSize;
12
- private readonly constants;
13
- /**
14
- * Create a new multi-recipient processor.
15
- * @param ecies - ECIES service for key encryption
16
- * @param config - Configuration containing ID provider (defaults to global Constants)
17
- */
18
- constructor(ecies: ECIESService, config?: IConstants);
19
- /**
20
- * Encrypt chunk for multiple recipients
21
- */
22
- encryptChunk(data: Uint8Array, recipients: Array<{
23
- id: Uint8Array;
24
- publicKey: Uint8Array;
25
- }>, chunkIndex: number, isLast: boolean, symmetricKey: Uint8Array, senderPrivateKey?: Uint8Array): Promise<IMultiRecipientChunk>;
26
- /**
27
- * Decrypt chunk for specific recipient
28
- */
29
- decryptChunk(chunkData: Uint8Array, recipientId: Uint8Array, privateKey: Uint8Array, senderPublicKey?: Uint8Array): Promise<{
30
- data: Uint8Array;
31
- header: IMultiRecipientChunkHeader;
32
- }>;
33
- private arraysEqual;
34
- }
35
- //# sourceMappingURL=multi-recipient-processor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-recipient-processor.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/multi-recipient-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAI3B,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;GAGG;AACH,qBAAa,uBAAuB;IAUhC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IAErD;;;;OAIG;gBAEgB,KAAK,EAAE,YAAY,EACnB,MAAM,GAAE,UAAsB;IAMjD;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC,EAC5D,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,UAAU,EACxB,gBAAgB,CAAC,EAAE,UAAU,GAC5B,OAAO,CAAC,oBAAoB,CAAC;IA6JhC;;OAEG;IACG,YAAY,CAChB,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,UAAU,EACvB,UAAU,EAAE,UAAU,EACtB,eAAe,CAAC,EAAE,UAAU,GAC3B,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,0BAA0B,CAAA;KAAE,CAAC;IA2JpE,OAAO,CAAC,WAAW;CAUpB"}
@@ -1,289 +0,0 @@
1
- import { getMultiRecipientConstants, } from '../interfaces/multi-recipient-chunk';
2
- import { EciesComponentId, getEciesI18nEngine } from '../i18n-setup';
3
- import { EciesStringKey } from '../enumerations';
4
- import { Constants } from '../constants';
5
- import { AESGCMService } from './aes-gcm';
6
- import { concatUint8Arrays } from '../utils';
7
- /**
8
- * Processes multi-recipient chunks using symmetric encryption.
9
- * Supports dynamic recipient ID sizes based on the configured ID provider.
10
- */
11
- export class MultiRecipientProcessor {
12
- ecies;
13
- config;
14
- recipientIdSize;
15
- constants;
16
- /**
17
- * Create a new multi-recipient processor.
18
- * @param ecies - ECIES service for key encryption
19
- * @param config - Configuration containing ID provider (defaults to global Constants)
20
- */
21
- constructor(ecies, config = Constants) {
22
- this.ecies = ecies;
23
- this.config = config;
24
- this.recipientIdSize = config.idProvider.byteLength;
25
- this.constants = getMultiRecipientConstants(this.recipientIdSize);
26
- }
27
- /**
28
- * Encrypt chunk for multiple recipients
29
- */
30
- async encryptChunk(data, recipients, chunkIndex, isLast, symmetricKey, senderPrivateKey) {
31
- // Validate inputs
32
- const engine = getEciesI18nEngine();
33
- if (recipients.length === 0 || recipients.length > this.constants.MAX_RECIPIENTS) {
34
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_InvalidRecipientCountTemplate, { count: recipients.length }));
35
- }
36
- if (symmetricKey.length !== 32) {
37
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_SymmetricKeyMust32Bytes));
38
- }
39
- if (chunkIndex < 0 || chunkIndex > 0xFFFFFFFF) {
40
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_InvalidChunkIndexTemplate, { index: chunkIndex }));
41
- }
42
- // Sign-then-Encrypt
43
- let dataToEncrypt = data;
44
- if (senderPrivateKey) {
45
- const signature = this.ecies.core.sign(senderPrivateKey, data);
46
- dataToEncrypt = concatUint8Arrays(signature, data);
47
- }
48
- if (dataToEncrypt.length > 0x7FFFFFFF) {
49
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_DataSizeExceedsMaximumTemplate, { size: dataToEncrypt.length }));
50
- }
51
- // Check for duplicate recipient IDs
52
- const seenIds = new Set();
53
- for (const recipient of recipients) {
54
- const idStr = Buffer.from(recipient.id).toString('hex');
55
- if (seenIds.has(idStr)) {
56
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_DuplicateRecipientId));
57
- }
58
- seenIds.add(idStr);
59
- }
60
- // Generate ONE ephemeral key pair for all recipients
61
- const ephemeralKeyPair = await this.ecies.core.generateEphemeralKeyPair();
62
- // Build recipient headers
63
- const recipientHeaders = [];
64
- for (const recipient of recipients) {
65
- if (recipient.id.length !== this.recipientIdSize) {
66
- throw new Error(`Recipient ID must be ${this.recipientIdSize} bytes (configured by ID provider), got ${recipient.id.length} bytes`);
67
- }
68
- // Use Recipient ID as AAD for key encryption
69
- const encryptedKey = await this.ecies.encryptKey(recipient.publicKey, symmetricKey, ephemeralKeyPair.privateKey, recipient.id);
70
- recipientHeaders.push({
71
- id: recipient.id,
72
- keySize: encryptedKey.length,
73
- encryptedKey,
74
- });
75
- }
76
- // Calculate sizes with overflow check
77
- let recipientHeadersSize = 0;
78
- for (const h of recipientHeaders) {
79
- const headerSize = this.recipientIdSize +
80
- this.constants.KEY_SIZE_BYTES + h.keySize;
81
- if (recipientHeadersSize + headerSize < recipientHeadersSize) {
82
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_RecipientHeadersSizeOverflow));
83
- }
84
- recipientHeadersSize += headerSize;
85
- }
86
- // Calculate encrypted size (Data + Tag)
87
- // AES-GCM tag is 16 bytes
88
- const encryptedSize = dataToEncrypt.length + 16;
89
- const totalSize = this.constants.HEADER_SIZE +
90
- recipientHeadersSize +
91
- Constants.ECIES.IV_SIZE + // IV
92
- encryptedSize;
93
- // Check for integer overflow (max safe: 2^31 - 1 for Uint8Array)
94
- if (totalSize > 0x7FFFFFFF || totalSize < 0) {
95
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_ChunkSizeOverflow));
96
- }
97
- // Build chunk buffer
98
- const chunk = new Uint8Array(totalSize);
99
- const view = new DataView(chunk.buffer);
100
- let offset = 0;
101
- // Write header
102
- view.setUint32(offset, this.constants.MAGIC, false);
103
- offset += 4;
104
- view.setUint16(offset, this.constants.VERSION, false);
105
- offset += 2;
106
- view.setUint16(offset, recipients.length, false);
107
- offset += 2;
108
- view.setUint32(offset, chunkIndex, false);
109
- offset += 4;
110
- view.setUint32(offset, dataToEncrypt.length, false); // Original Size (includes signature if present)
111
- offset += 4;
112
- view.setUint32(offset, encryptedSize, false);
113
- offset += 4;
114
- view.setUint8(offset, isLast ? this.constants.FLAG_IS_LAST : 0);
115
- offset += 1;
116
- // Write Ephemeral Public Key (33 bytes)
117
- chunk.set(ephemeralKeyPair.publicKey, offset);
118
- offset += 33;
119
- // Padding to HEADER_SIZE (64 bytes)
120
- offset = this.constants.HEADER_SIZE;
121
- // Write recipient headers
122
- for (const header of recipientHeaders) {
123
- chunk.set(header.id, offset);
124
- offset += this.recipientIdSize;
125
- view.setUint16(offset, header.keySize, false);
126
- offset += this.constants.KEY_SIZE_BYTES;
127
- chunk.set(header.encryptedKey, offset);
128
- offset += header.keySize;
129
- }
130
- // Extract the full header (including recipient headers) to use as AAD
131
- const headerBytes = chunk.slice(0, offset);
132
- // Encrypt data with AES-256-GCM using Header as AAD
133
- const encryptResult = await AESGCMService.encrypt(dataToEncrypt, symmetricKey, true, // Return tag separately
134
- Constants.ECIES, headerBytes // AAD
135
- );
136
- // Write IV
137
- chunk.set(encryptResult.iv, offset);
138
- offset += Constants.ECIES.IV_SIZE;
139
- // Write encrypted data
140
- chunk.set(encryptResult.encrypted, offset);
141
- offset += encryptResult.encrypted.length;
142
- // Write auth tag
143
- if (encryptResult.tag) {
144
- chunk.set(encryptResult.tag, offset);
145
- }
146
- return {
147
- index: chunkIndex,
148
- data: chunk,
149
- isLast,
150
- recipientCount: recipients.length,
151
- };
152
- }
153
- /**
154
- * Decrypt chunk for specific recipient
155
- */
156
- async decryptChunk(chunkData, recipientId, privateKey, senderPublicKey) {
157
- const engine = getEciesI18nEngine();
158
- if (chunkData.length < this.constants.HEADER_SIZE) {
159
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_ChunkTooSmall));
160
- }
161
- const view = new DataView(chunkData.buffer, chunkData.byteOffset);
162
- let offset = 0;
163
- // Parse header
164
- const magic = view.getUint32(offset, false);
165
- offset += 4;
166
- if (magic !== this.constants.MAGIC) {
167
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_InvalidChunkMagic));
168
- }
169
- const version = view.getUint16(offset, false);
170
- offset += 2;
171
- if (version !== this.constants.VERSION) {
172
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_UnsupportedVersionTemplate, { version }));
173
- }
174
- const recipientCount = view.getUint16(offset, false);
175
- offset += 2;
176
- if (recipientCount === 0 || recipientCount > this.constants.MAX_RECIPIENTS) {
177
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_InvalidRecipientCountTemplate, { count: recipientCount }));
178
- }
179
- const chunkIndex = view.getUint32(offset, false);
180
- offset += 4;
181
- const originalSize = view.getUint32(offset, false);
182
- offset += 4;
183
- const encryptedSize = view.getUint32(offset, false);
184
- offset += 4;
185
- const flags = view.getUint8(offset);
186
- offset += 1;
187
- // Read Ephemeral Public Key (33 bytes)
188
- const ephemeralPublicKey = chunkData.slice(offset, offset + 33);
189
- offset += 33;
190
- offset = this.constants.HEADER_SIZE;
191
- // Validate encryptedSize against chunk size
192
- // We know it must be at least HEADER + IV + EncryptedSize (which includes tag)
193
- const minChunkSize = this.constants.HEADER_SIZE + Constants.ECIES.IV_SIZE + encryptedSize;
194
- if (chunkData.length < minChunkSize) {
195
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_ChunkTooSmallForEncryptedSize));
196
- }
197
- // Find recipient header and decrypt symmetric key
198
- let symmetricKey = null;
199
- let tempOffset = offset;
200
- for (let i = 0; i < recipientCount; i++) {
201
- // Check if we have enough data for recipient ID
202
- if (tempOffset + this.recipientIdSize > chunkData.length) {
203
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_ChunkTruncatedRecipientId));
204
- }
205
- const id = chunkData.slice(tempOffset, tempOffset + this.recipientIdSize);
206
- tempOffset += this.recipientIdSize;
207
- // Check if we have enough data for keySize field
208
- if (tempOffset + this.constants.KEY_SIZE_BYTES > chunkData.length) {
209
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_ChunkTruncatedKeySize));
210
- }
211
- const keySize = view.getUint16(tempOffset, false);
212
- tempOffset += this.constants.KEY_SIZE_BYTES;
213
- // Validate keySize (typical ECIES: 100-400 bytes)
214
- if (keySize === 0 || keySize > 1000) {
215
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_InvalidKeySizeTemplate, { size: keySize }));
216
- }
217
- // Check if we have enough data for the encrypted key
218
- if (tempOffset + keySize > chunkData.length) {
219
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_ChunkTruncatedEncryptedKey));
220
- }
221
- const encryptedKey = chunkData.slice(tempOffset, tempOffset + keySize);
222
- tempOffset += keySize;
223
- // Check if this is our recipient
224
- if (this.arraysEqual(id, recipientId)) {
225
- // Use Recipient ID as AAD for key decryption
226
- symmetricKey = await this.ecies.decryptKey(privateKey, encryptedKey, ephemeralPublicKey, id);
227
- // Don't break - need to skip all recipient headers
228
- }
229
- }
230
- if (!symmetricKey) {
231
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_RecipientNotFoundInChunk));
232
- }
233
- // Update offset to after all recipient headers
234
- offset = tempOffset;
235
- // Extract header bytes for AAD
236
- const headerBytes = chunkData.slice(0, offset);
237
- // Read IV
238
- if (offset + Constants.ECIES.IV_SIZE > chunkData.length) {
239
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_ChunkTooSmall));
240
- }
241
- const iv = chunkData.slice(offset, offset + Constants.ECIES.IV_SIZE);
242
- offset += Constants.ECIES.IV_SIZE;
243
- // Read encrypted data (includes auth tag)
244
- if (offset + encryptedSize > chunkData.length) {
245
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_MultiRecipient_ChunkTooSmall));
246
- }
247
- const encryptedWithTag = chunkData.slice(offset, offset + encryptedSize);
248
- offset += encryptedSize;
249
- // Decrypt with AAD
250
- const decrypted = await AESGCMService.decrypt(iv, encryptedWithTag, symmetricKey, true, Constants.ECIES, headerBytes);
251
- // Verify signature if sender public key provided
252
- let finalData = decrypted;
253
- if (senderPublicKey) {
254
- if (decrypted.length < 64) {
255
- throw new Error('Decrypted chunk too short to contain signature');
256
- }
257
- const signature = decrypted.slice(0, 64);
258
- const message = decrypted.slice(64);
259
- const isValid = this.ecies.core.verify(senderPublicKey, message, signature);
260
- if (!isValid) {
261
- throw new Error('Invalid sender signature in chunk');
262
- }
263
- finalData = message;
264
- }
265
- return {
266
- data: finalData,
267
- header: {
268
- magic,
269
- version,
270
- recipientCount,
271
- chunkIndex,
272
- originalSize,
273
- encryptedSize,
274
- flags,
275
- },
276
- };
277
- }
278
- arraysEqual(a, b) {
279
- if (a.length !== b.length)
280
- return false;
281
- // Constant-time comparison to prevent timing attacks
282
- let diff = 0;
283
- for (let i = 0; i < a.length; i++) {
284
- diff |= a[i] ^ b[i];
285
- }
286
- return diff === 0;
287
- }
288
- }
289
- //# sourceMappingURL=multi-recipient-processor.js.map