@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
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Interface for ID providers that supply recipient identifiers.
3
+ * This allows the library to support various ID formats (ObjectID, GUID, UUID, custom).
4
+ */
5
+ export interface IIdProvider {
6
+ /**
7
+ * The fixed byte length of IDs produced by this provider.
8
+ * This determines the size of recipient ID fields in encrypted messages.
9
+ */
10
+ readonly byteLength: number;
11
+
12
+ /**
13
+ * A human-readable name for this ID provider type.
14
+ * Examples: 'ObjectID', 'GUIDv4', 'UUIDv4', 'Custom'
15
+ */
16
+ readonly name: string;
17
+
18
+ /**
19
+ * Generate a new random ID.
20
+ * @returns A newly generated ID as a Uint8Array of length `byteLength`
21
+ */
22
+ generate(): Uint8Array;
23
+
24
+ /**
25
+ * Validate that a given buffer is a properly formatted ID for this provider.
26
+ * This should check length, format constraints, and any version bits if applicable.
27
+ * @param id The ID buffer to validate
28
+ * @returns True if the ID is valid for this provider, false otherwise
29
+ */
30
+ validate(id: Uint8Array): boolean;
31
+
32
+ /**
33
+ * Serialize an ID buffer to a human-readable string representation.
34
+ * Examples: hex string, base64, ObjectID hex, UUID format with dashes
35
+ * @param id The ID buffer to serialize
36
+ * @returns A string representation of the ID
37
+ * @throws Error if the ID is invalid
38
+ */
39
+ serialize(id: Uint8Array): string;
40
+
41
+ /**
42
+ * Deserialize a string representation back to an ID buffer.
43
+ * This is the inverse of `serialize`.
44
+ * @param str The string representation of the ID
45
+ * @returns The ID as a Uint8Array of length `byteLength`
46
+ * @throws Error if the string is not a valid representation
47
+ */
48
+ deserialize(str: string): Uint8Array;
49
+
50
+ /**
51
+ * Compare two IDs for equality.
52
+ * Default implementation uses constant-time comparison.
53
+ * @param a First ID
54
+ * @param b Second ID
55
+ * @returns True if IDs are equal, false otherwise
56
+ */
57
+ equals(a: Uint8Array, b: Uint8Array): boolean;
58
+
59
+ /**
60
+ * Clone an ID buffer.
61
+ * Default implementation creates a defensive copy.
62
+ * @param id The ID to clone
63
+ * @returns A new Uint8Array with the same contents
64
+ */
65
+ clone(id: Uint8Array): Uint8Array;
66
+
67
+ /**
68
+ * Convert an ID of unknown type to a string representation.
69
+ * This is useful when dealing with generic IDs that might be Uint8Array, string, or other types.
70
+ * @param id The ID to convert
71
+ * @returns A string representation of the ID
72
+ */
73
+ idToString(id: unknown): string;
74
+
75
+ /**
76
+ * Convert a string representation of an ID back to an ID buffer.
77
+ * This is an alias for `deserialize` to provide symmetry with `idToString`.
78
+ * @param str The string representation of the ID
79
+ * @returns The ID as a Uint8Array of length `byteLength`
80
+ */
81
+ idFromString(str: string): Uint8Array;
82
+ }
83
+
84
+ /**
85
+ * Base class for ID providers with common utility methods.
86
+ */
87
+ export abstract class BaseIdProvider implements IIdProvider {
88
+ abstract readonly byteLength: number;
89
+ abstract readonly name: string;
90
+
91
+ abstract generate(): Uint8Array;
92
+ abstract validate(id: Uint8Array): boolean;
93
+ abstract serialize(id: Uint8Array): string;
94
+ abstract deserialize(str: string): Uint8Array;
95
+
96
+ /**
97
+ * Convert an ID of unknown type to a string representation.
98
+ * Default implementation handles Uint8Array using serialize(), and falls back to String().
99
+ */
100
+ idToString(id: unknown): string {
101
+ if (id instanceof Uint8Array) {
102
+ return this.serialize(id);
103
+ }
104
+ return String(id);
105
+ }
106
+
107
+ /**
108
+ * Convert a string representation of an ID back to an ID buffer.
109
+ * Default implementation delegates to `deserialize`.
110
+ */
111
+ idFromString(str: string): Uint8Array {
112
+ return this.deserialize(str);
113
+ }
114
+
115
+ /**
116
+ * Constant-time comparison to prevent timing attacks.
117
+ */
118
+ equals(a: Uint8Array, b: Uint8Array): boolean {
119
+ if (a.length !== b.length) {
120
+ return false;
121
+ }
122
+
123
+ let diff = 0;
124
+ for (let i = 0; i < a.length; i++) {
125
+ diff |= a[i] ^ b[i];
126
+ }
127
+ return diff === 0;
128
+ }
129
+
130
+ /**
131
+ * Create a defensive copy of an ID.
132
+ */
133
+ clone(id: Uint8Array): Uint8Array {
134
+ return new Uint8Array(id);
135
+ }
136
+
137
+ /**
138
+ * Validate ID length matches expected byte length.
139
+ */
140
+ protected validateLength(id: Uint8Array, context: string): void {
141
+ if (id.length !== this.byteLength) {
142
+ const { IdProviderError } = require('../errors/id-provider');
143
+ const { IdProviderErrorType } = require('../enumerations/id-provider-error-type');
144
+ throw new IdProviderError(
145
+ IdProviderErrorType.InvalidLength,
146
+ undefined,
147
+ undefined,
148
+ { context, expected: this.byteLength, actual: id.length }
149
+ );
150
+ }
151
+ }
152
+ }
@@ -12,4 +12,3 @@ export type * from './member-with-mnemonic';
12
12
  export * from './pbkdf2-config';
13
13
  export * from './pbkdf2-consts';
14
14
  export * from './pbkdf2-result';
15
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,60 @@
1
+ import type { IConstants } from './constants';
2
+
3
+ /**
4
+ * An invariant is a relationship between configuration values that must always hold true.
5
+ * Unlike simple property validation, invariants check consistency across multiple related values.
6
+ *
7
+ * Example: MEMBER_ID_LENGTH must equal idProvider.byteLength
8
+ *
9
+ * Invariants help catch configuration errors that simple property validation would miss,
10
+ * such as the 12 vs 32 byte discrepancy we encountered.
11
+ */
12
+ export interface IInvariant {
13
+ /**
14
+ * Unique name for this invariant (used in error messages)
15
+ */
16
+ readonly name: string;
17
+
18
+ /**
19
+ * Human-readable description of what this invariant validates
20
+ */
21
+ readonly description: string;
22
+
23
+ /**
24
+ * Check if the invariant holds for the given configuration
25
+ * @returns true if invariant is satisfied, false otherwise
26
+ */
27
+ check(config: IConstants): boolean;
28
+
29
+ /**
30
+ * Generate a detailed error message explaining why the invariant failed
31
+ * @param config The configuration that failed validation
32
+ * @returns Error message with actual vs expected values
33
+ */
34
+ errorMessage(config: IConstants): string;
35
+ }
36
+
37
+ /**
38
+ * Base class for invariants with common utilities
39
+ */
40
+ export abstract class BaseInvariant implements IInvariant {
41
+ constructor(
42
+ public readonly name: string,
43
+ public readonly description: string,
44
+ ) {}
45
+
46
+ abstract check(config: IConstants): boolean;
47
+ abstract errorMessage(config: IConstants): string;
48
+
49
+ /**
50
+ * Helper to format error messages consistently
51
+ */
52
+ protected formatError(
53
+ property1: string,
54
+ value1: unknown,
55
+ property2: string,
56
+ value2: unknown,
57
+ ): string {
58
+ return `Invariant '${this.name}' failed: ${property1} (${value1}) must equal ${property2} (${value2})`;
59
+ }
60
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Standardized error interface for Digital Defiance libraries
3
+ * Ensures consistent error handling across the ecosystem
4
+ */
5
+ export interface LibraryError extends Error {
6
+ /** The library that generated this error */
7
+ readonly library: string;
8
+ /** Unique error code for programmatic handling */
9
+ readonly errorCode: string;
10
+ /** HTTP-style status code */
11
+ readonly statusCode: number;
12
+ }
13
+
14
+ /**
15
+ * Interface for resources that can be disposed
16
+ * Ensures consistent memory management across libraries
17
+ */
18
+ export interface DisposableResource {
19
+ /** Dispose of the resource and clean up memory */
20
+ dispose(): void;
21
+ /** Whether the resource has been disposed */
22
+ readonly isDisposed: boolean;
23
+ }
@@ -1,21 +1,22 @@
1
1
  import type { MemberType } from '../enumerations/member-type';
2
+
2
3
  /**
3
4
  * Storage format for member data - all serializable types
4
5
  */
5
6
  export interface IMemberStorageData {
6
- id: string;
7
- type: MemberType;
8
- name: string;
9
- email: string;
10
- publicKey: string;
11
- creatorId: string;
12
- dateCreated: string;
13
- dateUpdated: string;
7
+ id: string;
8
+ type: MemberType;
9
+ name: string;
10
+ email: string;
11
+ publicKey: string; // base64
12
+ creatorId: string;
13
+ dateCreated: string; // ISO string
14
+ dateUpdated: string; // ISO string
14
15
  }
16
+
15
17
  /**
16
18
  * Extended storage format for test member data
17
19
  */
18
20
  export interface ITestMemberStorageData extends IMemberStorageData {
19
- mnemonic?: string;
21
+ mnemonic?: string;
20
22
  }
21
- //# sourceMappingURL=member-storage.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import type { SecureString } from '../secure-string';
2
2
  import type { IMember } from './member';
3
+
3
4
  export interface IMemberWithMnemonic {
4
- member: IMember;
5
- mnemonic: SecureString;
5
+ member: IMember;
6
+ mnemonic: SecureString;
6
7
  }
7
- //# sourceMappingURL=member-with-mnemonic.d.ts.map
@@ -0,0 +1,84 @@
1
+ import type { Wallet } from '@ethereumjs/wallet';
2
+ import type { EmailString } from '../email-string';
3
+ import type MemberType from '../enumerations/member-type';
4
+ import type { SecureBuffer } from '../secure-buffer';
5
+ import type { SecureString } from '../secure-string';
6
+ import type { SignatureUint8Array } from '../types';
7
+ import type { IECIESConstants } from './ecies-consts';
8
+ import type { IEncryptedChunk } from './encrypted-chunk';
9
+
10
+ /**
11
+ * Interface representing a member with cryptographic capabilities.
12
+ * This interface defines the contract for member operations without
13
+ * referencing concrete class implementations.
14
+ */
15
+ export interface IMember {
16
+ // Required properties
17
+ readonly id: Uint8Array;
18
+ readonly type: MemberType;
19
+ readonly name: string;
20
+ readonly email: EmailString;
21
+ readonly publicKey: Uint8Array;
22
+ readonly creatorId: Uint8Array;
23
+ readonly dateCreated: Date;
24
+ readonly dateUpdated: Date;
25
+
26
+ // Optional private data properties
27
+ readonly privateKey: SecureBuffer | undefined;
28
+ readonly wallet: Wallet;
29
+
30
+ // State properties
31
+ readonly hasPrivateKey: boolean;
32
+
33
+ // Key management methods
34
+ unloadPrivateKey(): void;
35
+ unloadWallet(): void;
36
+ unloadWalletAndPrivateKey(): void;
37
+ loadWallet(mnemonic: SecureString, eciesParams?: IECIESConstants): void;
38
+ loadPrivateKey(privateKey: SecureBuffer): void;
39
+
40
+ // Cryptographic methods
41
+ sign(data: Uint8Array): SignatureUint8Array;
42
+ signData(data: Uint8Array): SignatureUint8Array;
43
+ verify(signature: SignatureUint8Array, data: Uint8Array): boolean;
44
+ verifySignature(
45
+ data: Uint8Array,
46
+ signature: Uint8Array,
47
+ publicKey: Uint8Array,
48
+ ): boolean;
49
+
50
+ // Encryption/Decryption methods
51
+ encryptDataStream(
52
+ source: AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>,
53
+ options?: {
54
+ recipientPublicKey?: Uint8Array;
55
+ onProgress?: (progress: {
56
+ bytesProcessed: number;
57
+ chunksProcessed: number;
58
+ }) => void;
59
+ signal?: AbortSignal;
60
+ },
61
+ ): AsyncGenerator<IEncryptedChunk, void, unknown>;
62
+
63
+ decryptDataStream(
64
+ source: AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>,
65
+ options?: {
66
+ onProgress?: (progress: {
67
+ bytesProcessed: number;
68
+ chunksProcessed: number;
69
+ }) => void;
70
+ signal?: AbortSignal;
71
+ },
72
+ ): AsyncGenerator<Uint8Array, void, unknown>;
73
+
74
+ encryptData(
75
+ data: string | Uint8Array,
76
+ recipientPublicKey?: Uint8Array,
77
+ ): Promise<Uint8Array>;
78
+
79
+ decryptData(encryptedData: Uint8Array): Promise<Uint8Array>;
80
+
81
+ // Serialization methods
82
+ toJson(): string;
83
+ dispose(): void;
84
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Multi-recipient encrypted chunk format
3
+ *
4
+ * Structure:
5
+ * - Header (32 bytes): magic, version, recipientCount, chunkIndex, etc.
6
+ * - Recipient headers (variable): encrypted symmetric keys for each recipient
7
+ * - Encrypted data (variable): data encrypted with symmetric key
8
+ */
9
+
10
+ /**
11
+ * Multi-recipient chunk header (32 bytes)
12
+ */
13
+ export interface IMultiRecipientChunkHeader {
14
+ /** Magic bytes: 0x4D524543 ("MREC") */
15
+ magic: number;
16
+ /** Version: 0x0001 */
17
+ version: number;
18
+ /** Number of recipients */
19
+ recipientCount: number;
20
+ /** Chunk index */
21
+ chunkIndex: number;
22
+ /** Original data size */
23
+ originalSize: number;
24
+ /** Encrypted data size */
25
+ encryptedSize: number;
26
+ /** Flags (bit 0: isLast, bit 1: hasChecksum) */
27
+ flags: number;
28
+ }
29
+
30
+ /**
31
+ * Recipient header (variable size)
32
+ */
33
+ export interface IRecipientHeader {
34
+ /** Recipient ID (size determined by ID provider) */
35
+ id: Uint8Array;
36
+ /** Encrypted symmetric key size (2 bytes) */
37
+ keySize: number;
38
+ /** Encrypted symmetric key (variable) */
39
+ encryptedKey: Uint8Array;
40
+ }
41
+
42
+ /**
43
+ * Multi-recipient encrypted chunk
44
+ */
45
+ export interface IMultiRecipientChunk {
46
+ /** Chunk index */
47
+ index: number;
48
+ /** Complete chunk data (header + recipient headers + encrypted data) */
49
+ data: Uint8Array;
50
+ /** Whether this is the last chunk */
51
+ isLast: boolean;
52
+ /** Number of recipients */
53
+ recipientCount: number;
54
+ }
55
+
56
+ // Re-export interface (type-only), utility function and constant from lib
57
+ export {
58
+ MULTI_RECIPIENT_CONSTANTS,
59
+ getMultiRecipientConstants,
60
+ } from '../lib/multi-recipient-chunk-utils';
61
+ export type { IMultiRecipientConstants } from '../lib/multi-recipient-chunk-utils';
@@ -0,0 +1,6 @@
1
+ export interface IPbkdf2Config {
2
+ hashBytes: number;
3
+ saltBytes: number;
4
+ iterations: number;
5
+ algorithm: string;
6
+ }
@@ -0,0 +1,10 @@
1
+ export interface IPBkdf2Consts {
2
+ /** Hash algorithm (sha512) */
3
+ ALGORITHM: string;
4
+
5
+ /** Number of bytes in a salt. */
6
+ SALT_BYTES: number;
7
+
8
+ /** Expected number of pbkdf2 iterations per second when hashing a password. */
9
+ ITERATIONS_PER_SECOND: number;
10
+ }
@@ -0,0 +1,5 @@
1
+ export interface IPbkdf2Result {
2
+ salt: Uint8Array;
3
+ hash: Uint8Array;
4
+ iterations: number;
5
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Configuration for streaming encryption operations
3
+ */
4
+ export interface IStreamConfig {
5
+ /** Chunk size in bytes (default: 1MB) */
6
+ chunkSize: number;
7
+ /** Whether to include checksums for each chunk */
8
+ includeChecksums: boolean;
9
+ }
10
+
11
+ /**
12
+ * Default streaming configuration
13
+ */
14
+ export const DEFAULT_STREAM_CONFIG: IStreamConfig = {
15
+ chunkSize: 1024 * 1024, // 1MB
16
+ includeChecksums: false,
17
+ };
@@ -0,0 +1,34 @@
1
+ import type { EciesEncryptionTypeEnum } from '../enumerations/ecies-encryption-type';
2
+
3
+ /**
4
+ * Stream header structure (128 bytes fixed)
5
+ */
6
+ export interface IStreamHeader {
7
+ /** Magic bytes: 0x45435354 ("ECST") */
8
+ magic: number;
9
+ /** Version: 0x0001 */
10
+ version: number;
11
+ /** Encryption type */
12
+ encryptionType: EciesEncryptionTypeEnum;
13
+ /** Chunk size in bytes */
14
+ chunkSize: number;
15
+ /** Total number of chunks (0 if unknown) */
16
+ totalChunks: number;
17
+ /** Total bytes to process (0 if unknown) */
18
+ totalBytes: number;
19
+ /** Timestamp when stream started */
20
+ timestamp: number;
21
+ }
22
+
23
+ /**
24
+ * Constants for stream header format
25
+ */
26
+ export const STREAM_HEADER_CONSTANTS: {
27
+ readonly MAGIC: 0x45435354;
28
+ readonly VERSION: 0x0001;
29
+ readonly HEADER_SIZE: 128;
30
+ } = {
31
+ MAGIC: 0x45435354, // "ECST"
32
+ VERSION: 0x0001,
33
+ HEADER_SIZE: 128,
34
+ } as const;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Progress information for streaming operations
3
+ */
4
+ export interface IStreamProgress {
5
+ /** Total bytes processed so far */
6
+ bytesProcessed: number;
7
+ /** Total bytes to process (undefined for unknown-length streams) */
8
+ totalBytes?: number;
9
+ /** Number of chunks processed */
10
+ chunksProcessed: number;
11
+ /** Percentage complete (0-100, undefined if totalBytes unknown) */
12
+ percentComplete?: number;
13
+ /** Current throughput in bytes per second */
14
+ throughputBytesPerSec: number;
15
+ /** Estimated time remaining in seconds (undefined if totalBytes unknown) */
16
+ estimatedTimeRemaining?: number;
17
+ /** Timestamp when operation started */
18
+ startTime: number;
19
+ /** Elapsed time in milliseconds */
20
+ elapsedTime: number;
21
+ }
22
+
23
+ /**
24
+ * Callback function for progress updates
25
+ */
26
+ export type ProgressCallback = (progress: IStreamProgress) => void | Promise<void>;
27
+
28
+ /**
29
+ * Callback function for chunk completion
30
+ */
31
+ export type ChunkCallback = (chunk: { index: number; size: number }) => void | Promise<void>;
@@ -0,0 +1,26 @@
1
+ import { createHash } from 'crypto';
2
+ import type { IConstants } from '../interfaces/constants';
3
+
4
+ /**
5
+ * Calculates a checksum for a configuration object.
6
+ * Uses SHA-256 of JSON representation.
7
+ */
8
+ export function calculateConfigChecksum(config: IConstants): string {
9
+ // Create a stable JSON representation with BigInt support
10
+ const replacer = (_key: string, value: any) =>
11
+ typeof value === 'bigint' ? value.toString() : value;
12
+ const stable = JSON.stringify(config, replacer);
13
+ return createHash('sha256').update(stable).digest('hex');
14
+ }
15
+
16
+ /**
17
+ * Captures a stack trace for provenance tracking
18
+ */
19
+ export function captureCreationStack(): string {
20
+ const stack = new Error().stack;
21
+ if (!stack) return 'stack unavailable';
22
+
23
+ // Remove the first two lines (Error message and this function)
24
+ const lines = stack.split('\n').slice(2);
25
+ return lines.join('\n');
26
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Service Container for dependency injection
3
+ */
4
+
5
+ import { I18nEngine } from '@digitaldefiance/i18n-lib';
6
+ import { Constants } from '../constants';
7
+ import { EciesStringKey } from '../enumerations/ecies-string-key';
8
+ import { EciesComponentId, getEciesI18nEngine } from '../i18n-setup';
9
+ import type { IConstants } from '../interfaces/constants';
10
+
11
+ export enum CryptoServiceKey {
12
+ ECIES = 'ecies',
13
+ PBKDF2 = 'pbkdf2',
14
+ AES_GCM = 'aes-gcm',
15
+ PASSWORD_LOGIN = 'password-login',
16
+ FILE = 'file',
17
+ XOR = 'xor',
18
+ }
19
+
20
+ export class CryptoContainer {
21
+ private services = new Map<CryptoServiceKey, unknown>();
22
+ private config: IConstants;
23
+ private i18n: I18nEngine;
24
+
25
+ private constructor(config: IConstants, i18n: I18nEngine) {
26
+ this.config = config;
27
+ this.i18n = i18n;
28
+ this.initServices();
29
+ }
30
+
31
+ static create(
32
+ config: IConstants = Constants,
33
+ i18n?: I18nEngine,
34
+ ): CryptoContainer {
35
+ return new CryptoContainer(config, i18n || getEciesI18nEngine());
36
+ }
37
+
38
+ get<T>(key: CryptoServiceKey): T {
39
+ const service = this.services.get(key);
40
+ if (!service) {
41
+ throw new Error(
42
+ this.i18n.translate(
43
+ EciesComponentId,
44
+ EciesStringKey.Error_Container_ServiceNotFoundTemplate,
45
+ { service: key },
46
+ ),
47
+ );
48
+ }
49
+ return service as T;
50
+ }
51
+
52
+ private initServices(): void {
53
+ // Services will be lazily loaded to avoid circular dependencies
54
+ // Implementation will be added as services are migrated
55
+ }
56
+
57
+ getConfig(): IConstants {
58
+ return this.config;
59
+ }
60
+
61
+ getI18n(): I18nEngine {
62
+ return this.i18n;
63
+ }
64
+ }