@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
@@ -0,0 +1,108 @@
1
+ import { Constants } from '../constants';
2
+ import { Pbkdf2ErrorType } from '../enumerations/pbkdf2-error-type';
3
+ import { Pbkdf2Error } from '../errors/pbkdf2';
4
+ /**
5
+ * Service for handling PBKDF2 (Password-Based Key Derivation Function 2) operations.
6
+ * This service provides functionality for:
7
+ * - Generating secure key derivation configurations
8
+ * - Deriving cryptographic keys from passwords
9
+ * - Managing salt and iteration parameters
10
+ * - Both synchronous and asynchronous key derivation
11
+ */
12
+ export class Pbkdf2Service {
13
+ profiles;
14
+ eciesConsts;
15
+ pbkdf2Consts;
16
+ constructor(profiles = Constants.PBKDF2_PROFILES, eciesParams = Constants.ECIES, pbkdf2Params = Constants.PBKDF2) {
17
+ this.profiles = profiles;
18
+ this.eciesConsts = eciesParams;
19
+ this.pbkdf2Consts = pbkdf2Params;
20
+ }
21
+ /**
22
+ * Get a predefined configuration profile for common use cases
23
+ * @param profile The name of the profile to use
24
+ * @returns Configuration object for the specified profile
25
+ */
26
+ getProfileConfig(profile) {
27
+ const profileConfig = this.profiles[profile];
28
+ if (!profileConfig) {
29
+ throw new Pbkdf2Error(Pbkdf2ErrorType.InvalidProfile);
30
+ }
31
+ return {
32
+ hashBytes: profileConfig.hashBytes,
33
+ saltBytes: profileConfig.saltBytes,
34
+ iterations: profileConfig.iterations,
35
+ algorithm: profileConfig.algorithm,
36
+ };
37
+ }
38
+ /**
39
+ * Generate an options object for pbkdf2
40
+ * @param iterations Optional number of iterations (defaults to Pbkdf2IterationsPerSecond)
41
+ * @param saltBytes Optional salt size in bytes (defaults to PBKDF2.SALT_BYTES)
42
+ * @param hashBytes Optional hash size in bytes (defaults to ECIES.SYMMETRIC.KEY_SIZE)
43
+ * @param algorithm Optional hash algorithm (defaults to PBKDF2.ALGORITHM)
44
+ * @returns Configuration object for PBKDF2
45
+ */
46
+ getConfig(iterations, saltBytes, hashBytes, algorithm) {
47
+ // larger numbers mean better security, less
48
+ return {
49
+ // size of the generated hash
50
+ hashBytes: hashBytes ?? this.eciesConsts.SYMMETRIC.KEY_SIZE,
51
+ // larger salt means hashed passwords are more resistant to rainbow table, but
52
+ // you get diminishing returns pretty fast
53
+ saltBytes: saltBytes ?? this.pbkdf2Consts.SALT_BYTES,
54
+ // more iterations means an attacker has to take longer to brute force an
55
+ // individual password, so larger is better. however, larger also means longer
56
+ // to hash the password. tune so that hashing the password takes about a
57
+ // second
58
+ iterations: iterations ?? this.pbkdf2Consts.ITERATIONS_PER_SECOND,
59
+ // hash algorithm
60
+ algorithm: algorithm ?? this.pbkdf2Consts.ALGORITHM,
61
+ };
62
+ }
63
+ /**
64
+ * Given a password, use pbkdf2 to generate an appropriately sized key for AES encryption
65
+ * @param password The password to derive a key from
66
+ * @param salt Optional salt (will be randomly generated if not provided)
67
+ * @param iterations Optional number of iterations
68
+ * @param saltBytes Optional salt size in bytes
69
+ * @param keySize Optional key size in bytes
70
+ * @param algorithm Optional hash algorithm
71
+ * @returns Object containing the derived key, salt, and iteration count
72
+ */
73
+ async deriveKeyFromPasswordAsync(password, salt, iterations, saltBytes, keySize, algorithm) {
74
+ const config = this.getConfig(iterations, saltBytes, keySize, algorithm);
75
+ const saltBytes_ = salt ?? crypto.getRandomValues(new Uint8Array(config.saltBytes));
76
+ if (saltBytes_.length !== config.saltBytes) {
77
+ throw new Pbkdf2Error(Pbkdf2ErrorType.InvalidSaltLength);
78
+ }
79
+ const keyMaterial = await crypto.subtle.importKey('raw', new Uint8Array(password), 'PBKDF2', false, ['deriveBits']);
80
+ const keyArray = await crypto.subtle.deriveBits({
81
+ name: 'PBKDF2',
82
+ salt: new Uint8Array(saltBytes_),
83
+ iterations: config.iterations,
84
+ hash: config.algorithm,
85
+ }, keyMaterial, config.hashBytes * 8);
86
+ const keyBytes = new Uint8Array(keyArray);
87
+ if (keyBytes.length !== config.hashBytes) {
88
+ throw new Pbkdf2Error(Pbkdf2ErrorType.InvalidHashLength);
89
+ }
90
+ return {
91
+ salt: saltBytes_,
92
+ hash: keyBytes,
93
+ iterations: config.iterations,
94
+ };
95
+ }
96
+ /**
97
+ * Derive a key using a predefined configuration profile
98
+ * @param password The password to derive a key from
99
+ * @param profile The configuration profile to use
100
+ * @param salt Optional salt (will be randomly generated if not provided)
101
+ * @returns Object containing the derived key, salt, and iteration count
102
+ */
103
+ async deriveKeyFromPasswordWithProfileAsync(password, profile, salt) {
104
+ const config = this.getProfileConfig(profile);
105
+ return await this.deriveKeyFromPasswordAsync(password, salt, config.iterations, config.saltBytes, config.hashBytes, config.algorithm);
106
+ }
107
+ }
108
+ //# sourceMappingURL=pbkdf2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbkdf2.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/pbkdf2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { IStreamProgress } from '../interfaces/stream-progress';
2
+ /**
3
+ * Tracks progress for streaming operations
4
+ */
5
+ export declare class ProgressTracker {
6
+ private readonly totalBytes?;
7
+ private startTime;
8
+ private lastUpdateTime;
9
+ private bytesProcessed;
10
+ private chunksProcessed;
11
+ private recentThroughputs;
12
+ private readonly maxThroughputSamples;
13
+ constructor(totalBytes?: number | undefined);
14
+ /**
15
+ * Update progress with new chunk
16
+ */
17
+ update(chunkBytes: number): IStreamProgress;
18
+ /**
19
+ * Get current progress without update
20
+ */
21
+ getProgress(): IStreamProgress;
22
+ }
23
+ //# sourceMappingURL=progress-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-tracker.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/progress-tracker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;GAEG;AACH,qBAAa,eAAe;IAQd,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAPxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAK;gBAEb,UAAU,CAAC,EAAE,MAAM,YAAA;IAKhD;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAsE3C;;OAEG;IACH,WAAW,IAAI,eAAe;CA+B/B"}
@@ -0,0 +1,103 @@
1
+ import { EciesStringKey } from '../enumerations/ecies-string-key';
2
+ import { EciesComponentId, getEciesI18nEngine } from '../i18n-setup';
3
+ /**
4
+ * Tracks progress for streaming operations
5
+ */
6
+ export class ProgressTracker {
7
+ totalBytes;
8
+ startTime;
9
+ lastUpdateTime;
10
+ bytesProcessed = 0;
11
+ chunksProcessed = 0;
12
+ recentThroughputs = [];
13
+ maxThroughputSamples = 5;
14
+ constructor(totalBytes) {
15
+ this.totalBytes = totalBytes;
16
+ this.startTime = Date.now();
17
+ this.lastUpdateTime = this.startTime;
18
+ }
19
+ /**
20
+ * Update progress with new chunk
21
+ */
22
+ update(chunkBytes) {
23
+ // Validate input
24
+ if (chunkBytes < 0) {
25
+ const engine = getEciesI18nEngine();
26
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Progress_ChunkBytesCannotBeNegative));
27
+ }
28
+ this.bytesProcessed += chunkBytes;
29
+ this.chunksProcessed++;
30
+ const now = Date.now();
31
+ const elapsedTime = Math.max(0, now - this.startTime);
32
+ const timeSinceLastUpdate = Math.max(0, now - this.lastUpdateTime);
33
+ // Calculate instantaneous throughput (use elapsed time if same millisecond)
34
+ const timeWindow = timeSinceLastUpdate > 0 ? timeSinceLastUpdate : Math.max(1, elapsedTime);
35
+ if (chunkBytes > 0 && timeWindow > 0) {
36
+ const instantThroughput = (chunkBytes / timeWindow) * 1000;
37
+ // Guard against unrealistic throughput (>10GB/s)
38
+ if (isFinite(instantThroughput) &&
39
+ instantThroughput < 10 * 1024 * 1024 * 1024) {
40
+ this.recentThroughputs.push(instantThroughput);
41
+ if (this.recentThroughputs.length > this.maxThroughputSamples) {
42
+ this.recentThroughputs.shift();
43
+ }
44
+ }
45
+ }
46
+ this.lastUpdateTime = now;
47
+ // Calculate average throughput
48
+ const throughput = this.recentThroughputs.length > 0
49
+ ? this.recentThroughputs.reduce((a, b) => a + b, 0) /
50
+ this.recentThroughputs.length
51
+ : 0;
52
+ // Calculate ETA (guard against negative)
53
+ let estimatedTimeRemaining;
54
+ if (this.totalBytes &&
55
+ throughput > 0 &&
56
+ this.bytesProcessed < this.totalBytes) {
57
+ const remainingBytes = this.totalBytes - this.bytesProcessed;
58
+ estimatedTimeRemaining = Math.max(0, remainingBytes / throughput);
59
+ }
60
+ return {
61
+ bytesProcessed: this.bytesProcessed,
62
+ totalBytes: this.totalBytes,
63
+ chunksProcessed: this.chunksProcessed,
64
+ percentComplete: this.totalBytes
65
+ ? Math.min(100, (this.bytesProcessed / this.totalBytes) * 100)
66
+ : undefined,
67
+ throughputBytesPerSec: throughput,
68
+ estimatedTimeRemaining,
69
+ startTime: this.startTime,
70
+ elapsedTime,
71
+ };
72
+ }
73
+ /**
74
+ * Get current progress without update
75
+ */
76
+ getProgress() {
77
+ const elapsedTime = Math.max(0, Date.now() - this.startTime);
78
+ const throughput = this.recentThroughputs.length > 0
79
+ ? this.recentThroughputs.reduce((a, b) => a + b, 0) /
80
+ this.recentThroughputs.length
81
+ : 0;
82
+ let estimatedTimeRemaining;
83
+ if (this.totalBytes &&
84
+ throughput > 0 &&
85
+ this.bytesProcessed < this.totalBytes) {
86
+ const remainingBytes = this.totalBytes - this.bytesProcessed;
87
+ estimatedTimeRemaining = Math.max(0, remainingBytes / throughput);
88
+ }
89
+ return {
90
+ bytesProcessed: this.bytesProcessed,
91
+ totalBytes: this.totalBytes,
92
+ chunksProcessed: this.chunksProcessed,
93
+ percentComplete: this.totalBytes
94
+ ? Math.min(100, (this.bytesProcessed / this.totalBytes) * 100)
95
+ : undefined,
96
+ throughputBytesPerSec: throughput,
97
+ estimatedTimeRemaining,
98
+ startTime: this.startTime,
99
+ elapsedTime,
100
+ };
101
+ }
102
+ }
103
+ //# sourceMappingURL=progress-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-tracker.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/progress-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { IEncryptionState } from '../interfaces/encryption-state';
2
+ import { IEncryptedChunk } from '../interfaces/encrypted-chunk';
3
+ import { EncryptionStream } from './encryption-stream';
4
+ import { IEncryptStreamOptions } from './encryption-stream';
5
+ export interface IResumableOptions extends IEncryptStreamOptions {
6
+ autoSaveInterval?: number;
7
+ onStateSaved?: (state: IEncryptionState) => void | Promise<void>;
8
+ }
9
+ export declare class ResumableEncryption {
10
+ private readonly stream;
11
+ private state;
12
+ constructor(stream: EncryptionStream, initialState?: IEncryptionState);
13
+ encrypt(source: AsyncIterable<Uint8Array>, publicKey: Uint8Array, options?: IResumableOptions): AsyncGenerator<IEncryptedChunk, void, unknown>;
14
+ saveState(): IEncryptionState;
15
+ private calculateStateHMAC;
16
+ static resume(stream: EncryptionStream, state: IEncryptionState): ResumableEncryption;
17
+ private validateState;
18
+ }
19
+ //# sourceMappingURL=resumable-encryption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resumable-encryption.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/resumable-encryption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA4B,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAO5D,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,OAAO,CAAC,KAAK,CAAiC;gBAG3B,MAAM,EAAE,gBAAgB,EACzC,YAAY,CAAC,EAAE,gBAAgB;IAQ1B,OAAO,CACZ,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,iBAAsB,GAC9B,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC;IAkDjD,SAAS,IAAI,gBAAgB;IAW7B,OAAO,CAAC,kBAAkB;IAW1B,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,gBAAgB,GACtB,mBAAmB;IAItB,OAAO,CAAC,aAAa;CAuBtB"}
@@ -0,0 +1,105 @@
1
+ import { ENCRYPTION_STATE_VERSION } from '../interfaces/encryption-state';
2
+ import { uint8ArrayToHex } from '../utils';
3
+ import { EciesEncryptionTypeEnum } from '../enumerations/ecies-encryption-type';
4
+ import { getEciesI18nEngine, EciesComponentId } from '../i18n-setup';
5
+ import { EciesStringKey } from '../enumerations/ecies-string-key';
6
+ export class ResumableEncryption {
7
+ stream;
8
+ state = null;
9
+ constructor(stream, initialState) {
10
+ this.stream = stream;
11
+ if (initialState) {
12
+ this.validateState(initialState);
13
+ this.state = initialState;
14
+ }
15
+ }
16
+ async *encrypt(source, publicKey, options = {}) {
17
+ const engine = getEciesI18nEngine();
18
+ const autoSaveInterval = options.autoSaveInterval ?? 10;
19
+ if (autoSaveInterval <= 0) {
20
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Resumable_AutoSaveIntervalMustBePositive));
21
+ }
22
+ const publicKeyHex = uint8ArrayToHex(publicKey);
23
+ if (this.state) {
24
+ if (this.state.publicKey !== publicKeyHex) {
25
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Resumable_PublicKeyMismatch));
26
+ }
27
+ if (this.state.chunkSize !== (options.chunkSize ?? 1024 * 1024)) {
28
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Resumable_ChunkSizeMismatch));
29
+ }
30
+ if (this.state.includeChecksums !== (options.includeChecksums ?? false)) {
31
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Resumable_IncludeChecksumsMismatch));
32
+ }
33
+ }
34
+ const startIndex = this.state?.chunkIndex ?? 0;
35
+ let chunkIndex = 0;
36
+ for await (const chunk of this.stream.encryptStream(source, publicKey, options)) {
37
+ if (chunkIndex < startIndex) {
38
+ chunkIndex++;
39
+ continue;
40
+ }
41
+ yield chunk;
42
+ this.state = {
43
+ version: ENCRYPTION_STATE_VERSION,
44
+ chunkIndex: chunk.index + 1,
45
+ bytesProcessed: (this.state?.bytesProcessed ?? 0) + (chunk.metadata?.originalSize ?? 0),
46
+ publicKey: publicKeyHex,
47
+ encryptionType: EciesEncryptionTypeEnum.Single,
48
+ chunkSize: options.chunkSize ?? 1024 * 1024,
49
+ includeChecksums: options.includeChecksums ?? false,
50
+ timestamp: Date.now(),
51
+ };
52
+ if (options.onStateSaved && (chunk.index + 1) % autoSaveInterval === 0) {
53
+ await options.onStateSaved({ ...this.state });
54
+ }
55
+ chunkIndex++;
56
+ }
57
+ }
58
+ saveState() {
59
+ if (!this.state) {
60
+ const engine = getEciesI18nEngine();
61
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Resumable_NoStateToSave));
62
+ }
63
+ const state = { ...this.state };
64
+ // Add HMAC for integrity
65
+ state.hmac = this.calculateStateHMAC(state);
66
+ return state;
67
+ }
68
+ calculateStateHMAC(state) {
69
+ const data = `${state.version}|${state.chunkIndex}|${state.bytesProcessed}|${state.publicKey}|${state.chunkSize}|${state.includeChecksums}|${state.timestamp}`;
70
+ const hash = new Uint8Array(32);
71
+ // Simple hash for integrity check (not cryptographic HMAC)
72
+ const bytes = new TextEncoder().encode(data);
73
+ for (let i = 0; i < bytes.length; i++) {
74
+ hash[i % 32] ^= bytes[i];
75
+ }
76
+ return uint8ArrayToHex(hash);
77
+ }
78
+ static resume(stream, state) {
79
+ return new ResumableEncryption(stream, state);
80
+ }
81
+ validateState(state) {
82
+ const engine = getEciesI18nEngine();
83
+ if (state.version !== ENCRYPTION_STATE_VERSION) {
84
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Resumable_UnsupportedStateVersionTemplate, { version: state.version }));
85
+ }
86
+ if (state.chunkIndex < 0) {
87
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Resumable_InvalidChunkIndex));
88
+ }
89
+ const age = Date.now() - state.timestamp;
90
+ if (age > 24 * 60 * 60 * 1000) {
91
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Resumable_StateTooOld));
92
+ }
93
+ if (!state.publicKey || state.publicKey.length === 0) {
94
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Resumable_InvalidPublicKeyInState));
95
+ }
96
+ // Verify HMAC if present
97
+ if (state.hmac) {
98
+ const expectedHMAC = this.calculateStateHMAC(state);
99
+ if (state.hmac !== expectedHMAC) {
100
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Resumable_StateIntegrityCheckFailed));
101
+ }
102
+ }
103
+ }
104
+ }
105
+ //# sourceMappingURL=resumable-encryption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resumable-encryption.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/resumable-encryption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAI5F,OAAO,EAAE,eAAe,EAAmB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAQlE,MAAM,OAAO,mBAAmB;IAIX;IAHX,KAAK,GAA4B,IAAI,CAAC;IAE9C,YACmB,MAAwB,EACzC,YAA+B;QADd,WAAM,GAAN,MAAM,CAAkB;QAGzC,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,OAAO,CACZ,MAAiC,EACjC,SAAqB,EACrB,UAA6B,EAAE;QAE/B,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACxD,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACrH,CAAC;QAED,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,iCAAiC,CAAC,CAAC,CAAC;YACxG,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,iCAAiC,CAAC,CAAC,CAAC;YACxG,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,wCAAwC,CAAC,CAAC,CAAC;YAC/G,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,IAAI,CAAC,CAAC;QAE/C,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;YAChF,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;gBAC5B,UAAU,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YAED,MAAM,KAAK,CAAC;YAEZ,IAAI,CAAC,KAAK,GAAG;gBACX,OAAO,EAAE,wBAAwB;gBACjC,UAAU,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC;gBAC3B,cAAc,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,IAAI,CAAC,CAAC;gBACvF,SAAS,EAAE,YAAY;gBACvB,cAAc,EAAE,uBAAuB,CAAC,MAAM;gBAC9C,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,GAAG,IAAI;gBAC3C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,KAAK;gBACnD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YAEF,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,gBAAgB,KAAK,CAAC,EAAE,CAAC;gBACvE,MAAM,OAAO,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAChD,CAAC;YAED,UAAU,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,yBAAyB;QACzB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,kBAAkB,CAAC,KAAuB;QAChD,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAC/J,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,2DAA2D;QAC3D,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,MAAM,CACX,MAAwB,EACxB,KAAuB;QAEvB,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAEO,aAAa,CAAC,KAAuB;QAC3C,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,KAAK,wBAAwB,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,+CAA+C,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClJ,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;QACzC,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC9G,CAAC;QACD,yBAAyB;QACzB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,yCAAyC,CAAC,CAAC,CAAC;YAChH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * A simple and fast XOR cipher for obfuscating data in memory for browser environments.
3
+ * This is not a substitute for strong cryptography but provides a lightweight way
4
+ * to prevent sensitive data from being stored in plaintext in memory.
5
+ */
6
+ export declare class XorService {
7
+ /**
8
+ * Encrypts or decrypts data using a simple XOR cipher.
9
+ * The key is XORed with the data. The same function is used for
10
+ * both encryption and decryption.
11
+ *
12
+ * @param data The data to process.
13
+ * @param key The key to use for the XOR operation.
14
+ * @returns A new Uint8Array containing the result of the XOR operation.
15
+ */
16
+ static xor(data: Uint8Array, key: Uint8Array): Uint8Array;
17
+ /**
18
+ * Generates a random key of a specified length.
19
+ * @param length The length of the key in bytes.
20
+ * @returns A Uint8Array containing the random key.
21
+ * @throws Error if crypto API is not available.
22
+ */
23
+ static generateKey(length: number): Uint8Array;
24
+ /**
25
+ * Helper method to convert a string to a Uint8Array.
26
+ * @param str The string to convert.
27
+ * @returns A Uint8Array representation of the string.
28
+ */
29
+ static stringToBytes(str: string): Uint8Array;
30
+ /**
31
+ * Helper method to convert a Uint8Array to a string.
32
+ * @param bytes The Uint8Array to convert.
33
+ * @returns A string representation of the Uint8Array.
34
+ */
35
+ static bytesToString(bytes: Uint8Array): string;
36
+ }
37
+ //# sourceMappingURL=xor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xor.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/xor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,UAAU;IACrB;;;;;;;;OAQG;WACW,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU;IAQhE;;;;;OAKG;WACW,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAgBrD;;;;OAIG;WACW,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAKpD;;;;OAIG;WACW,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;CAIvD"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * A simple and fast XOR cipher for obfuscating data in memory for browser environments.
3
+ * This is not a substitute for strong cryptography but provides a lightweight way
4
+ * to prevent sensitive data from being stored in plaintext in memory.
5
+ */
6
+ export class XorService {
7
+ /**
8
+ * Encrypts or decrypts data using a simple XOR cipher.
9
+ * The key is XORed with the data. The same function is used for
10
+ * both encryption and decryption.
11
+ *
12
+ * @param data The data to process.
13
+ * @param key The key to use for the XOR operation.
14
+ * @returns A new Uint8Array containing the result of the XOR operation.
15
+ */
16
+ static xor(data, key) {
17
+ const result = new Uint8Array(data.length);
18
+ for (let i = 0; i < data.length; i++) {
19
+ result[i] = data[i] ^ key[i % key.length];
20
+ }
21
+ return result;
22
+ }
23
+ /**
24
+ * Generates a random key of a specified length.
25
+ * @param length The length of the key in bytes.
26
+ * @returns A Uint8Array containing the random key.
27
+ * @throws Error if crypto API is not available.
28
+ */
29
+ static generateKey(length) {
30
+ const randomBytes = new Uint8Array(length);
31
+ // Check if running in a browser with crypto support
32
+ if (typeof window !== 'undefined' && window.crypto) {
33
+ window.crypto.getRandomValues(randomBytes);
34
+ }
35
+ else if (typeof crypto !== 'undefined') {
36
+ // For environments where crypto is global (some newer JS runtimes)
37
+ crypto.getRandomValues(randomBytes);
38
+ }
39
+ else {
40
+ throw new Error('Crypto API not available in this environment');
41
+ }
42
+ return randomBytes;
43
+ }
44
+ /**
45
+ * Helper method to convert a string to a Uint8Array.
46
+ * @param str The string to convert.
47
+ * @returns A Uint8Array representation of the string.
48
+ */
49
+ static stringToBytes(str) {
50
+ const encoder = new TextEncoder();
51
+ return encoder.encode(str);
52
+ }
53
+ /**
54
+ * Helper method to convert a Uint8Array to a string.
55
+ * @param bytes The Uint8Array to convert.
56
+ * @returns A string representation of the Uint8Array.
57
+ */
58
+ static bytesToString(bytes) {
59
+ const decoder = new TextDecoder();
60
+ return decoder.decode(bytes);
61
+ }
62
+ }
63
+ //# sourceMappingURL=xor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xor.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/xor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACrB;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAgB,EAAE,GAAe;QACjD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CAAC,MAAc;QACtC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAE3C,oDAAoD;QACpD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YACzC,mEAAmE;YACnE,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,aAAa,CAAC,GAAW;QACrC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,aAAa,CAAC,KAAiB;QAC3C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export * from './mock-frontend-member';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/test-mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './mock-frontend-member';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/test-mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,85 @@
1
+ import { EmailString, MemberType, SecureBuffer, SecureString } from '@digitaldefiance/ecies-lib';
2
+ import { Wallet } from '@ethereumjs/wallet';
3
+ import { ObjectId } from 'bson';
4
+ import type { IFrontendMemberOperational } from '../interfaces/frontend-member-operational';
5
+ import { SignatureUint8Array } from '../types';
6
+ export declare class MockFrontendMember implements IFrontendMemberOperational<ObjectId> {
7
+ private _id;
8
+ private _type;
9
+ private _name;
10
+ private _email;
11
+ private _publicKey;
12
+ private _creatorId;
13
+ private _dateCreated;
14
+ private _dateUpdated;
15
+ private _privateKey?;
16
+ private _wallet?;
17
+ private _hasPrivateKey;
18
+ constructor(data?: Partial<{
19
+ id: ObjectId;
20
+ type: MemberType;
21
+ name: string;
22
+ email: EmailString;
23
+ publicKey: Uint8Array;
24
+ privateKey: SecureBuffer;
25
+ wallet: Wallet;
26
+ creatorId: ObjectId;
27
+ dateCreated: Date;
28
+ dateUpdated: Date;
29
+ hasPrivateKey: boolean;
30
+ }>);
31
+ get id(): ObjectId;
32
+ get type(): MemberType;
33
+ get name(): string;
34
+ get email(): EmailString;
35
+ get publicKey(): Uint8Array;
36
+ get creatorId(): ObjectId;
37
+ get dateCreated(): Date;
38
+ get dateUpdated(): Date;
39
+ get privateKey(): SecureBuffer | undefined;
40
+ get wallet(): Wallet | undefined;
41
+ get hasPrivateKey(): boolean;
42
+ unloadPrivateKey(): void;
43
+ unloadWallet(): void;
44
+ unloadWalletAndPrivateKey(): void;
45
+ loadWallet(mnemonic: SecureString): void;
46
+ loadPrivateKey(privateKey: SecureBuffer): void;
47
+ sign(data: Uint8Array): SignatureUint8Array;
48
+ verify(signature: SignatureUint8Array, data: Uint8Array): boolean;
49
+ encryptData(data: string | Uint8Array): Promise<Uint8Array>;
50
+ decryptData(encryptedData: Uint8Array): Promise<Uint8Array>;
51
+ encryptDataStream(source: AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>, options?: {
52
+ recipientPublicKey?: Uint8Array;
53
+ onProgress?: (progress: {
54
+ bytesProcessed: number;
55
+ chunksProcessed: number;
56
+ }) => void;
57
+ signal?: AbortSignal;
58
+ }): AsyncGenerator<import('../interfaces/encrypted-chunk').IEncryptedChunk, void, unknown>;
59
+ decryptDataStream(source: AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>, options?: {
60
+ onProgress?: (progress: {
61
+ bytesProcessed: number;
62
+ chunksProcessed: number;
63
+ }) => void;
64
+ signal?: AbortSignal;
65
+ }): AsyncGenerator<Uint8Array, void, unknown>;
66
+ toJson(): string;
67
+ dispose(): void;
68
+ static create(overrides?: Partial<{
69
+ id: ObjectId;
70
+ type: MemberType;
71
+ name: string;
72
+ email: EmailString;
73
+ publicKey: Uint8Array;
74
+ privateKey: SecureBuffer;
75
+ wallet: Wallet;
76
+ creatorId: ObjectId;
77
+ dateCreated: Date;
78
+ dateUpdated: Date;
79
+ hasPrivateKey: boolean;
80
+ }>): MockFrontendMember;
81
+ static createMultiple(count: number): MockFrontendMember[];
82
+ static createWithPrivateKey(): MockFrontendMember;
83
+ static createWithoutPrivateKey(): MockFrontendMember;
84
+ }
85
+ //# sourceMappingURL=mock-frontend-member.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-frontend-member.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/test-mocks/mock-frontend-member.ts"],"names":[],"mappings":"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"}