@digitaldefiance/ecies-lib 4.4.11 → 4.4.14

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/package.json +6 -4
  2. package/src/builders/ecies-builder.d.ts +18 -0
  3. package/src/builders/ecies-builder.d.ts.map +1 -0
  4. package/src/builders/ecies-builder.js +30 -0
  5. package/src/builders/ecies-builder.js.map +1 -0
  6. package/src/builders/index.d.ts +6 -0
  7. package/src/builders/index.d.ts.map +1 -0
  8. package/src/builders/{index.ts → index.js} +1 -1
  9. package/src/builders/index.js.map +1 -0
  10. package/src/builders/member-builder.d.ts +51 -0
  11. package/src/builders/member-builder.d.ts.map +1 -0
  12. package/src/builders/member-builder.js +97 -0
  13. package/src/builders/member-builder.js.map +1 -0
  14. package/src/constants.d.ts +60 -0
  15. package/src/constants.d.ts.map +1 -0
  16. package/src/constants.js +446 -0
  17. package/src/constants.js.map +1 -0
  18. package/src/core/errors/crypto-error.d.ts +34 -0
  19. package/src/core/errors/crypto-error.d.ts.map +1 -0
  20. package/src/core/errors/crypto-error.js +56 -0
  21. package/src/core/errors/crypto-error.js.map +1 -0
  22. package/src/core/index.d.ts +6 -0
  23. package/src/core/index.d.ts.map +1 -0
  24. package/src/core/{index.ts → index.js} +1 -1
  25. package/src/core/index.js.map +1 -0
  26. package/src/core/types/result.d.ts +16 -0
  27. package/src/core/types/result.d.ts.map +1 -0
  28. package/src/core/types/result.js +12 -0
  29. package/src/core/types/result.js.map +1 -0
  30. package/src/email-string.d.ts +42 -0
  31. package/src/email-string.d.ts.map +1 -0
  32. package/src/email-string.js +67 -0
  33. package/src/email-string.js.map +1 -0
  34. package/src/enumerations/disposed-error-type.d.ts +12 -0
  35. package/src/enumerations/disposed-error-type.d.ts.map +1 -0
  36. package/src/enumerations/disposed-error-type.js +13 -0
  37. package/src/enumerations/disposed-error-type.js.map +1 -0
  38. package/src/enumerations/ecies-cipher-suite.d.ts +4 -0
  39. package/src/enumerations/ecies-cipher-suite.d.ts.map +1 -0
  40. package/src/enumerations/ecies-cipher-suite.js +6 -0
  41. package/src/enumerations/ecies-cipher-suite.js.map +1 -0
  42. package/src/enumerations/ecies-encryption-type.d.ts +11 -0
  43. package/src/enumerations/ecies-encryption-type.d.ts.map +1 -0
  44. package/src/enumerations/ecies-encryption-type.js +27 -0
  45. package/src/enumerations/ecies-encryption-type.js.map +1 -0
  46. package/src/enumerations/ecies-error-type.d.ts +44 -0
  47. package/src/enumerations/ecies-error-type.d.ts.map +1 -0
  48. package/src/enumerations/ecies-error-type.js +45 -0
  49. package/src/enumerations/ecies-error-type.js.map +1 -0
  50. package/src/enumerations/ecies-string-key.d.ts +192 -0
  51. package/src/enumerations/ecies-string-key.d.ts.map +1 -0
  52. package/src/enumerations/ecies-string-key.js +199 -0
  53. package/src/enumerations/ecies-string-key.js.map +1 -0
  54. package/src/enumerations/ecies-version.d.ts +4 -0
  55. package/src/enumerations/ecies-version.d.ts.map +1 -0
  56. package/src/enumerations/ecies-version.js +5 -0
  57. package/src/enumerations/ecies-version.js.map +1 -0
  58. package/src/enumerations/guid-brand-type.d.ts +27 -0
  59. package/src/enumerations/guid-brand-type.d.ts.map +1 -0
  60. package/src/enumerations/guid-brand-type.js +28 -0
  61. package/src/enumerations/guid-brand-type.js.map +1 -0
  62. package/src/enumerations/guid-error-type.d.ts +7 -0
  63. package/src/enumerations/guid-error-type.d.ts.map +1 -0
  64. package/src/enumerations/guid-error-type.js +8 -0
  65. package/src/enumerations/guid-error-type.js.map +1 -0
  66. package/src/enumerations/id-provider-error-type.d.ts +43 -0
  67. package/src/enumerations/id-provider-error-type.d.ts.map +1 -0
  68. package/src/enumerations/id-provider-error-type.js +44 -0
  69. package/src/enumerations/id-provider-error-type.js.map +1 -0
  70. package/src/enumerations/index.d.ts +18 -0
  71. package/src/enumerations/index.d.ts.map +1 -0
  72. package/src/enumerations/{index.ts → index.js} +1 -0
  73. package/src/enumerations/index.js.map +1 -0
  74. package/src/enumerations/invalid-email-type.d.ts +6 -0
  75. package/src/enumerations/invalid-email-type.d.ts.map +1 -0
  76. package/src/enumerations/invalid-email-type.js +7 -0
  77. package/src/enumerations/invalid-email-type.js.map +1 -0
  78. package/src/enumerations/length-encoding-type.d.ts +7 -0
  79. package/src/enumerations/length-encoding-type.d.ts.map +1 -0
  80. package/src/enumerations/length-encoding-type.js +8 -0
  81. package/src/enumerations/length-encoding-type.js.map +1 -0
  82. package/src/enumerations/length-error-type.d.ts +6 -0
  83. package/src/enumerations/length-error-type.d.ts.map +1 -0
  84. package/src/enumerations/length-error-type.js +7 -0
  85. package/src/enumerations/length-error-type.js.map +1 -0
  86. package/src/enumerations/member-error-type.d.ts +87 -0
  87. package/src/enumerations/member-error-type.d.ts.map +1 -0
  88. package/src/enumerations/member-error-type.js +88 -0
  89. package/src/enumerations/member-error-type.js.map +1 -0
  90. package/src/enumerations/{member-type.ts → member-type.d.ts} +6 -7
  91. package/src/enumerations/member-type.d.ts.map +1 -0
  92. package/src/enumerations/member-type.js +16 -0
  93. package/src/enumerations/member-type.js.map +1 -0
  94. package/src/enumerations/password-login-error-type.d.ts +5 -0
  95. package/src/enumerations/password-login-error-type.d.ts.map +1 -0
  96. package/src/enumerations/password-login-error-type.js +6 -0
  97. package/src/enumerations/password-login-error-type.js.map +1 -0
  98. package/src/enumerations/pbkdf2-error-type.d.ts +6 -0
  99. package/src/enumerations/pbkdf2-error-type.d.ts.map +1 -0
  100. package/src/enumerations/pbkdf2-error-type.js +7 -0
  101. package/src/enumerations/pbkdf2-error-type.js.map +1 -0
  102. package/src/enumerations/pbkdf2-profile.d.ts +6 -0
  103. package/src/enumerations/pbkdf2-profile.d.ts.map +1 -0
  104. package/src/enumerations/pbkdf2-profile.js +7 -0
  105. package/src/enumerations/pbkdf2-profile.js.map +1 -0
  106. package/src/enumerations/secure-storage-error-type.d.ts +6 -0
  107. package/src/enumerations/secure-storage-error-type.d.ts.map +1 -0
  108. package/src/enumerations/secure-storage-error-type.js +7 -0
  109. package/src/enumerations/secure-storage-error-type.js.map +1 -0
  110. package/src/errors/disposed.d.ts +22 -0
  111. package/src/errors/disposed.d.ts.map +1 -0
  112. package/src/errors/disposed.js +28 -0
  113. package/src/errors/disposed.js.map +1 -0
  114. package/src/errors/ecies.d.ts +52 -0
  115. package/src/errors/ecies.d.ts.map +1 -0
  116. package/src/errors/ecies.js +78 -0
  117. package/src/errors/ecies.js.map +1 -0
  118. package/src/errors/guid.d.ts +49 -0
  119. package/src/errors/guid.d.ts.map +1 -0
  120. package/src/errors/guid.js +96 -0
  121. package/src/errors/guid.js.map +1 -0
  122. package/src/errors/id-provider.d.ts +23 -0
  123. package/src/errors/id-provider.d.ts.map +1 -0
  124. package/src/errors/id-provider.js +29 -0
  125. package/src/errors/id-provider.js.map +1 -0
  126. package/src/errors/{index.ts → index.d.ts} +1 -0
  127. package/src/errors/index.d.ts.map +1 -0
  128. package/src/errors/index.js +10 -0
  129. package/src/errors/index.js.map +1 -0
  130. package/src/errors/invalid-email.d.ts +8 -0
  131. package/src/errors/invalid-email.d.ts.map +1 -0
  132. package/src/errors/invalid-email.js +15 -0
  133. package/src/errors/invalid-email.js.map +1 -0
  134. package/src/errors/length.d.ts +7 -0
  135. package/src/errors/length.d.ts.map +1 -0
  136. package/src/errors/length.js +11 -0
  137. package/src/errors/length.js.map +1 -0
  138. package/src/errors/member.d.ts +7 -0
  139. package/src/errors/member.d.ts.map +1 -0
  140. package/src/errors/member.js +11 -0
  141. package/src/errors/member.js.map +1 -0
  142. package/src/errors/pbkdf2.d.ts +7 -0
  143. package/src/errors/pbkdf2.d.ts.map +1 -0
  144. package/src/errors/pbkdf2.js +11 -0
  145. package/src/errors/pbkdf2.js.map +1 -0
  146. package/src/errors/secure-storage.d.ts +7 -0
  147. package/src/errors/secure-storage.d.ts.map +1 -0
  148. package/src/errors/secure-storage.js +12 -0
  149. package/src/errors/secure-storage.js.map +1 -0
  150. package/src/errors/simple-ecies.d.ts +6 -0
  151. package/src/errors/simple-ecies.d.ts.map +1 -0
  152. package/src/errors/simple-ecies.js +12 -0
  153. package/src/errors/simple-ecies.js.map +1 -0
  154. package/src/errors/simple-test-error.d.ts +4 -0
  155. package/src/errors/simple-test-error.d.ts.map +1 -0
  156. package/src/errors/simple-test-error.js +7 -0
  157. package/src/errors/simple-test-error.js.map +1 -0
  158. package/src/i18n-setup.d.ts +32 -0
  159. package/src/i18n-setup.d.ts.map +1 -0
  160. package/src/i18n-setup.js +101 -0
  161. package/src/i18n-setup.js.map +1 -0
  162. package/src/index.d.ts +80 -0
  163. package/src/index.d.ts.map +1 -0
  164. package/src/{index.ts → index.js} +7 -64
  165. package/src/index.js.map +1 -0
  166. package/src/interfaces/checksum-config.d.ts +5 -0
  167. package/src/interfaces/checksum-config.d.ts.map +1 -0
  168. package/src/interfaces/checksum-config.js +2 -0
  169. package/src/interfaces/checksum-config.js.map +1 -0
  170. package/src/interfaces/checksum-consts.d.ts +11 -0
  171. package/src/interfaces/checksum-consts.d.ts.map +1 -0
  172. package/src/interfaces/checksum-consts.js +2 -0
  173. package/src/interfaces/checksum-consts.js.map +1 -0
  174. package/src/interfaces/configuration-provenance.d.ts +43 -0
  175. package/src/interfaces/configuration-provenance.d.ts.map +1 -0
  176. package/src/interfaces/configuration-provenance.js +3 -0
  177. package/src/interfaces/configuration-provenance.js.map +1 -0
  178. package/src/interfaces/constants.d.ts +70 -0
  179. package/src/interfaces/constants.d.ts.map +1 -0
  180. package/src/interfaces/constants.js +2 -0
  181. package/src/interfaces/constants.js.map +1 -0
  182. package/src/interfaces/ecies-config.d.ts +9 -0
  183. package/src/interfaces/ecies-config.d.ts.map +1 -0
  184. package/src/interfaces/ecies-config.js +2 -0
  185. package/src/interfaces/ecies-config.js.map +1 -0
  186. package/src/interfaces/ecies-consts.d.ts +61 -0
  187. package/src/interfaces/ecies-consts.d.ts.map +1 -0
  188. package/src/interfaces/ecies-consts.js +2 -0
  189. package/src/interfaces/ecies-consts.js.map +1 -0
  190. package/src/interfaces/ecies-file-service.d.ts +7 -0
  191. package/src/interfaces/ecies-file-service.d.ts.map +1 -0
  192. package/src/interfaces/ecies-file-service.js +2 -0
  193. package/src/interfaces/ecies-file-service.js.map +1 -0
  194. package/src/interfaces/encrypted-chunk.d.ts +55 -0
  195. package/src/interfaces/encrypted-chunk.d.ts.map +1 -0
  196. package/src/interfaces/encrypted-chunk.js +12 -0
  197. package/src/interfaces/encrypted-chunk.js.map +1 -0
  198. package/src/interfaces/encryption-state.d.ts +18 -0
  199. package/src/interfaces/encryption-state.d.ts.map +1 -0
  200. package/src/interfaces/encryption-state.js +2 -0
  201. package/src/interfaces/encryption-state.js.map +1 -0
  202. package/src/interfaces/frontend-member-operational.d.ts +51 -0
  203. package/src/interfaces/frontend-member-operational.d.ts.map +1 -0
  204. package/src/interfaces/frontend-member-operational.js +2 -0
  205. package/src/interfaces/frontend-member-operational.js.map +1 -0
  206. package/src/interfaces/guid.d.ts +78 -0
  207. package/src/interfaces/guid.d.ts.map +1 -0
  208. package/src/interfaces/guid.js +2 -0
  209. package/src/interfaces/guid.js.map +1 -0
  210. package/src/interfaces/id-provider.d.ts +107 -0
  211. package/src/interfaces/id-provider.d.ts.map +1 -0
  212. package/src/interfaces/id-provider.js +52 -0
  213. package/src/interfaces/id-provider.js.map +1 -0
  214. package/src/interfaces/{index.ts → index.d.ts} +1 -0
  215. package/src/interfaces/index.d.ts.map +1 -0
  216. package/src/interfaces/index.js +13 -0
  217. package/src/interfaces/index.js.map +1 -0
  218. package/src/interfaces/invariant.d.ts +46 -0
  219. package/src/interfaces/invariant.d.ts.map +1 -0
  220. package/src/interfaces/invariant.js +18 -0
  221. package/src/interfaces/invariant.js.map +1 -0
  222. package/src/interfaces/library-error.d.ts +23 -0
  223. package/src/interfaces/library-error.d.ts.map +1 -0
  224. package/src/interfaces/library-error.js +2 -0
  225. package/src/interfaces/library-error.js.map +1 -0
  226. package/src/interfaces/{member-storage.ts → member-storage.d.ts} +10 -11
  227. package/src/interfaces/member-storage.d.ts.map +1 -0
  228. package/src/interfaces/member-storage.js +2 -0
  229. package/src/interfaces/member-storage.js.map +1 -0
  230. package/src/interfaces/{member-with-mnemonic.ts → member-with-mnemonic.d.ts} +3 -3
  231. package/src/interfaces/member-with-mnemonic.d.ts.map +1 -0
  232. package/src/interfaces/member-with-mnemonic.js +2 -0
  233. package/src/interfaces/member-with-mnemonic.js.map +1 -0
  234. package/src/interfaces/member.d.ts +55 -0
  235. package/src/interfaces/member.d.ts.map +1 -0
  236. package/src/interfaces/member.js +2 -0
  237. package/src/interfaces/member.js.map +1 -0
  238. package/src/interfaces/multi-recipient-chunk.d.ts +54 -0
  239. package/src/interfaces/multi-recipient-chunk.d.ts.map +1 -0
  240. package/src/interfaces/multi-recipient-chunk.js +11 -0
  241. package/src/interfaces/multi-recipient-chunk.js.map +1 -0
  242. package/src/interfaces/pbkdf2-config.d.ts +7 -0
  243. package/src/interfaces/pbkdf2-config.d.ts.map +1 -0
  244. package/src/interfaces/pbkdf2-config.js +2 -0
  245. package/src/interfaces/pbkdf2-config.js.map +1 -0
  246. package/src/interfaces/pbkdf2-consts.d.ts +9 -0
  247. package/src/interfaces/pbkdf2-consts.d.ts.map +1 -0
  248. package/src/interfaces/pbkdf2-consts.js +2 -0
  249. package/src/interfaces/pbkdf2-consts.js.map +1 -0
  250. package/src/interfaces/pbkdf2-result.d.ts +6 -0
  251. package/src/interfaces/pbkdf2-result.d.ts.map +1 -0
  252. package/src/interfaces/pbkdf2-result.js +2 -0
  253. package/src/interfaces/pbkdf2-result.js.map +1 -0
  254. package/src/interfaces/stream-config.d.ts +14 -0
  255. package/src/interfaces/stream-config.d.ts.map +1 -0
  256. package/src/interfaces/stream-config.js +8 -0
  257. package/src/interfaces/stream-config.js.map +1 -0
  258. package/src/interfaces/stream-header.d.ts +29 -0
  259. package/src/interfaces/stream-header.d.ts.map +1 -0
  260. package/src/interfaces/stream-header.js +9 -0
  261. package/src/interfaces/stream-header.js.map +1 -0
  262. package/src/interfaces/stream-progress.d.ts +33 -0
  263. package/src/interfaces/stream-progress.d.ts.map +1 -0
  264. package/src/interfaces/stream-progress.js +2 -0
  265. package/src/interfaces/stream-progress.js.map +1 -0
  266. package/src/lib/configuration-provenance-utils.d.ts +11 -0
  267. package/src/lib/configuration-provenance-utils.d.ts.map +1 -0
  268. package/src/lib/configuration-provenance-utils.js +26 -0
  269. package/src/lib/configuration-provenance-utils.js.map +1 -0
  270. package/src/lib/crypto-container.d.ts +25 -0
  271. package/src/lib/crypto-container.d.ts.map +1 -0
  272. package/src/lib/crypto-container.js +46 -0
  273. package/src/lib/crypto-container.js.map +1 -0
  274. package/src/lib/guid.d.ts +344 -0
  275. package/src/lib/guid.d.ts.map +1 -0
  276. package/src/lib/guid.js +914 -0
  277. package/src/lib/guid.js.map +1 -0
  278. package/src/lib/id-providers/custom-provider.d.ts +46 -0
  279. package/src/lib/id-providers/custom-provider.d.ts.map +1 -0
  280. package/src/lib/id-providers/custom-provider.js +85 -0
  281. package/src/lib/id-providers/custom-provider.js.map +1 -0
  282. package/src/lib/id-providers/guidv4-provider.d.ts +56 -0
  283. package/src/lib/id-providers/guidv4-provider.d.ts.map +1 -0
  284. package/src/lib/id-providers/guidv4-provider.js +122 -0
  285. package/src/lib/id-providers/guidv4-provider.js.map +1 -0
  286. package/src/lib/id-providers/{index.ts → index.d.ts} +5 -6
  287. package/src/lib/id-providers/index.d.ts.map +1 -0
  288. package/src/lib/id-providers/index.js +29 -0
  289. package/src/lib/id-providers/index.js.map +1 -0
  290. package/src/lib/id-providers/objectid-provider.d.ts +43 -0
  291. package/src/lib/id-providers/objectid-provider.d.ts.map +1 -0
  292. package/src/lib/id-providers/objectid-provider.js +104 -0
  293. package/src/lib/id-providers/objectid-provider.js.map +1 -0
  294. package/src/lib/id-providers/uuid-provider.d.ts +52 -0
  295. package/src/lib/id-providers/uuid-provider.d.ts.map +1 -0
  296. package/src/lib/id-providers/uuid-provider.js +110 -0
  297. package/src/lib/id-providers/uuid-provider.js.map +1 -0
  298. package/src/lib/index.d.ts +6 -0
  299. package/src/lib/index.d.ts.map +1 -0
  300. package/src/lib/{index.ts → index.js} +2 -2
  301. package/src/lib/index.js.map +1 -0
  302. package/src/lib/invariant-validator.d.ts +59 -0
  303. package/src/lib/invariant-validator.d.ts.map +1 -0
  304. package/src/lib/invariant-validator.js +97 -0
  305. package/src/lib/invariant-validator.js.map +1 -0
  306. package/src/lib/invariants/encryption-algorithm-consistency.d.ts +17 -0
  307. package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +1 -0
  308. package/src/lib/invariants/encryption-algorithm-consistency.js +49 -0
  309. package/src/lib/invariants/encryption-algorithm-consistency.js.map +1 -0
  310. package/src/lib/invariants/index.d.ts +4 -0
  311. package/src/lib/invariants/index.d.ts.map +1 -0
  312. package/src/lib/invariants/{index.ts → index.js} +1 -0
  313. package/src/lib/invariants/index.js.map +1 -0
  314. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +16 -0
  315. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +1 -0
  316. package/src/lib/invariants/pbkdf2-profiles-validity.js +58 -0
  317. package/src/lib/invariants/pbkdf2-profiles-validity.js.map +1 -0
  318. package/src/lib/invariants/recipient-id-consistency.d.ts +18 -0
  319. package/src/lib/invariants/recipient-id-consistency.d.ts.map +1 -0
  320. package/src/lib/invariants/recipient-id-consistency.js +31 -0
  321. package/src/lib/invariants/recipient-id-consistency.js.map +1 -0
  322. package/src/lib/multi-recipient-chunk-utils.d.ts +38 -0
  323. package/src/lib/multi-recipient-chunk-utils.d.ts.map +1 -0
  324. package/src/lib/multi-recipient-chunk-utils.js +41 -0
  325. package/src/lib/multi-recipient-chunk-utils.js.map +1 -0
  326. package/src/member.d.ts +92 -0
  327. package/src/member.d.ts.map +1 -0
  328. package/src/member.js +322 -0
  329. package/src/member.js.map +1 -0
  330. package/src/{pbkdf2-profiles.ts → pbkdf2-profiles.d.ts} +2 -2
  331. package/src/pbkdf2-profiles.d.ts.map +1 -0
  332. package/src/pbkdf2-profiles.js +2 -0
  333. package/src/pbkdf2-profiles.js.map +1 -0
  334. package/src/phone-number.d.ts +6 -0
  335. package/src/phone-number.d.ts.map +1 -0
  336. package/src/phone-number.js +18 -0
  337. package/src/phone-number.js.map +1 -0
  338. package/src/regexes.d.ts +7 -0
  339. package/src/regexes.d.ts.map +1 -0
  340. package/src/regexes.js +7 -0
  341. package/src/regexes.js.map +1 -0
  342. package/src/secure-buffer.d.ts +61 -0
  343. package/src/secure-buffer.d.ts.map +1 -0
  344. package/src/secure-buffer.js +201 -0
  345. package/src/secure-buffer.js.map +1 -0
  346. package/src/secure-string.d.ts +46 -0
  347. package/src/secure-string.d.ts.map +1 -0
  348. package/src/secure-string.js +206 -0
  349. package/src/secure-string.js.map +1 -0
  350. package/src/services/aes-gcm.d.ts +57 -0
  351. package/src/services/aes-gcm.d.ts.map +1 -0
  352. package/src/services/aes-gcm.js +142 -0
  353. package/src/services/aes-gcm.js.map +1 -0
  354. package/src/services/chunk-processor.d.ts +31 -0
  355. package/src/services/chunk-processor.d.ts.map +1 -0
  356. package/src/services/chunk-processor.js +145 -0
  357. package/src/services/chunk-processor.js.map +1 -0
  358. package/src/services/ecies/crypto-core.d.ts +72 -0
  359. package/src/services/ecies/crypto-core.d.ts.map +1 -0
  360. package/src/services/ecies/crypto-core.js +205 -0
  361. package/src/services/ecies/crypto-core.js.map +1 -0
  362. package/src/services/ecies/example.d.ts +25 -0
  363. package/src/services/ecies/example.d.ts.map +1 -0
  364. package/src/services/ecies/example.js +121 -0
  365. package/src/services/ecies/example.js.map +1 -0
  366. package/src/services/ecies/file.d.ts +18 -0
  367. package/src/services/ecies/file.d.ts.map +1 -0
  368. package/src/services/ecies/file.js +106 -0
  369. package/src/services/ecies/file.js.map +1 -0
  370. package/src/services/ecies/index.d.ts +38 -0
  371. package/src/services/ecies/index.d.ts.map +1 -0
  372. package/src/services/ecies/{index.ts → index.js} +1 -2
  373. package/src/services/ecies/index.js.map +1 -0
  374. package/src/services/ecies/integration.d.ts +59 -0
  375. package/src/services/ecies/integration.d.ts.map +1 -0
  376. package/src/services/ecies/integration.js +167 -0
  377. package/src/services/ecies/integration.js.map +1 -0
  378. package/src/services/ecies/interfaces.d.ts +54 -0
  379. package/src/services/ecies/interfaces.d.ts.map +1 -0
  380. package/src/services/ecies/interfaces.js +5 -0
  381. package/src/services/ecies/interfaces.js.map +1 -0
  382. package/src/services/ecies/manual-test.d.ts +29 -0
  383. package/src/services/ecies/manual-test.d.ts.map +1 -0
  384. package/src/services/ecies/manual-test.js +163 -0
  385. package/src/services/ecies/manual-test.js.map +1 -0
  386. package/src/services/ecies/multi-recipient.d.ts +56 -0
  387. package/src/services/ecies/multi-recipient.d.ts.map +1 -0
  388. package/src/services/ecies/multi-recipient.js +344 -0
  389. package/src/services/ecies/multi-recipient.js.map +1 -0
  390. package/src/services/ecies/service.d.ts +120 -0
  391. package/src/services/ecies/service.d.ts.map +1 -0
  392. package/src/services/ecies/service.js +210 -0
  393. package/src/services/ecies/service.js.map +1 -0
  394. package/src/services/ecies/signature.d.ts +27 -0
  395. package/src/services/ecies/signature.d.ts.map +1 -0
  396. package/src/services/ecies/signature.js +72 -0
  397. package/src/services/ecies/signature.js.map +1 -0
  398. package/src/services/ecies/single-recipient.d.ts +46 -0
  399. package/src/services/ecies/single-recipient.d.ts.map +1 -0
  400. package/src/services/ecies/single-recipient.js +322 -0
  401. package/src/services/ecies/single-recipient.js.map +1 -0
  402. package/src/services/encryption-stream.d.ts +71 -0
  403. package/src/services/encryption-stream.d.ts.map +1 -0
  404. package/src/services/encryption-stream.js +295 -0
  405. package/src/services/encryption-stream.js.map +1 -0
  406. package/src/services/index.d.ts +11 -0
  407. package/src/services/index.d.ts.map +1 -0
  408. package/src/services/{index.ts → index.js} +1 -0
  409. package/src/services/index.js.map +1 -0
  410. package/src/services/multi-recipient-processor.d.ts +35 -0
  411. package/src/services/multi-recipient-processor.d.ts.map +1 -0
  412. package/src/services/multi-recipient-processor.js +289 -0
  413. package/src/services/multi-recipient-processor.js.map +1 -0
  414. package/src/services/password-login.d.ts +47 -0
  415. package/src/services/password-login.d.ts.map +1 -0
  416. package/src/services/password-login.js +115 -0
  417. package/src/services/password-login.js.map +1 -0
  418. package/src/services/pbkdf2.d.ts +54 -0
  419. package/src/services/pbkdf2.d.ts.map +1 -0
  420. package/src/services/pbkdf2.js +108 -0
  421. package/src/services/pbkdf2.js.map +1 -0
  422. package/src/services/progress-tracker.d.ts +23 -0
  423. package/src/services/progress-tracker.d.ts.map +1 -0
  424. package/src/services/progress-tracker.js +103 -0
  425. package/src/services/progress-tracker.js.map +1 -0
  426. package/src/services/resumable-encryption.d.ts +19 -0
  427. package/src/services/resumable-encryption.d.ts.map +1 -0
  428. package/src/services/resumable-encryption.js +105 -0
  429. package/src/services/resumable-encryption.js.map +1 -0
  430. package/src/services/xor.d.ts +37 -0
  431. package/src/services/xor.d.ts.map +1 -0
  432. package/src/services/xor.js +63 -0
  433. package/src/services/xor.js.map +1 -0
  434. package/src/test-mocks/index.d.ts +2 -0
  435. package/src/test-mocks/index.d.ts.map +1 -0
  436. package/src/test-mocks/index.js +2 -0
  437. package/src/test-mocks/index.js.map +1 -0
  438. package/src/test-mocks/mock-frontend-member.d.ts +85 -0
  439. package/src/test-mocks/mock-frontend-member.d.ts.map +1 -0
  440. package/src/test-mocks/mock-frontend-member.js +190 -0
  441. package/src/test-mocks/mock-frontend-member.js.map +1 -0
  442. package/src/testing.d.ts +2 -0
  443. package/src/testing.d.ts.map +1 -0
  444. package/src/{testing.ts → testing.js} +1 -0
  445. package/src/testing.js.map +1 -0
  446. package/src/translations/de.d.ts +4 -0
  447. package/src/translations/de.d.ts.map +1 -0
  448. package/src/translations/{de.ts → de.js} +56 -112
  449. package/src/translations/de.js.map +1 -0
  450. package/src/translations/en-US.d.ts +4 -0
  451. package/src/translations/en-US.d.ts.map +1 -0
  452. package/src/translations/{en-US.ts → en-US.js} +58 -116
  453. package/src/translations/en-US.js.map +1 -0
  454. package/src/translations/es.d.ts +4 -0
  455. package/src/translations/es.d.ts.map +1 -0
  456. package/src/translations/{es.ts → es.js} +67 -134
  457. package/src/translations/es.js.map +1 -0
  458. package/src/translations/fr.d.ts +4 -0
  459. package/src/translations/fr.d.ts.map +1 -0
  460. package/src/translations/{fr.ts → fr.js} +64 -129
  461. package/src/translations/fr.js.map +1 -0
  462. package/src/translations/ja.d.ts +4 -0
  463. package/src/translations/ja.d.ts.map +1 -0
  464. package/src/translations/{ja.ts → ja.js} +55 -111
  465. package/src/translations/ja.js.map +1 -0
  466. package/src/translations/uk.d.ts +4 -0
  467. package/src/translations/uk.d.ts.map +1 -0
  468. package/src/translations/{uk.ts → uk.js} +67 -132
  469. package/src/translations/uk.js.map +1 -0
  470. package/src/translations/zh-cn.d.ts +4 -0
  471. package/src/translations/zh-cn.d.ts.map +1 -0
  472. package/src/translations/{zh-cn.ts → zh-cn.js} +29 -60
  473. package/src/translations/zh-cn.js.map +1 -0
  474. package/src/types/deep-partial.d.ts +4 -0
  475. package/src/types/deep-partial.d.ts.map +1 -0
  476. package/src/types/deep-partial.js +2 -0
  477. package/src/types/deep-partial.js.map +1 -0
  478. package/src/{types.ts → types.d.ts} +7 -15
  479. package/src/types.d.ts.map +1 -0
  480. package/src/types.js +2 -0
  481. package/src/types.js.map +1 -0
  482. package/src/utils/encryption-type-utils.d.ts +29 -0
  483. package/src/utils/encryption-type-utils.d.ts.map +1 -0
  484. package/src/utils/encryption-type-utils.js +61 -0
  485. package/src/utils/encryption-type-utils.js.map +1 -0
  486. package/src/utils.d.ts +68 -0
  487. package/src/utils.d.ts.map +1 -0
  488. package/src/utils.js +273 -0
  489. package/src/utils.js.map +1 -0
  490. package/LICENSE +0 -21
  491. package/src/builders/ecies-builder.ts +0 -39
  492. package/src/builders/member-builder.ts +0 -155
  493. package/src/constants.ts +0 -609
  494. package/src/core/errors/crypto-error.ts +0 -78
  495. package/src/core/types/result.ts +0 -19
  496. package/src/email-string.ts +0 -82
  497. package/src/enumerations/disposed-error-type.ts +0 -11
  498. package/src/enumerations/ecies-cipher-suite.ts +0 -4
  499. package/src/enumerations/ecies-encryption-type.ts +0 -41
  500. package/src/enumerations/ecies-error-type.ts +0 -43
  501. package/src/enumerations/ecies-string-key.ts +0 -205
  502. package/src/enumerations/ecies-version.ts +0 -3
  503. package/src/enumerations/guid-brand-type.ts +0 -26
  504. package/src/enumerations/guid-error-type.ts +0 -6
  505. package/src/enumerations/id-provider-error-type.ts +0 -50
  506. package/src/enumerations/invalid-email-type.ts +0 -5
  507. package/src/enumerations/length-encoding-type.ts +0 -6
  508. package/src/enumerations/length-error-type.ts +0 -5
  509. package/src/enumerations/member-error-type.ts +0 -106
  510. package/src/enumerations/password-login-error-type.ts +0 -4
  511. package/src/enumerations/pbkdf2-error-type.ts +0 -5
  512. package/src/enumerations/pbkdf2-profile.ts +0 -5
  513. package/src/enumerations/secure-storage-error-type.ts +0 -5
  514. package/src/errors/disposed.ts +0 -36
  515. package/src/errors/ecies.ts +0 -153
  516. package/src/errors/guid.ts +0 -130
  517. package/src/errors/id-provider.ts +0 -40
  518. package/src/errors/invalid-email.ts +0 -23
  519. package/src/errors/length.ts +0 -19
  520. package/src/errors/member.ts +0 -20
  521. package/src/errors/pbkdf2.ts +0 -20
  522. package/src/errors/secure-storage.ts +0 -17
  523. package/src/errors/simple-ecies.ts +0 -21
  524. package/src/errors/simple-test-error.ts +0 -6
  525. package/src/i18n-setup.ts +0 -130
  526. package/src/interfaces/checksum-config.ts +0 -4
  527. package/src/interfaces/checksum-consts.ts +0 -13
  528. package/src/interfaces/configuration-provenance.ts +0 -54
  529. package/src/interfaces/constants.ts +0 -75
  530. package/src/interfaces/ecies-config.ts +0 -8
  531. package/src/interfaces/ecies-consts.ts +0 -74
  532. package/src/interfaces/ecies-file-service.ts +0 -6
  533. package/src/interfaces/encrypted-chunk.ts +0 -64
  534. package/src/interfaces/encryption-state.ts +0 -19
  535. package/src/interfaces/frontend-member-operational.ts +0 -77
  536. package/src/interfaces/guid.ts +0 -86
  537. package/src/interfaces/id-provider.ts +0 -152
  538. package/src/interfaces/invariant.ts +0 -60
  539. package/src/interfaces/library-error.ts +0 -23
  540. package/src/interfaces/member.ts +0 -84
  541. package/src/interfaces/multi-recipient-chunk.ts +0 -61
  542. package/src/interfaces/pbkdf2-config.ts +0 -6
  543. package/src/interfaces/pbkdf2-consts.ts +0 -10
  544. package/src/interfaces/pbkdf2-result.ts +0 -5
  545. package/src/interfaces/stream-config.ts +0 -17
  546. package/src/interfaces/stream-header.ts +0 -34
  547. package/src/interfaces/stream-progress.ts +0 -31
  548. package/src/lib/configuration-provenance-utils.ts +0 -29
  549. package/src/lib/crypto-container.ts +0 -64
  550. package/src/lib/guid.ts +0 -1097
  551. package/src/lib/id-providers/custom-provider.ts +0 -109
  552. package/src/lib/id-providers/guidv4-provider.ts +0 -141
  553. package/src/lib/id-providers/objectid-provider.ts +0 -125
  554. package/src/lib/id-providers/uuid-provider.ts +0 -133
  555. package/src/lib/invariant-validator.ts +0 -133
  556. package/src/lib/invariants/encryption-algorithm-consistency.ts +0 -73
  557. package/src/lib/invariants/pbkdf2-profiles-validity.ts +0 -78
  558. package/src/lib/invariants/recipient-id-consistency.ts +0 -46
  559. package/src/lib/multi-recipient-chunk-utils.ts +0 -63
  560. package/src/member.ts +0 -495
  561. package/src/phone-number.ts +0 -18
  562. package/src/regexes.ts +0 -10
  563. package/src/secure-buffer.ts +0 -226
  564. package/src/secure-string.ts +0 -244
  565. package/src/services/aes-gcm.ts +0 -220
  566. package/src/services/chunk-processor.ts +0 -188
  567. package/src/services/ecies/README.md +0 -147
  568. package/src/services/ecies/crypto-core.ts +0 -292
  569. package/src/services/ecies/example.ts +0 -185
  570. package/src/services/ecies/file.ts +0 -167
  571. package/src/services/ecies/integration.ts +0 -241
  572. package/src/services/ecies/interfaces.ts +0 -62
  573. package/src/services/ecies/manual-test.ts +0 -219
  574. package/src/services/ecies/multi-recipient.ts +0 -545
  575. package/src/services/ecies/service.ts +0 -370
  576. package/src/services/ecies/signature.ts +0 -93
  577. package/src/services/ecies/single-recipient.ts +0 -476
  578. package/src/services/encryption-stream.ts +0 -435
  579. package/src/services/multi-recipient-processor.ts +0 -377
  580. package/src/services/password-login.ts +0 -226
  581. package/src/services/pbkdf2.ts +0 -169
  582. package/src/services/progress-tracker.ts +0 -128
  583. package/src/services/resumable-encryption.ts +0 -135
  584. package/src/services/xor.ts +0 -65
  585. package/src/test-mocks/index.ts +0 -1
  586. package/src/test-mocks/mock-frontend-member.ts +0 -276
  587. package/src/types/deep-partial.ts +0 -11
  588. package/src/utils/encryption-type-utils.ts +0 -76
  589. package/src/utils.ts +0 -329
@@ -1,109 +0,0 @@
1
- import { BaseIdProvider } from '../../interfaces/id-provider';
2
- import { randomBytes } from 'crypto';
3
- import { IdProviderError } from '../../errors/id-provider';
4
- import { IdProviderErrorType } from '../../enumerations/id-provider-error-type';
5
-
6
- /**
7
- * Custom ID provider that accepts any fixed byte length.
8
- *
9
- * Use this when you need a non-standard ID size or custom validation logic.
10
- * For standard formats, prefer ObjectIdProvider, GuidV4Provider, or UuidProvider.
11
- *
12
- * Example:
13
- * ```typescript
14
- * // 20-byte SHA-1 hash as recipient ID
15
- * const provider = new CustomIdProvider(20, 'SHA1Hash');
16
- * ```
17
- */
18
- export class CustomIdProvider extends BaseIdProvider {
19
- readonly byteLength: number;
20
- readonly name: string;
21
-
22
- constructor(byteLength: number, name = 'Custom') {
23
- super();
24
-
25
- if (!Number.isInteger(byteLength) || byteLength < 1 || byteLength > 255) {
26
- throw new IdProviderError(
27
- IdProviderErrorType.InvalidByteLengthParameter,
28
- undefined,
29
- undefined,
30
- { value: byteLength }
31
- );
32
- }
33
-
34
- this.byteLength = byteLength;
35
- this.name = name;
36
- }
37
-
38
- /**
39
- * Generate a new random ID of the specified byte length.
40
- */
41
- generate(): Uint8Array {
42
- return randomBytes(this.byteLength);
43
- }
44
-
45
- /**
46
- * Validate an ID buffer.
47
- * Only checks length - override this method for custom validation.
48
- */
49
- validate(id: Uint8Array): boolean {
50
- return id.length === this.byteLength;
51
- }
52
-
53
- /**
54
- * Serialize to hexadecimal string.
55
- */
56
- serialize(id: Uint8Array): string {
57
- this.validateLength(id, `${this.name}.serialize`);
58
-
59
- return Array.from(id)
60
- .map(b => b.toString(16).padStart(2, '0'))
61
- .join('');
62
- }
63
-
64
- /**
65
- * Deserialize a hexadecimal string to buffer.
66
- */
67
- deserialize(str: string): Uint8Array {
68
- if (typeof str !== 'string') {
69
- throw new IdProviderError(IdProviderErrorType.InputMustBeString);
70
- }
71
-
72
- const expectedLength = this.byteLength * 2;
73
- if (str.length !== expectedLength) {
74
- throw new IdProviderError(
75
- IdProviderErrorType.InvalidStringLength,
76
- undefined,
77
- undefined,
78
- { expected: expectedLength, actual: str.length }
79
- );
80
- }
81
-
82
- if (!/^[0-9a-fA-F]+$/.test(str)) {
83
- throw new IdProviderError(IdProviderErrorType.InvalidCharacters);
84
- }
85
-
86
- const buffer = new Uint8Array(this.byteLength);
87
- for (let i = 0; i < this.byteLength; i++) {
88
- buffer[i] = parseInt(str.substr(i * 2, 2), 16);
89
- }
90
-
91
- return buffer;
92
- }
93
-
94
- /**
95
- * Convert an ID of unknown type to a string representation.
96
- * Delegates to base implementation.
97
- */
98
- override idToString(id: unknown): string {
99
- return super.idToString(id);
100
- }
101
-
102
- /**
103
- * Convert a string representation of an ID back to an ID buffer.
104
- * Delegates to deserialize.
105
- */
106
- override idFromString(str: string): Uint8Array {
107
- return this.deserialize(str);
108
- }
109
- }
@@ -1,141 +0,0 @@
1
- import { BaseIdProvider } from '../../interfaces/id-provider';
2
- import { GuidV4 } from '../guid';
3
- import { IdProviderError } from '../../errors/id-provider';
4
- import { IdProviderErrorType } from '../../enumerations/id-provider-error-type';
5
-
6
- /**
7
- * ID provider for GUIDv4 (16 bytes raw, 24 bytes base64).
8
- *
9
- * Uses the GuidV4 class which provides RFC 4122 compliant v4 GUIDs.
10
- * The raw binary representation is 16 bytes (128 bits).
11
- *
12
- * Serialization uses base64 for compactness (24 characters vs 36 for hex with dashes).
13
- */
14
- export class GuidV4Provider extends BaseIdProvider {
15
- readonly byteLength = 16;
16
- readonly name = 'GUIDv4';
17
-
18
- /**
19
- * Generate a new random GUIDv4.
20
- */
21
- generate(): Uint8Array {
22
- const guid = GuidV4.generate();
23
- return guid.asRawGuidBufferUnsafe;
24
- }
25
-
26
- /**
27
- * Validate a GUID buffer.
28
- * Checks length and RFC 4122 v4 compliance.
29
- */
30
- validate(id: Uint8Array): boolean {
31
- if (id.length !== this.byteLength) {
32
- return false;
33
- }
34
-
35
- try {
36
- // Convert to GuidV4 and validate
37
- const guid = new GuidV4(Buffer.from(id));
38
- return guid.isValidV4();
39
- } catch {
40
- return false;
41
- }
42
- }
43
-
44
- /**
45
- * Serialize GUID to base64 string (24 characters).
46
- */
47
- serialize(id: Uint8Array): string {
48
- this.validateLength(id, 'GuidV4Provider.serialize');
49
-
50
- try {
51
- const guid = new GuidV4(Buffer.from(id));
52
- return guid.asBase64Guid;
53
- } catch (error) {
54
- throw new IdProviderError(
55
- IdProviderErrorType.InvalidGuidBuffer,
56
- { cause: error instanceof Error ? error : undefined },
57
- undefined,
58
- { message: error instanceof Error ? error.message : String(error) }
59
- );
60
- }
61
- }
62
-
63
- /**
64
- * Deserialize a base64 or hex GUID string to buffer.
65
- * Accepts multiple formats: base64 (24 chars), short hex (32 chars), full hex (36 chars).
66
- */
67
- deserialize(str: string): Uint8Array {
68
- if (typeof str !== 'string') {
69
- throw new IdProviderError(IdProviderErrorType.InputMustBeString);
70
- }
71
-
72
- try {
73
- const guid = GuidV4.parse(str);
74
- return guid.asRawGuidBufferUnsafe;
75
- } catch (error) {
76
- throw new IdProviderError(
77
- IdProviderErrorType.ParseFailed,
78
- { cause: error instanceof Error ? error : undefined },
79
- undefined,
80
- { input: str, message: error instanceof Error ? error.message : String(error) }
81
- );
82
- }
83
- }
84
-
85
- /**
86
- * Create a GUID from a namespace and name (v5 - SHA-1 based).
87
- * Useful for deterministic GUIDs.
88
- */
89
- fromNamespace(namespace: string, name: string): Uint8Array {
90
- const guid = GuidV4.v5(name, namespace);
91
- return guid.asRawGuidBufferUnsafe;
92
- }
93
-
94
- /**
95
- * Get the GUID version from a buffer.
96
- * Should return 4 for valid v4 GUIDs.
97
- */
98
- getVersion(id: Uint8Array): number | undefined {
99
- this.validateLength(id, 'GuidV4Provider.getVersion');
100
-
101
- try {
102
- const guid = new GuidV4(Buffer.from(id));
103
- return guid.getVersion();
104
- } catch {
105
- return undefined;
106
- }
107
- }
108
-
109
- /**
110
- * Check if a GUID is the empty/nil GUID (all zeros).
111
- */
112
- isEmpty(id: Uint8Array): boolean {
113
- this.validateLength(id, 'GuidV4Provider.isEmpty');
114
-
115
- try {
116
- const guid = new GuidV4(Buffer.from(id));
117
- return guid.isEmpty();
118
- } catch {
119
- return false;
120
- }
121
- }
122
-
123
- /**
124
- * Convert an ID of unknown type to a string representation.
125
- * Handles Uint8Array, GuidV4 instances, and falls back to String().
126
- */
127
- override idToString(id: unknown): string {
128
- if (id instanceof GuidV4) {
129
- return id.asBase64Guid;
130
- }
131
- return super.idToString(id);
132
- }
133
-
134
- /**
135
- * Convert a string representation of an ID back to an ID buffer.
136
- * Delegates to deserialize.
137
- */
138
- override idFromString(str: string): Uint8Array {
139
- return this.deserialize(str);
140
- }
141
- }
@@ -1,125 +0,0 @@
1
- import { BaseIdProvider } from '../../interfaces/id-provider';
2
- import { ObjectId } from 'bson';
3
- import { IdProviderError } from '../../errors/id-provider';
4
- import { IdProviderErrorType } from '../../enumerations/id-provider-error-type';
5
-
6
- /**
7
- * ID provider for MongoDB/BSON ObjectIDs (12 bytes).
8
- *
9
- * Format: 4-byte timestamp + 5-byte random + 3-byte counter
10
- * This matches the MongoDB ObjectID specification.
11
- *
12
- * @see https://docs.mongodb.com/manual/reference/method/ObjectId/
13
- */
14
- export class ObjectIdProvider extends BaseIdProvider {
15
- readonly byteLength = 12;
16
- readonly name = 'ObjectID';
17
-
18
- constructor() {
19
- super();
20
- }
21
-
22
- /**
23
- * Generate a new MongoDB-style ObjectID.
24
- * Format: [timestamp:4][random:5][counter:3]
25
- */
26
- generate(): Uint8Array {
27
- const buffer = new Uint8Array(12);
28
- const objectId = new ObjectId();
29
-
30
- if (typeof objectId.id === 'string') {
31
- const hex = objectId.id as string;
32
- for (let i = 0; i < 12; i++) {
33
- buffer[i] = parseInt(hex.substring(i * 2, (i * 2) + 2), 16);
34
- }
35
- } else {
36
- buffer.set(objectId.id, 0);
37
- }
38
-
39
- return buffer;
40
- }
41
-
42
- /**
43
- * Validate an ObjectID buffer.
44
- * Checks length and ensures it's not all zeros (invalid ObjectID).
45
- */
46
- validate(id: Uint8Array): boolean {
47
- if (id.length !== this.byteLength) {
48
- return false;
49
- }
50
-
51
- // Check if all bytes are zero (invalid ObjectID)
52
- let allZeros = true;
53
- for (let i = 0; i < id.length; i++) {
54
- if (id[i] !== 0) {
55
- allZeros = false;
56
- break;
57
- }
58
- }
59
-
60
- return !allZeros;
61
- }
62
-
63
- /**
64
- * Serialize ObjectID to 24-character hex string (MongoDB standard).
65
- */
66
- serialize(id: Uint8Array): string {
67
- this.validateLength(id, 'ObjectIdProvider.serialize');
68
-
69
- return Array.from(id)
70
- .map(b => b.toString(16).padStart(2, '0'))
71
- .join('');
72
- }
73
-
74
- /**
75
- * Deserialize a 24-character hex string to ObjectID buffer.
76
- */
77
- deserialize(str: string): Uint8Array {
78
- if (typeof str !== 'string') {
79
- throw new IdProviderError(IdProviderErrorType.InputMustBeString);
80
- }
81
-
82
- if (str.length !== 24) {
83
- throw new IdProviderError(
84
- IdProviderErrorType.InvalidStringLength,
85
- undefined,
86
- undefined,
87
- { expected: 24, actual: str.length }
88
- );
89
- }
90
-
91
- if (!/^[0-9a-fA-F]{24}$/.test(str)) {
92
- throw new IdProviderError(IdProviderErrorType.InvalidCharacters);
93
- }
94
-
95
- const buffer = new Uint8Array(12);
96
- for (let i = 0; i < 12; i++) {
97
- buffer[i] = parseInt(str.substr(i * 2, 2), 16);
98
- }
99
-
100
- if (!this.validate(buffer)) {
101
- throw new IdProviderError(IdProviderErrorType.InvalidDeserializedId);
102
- }
103
-
104
- return buffer;
105
- }
106
-
107
- /**
108
- * Convert an ID of unknown type to a string representation.
109
- * Handles Uint8Array, ObjectId instances, and falls back to String().
110
- */
111
- override idToString(id: unknown): string {
112
- if (id instanceof ObjectId) {
113
- return id.toHexString();
114
- }
115
- return super.idToString(id);
116
- }
117
-
118
- /**
119
- * Convert a string representation of an ID back to an ID buffer.
120
- * Delegates to deserialize.
121
- */
122
- override idFromString(str: string): Uint8Array {
123
- return this.deserialize(str);
124
- }
125
- }
@@ -1,133 +0,0 @@
1
- import { BaseIdProvider } from '../../interfaces/id-provider';
2
- import { v4 as uuidv4, validate as uuidValidate, parse as uuidParse } from 'uuid';
3
- import { IdProviderError } from '../../errors/id-provider';
4
- import { IdProviderErrorType } from '../../enumerations/id-provider-error-type';
5
-
6
- /**
7
- * ID provider for standard RFC 4122 UUIDs (16 bytes).
8
- *
9
- * Uses the 'uuid' npm package for UUID generation and validation.
10
- * Serialization uses the standard UUID format with dashes (36 characters).
11
- *
12
- * This is functionally similar to GuidV4Provider but uses standard UUID
13
- * string formatting (with dashes) instead of base64.
14
- */
15
- export class UuidProvider extends BaseIdProvider {
16
- readonly byteLength = 16;
17
- readonly name = 'UUID';
18
-
19
- /**
20
- * Generate a new random UUIDv4.
21
- */
22
- generate(): Uint8Array {
23
- const buffer = new Uint8Array(16);
24
- uuidv4(undefined, buffer);
25
- return buffer;
26
- }
27
-
28
- /**
29
- * Validate a UUID buffer.
30
- * Checks length and RFC 4122 compliance.
31
- */
32
- validate(id: Uint8Array): boolean {
33
- if (id.length !== this.byteLength) {
34
- return false;
35
- }
36
-
37
- try {
38
- // Convert to string and validate
39
- const str = this.serialize(id);
40
- return uuidValidate(str);
41
- } catch {
42
- return false;
43
- }
44
- }
45
-
46
- /**
47
- * Serialize UUID to standard format with dashes (36 characters).
48
- * Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
49
- */
50
- serialize(id: Uint8Array): string {
51
- this.validateLength(id, 'UuidProvider.serialize');
52
-
53
- const hex = Array.from(id)
54
- .map(b => b.toString(16).padStart(2, '0'))
55
- .join('');
56
-
57
- // Insert dashes at proper positions
58
- return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
59
- }
60
-
61
- /**
62
- * Deserialize a UUID string (with or without dashes) to buffer.
63
- */
64
- deserialize(str: string): Uint8Array {
65
- if (typeof str !== 'string') {
66
- throw new IdProviderError(IdProviderErrorType.InputMustBeString);
67
- }
68
-
69
- // Validate format
70
- if (!uuidValidate(str)) {
71
- throw new IdProviderError(
72
- IdProviderErrorType.InvalidUuidFormat,
73
- undefined,
74
- undefined,
75
- { input: str }
76
- );
77
- }
78
-
79
- try {
80
- const buffer = uuidParse(str);
81
- return buffer;
82
- } catch (error) {
83
- throw new IdProviderError(
84
- IdProviderErrorType.ParseFailed,
85
- { cause: error instanceof Error ? error : undefined },
86
- undefined,
87
- { input: str, message: error instanceof Error ? error.message : String(error) }
88
- );
89
- }
90
- }
91
-
92
- /**
93
- * Extract the version from a UUID buffer.
94
- * Should return 4 for v4 UUIDs.
95
- */
96
- getVersion(id: Uint8Array): number | undefined {
97
- this.validateLength(id, 'UuidProvider.getVersion');
98
-
99
- // Version is in the most significant 4 bits of byte 6
100
- const versionByte = id[6];
101
- return (versionByte >> 4) & 0x0F;
102
- }
103
-
104
- /**
105
- * Check if a UUID is the nil UUID (all zeros).
106
- */
107
- isNil(id: Uint8Array): boolean {
108
- this.validateLength(id, 'UuidProvider.isNil');
109
-
110
- for (let i = 0; i < id.length; i++) {
111
- if (id[i] !== 0) {
112
- return false;
113
- }
114
- }
115
- return true;
116
- }
117
-
118
- /**
119
- * Convert an ID of unknown type to a string representation.
120
- * Delegates to base implementation.
121
- */
122
- override idToString(id: unknown): string {
123
- return super.idToString(id);
124
- }
125
-
126
- /**
127
- * Convert a string representation of an ID back to an ID buffer.
128
- * Delegates to deserialize.
129
- */
130
- override idFromString(str: string): Uint8Array {
131
- return this.deserialize(str);
132
- }
133
- }
@@ -1,133 +0,0 @@
1
- import { IConstants } from '../interfaces/constants';
2
- import { IInvariant } from '../interfaces/invariant';
3
- import {
4
- RecipientIdConsistencyInvariant,
5
- Pbkdf2ProfilesValidityInvariant,
6
- EncryptionAlgorithmConsistencyInvariant,
7
- } from './invariants';
8
- import { EciesComponentId, getEciesI18nEngine } from '../i18n-setup';
9
- import { EciesStringKey } from '../enumerations/ecies-string-key';
10
- import { TranslatableGenericError } from '@digitaldefiance/i18n-lib';
11
-
12
- /**
13
- * Validates all configuration invariants.
14
- *
15
- * This class maintains a registry of all invariants and validates them
16
- * whenever a configuration is created or modified.
17
- *
18
- * Adding new invariants is easy - just:
19
- * 1. Create a class implementing IInvariant
20
- * 2. Add it to the DEFAULT_INVARIANTS array
21
- * 3. Tests will automatically validate it
22
- */
23
- export class InvariantValidator {
24
- /**
25
- * Default invariants that are always checked
26
- */
27
- private static readonly DEFAULT_INVARIANTS: IInvariant[] = [
28
- new RecipientIdConsistencyInvariant(),
29
- new Pbkdf2ProfilesValidityInvariant(),
30
- new EncryptionAlgorithmConsistencyInvariant(),
31
- ];
32
-
33
- /**
34
- * Custom invariants registered at runtime
35
- */
36
- private static customInvariants: IInvariant[] = [];
37
-
38
- /**
39
- * Register a custom invariant to be checked alongside default invariants
40
- */
41
- static registerInvariant(invariant: IInvariant): void {
42
- this.customInvariants.push(invariant);
43
- }
44
-
45
- /**
46
- * Clear all custom invariants (useful for testing)
47
- */
48
- static clearCustomInvariants(): void {
49
- this.customInvariants = [];
50
- }
51
-
52
- /**
53
- * Get all invariants (default + custom)
54
- */
55
- static getAllInvariants(): readonly IInvariant[] {
56
- return [...this.DEFAULT_INVARIANTS, ...this.customInvariants];
57
- }
58
-
59
- /**
60
- * Validate all invariants for a given configuration
61
- *
62
- * @param config The configuration to validate
63
- * @throws Error if any invariant fails
64
- */
65
- static validateAll(config: IConstants): void {
66
- const allInvariants = this.getAllInvariants();
67
- const failures: string[] = [];
68
-
69
- for (const invariant of allInvariants) {
70
- if (!invariant.check(config)) {
71
- failures.push(invariant.errorMessage(config));
72
- }
73
- }
74
-
75
- if (failures.length > 0) {
76
- const engine = getEciesI18nEngine();
77
- throw TranslatableGenericError.withEngine(
78
- engine,
79
- EciesComponentId,
80
- EciesStringKey.Error_Invariant_ConfigurationValidationFailedMultipleTemplate,
81
- { count: failures.length, failures: failures.join('\n\n') },
82
- undefined,
83
- { invariantCount: failures.length }
84
- );
85
- }
86
- }
87
-
88
- /**
89
- * Check a single invariant
90
- *
91
- * @param config The configuration to validate
92
- * @param invariantName Name of the invariant to check
93
- * @returns true if invariant passes, false otherwise
94
- */
95
- static checkInvariant(config: IConstants, invariantName: string): boolean {
96
- const invariant = this.getAllInvariants().find(i => i.name === invariantName);
97
- if (!invariant) {
98
- const engine = getEciesI18nEngine();
99
- throw TranslatableGenericError.withEngine(
100
- engine,
101
- EciesComponentId,
102
- EciesStringKey.Error_Invariant_UnknownInvariantTemplate,
103
- { name: invariantName },
104
- undefined,
105
- { invariantName }
106
- );
107
- }
108
- return invariant.check(config);
109
- }
110
-
111
- /**
112
- * Get failure details for a specific invariant
113
- *
114
- * @param config The configuration to validate
115
- * @param invariantName Name of the invariant to check
116
- * @returns Error message if invariant fails, null if it passes
117
- */
118
- static getFailureDetails(config: IConstants, invariantName: string): string | null {
119
- const invariant = this.getAllInvariants().find(i => i.name === invariantName);
120
- if (!invariant) {
121
- const engine = getEciesI18nEngine();
122
- throw TranslatableGenericError.withEngine(
123
- engine,
124
- EciesComponentId,
125
- EciesStringKey.Error_Invariant_UnknownInvariantTemplate,
126
- { name: invariantName },
127
- undefined,
128
- { invariantName }
129
- );
130
- }
131
- return invariant.check(config) ? null : invariant.errorMessage(config);
132
- }
133
- }
@@ -1,73 +0,0 @@
1
- import { IConstants } from '../../interfaces/constants';
2
- import { BaseInvariant } from '../../interfaces/invariant';
3
-
4
- /**
5
- * Validates that encryption algorithm parameters are consistent.
6
- *
7
- * Checks:
8
- * - Symmetric key size matches the algorithm (AES-256 = 32 bytes)
9
- * - Curve name is supported
10
- * - Key derivation path is valid
11
- */
12
- export class EncryptionAlgorithmConsistencyInvariant extends BaseInvariant {
13
- private static readonly SUPPORTED_CURVES = [
14
- 'secp256k1',
15
- 'p256',
16
- 'p384',
17
- 'p521',
18
- ];
19
-
20
- constructor() {
21
- super(
22
- 'EncryptionAlgorithmConsistency',
23
- 'Encryption algorithm parameters must be consistent'
24
- );
25
- }
26
-
27
- check(config: IConstants): boolean {
28
- // AES-256 requires 32-byte keys
29
- if (config.ECIES.SYMMETRIC.KEY_SIZE !== 32) {
30
- return false;
31
- }
32
-
33
- // Check curve is supported
34
- if (!EncryptionAlgorithmConsistencyInvariant.SUPPORTED_CURVES.includes(
35
- config.ECIES.CURVE_NAME
36
- )) {
37
- return false;
38
- }
39
-
40
- // Key derivation path should be valid BIP32 path
41
- if (!config.ECIES.PRIMARY_KEY_DERIVATION_PATH.startsWith('m/')) {
42
- return false;
43
- }
44
-
45
- return true;
46
- }
47
-
48
- errorMessage(config: IConstants): string {
49
- const issues: string[] = [];
50
-
51
- if (config.ECIES.SYMMETRIC.KEY_SIZE !== 32) {
52
- issues.push(
53
- `SYMMETRIC.KEY_SIZE (${config.ECIES.SYMMETRIC.KEY_SIZE}) must be 32 for AES-256`
54
- );
55
- }
56
-
57
- if (!EncryptionAlgorithmConsistencyInvariant.SUPPORTED_CURVES.includes(
58
- config.ECIES.CURVE_NAME
59
- )) {
60
- issues.push(
61
- `CURVE_NAME (${config.ECIES.CURVE_NAME}) must be one of: ${EncryptionAlgorithmConsistencyInvariant.SUPPORTED_CURVES.join(', ')}`
62
- );
63
- }
64
-
65
- if (!config.ECIES.PRIMARY_KEY_DERIVATION_PATH.startsWith('m/')) {
66
- issues.push(
67
- `PRIMARY_KEY_DERIVATION_PATH (${config.ECIES.PRIMARY_KEY_DERIVATION_PATH}) must be a valid BIP32 path starting with 'm/'`
68
- );
69
- }
70
-
71
- return `Invariant '${this.name}' failed:\n ${issues.join('\n ')}`;
72
- }
73
- }