@digitaldefiance/ecies-lib 4.4.1 → 4.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +4 -0
  3. package/package.json +10 -7
  4. package/src/builders/ecies-builder.ts +39 -0
  5. package/src/builders/{index.js → index.ts} +1 -1
  6. package/src/builders/member-builder.ts +155 -0
  7. package/src/constants.ts +609 -0
  8. package/src/core/errors/crypto-error.ts +78 -0
  9. package/src/core/{index.js → index.ts} +1 -1
  10. package/src/core/types/result.ts +19 -0
  11. package/src/email-string.ts +82 -0
  12. package/src/enumerations/disposed-error-type.ts +11 -0
  13. package/src/enumerations/ecies-cipher-suite.ts +4 -0
  14. package/src/enumerations/ecies-encryption-type.ts +41 -0
  15. package/src/enumerations/ecies-error-type.ts +43 -0
  16. package/src/enumerations/ecies-string-key.ts +205 -0
  17. package/src/enumerations/ecies-version.ts +3 -0
  18. package/src/enumerations/guid-brand-type.ts +26 -0
  19. package/src/enumerations/guid-error-type.ts +6 -0
  20. package/src/enumerations/id-provider-error-type.ts +50 -0
  21. package/src/enumerations/{index.js → index.ts} +0 -1
  22. package/src/enumerations/invalid-email-type.ts +5 -0
  23. package/src/enumerations/length-encoding-type.ts +6 -0
  24. package/src/enumerations/length-error-type.ts +5 -0
  25. package/src/enumerations/member-error-type.ts +106 -0
  26. package/src/enumerations/{member-type.d.ts → member-type.ts} +7 -6
  27. package/src/enumerations/password-login-error-type.ts +4 -0
  28. package/src/enumerations/pbkdf2-error-type.ts +5 -0
  29. package/src/enumerations/pbkdf2-profile.ts +5 -0
  30. package/src/enumerations/secure-storage-error-type.ts +5 -0
  31. package/src/errors/disposed.ts +36 -0
  32. package/src/errors/ecies.ts +153 -0
  33. package/src/errors/guid.ts +130 -0
  34. package/src/errors/id-provider.ts +40 -0
  35. package/src/errors/{index.d.ts → index.ts} +0 -1
  36. package/src/errors/invalid-email.ts +23 -0
  37. package/src/errors/length.ts +19 -0
  38. package/src/errors/member.ts +20 -0
  39. package/src/errors/pbkdf2.ts +20 -0
  40. package/src/errors/secure-storage.ts +17 -0
  41. package/src/errors/simple-ecies.ts +21 -0
  42. package/src/errors/simple-test-error.ts +6 -0
  43. package/src/i18n-setup.ts +130 -0
  44. package/src/{index.js → index.ts} +64 -7
  45. package/src/interfaces/checksum-config.ts +4 -0
  46. package/src/interfaces/checksum-consts.ts +13 -0
  47. package/src/interfaces/configuration-provenance.ts +54 -0
  48. package/src/interfaces/constants.ts +75 -0
  49. package/src/interfaces/ecies-config.ts +8 -0
  50. package/src/interfaces/ecies-consts.ts +74 -0
  51. package/src/interfaces/ecies-file-service.ts +6 -0
  52. package/src/interfaces/encrypted-chunk.ts +64 -0
  53. package/src/interfaces/encryption-state.ts +19 -0
  54. package/src/interfaces/frontend-member-operational.ts +77 -0
  55. package/src/interfaces/guid.ts +86 -0
  56. package/src/interfaces/id-provider.ts +152 -0
  57. package/src/interfaces/{index.d.ts → index.ts} +0 -1
  58. package/src/interfaces/invariant.ts +60 -0
  59. package/src/interfaces/library-error.ts +23 -0
  60. package/src/interfaces/{member-storage.d.ts → member-storage.ts} +11 -10
  61. package/src/interfaces/{member-with-mnemonic.d.ts → member-with-mnemonic.ts} +3 -3
  62. package/src/interfaces/member.ts +84 -0
  63. package/src/interfaces/multi-recipient-chunk.ts +61 -0
  64. package/src/interfaces/pbkdf2-config.ts +6 -0
  65. package/src/interfaces/pbkdf2-consts.ts +10 -0
  66. package/src/interfaces/pbkdf2-result.ts +5 -0
  67. package/src/interfaces/stream-config.ts +17 -0
  68. package/src/interfaces/stream-header.ts +34 -0
  69. package/src/interfaces/stream-progress.ts +31 -0
  70. package/src/lib/configuration-provenance-utils.ts +26 -0
  71. package/src/lib/crypto-container.ts +64 -0
  72. package/src/lib/guid.ts +1097 -0
  73. package/src/lib/id-providers/custom-provider.ts +109 -0
  74. package/src/lib/id-providers/guidv4-provider.ts +141 -0
  75. package/src/lib/id-providers/{index.d.ts → index.ts} +6 -5
  76. package/src/lib/id-providers/objectid-provider.ts +125 -0
  77. package/src/lib/id-providers/uuid-provider.ts +133 -0
  78. package/src/lib/{index.js → index.ts} +2 -2
  79. package/src/lib/invariant-validator.ts +133 -0
  80. package/src/lib/invariants/encryption-algorithm-consistency.ts +73 -0
  81. package/src/lib/invariants/{index.js → index.ts} +0 -1
  82. package/src/lib/invariants/pbkdf2-profiles-validity.ts +78 -0
  83. package/src/lib/invariants/recipient-id-consistency.ts +46 -0
  84. package/src/lib/multi-recipient-chunk-utils.ts +63 -0
  85. package/src/member.ts +495 -0
  86. package/src/{pbkdf2-profiles.d.ts → pbkdf2-profiles.ts} +2 -2
  87. package/src/phone-number.ts +18 -0
  88. package/src/regexes.ts +10 -0
  89. package/src/secure-buffer.ts +226 -0
  90. package/src/secure-string.ts +244 -0
  91. package/src/services/aes-gcm.ts +220 -0
  92. package/src/services/chunk-processor.ts +188 -0
  93. package/src/services/ecies/README.md +147 -0
  94. package/src/services/ecies/crypto-core.ts +292 -0
  95. package/src/services/ecies/example.ts +185 -0
  96. package/src/services/ecies/file.ts +167 -0
  97. package/src/services/ecies/{index.js → index.ts} +2 -1
  98. package/src/services/ecies/integration.ts +241 -0
  99. package/src/services/ecies/interfaces.ts +62 -0
  100. package/src/services/ecies/manual-test.ts +219 -0
  101. package/src/services/ecies/multi-recipient.ts +545 -0
  102. package/src/services/ecies/service.ts +370 -0
  103. package/src/services/ecies/signature.ts +93 -0
  104. package/src/services/ecies/single-recipient.ts +476 -0
  105. package/src/services/encryption-stream.ts +435 -0
  106. package/src/services/{index.js → index.ts} +0 -1
  107. package/src/services/multi-recipient-processor.ts +377 -0
  108. package/src/services/password-login.ts +226 -0
  109. package/src/services/pbkdf2.ts +169 -0
  110. package/src/services/progress-tracker.ts +128 -0
  111. package/src/services/resumable-encryption.ts +135 -0
  112. package/src/services/xor.ts +65 -0
  113. package/src/test-mocks/index.ts +1 -0
  114. package/src/test-mocks/mock-frontend-member.ts +276 -0
  115. package/src/{testing.js → testing.ts} +0 -1
  116. package/src/translations/{de.js → de.ts} +112 -56
  117. package/src/translations/{en-US.js → en-US.ts} +116 -58
  118. package/src/translations/{es.js → es.ts} +134 -67
  119. package/src/translations/{fr.js → fr.ts} +129 -64
  120. package/src/translations/{ja.js → ja.ts} +111 -55
  121. package/src/translations/{uk.js → uk.ts} +132 -67
  122. package/src/translations/{zh-cn.js → zh-cn.ts} +60 -29
  123. package/src/types/deep-partial.ts +11 -0
  124. package/src/{types.d.ts → types.ts} +15 -7
  125. package/src/utils/encryption-type-utils.ts +76 -0
  126. package/src/utils.ts +329 -0
  127. package/src/builders/ecies-builder.d.ts +0 -18
  128. package/src/builders/ecies-builder.d.ts.map +0 -1
  129. package/src/builders/ecies-builder.js +0 -30
  130. package/src/builders/ecies-builder.js.map +0 -1
  131. package/src/builders/index.d.ts +0 -6
  132. package/src/builders/index.d.ts.map +0 -1
  133. package/src/builders/index.js.map +0 -1
  134. package/src/builders/member-builder.d.ts +0 -51
  135. package/src/builders/member-builder.d.ts.map +0 -1
  136. package/src/builders/member-builder.js +0 -97
  137. package/src/builders/member-builder.js.map +0 -1
  138. package/src/constants.d.ts +0 -60
  139. package/src/constants.d.ts.map +0 -1
  140. package/src/constants.js +0 -446
  141. package/src/constants.js.map +0 -1
  142. package/src/core/errors/crypto-error.d.ts +0 -34
  143. package/src/core/errors/crypto-error.d.ts.map +0 -1
  144. package/src/core/errors/crypto-error.js +0 -56
  145. package/src/core/errors/crypto-error.js.map +0 -1
  146. package/src/core/index.d.ts +0 -6
  147. package/src/core/index.d.ts.map +0 -1
  148. package/src/core/index.js.map +0 -1
  149. package/src/core/types/result.d.ts +0 -16
  150. package/src/core/types/result.d.ts.map +0 -1
  151. package/src/core/types/result.js +0 -12
  152. package/src/core/types/result.js.map +0 -1
  153. package/src/email-string.d.ts +0 -42
  154. package/src/email-string.d.ts.map +0 -1
  155. package/src/email-string.js +0 -67
  156. package/src/email-string.js.map +0 -1
  157. package/src/enumerations/disposed-error-type.d.ts +0 -12
  158. package/src/enumerations/disposed-error-type.d.ts.map +0 -1
  159. package/src/enumerations/disposed-error-type.js +0 -13
  160. package/src/enumerations/disposed-error-type.js.map +0 -1
  161. package/src/enumerations/ecies-cipher-suite.d.ts +0 -4
  162. package/src/enumerations/ecies-cipher-suite.d.ts.map +0 -1
  163. package/src/enumerations/ecies-cipher-suite.js +0 -6
  164. package/src/enumerations/ecies-cipher-suite.js.map +0 -1
  165. package/src/enumerations/ecies-encryption-type.d.ts +0 -11
  166. package/src/enumerations/ecies-encryption-type.d.ts.map +0 -1
  167. package/src/enumerations/ecies-encryption-type.js +0 -27
  168. package/src/enumerations/ecies-encryption-type.js.map +0 -1
  169. package/src/enumerations/ecies-error-type.d.ts +0 -44
  170. package/src/enumerations/ecies-error-type.d.ts.map +0 -1
  171. package/src/enumerations/ecies-error-type.js +0 -45
  172. package/src/enumerations/ecies-error-type.js.map +0 -1
  173. package/src/enumerations/ecies-string-key.d.ts +0 -192
  174. package/src/enumerations/ecies-string-key.d.ts.map +0 -1
  175. package/src/enumerations/ecies-string-key.js +0 -199
  176. package/src/enumerations/ecies-string-key.js.map +0 -1
  177. package/src/enumerations/ecies-version.d.ts +0 -4
  178. package/src/enumerations/ecies-version.d.ts.map +0 -1
  179. package/src/enumerations/ecies-version.js +0 -5
  180. package/src/enumerations/ecies-version.js.map +0 -1
  181. package/src/enumerations/guid-brand-type.d.ts +0 -27
  182. package/src/enumerations/guid-brand-type.d.ts.map +0 -1
  183. package/src/enumerations/guid-brand-type.js +0 -28
  184. package/src/enumerations/guid-brand-type.js.map +0 -1
  185. package/src/enumerations/guid-error-type.d.ts +0 -7
  186. package/src/enumerations/guid-error-type.d.ts.map +0 -1
  187. package/src/enumerations/guid-error-type.js +0 -8
  188. package/src/enumerations/guid-error-type.js.map +0 -1
  189. package/src/enumerations/id-provider-error-type.d.ts +0 -43
  190. package/src/enumerations/id-provider-error-type.d.ts.map +0 -1
  191. package/src/enumerations/id-provider-error-type.js +0 -44
  192. package/src/enumerations/id-provider-error-type.js.map +0 -1
  193. package/src/enumerations/index.d.ts +0 -18
  194. package/src/enumerations/index.d.ts.map +0 -1
  195. package/src/enumerations/index.js.map +0 -1
  196. package/src/enumerations/invalid-email-type.d.ts +0 -6
  197. package/src/enumerations/invalid-email-type.d.ts.map +0 -1
  198. package/src/enumerations/invalid-email-type.js +0 -7
  199. package/src/enumerations/invalid-email-type.js.map +0 -1
  200. package/src/enumerations/length-encoding-type.d.ts +0 -7
  201. package/src/enumerations/length-encoding-type.d.ts.map +0 -1
  202. package/src/enumerations/length-encoding-type.js +0 -8
  203. package/src/enumerations/length-encoding-type.js.map +0 -1
  204. package/src/enumerations/length-error-type.d.ts +0 -6
  205. package/src/enumerations/length-error-type.d.ts.map +0 -1
  206. package/src/enumerations/length-error-type.js +0 -7
  207. package/src/enumerations/length-error-type.js.map +0 -1
  208. package/src/enumerations/member-error-type.d.ts +0 -87
  209. package/src/enumerations/member-error-type.d.ts.map +0 -1
  210. package/src/enumerations/member-error-type.js +0 -88
  211. package/src/enumerations/member-error-type.js.map +0 -1
  212. package/src/enumerations/member-type.d.ts.map +0 -1
  213. package/src/enumerations/member-type.js +0 -16
  214. package/src/enumerations/member-type.js.map +0 -1
  215. package/src/enumerations/password-login-error-type.d.ts +0 -5
  216. package/src/enumerations/password-login-error-type.d.ts.map +0 -1
  217. package/src/enumerations/password-login-error-type.js +0 -6
  218. package/src/enumerations/password-login-error-type.js.map +0 -1
  219. package/src/enumerations/pbkdf2-error-type.d.ts +0 -6
  220. package/src/enumerations/pbkdf2-error-type.d.ts.map +0 -1
  221. package/src/enumerations/pbkdf2-error-type.js +0 -7
  222. package/src/enumerations/pbkdf2-error-type.js.map +0 -1
  223. package/src/enumerations/pbkdf2-profile.d.ts +0 -6
  224. package/src/enumerations/pbkdf2-profile.d.ts.map +0 -1
  225. package/src/enumerations/pbkdf2-profile.js +0 -7
  226. package/src/enumerations/pbkdf2-profile.js.map +0 -1
  227. package/src/enumerations/secure-storage-error-type.d.ts +0 -6
  228. package/src/enumerations/secure-storage-error-type.d.ts.map +0 -1
  229. package/src/enumerations/secure-storage-error-type.js +0 -7
  230. package/src/enumerations/secure-storage-error-type.js.map +0 -1
  231. package/src/errors/disposed.d.ts +0 -22
  232. package/src/errors/disposed.d.ts.map +0 -1
  233. package/src/errors/disposed.js +0 -28
  234. package/src/errors/disposed.js.map +0 -1
  235. package/src/errors/ecies.d.ts +0 -52
  236. package/src/errors/ecies.d.ts.map +0 -1
  237. package/src/errors/ecies.js +0 -78
  238. package/src/errors/ecies.js.map +0 -1
  239. package/src/errors/guid.d.ts +0 -49
  240. package/src/errors/guid.d.ts.map +0 -1
  241. package/src/errors/guid.js +0 -96
  242. package/src/errors/guid.js.map +0 -1
  243. package/src/errors/id-provider.d.ts +0 -23
  244. package/src/errors/id-provider.d.ts.map +0 -1
  245. package/src/errors/id-provider.js +0 -29
  246. package/src/errors/id-provider.js.map +0 -1
  247. package/src/errors/index.d.ts.map +0 -1
  248. package/src/errors/index.js +0 -10
  249. package/src/errors/index.js.map +0 -1
  250. package/src/errors/invalid-email.d.ts +0 -8
  251. package/src/errors/invalid-email.d.ts.map +0 -1
  252. package/src/errors/invalid-email.js +0 -15
  253. package/src/errors/invalid-email.js.map +0 -1
  254. package/src/errors/length.d.ts +0 -7
  255. package/src/errors/length.d.ts.map +0 -1
  256. package/src/errors/length.js +0 -11
  257. package/src/errors/length.js.map +0 -1
  258. package/src/errors/member.d.ts +0 -7
  259. package/src/errors/member.d.ts.map +0 -1
  260. package/src/errors/member.js +0 -11
  261. package/src/errors/member.js.map +0 -1
  262. package/src/errors/pbkdf2.d.ts +0 -7
  263. package/src/errors/pbkdf2.d.ts.map +0 -1
  264. package/src/errors/pbkdf2.js +0 -11
  265. package/src/errors/pbkdf2.js.map +0 -1
  266. package/src/errors/secure-storage.d.ts +0 -7
  267. package/src/errors/secure-storage.d.ts.map +0 -1
  268. package/src/errors/secure-storage.js +0 -12
  269. package/src/errors/secure-storage.js.map +0 -1
  270. package/src/errors/simple-ecies.d.ts +0 -6
  271. package/src/errors/simple-ecies.d.ts.map +0 -1
  272. package/src/errors/simple-ecies.js +0 -12
  273. package/src/errors/simple-ecies.js.map +0 -1
  274. package/src/errors/simple-test-error.d.ts +0 -4
  275. package/src/errors/simple-test-error.d.ts.map +0 -1
  276. package/src/errors/simple-test-error.js +0 -7
  277. package/src/errors/simple-test-error.js.map +0 -1
  278. package/src/i18n-setup.d.ts +0 -32
  279. package/src/i18n-setup.d.ts.map +0 -1
  280. package/src/i18n-setup.js +0 -101
  281. package/src/i18n-setup.js.map +0 -1
  282. package/src/index.d.ts +0 -80
  283. package/src/index.d.ts.map +0 -1
  284. package/src/index.js.map +0 -1
  285. package/src/interfaces/checksum-config.d.ts +0 -5
  286. package/src/interfaces/checksum-config.d.ts.map +0 -1
  287. package/src/interfaces/checksum-config.js +0 -2
  288. package/src/interfaces/checksum-config.js.map +0 -1
  289. package/src/interfaces/checksum-consts.d.ts +0 -11
  290. package/src/interfaces/checksum-consts.d.ts.map +0 -1
  291. package/src/interfaces/checksum-consts.js +0 -2
  292. package/src/interfaces/checksum-consts.js.map +0 -1
  293. package/src/interfaces/configuration-provenance.d.ts +0 -43
  294. package/src/interfaces/configuration-provenance.d.ts.map +0 -1
  295. package/src/interfaces/configuration-provenance.js +0 -3
  296. package/src/interfaces/configuration-provenance.js.map +0 -1
  297. package/src/interfaces/constants.d.ts +0 -70
  298. package/src/interfaces/constants.d.ts.map +0 -1
  299. package/src/interfaces/constants.js +0 -2
  300. package/src/interfaces/constants.js.map +0 -1
  301. package/src/interfaces/ecies-config.d.ts +0 -9
  302. package/src/interfaces/ecies-config.d.ts.map +0 -1
  303. package/src/interfaces/ecies-config.js +0 -2
  304. package/src/interfaces/ecies-config.js.map +0 -1
  305. package/src/interfaces/ecies-consts.d.ts +0 -61
  306. package/src/interfaces/ecies-consts.d.ts.map +0 -1
  307. package/src/interfaces/ecies-consts.js +0 -2
  308. package/src/interfaces/ecies-consts.js.map +0 -1
  309. package/src/interfaces/ecies-file-service.d.ts +0 -7
  310. package/src/interfaces/ecies-file-service.d.ts.map +0 -1
  311. package/src/interfaces/ecies-file-service.js +0 -2
  312. package/src/interfaces/ecies-file-service.js.map +0 -1
  313. package/src/interfaces/encrypted-chunk.d.ts +0 -55
  314. package/src/interfaces/encrypted-chunk.d.ts.map +0 -1
  315. package/src/interfaces/encrypted-chunk.js +0 -12
  316. package/src/interfaces/encrypted-chunk.js.map +0 -1
  317. package/src/interfaces/encryption-state.d.ts +0 -18
  318. package/src/interfaces/encryption-state.d.ts.map +0 -1
  319. package/src/interfaces/encryption-state.js +0 -2
  320. package/src/interfaces/encryption-state.js.map +0 -1
  321. package/src/interfaces/frontend-member-operational.d.ts +0 -51
  322. package/src/interfaces/frontend-member-operational.d.ts.map +0 -1
  323. package/src/interfaces/frontend-member-operational.js +0 -2
  324. package/src/interfaces/frontend-member-operational.js.map +0 -1
  325. package/src/interfaces/guid.d.ts +0 -78
  326. package/src/interfaces/guid.d.ts.map +0 -1
  327. package/src/interfaces/guid.js +0 -2
  328. package/src/interfaces/guid.js.map +0 -1
  329. package/src/interfaces/id-provider.d.ts +0 -107
  330. package/src/interfaces/id-provider.d.ts.map +0 -1
  331. package/src/interfaces/id-provider.js +0 -52
  332. package/src/interfaces/id-provider.js.map +0 -1
  333. package/src/interfaces/index.d.ts.map +0 -1
  334. package/src/interfaces/index.js +0 -13
  335. package/src/interfaces/index.js.map +0 -1
  336. package/src/interfaces/invariant.d.ts +0 -46
  337. package/src/interfaces/invariant.d.ts.map +0 -1
  338. package/src/interfaces/invariant.js +0 -18
  339. package/src/interfaces/invariant.js.map +0 -1
  340. package/src/interfaces/library-error.d.ts +0 -23
  341. package/src/interfaces/library-error.d.ts.map +0 -1
  342. package/src/interfaces/library-error.js +0 -2
  343. package/src/interfaces/library-error.js.map +0 -1
  344. package/src/interfaces/member-storage.d.ts.map +0 -1
  345. package/src/interfaces/member-storage.js +0 -2
  346. package/src/interfaces/member-storage.js.map +0 -1
  347. package/src/interfaces/member-with-mnemonic.d.ts.map +0 -1
  348. package/src/interfaces/member-with-mnemonic.js +0 -2
  349. package/src/interfaces/member-with-mnemonic.js.map +0 -1
  350. package/src/interfaces/member.d.ts +0 -55
  351. package/src/interfaces/member.d.ts.map +0 -1
  352. package/src/interfaces/member.js +0 -2
  353. package/src/interfaces/member.js.map +0 -1
  354. package/src/interfaces/multi-recipient-chunk.d.ts +0 -54
  355. package/src/interfaces/multi-recipient-chunk.d.ts.map +0 -1
  356. package/src/interfaces/multi-recipient-chunk.js +0 -11
  357. package/src/interfaces/multi-recipient-chunk.js.map +0 -1
  358. package/src/interfaces/pbkdf2-config.d.ts +0 -7
  359. package/src/interfaces/pbkdf2-config.d.ts.map +0 -1
  360. package/src/interfaces/pbkdf2-config.js +0 -2
  361. package/src/interfaces/pbkdf2-config.js.map +0 -1
  362. package/src/interfaces/pbkdf2-consts.d.ts +0 -9
  363. package/src/interfaces/pbkdf2-consts.d.ts.map +0 -1
  364. package/src/interfaces/pbkdf2-consts.js +0 -2
  365. package/src/interfaces/pbkdf2-consts.js.map +0 -1
  366. package/src/interfaces/pbkdf2-result.d.ts +0 -6
  367. package/src/interfaces/pbkdf2-result.d.ts.map +0 -1
  368. package/src/interfaces/pbkdf2-result.js +0 -2
  369. package/src/interfaces/pbkdf2-result.js.map +0 -1
  370. package/src/interfaces/stream-config.d.ts +0 -14
  371. package/src/interfaces/stream-config.d.ts.map +0 -1
  372. package/src/interfaces/stream-config.js +0 -8
  373. package/src/interfaces/stream-config.js.map +0 -1
  374. package/src/interfaces/stream-header.d.ts +0 -29
  375. package/src/interfaces/stream-header.d.ts.map +0 -1
  376. package/src/interfaces/stream-header.js +0 -9
  377. package/src/interfaces/stream-header.js.map +0 -1
  378. package/src/interfaces/stream-progress.d.ts +0 -33
  379. package/src/interfaces/stream-progress.d.ts.map +0 -1
  380. package/src/interfaces/stream-progress.js +0 -2
  381. package/src/interfaces/stream-progress.js.map +0 -1
  382. package/src/lib/configuration-provenance-utils.d.ts +0 -11
  383. package/src/lib/configuration-provenance-utils.d.ts.map +0 -1
  384. package/src/lib/configuration-provenance-utils.js +0 -23
  385. package/src/lib/configuration-provenance-utils.js.map +0 -1
  386. package/src/lib/crypto-container.d.ts +0 -25
  387. package/src/lib/crypto-container.d.ts.map +0 -1
  388. package/src/lib/crypto-container.js +0 -46
  389. package/src/lib/crypto-container.js.map +0 -1
  390. package/src/lib/guid.d.ts +0 -344
  391. package/src/lib/guid.d.ts.map +0 -1
  392. package/src/lib/guid.js +0 -914
  393. package/src/lib/guid.js.map +0 -1
  394. package/src/lib/id-providers/custom-provider.d.ts +0 -46
  395. package/src/lib/id-providers/custom-provider.d.ts.map +0 -1
  396. package/src/lib/id-providers/custom-provider.js +0 -85
  397. package/src/lib/id-providers/custom-provider.js.map +0 -1
  398. package/src/lib/id-providers/guidv4-provider.d.ts +0 -56
  399. package/src/lib/id-providers/guidv4-provider.d.ts.map +0 -1
  400. package/src/lib/id-providers/guidv4-provider.js +0 -122
  401. package/src/lib/id-providers/guidv4-provider.js.map +0 -1
  402. package/src/lib/id-providers/index.d.ts.map +0 -1
  403. package/src/lib/id-providers/index.js +0 -29
  404. package/src/lib/id-providers/index.js.map +0 -1
  405. package/src/lib/id-providers/objectid-provider.d.ts +0 -43
  406. package/src/lib/id-providers/objectid-provider.d.ts.map +0 -1
  407. package/src/lib/id-providers/objectid-provider.js +0 -104
  408. package/src/lib/id-providers/objectid-provider.js.map +0 -1
  409. package/src/lib/id-providers/uuid-provider.d.ts +0 -52
  410. package/src/lib/id-providers/uuid-provider.d.ts.map +0 -1
  411. package/src/lib/id-providers/uuid-provider.js +0 -110
  412. package/src/lib/id-providers/uuid-provider.js.map +0 -1
  413. package/src/lib/index.d.ts +0 -6
  414. package/src/lib/index.d.ts.map +0 -1
  415. package/src/lib/index.js.map +0 -1
  416. package/src/lib/invariant-validator.d.ts +0 -59
  417. package/src/lib/invariant-validator.d.ts.map +0 -1
  418. package/src/lib/invariant-validator.js +0 -97
  419. package/src/lib/invariant-validator.js.map +0 -1
  420. package/src/lib/invariants/encryption-algorithm-consistency.d.ts +0 -17
  421. package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +0 -1
  422. package/src/lib/invariants/encryption-algorithm-consistency.js +0 -49
  423. package/src/lib/invariants/encryption-algorithm-consistency.js.map +0 -1
  424. package/src/lib/invariants/index.d.ts +0 -4
  425. package/src/lib/invariants/index.d.ts.map +0 -1
  426. package/src/lib/invariants/index.js.map +0 -1
  427. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +0 -16
  428. package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +0 -1
  429. package/src/lib/invariants/pbkdf2-profiles-validity.js +0 -58
  430. package/src/lib/invariants/pbkdf2-profiles-validity.js.map +0 -1
  431. package/src/lib/invariants/recipient-id-consistency.d.ts +0 -18
  432. package/src/lib/invariants/recipient-id-consistency.d.ts.map +0 -1
  433. package/src/lib/invariants/recipient-id-consistency.js +0 -31
  434. package/src/lib/invariants/recipient-id-consistency.js.map +0 -1
  435. package/src/lib/multi-recipient-chunk-utils.d.ts +0 -38
  436. package/src/lib/multi-recipient-chunk-utils.d.ts.map +0 -1
  437. package/src/lib/multi-recipient-chunk-utils.js +0 -41
  438. package/src/lib/multi-recipient-chunk-utils.js.map +0 -1
  439. package/src/member.d.ts +0 -92
  440. package/src/member.d.ts.map +0 -1
  441. package/src/member.js +0 -322
  442. package/src/member.js.map +0 -1
  443. package/src/pbkdf2-profiles.d.ts.map +0 -1
  444. package/src/pbkdf2-profiles.js +0 -2
  445. package/src/pbkdf2-profiles.js.map +0 -1
  446. package/src/phone-number.d.ts +0 -6
  447. package/src/phone-number.d.ts.map +0 -1
  448. package/src/phone-number.js +0 -18
  449. package/src/phone-number.js.map +0 -1
  450. package/src/regexes.d.ts +0 -7
  451. package/src/regexes.d.ts.map +0 -1
  452. package/src/regexes.js +0 -7
  453. package/src/regexes.js.map +0 -1
  454. package/src/secure-buffer.d.ts +0 -61
  455. package/src/secure-buffer.d.ts.map +0 -1
  456. package/src/secure-buffer.js +0 -201
  457. package/src/secure-buffer.js.map +0 -1
  458. package/src/secure-string.d.ts +0 -46
  459. package/src/secure-string.d.ts.map +0 -1
  460. package/src/secure-string.js +0 -206
  461. package/src/secure-string.js.map +0 -1
  462. package/src/services/aes-gcm.d.ts +0 -57
  463. package/src/services/aes-gcm.d.ts.map +0 -1
  464. package/src/services/aes-gcm.js +0 -142
  465. package/src/services/aes-gcm.js.map +0 -1
  466. package/src/services/chunk-processor.d.ts +0 -31
  467. package/src/services/chunk-processor.d.ts.map +0 -1
  468. package/src/services/chunk-processor.js +0 -145
  469. package/src/services/chunk-processor.js.map +0 -1
  470. package/src/services/ecies/crypto-core.d.ts +0 -72
  471. package/src/services/ecies/crypto-core.d.ts.map +0 -1
  472. package/src/services/ecies/crypto-core.js +0 -205
  473. package/src/services/ecies/crypto-core.js.map +0 -1
  474. package/src/services/ecies/example.d.ts +0 -25
  475. package/src/services/ecies/example.d.ts.map +0 -1
  476. package/src/services/ecies/example.js +0 -121
  477. package/src/services/ecies/example.js.map +0 -1
  478. package/src/services/ecies/file.d.ts +0 -18
  479. package/src/services/ecies/file.d.ts.map +0 -1
  480. package/src/services/ecies/file.js +0 -106
  481. package/src/services/ecies/file.js.map +0 -1
  482. package/src/services/ecies/index.d.ts +0 -38
  483. package/src/services/ecies/index.d.ts.map +0 -1
  484. package/src/services/ecies/index.js.map +0 -1
  485. package/src/services/ecies/integration.d.ts +0 -59
  486. package/src/services/ecies/integration.d.ts.map +0 -1
  487. package/src/services/ecies/integration.js +0 -167
  488. package/src/services/ecies/integration.js.map +0 -1
  489. package/src/services/ecies/interfaces.d.ts +0 -54
  490. package/src/services/ecies/interfaces.d.ts.map +0 -1
  491. package/src/services/ecies/interfaces.js +0 -5
  492. package/src/services/ecies/interfaces.js.map +0 -1
  493. package/src/services/ecies/manual-test.d.ts +0 -29
  494. package/src/services/ecies/manual-test.d.ts.map +0 -1
  495. package/src/services/ecies/manual-test.js +0 -163
  496. package/src/services/ecies/manual-test.js.map +0 -1
  497. package/src/services/ecies/multi-recipient.d.ts +0 -56
  498. package/src/services/ecies/multi-recipient.d.ts.map +0 -1
  499. package/src/services/ecies/multi-recipient.js +0 -344
  500. package/src/services/ecies/multi-recipient.js.map +0 -1
  501. package/src/services/ecies/service.d.ts +0 -120
  502. package/src/services/ecies/service.d.ts.map +0 -1
  503. package/src/services/ecies/service.js +0 -210
  504. package/src/services/ecies/service.js.map +0 -1
  505. package/src/services/ecies/signature.d.ts +0 -27
  506. package/src/services/ecies/signature.d.ts.map +0 -1
  507. package/src/services/ecies/signature.js +0 -72
  508. package/src/services/ecies/signature.js.map +0 -1
  509. package/src/services/ecies/single-recipient.d.ts +0 -46
  510. package/src/services/ecies/single-recipient.d.ts.map +0 -1
  511. package/src/services/ecies/single-recipient.js +0 -322
  512. package/src/services/ecies/single-recipient.js.map +0 -1
  513. package/src/services/encryption-stream.d.ts +0 -71
  514. package/src/services/encryption-stream.d.ts.map +0 -1
  515. package/src/services/encryption-stream.js +0 -295
  516. package/src/services/encryption-stream.js.map +0 -1
  517. package/src/services/index.d.ts +0 -11
  518. package/src/services/index.d.ts.map +0 -1
  519. package/src/services/index.js.map +0 -1
  520. package/src/services/multi-recipient-processor.d.ts +0 -35
  521. package/src/services/multi-recipient-processor.d.ts.map +0 -1
  522. package/src/services/multi-recipient-processor.js +0 -289
  523. package/src/services/multi-recipient-processor.js.map +0 -1
  524. package/src/services/password-login.d.ts +0 -47
  525. package/src/services/password-login.d.ts.map +0 -1
  526. package/src/services/password-login.js +0 -115
  527. package/src/services/password-login.js.map +0 -1
  528. package/src/services/pbkdf2.d.ts +0 -54
  529. package/src/services/pbkdf2.d.ts.map +0 -1
  530. package/src/services/pbkdf2.js +0 -108
  531. package/src/services/pbkdf2.js.map +0 -1
  532. package/src/services/progress-tracker.d.ts +0 -23
  533. package/src/services/progress-tracker.d.ts.map +0 -1
  534. package/src/services/progress-tracker.js +0 -103
  535. package/src/services/progress-tracker.js.map +0 -1
  536. package/src/services/resumable-encryption.d.ts +0 -19
  537. package/src/services/resumable-encryption.d.ts.map +0 -1
  538. package/src/services/resumable-encryption.js +0 -105
  539. package/src/services/resumable-encryption.js.map +0 -1
  540. package/src/services/xor.d.ts +0 -37
  541. package/src/services/xor.d.ts.map +0 -1
  542. package/src/services/xor.js +0 -63
  543. package/src/services/xor.js.map +0 -1
  544. package/src/test-mocks/index.d.ts +0 -2
  545. package/src/test-mocks/index.d.ts.map +0 -1
  546. package/src/test-mocks/index.js +0 -2
  547. package/src/test-mocks/index.js.map +0 -1
  548. package/src/test-mocks/mock-frontend-member.d.ts +0 -85
  549. package/src/test-mocks/mock-frontend-member.d.ts.map +0 -1
  550. package/src/test-mocks/mock-frontend-member.js +0 -190
  551. package/src/test-mocks/mock-frontend-member.js.map +0 -1
  552. package/src/testing.d.ts +0 -2
  553. package/src/testing.d.ts.map +0 -1
  554. package/src/testing.js.map +0 -1
  555. package/src/translations/de.d.ts +0 -4
  556. package/src/translations/de.d.ts.map +0 -1
  557. package/src/translations/de.js.map +0 -1
  558. package/src/translations/en-US.d.ts +0 -4
  559. package/src/translations/en-US.d.ts.map +0 -1
  560. package/src/translations/en-US.js.map +0 -1
  561. package/src/translations/es.d.ts +0 -4
  562. package/src/translations/es.d.ts.map +0 -1
  563. package/src/translations/es.js.map +0 -1
  564. package/src/translations/fr.d.ts +0 -4
  565. package/src/translations/fr.d.ts.map +0 -1
  566. package/src/translations/fr.js.map +0 -1
  567. package/src/translations/ja.d.ts +0 -4
  568. package/src/translations/ja.d.ts.map +0 -1
  569. package/src/translations/ja.js.map +0 -1
  570. package/src/translations/uk.d.ts +0 -4
  571. package/src/translations/uk.d.ts.map +0 -1
  572. package/src/translations/uk.js.map +0 -1
  573. package/src/translations/zh-cn.d.ts +0 -4
  574. package/src/translations/zh-cn.d.ts.map +0 -1
  575. package/src/translations/zh-cn.js.map +0 -1
  576. package/src/types/deep-partial.d.ts +0 -4
  577. package/src/types/deep-partial.d.ts.map +0 -1
  578. package/src/types/deep-partial.js +0 -2
  579. package/src/types/deep-partial.js.map +0 -1
  580. package/src/types.d.ts.map +0 -1
  581. package/src/types.js +0 -2
  582. package/src/types.js.map +0 -1
  583. package/src/utils/encryption-type-utils.d.ts +0 -29
  584. package/src/utils/encryption-type-utils.d.ts.map +0 -1
  585. package/src/utils/encryption-type-utils.js +0 -61
  586. package/src/utils/encryption-type-utils.js.map +0 -1
  587. package/src/utils.d.ts +0 -68
  588. package/src/utils.d.ts.map +0 -1
  589. package/src/utils.js +0 -273
  590. package/src/utils.js.map +0 -1
@@ -1,5 +0,0 @@
1
- /**
2
- * Browser-compatible ECIES interfaces
3
- */
4
- export {};
5
- //# sourceMappingURL=interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/services/ecies/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Simple integration tests for the browser ECIES service
3
- * These tests can be run in the browser console to verify functionality
4
- */
5
- /**
6
- * Test basic encryption/decryption roundtrip
7
- */
8
- export declare function testBasicEncryption(): Promise<boolean>;
9
- /**
10
- * Test simple mode encryption
11
- */
12
- export declare function testSimpleEncryption(): Promise<boolean>;
13
- /**
14
- * Test signature operations
15
- */
16
- export declare function testSignatures(): Promise<boolean>;
17
- /**
18
- * Test mnemonic validation
19
- */
20
- export declare function testMnemonicValidation(): Promise<boolean>;
21
- /**
22
- * Test cross-party encryption (Alice encrypts for Bob)
23
- */
24
- export declare function testCrossPartyEncryption(): Promise<boolean>;
25
- /**
26
- * Run all tests
27
- */
28
- export declare function runAllTests(): Promise<void>;
29
- //# sourceMappingURL=manual-test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manual-test.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/services/ecies/manual-test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAuB5D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAuB7D;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAmBvD;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CA6B/D;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CA4CjE;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAuCjD"}
@@ -1,163 +0,0 @@
1
- /**
2
- * Simple integration tests for the browser ECIES service
3
- * These tests can be run in the browser console to verify functionality
4
- */
5
- import { SecureString } from '../../secure-string';
6
- import { stringToUint8Array, uint8ArrayToHex, uint8ArrayToString, } from '../../utils';
7
- import { ECIESService } from './service';
8
- /**
9
- * Test basic encryption/decryption roundtrip
10
- */
11
- export async function testBasicEncryption() {
12
- try {
13
- const ecies = new ECIESService();
14
- const mnemonic = ecies.generateNewMnemonic();
15
- const { privateKey, publicKey } = ecies.mnemonicToSimpleKeyPair(mnemonic);
16
- const message = stringToUint8Array('Test message');
17
- const encrypted = await ecies.encryptSimpleOrSingle(false, publicKey, message);
18
- const decrypted = await ecies.decryptSimpleOrSingleWithHeader(false, privateKey, encrypted);
19
- return uint8ArrayToString(message) === uint8ArrayToString(decrypted);
20
- }
21
- catch (error) {
22
- console.error('Basic encryption test failed:', error);
23
- return false;
24
- }
25
- }
26
- /**
27
- * Test simple mode encryption
28
- */
29
- export async function testSimpleEncryption() {
30
- try {
31
- const ecies = new ECIESService();
32
- const mnemonic = ecies.generateNewMnemonic();
33
- const { privateKey, publicKey } = ecies.mnemonicToSimpleKeyPair(mnemonic);
34
- const message = stringToUint8Array('Simple test message');
35
- const encrypted = await ecies.encryptSimpleOrSingle(true, publicKey, message);
36
- const decrypted = await ecies.decryptSimpleOrSingleWithHeader(true, privateKey, encrypted);
37
- return uint8ArrayToString(message) === uint8ArrayToString(decrypted);
38
- }
39
- catch (error) {
40
- console.error('Simple encryption test failed:', error);
41
- return false;
42
- }
43
- }
44
- /**
45
- * Test signature operations
46
- */
47
- export async function testSignatures() {
48
- try {
49
- const ecies = new ECIESService();
50
- const mnemonic = ecies.generateNewMnemonic();
51
- const { privateKey, publicKey } = ecies.mnemonicToSimpleKeyPair(mnemonic);
52
- const message = stringToUint8Array('Message to sign');
53
- const signature = ecies.signMessage(privateKey, message);
54
- const isValid = ecies.verifyMessage(publicKey, message, signature);
55
- // Test with wrong message
56
- const wrongMessage = stringToUint8Array('Wrong message');
57
- const isInvalid = ecies.verifyMessage(publicKey, wrongMessage, signature);
58
- return isValid && !isInvalid;
59
- }
60
- catch (error) {
61
- console.error('Signature test failed:', error);
62
- return false;
63
- }
64
- }
65
- /**
66
- * Test mnemonic validation
67
- */
68
- export async function testMnemonicValidation() {
69
- try {
70
- const ecies = new ECIESService();
71
- // Test valid mnemonic
72
- const validMnemonic = new SecureString('abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about');
73
- const { wallet: wallet1 } = ecies.walletAndSeedFromMnemonic(validMnemonic);
74
- const { wallet: wallet2 } = ecies.walletAndSeedFromMnemonic(validMnemonic);
75
- // Should produce same keys
76
- const sameKeys = uint8ArrayToHex(wallet1.getPrivateKey()) ===
77
- uint8ArrayToHex(wallet2.getPrivateKey());
78
- // Test invalid mnemonic
79
- try {
80
- ecies.walletAndSeedFromMnemonic(new SecureString('invalid mnemonic phrase'));
81
- return false; // Should have thrown
82
- }
83
- catch {
84
- return sameKeys; // Expected to throw
85
- }
86
- }
87
- catch (error) {
88
- console.error('Mnemonic validation test failed:', error);
89
- return false;
90
- }
91
- }
92
- /**
93
- * Test cross-party encryption (Alice encrypts for Bob)
94
- */
95
- export async function testCrossPartyEncryption() {
96
- try {
97
- const ecies = new ECIESService();
98
- // Alice generates her keys
99
- const aliceMnemonic = ecies.generateNewMnemonic();
100
- const aliceKeys = ecies.mnemonicToSimpleKeyPair(aliceMnemonic);
101
- // Bob generates his keys
102
- const bobMnemonic = ecies.generateNewMnemonic();
103
- const bobKeys = ecies.mnemonicToSimpleKeyPair(bobMnemonic);
104
- // Alice encrypts a message for Bob
105
- const message = stringToUint8Array('Secret message from Alice to Bob');
106
- const encrypted = await ecies.encryptSimpleOrSingle(false, bobKeys.publicKey, message);
107
- // Bob decrypts the message
108
- const decrypted = await ecies.decryptSimpleOrSingleWithHeader(false, bobKeys.privateKey, encrypted);
109
- // Alice should not be able to decrypt (wrong private key)
110
- try {
111
- await ecies.decryptSimpleOrSingleWithHeader(false, aliceKeys.privateKey, encrypted);
112
- return false; // Should have failed
113
- }
114
- catch {
115
- // Expected to fail
116
- }
117
- return uint8ArrayToString(message) === uint8ArrayToString(decrypted);
118
- }
119
- catch (error) {
120
- console.error('Cross-party encryption test failed:', error);
121
- return false;
122
- }
123
- }
124
- /**
125
- * Run all tests
126
- */
127
- export async function runAllTests() {
128
- console.log('Running browser ECIES service tests...\n');
129
- const tests = [
130
- { name: 'Basic Encryption', test: testBasicEncryption },
131
- { name: 'Simple Encryption', test: testSimpleEncryption },
132
- { name: 'Digital Signatures', test: testSignatures },
133
- { name: 'Mnemonic Validation', test: testMnemonicValidation },
134
- { name: 'Cross-Party Encryption', test: testCrossPartyEncryption },
135
- ];
136
- let passed = 0;
137
- let failed = 0;
138
- for (const { name, test } of tests) {
139
- try {
140
- const result = await test();
141
- if (result) {
142
- console.log(`✅ ${name}: PASSED`);
143
- passed++;
144
- }
145
- else {
146
- console.log(`❌ ${name}: FAILED`);
147
- failed++;
148
- }
149
- }
150
- catch (error) {
151
- console.log(`❌ ${name}: ERROR - ${error}`);
152
- failed++;
153
- }
154
- }
155
- console.log(`\nTest Results: ${passed} passed, ${failed} failed`);
156
- if (failed === 0) {
157
- console.log('🎉 All tests passed! The browser ECIES service is working correctly.');
158
- }
159
- else {
160
- console.log('⚠️ Some tests failed. Please check the implementation.');
161
- }
162
- }
163
- //# sourceMappingURL=manual-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manual-test.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/services/ecies/manual-test.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- import { IECIESConstants } from '../../interfaces/ecies-consts';
2
- import { IECIESConfig } from '../../interfaces/ecies-config';
3
- import { EciesCryptoCore } from './crypto-core';
4
- import { IMultiEncryptedMessage, IMultiEncryptedParsedHeader, IMultiRecipient } from './interfaces';
5
- /**
6
- * Browser-compatible multi-recipient ECIES encryption/decryption
7
- */
8
- export declare class EciesMultiRecipient {
9
- protected readonly cryptoCore: EciesCryptoCore;
10
- protected readonly eciesConsts: IECIESConstants;
11
- constructor(config: IECIESConfig, eciesParams?: IECIESConstants);
12
- /**
13
- * Get the header size for multi-recipient encryption
14
- */
15
- getHeaderSize(recipientCount: number): number;
16
- /**
17
- * Encrypt a message symmetric key with a public key
18
- * @param receiverPublicKey The public key of the receiver
19
- * @param messageSymmetricKey The message to encrypt
20
- * @param ephemeralPrivateKey The ephemeral private key to use for encryption
21
- * @param aad Additional Authenticated Data (optional)
22
- * @returns The encrypted message (IV + Tag + EncryptedKey)
23
- */
24
- encryptKey(receiverPublicKey: Uint8Array, messageSymmetricKey: Uint8Array, ephemeralPrivateKey: Uint8Array, aad?: Uint8Array): Promise<Uint8Array>;
25
- /**
26
- * Decrypts symmetric key encrypted with ECIES
27
- * @param privateKey The private key to decrypt the data
28
- * @param encryptedKey The data to decrypt
29
- * @param ephemeralPublicKey The ephemeral public key from the header
30
- * @param aad Additional Authenticated Data (optional)
31
- * @returns The decrypted data buffer
32
- */
33
- decryptKey(privateKey: Uint8Array, encryptedKey: Uint8Array, ephemeralPublicKey: Uint8Array, aad?: Uint8Array): Promise<Uint8Array>;
34
- /**
35
- * Encrypt a message for multiple recipients
36
- */
37
- encryptMultiple(recipients: IMultiRecipient[], message: Uint8Array, preamble?: Uint8Array, senderPrivateKey?: Uint8Array): Promise<IMultiEncryptedMessage>;
38
- /**
39
- * Decrypt a multi-recipient message for a specific recipient
40
- */
41
- decryptMultipleForRecipient(encryptedData: IMultiEncryptedMessage, recipientId: Uint8Array, privateKey: Uint8Array, senderPublicKey?: Uint8Array): Promise<Uint8Array>;
42
- /**
43
- * Build header for multi-recipient message
44
- */
45
- buildHeader(data: IMultiEncryptedMessage): Uint8Array;
46
- /**
47
- * Parse multi-recipient header
48
- */
49
- parseHeader(data: Uint8Array): IMultiEncryptedParsedHeader;
50
- /**
51
- * Parse complete multi-recipient message
52
- */
53
- parseMessage(data: Uint8Array): IMultiEncryptedMessage;
54
- private arraysEqual;
55
- }
56
- //# sourceMappingURL=multi-recipient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-recipient.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/services/ecies/multi-recipient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,eAAe,EAChB,MAAM,cAAc,CAAC;AAOtB;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;gBAEpC,MAAM,EAAE,YAAY,EAAE,WAAW,GAAE,eAAiC;IAKhF;;OAEG;IACI,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAapD;;;;;;;OAOG;IACU,UAAU,CACrB,iBAAiB,EAAE,UAAU,EAC7B,mBAAmB,EAAE,UAAU,EAC/B,mBAAmB,EAAE,UAAU,EAC/B,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,UAAU,CAAC;IAoCtB;;;;;;;OAOG;IACU,UAAU,CACrB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,UAAU,EACxB,kBAAkB,EAAE,UAAU,EAC9B,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,UAAU,CAAC;IA2DtB;;OAEG;IACU,eAAe,CAC1B,UAAU,EAAE,eAAe,EAAE,EAC7B,OAAO,EAAE,UAAU,EACnB,QAAQ,GAAE,UAA8B,EACxC,gBAAgB,CAAC,EAAE,UAAU,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IA0FlC;;OAEG;IACU,2BAA2B,CACtC,aAAa,EAAE,sBAAsB,EACrC,WAAW,EAAE,UAAU,EACvB,UAAU,EAAE,UAAU,EACtB,eAAe,CAAC,EAAE,UAAU,GAC3B,OAAO,CAAC,UAAU,CAAC;IAyFtB;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,sBAAsB,GAAG,UAAU;IAmE5D;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,2BAA2B;IA0FjE;;OAEG;IACI,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,sBAAsB;IAU7D,OAAO,CAAC,WAAW;CAOpB"}
@@ -1,344 +0,0 @@
1
- import { Constants } from '../../constants';
2
- import { concatUint8Arrays } from '../../utils';
3
- import { AESGCMService } from '../aes-gcm';
4
- import { EciesCryptoCore } from './crypto-core';
5
- import { EciesComponentId, getEciesI18nEngine } from '../../i18n-setup';
6
- import { EciesStringKey } from '../../enumerations';
7
- import { EciesVersionEnum } from '../../enumerations/ecies-version';
8
- import { EciesCipherSuiteEnum } from '../../enumerations/ecies-cipher-suite';
9
- import { EciesEncryptionTypeEnum } from '../../enumerations/ecies-encryption-type';
10
- /**
11
- * Browser-compatible multi-recipient ECIES encryption/decryption
12
- */
13
- export class EciesMultiRecipient {
14
- cryptoCore;
15
- eciesConsts;
16
- constructor(config, eciesParams = Constants.ECIES) {
17
- this.cryptoCore = new EciesCryptoCore(config, eciesParams);
18
- this.eciesConsts = eciesParams;
19
- }
20
- /**
21
- * Get the header size for multi-recipient encryption
22
- */
23
- getHeaderSize(recipientCount) {
24
- return (this.eciesConsts.VERSION_SIZE +
25
- this.eciesConsts.CIPHER_SUITE_SIZE +
26
- this.eciesConsts.ENCRYPTION_TYPE_SIZE +
27
- this.eciesConsts.PUBLIC_KEY_LENGTH + // Shared ephemeral public key
28
- this.eciesConsts.MULTIPLE.DATA_LENGTH_SIZE +
29
- this.eciesConsts.MULTIPLE.RECIPIENT_COUNT_SIZE +
30
- recipientCount * this.eciesConsts.MULTIPLE.RECIPIENT_ID_SIZE +
31
- recipientCount * this.eciesConsts.MULTIPLE.ENCRYPTED_KEY_SIZE);
32
- }
33
- /**
34
- * Encrypt a message symmetric key with a public key
35
- * @param receiverPublicKey The public key of the receiver
36
- * @param messageSymmetricKey The message to encrypt
37
- * @param ephemeralPrivateKey The ephemeral private key to use for encryption
38
- * @param aad Additional Authenticated Data (optional)
39
- * @returns The encrypted message (IV + Tag + EncryptedKey)
40
- */
41
- async encryptKey(receiverPublicKey, messageSymmetricKey, ephemeralPrivateKey, aad) {
42
- const sharedSecret = await this.cryptoCore.computeSharedSecret(ephemeralPrivateKey, receiverPublicKey);
43
- // Use HKDF to derive the key
44
- const symKey = this.cryptoCore.deriveSharedKey(sharedSecret, new Uint8Array(0), // No salt
45
- new TextEncoder().encode('ecies-v2-key-derivation'), // Info
46
- this.eciesConsts.SYMMETRIC.KEY_SIZE);
47
- const encryptResult = await AESGCMService.encrypt(messageSymmetricKey, symKey, true, this.eciesConsts, aad);
48
- const { encrypted, iv } = encryptResult;
49
- const authTag = encryptResult.tag;
50
- if (!authTag) {
51
- const engine = getEciesI18nEngine();
52
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_AuthenticationTagIsRequiredForKeyEncryption));
53
- }
54
- return concatUint8Arrays(iv, authTag, encrypted);
55
- }
56
- /**
57
- * Decrypts symmetric key encrypted with ECIES
58
- * @param privateKey The private key to decrypt the data
59
- * @param encryptedKey The data to decrypt
60
- * @param ephemeralPublicKey The ephemeral public key from the header
61
- * @param aad Additional Authenticated Data (optional)
62
- * @returns The decrypted data buffer
63
- */
64
- async decryptKey(privateKey, encryptedKey, ephemeralPublicKey, aad) {
65
- if (encryptedKey.length !== this.eciesConsts.MULTIPLE.ENCRYPTED_KEY_SIZE) {
66
- const engine = getEciesI18nEngine();
67
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidEncryptedKeyLengthTemplate, { keySize: this.eciesConsts.MULTIPLE.ENCRYPTED_KEY_SIZE, encryptedKeyLength: encryptedKey.length }));
68
- }
69
- const iv = encryptedKey.slice(0, this.eciesConsts.IV_SIZE);
70
- const authTag = encryptedKey.slice(this.eciesConsts.IV_SIZE, this.eciesConsts.IV_SIZE + this.eciesConsts.AUTH_TAG_SIZE);
71
- const encrypted = encryptedKey.slice(this.eciesConsts.IV_SIZE + this.eciesConsts.AUTH_TAG_SIZE);
72
- const sharedSecret = await this.cryptoCore.computeSharedSecret(privateKey, ephemeralPublicKey);
73
- // Use HKDF to derive the key
74
- const symKey = this.cryptoCore.deriveSharedKey(sharedSecret, new Uint8Array(0), // No salt
75
- new TextEncoder().encode('ecies-v2-key-derivation'), // Info
76
- this.eciesConsts.SYMMETRIC.KEY_SIZE);
77
- const encryptedWithTag = AESGCMService.combineEncryptedDataAndTag(encrypted, authTag);
78
- try {
79
- const decrypted = await AESGCMService.decrypt(iv, encryptedWithTag, symKey, true, this.eciesConsts, aad);
80
- if (decrypted.length !== this.eciesConsts.SYMMETRIC.KEY_SIZE) {
81
- const engine = getEciesI18nEngine();
82
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidDataLength));
83
- }
84
- return decrypted;
85
- }
86
- catch (error) {
87
- console.error('Failed to decrypt key:', error);
88
- const engine = getEciesI18nEngine();
89
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_FailedToDecryptKey));
90
- }
91
- }
92
- /**
93
- * Encrypt a message for multiple recipients
94
- */
95
- async encryptMultiple(recipients, message, preamble = new Uint8Array(0), senderPrivateKey) {
96
- const engine = getEciesI18nEngine();
97
- if (recipients.length > this.eciesConsts.MULTIPLE.MAX_RECIPIENTS) {
98
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_TooManyRecipientsTemplate, { recipientsCount: recipients.length }));
99
- }
100
- // Sign-then-Encrypt: If sender key provided, sign the message and prepend signature
101
- let messageToEncrypt = message;
102
- if (senderPrivateKey) {
103
- const signature = this.cryptoCore.sign(senderPrivateKey, message);
104
- messageToEncrypt = concatUint8Arrays(signature, message);
105
- }
106
- if (messageToEncrypt.length > this.eciesConsts.MAX_RAW_DATA_SIZE) {
107
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_MessageTooLargeTemplate, { length: messageToEncrypt.length }));
108
- }
109
- // Generate symmetric key
110
- const symmetricKey = crypto.getRandomValues(new Uint8Array(this.eciesConsts.SYMMETRIC.KEY_SIZE));
111
- // Generate ONE ephemeral key pair for all recipients
112
- const ephemeralKeyPair = await this.cryptoCore.generateEphemeralKeyPair();
113
- // Encrypt symmetric key for each recipient
114
- const recipientIds = [];
115
- const recipientKeys = [];
116
- for (const recipient of recipients) {
117
- // Use Recipient ID as AAD for key encryption to bind key to recipient
118
- const encryptedKey = await this.encryptKey(recipient.publicKey, symmetricKey, ephemeralKeyPair.privateKey, recipient.id);
119
- recipientIds.push(recipient.id);
120
- recipientKeys.push(encryptedKey);
121
- }
122
- const headerSize = this.getHeaderSize(recipients.length);
123
- // Build the header to use as AAD for message encryption
124
- // We need to construct a temporary object to build the header
125
- const tempHeaderData = {
126
- dataLength: messageToEncrypt.length,
127
- recipientCount: recipients.length,
128
- recipientIds,
129
- recipientKeys,
130
- encryptedMessage: new Uint8Array(0), // Placeholder
131
- headerSize,
132
- ephemeralPublicKey: ephemeralKeyPair.publicKey,
133
- };
134
- const headerBytes = this.buildHeader(tempHeaderData);
135
- // Encrypt message with symmetric key, using Header as AAD
136
- const encryptResult = await AESGCMService.encrypt(messageToEncrypt, symmetricKey, true, this.eciesConsts, headerBytes // Bind header to ciphertext
137
- );
138
- const { encrypted, iv } = encryptResult;
139
- const authTag = encryptResult.tag;
140
- if (!authTag) {
141
- const engine = getEciesI18nEngine();
142
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_AuthenticationTagIsRequiredForMultiRecipientECIESEncryption));
143
- }
144
- // Create stored message: preamble + iv + authTag + encrypted
145
- const storedMessage = concatUint8Arrays(preamble, iv, authTag, encrypted);
146
- return {
147
- dataLength: messageToEncrypt.length,
148
- recipientCount: recipients.length,
149
- recipientIds,
150
- recipientKeys,
151
- encryptedMessage: storedMessage,
152
- headerSize,
153
- ephemeralPublicKey: ephemeralKeyPair.publicKey,
154
- };
155
- }
156
- /**
157
- * Decrypt a multi-recipient message for a specific recipient
158
- */
159
- async decryptMultipleForRecipient(encryptedData, recipientId, privateKey, senderPublicKey) {
160
- // Find recipient's encrypted key
161
- const recipientIndex = encryptedData.recipientIds.findIndex((id) => this.arraysEqual(id, recipientId));
162
- if (recipientIndex === -1) {
163
- const engine = getEciesI18nEngine();
164
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_RecipientNotFound));
165
- }
166
- const encryptedKey = encryptedData.recipientKeys[recipientIndex];
167
- // Decrypt the symmetric key using the shared ephemeral public key
168
- if (!encryptedData.ephemeralPublicKey) {
169
- const engine = getEciesI18nEngine();
170
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_MissingEphemeralPublicKey));
171
- }
172
- // Use Recipient ID as AAD for key decryption
173
- const symmetricKey = await this.decryptKey(privateKey, encryptedKey, encryptedData.ephemeralPublicKey, recipientId);
174
- // Rebuild header to use as AAD
175
- const headerBytes = this.buildHeader(encryptedData);
176
- // Extract components from encrypted message
177
- let offset = 0;
178
- const iv = encryptedData.encryptedMessage.slice(offset, offset + this.eciesConsts.IV_SIZE);
179
- offset += this.eciesConsts.IV_SIZE;
180
- const authTag = encryptedData.encryptedMessage.slice(offset, offset + this.eciesConsts.AUTH_TAG_SIZE);
181
- offset += this.eciesConsts.AUTH_TAG_SIZE;
182
- const encrypted = encryptedData.encryptedMessage.slice(offset);
183
- // AES-GCM provides authentication via auth tag (no separate CRC needed)
184
- // Decrypt with symmetric key and Header as AAD
185
- const encryptedWithTag = AESGCMService.combineEncryptedDataAndTag(encrypted, authTag);
186
- const decrypted = await AESGCMService.decrypt(iv, encryptedWithTag, symmetricKey, true, this.eciesConsts, headerBytes);
187
- // Verify length
188
- if (decrypted.length !== encryptedData.dataLength) {
189
- const engine = getEciesI18nEngine();
190
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_DecryptedDataLengthMismatch));
191
- }
192
- // If sender public key is provided, verify signature
193
- if (senderPublicKey) {
194
- // Expect [Signature (64)][Message]
195
- if (decrypted.length < 64) {
196
- throw new Error('Decrypted data too short to contain signature');
197
- }
198
- const signature = decrypted.slice(0, 64);
199
- const message = decrypted.slice(64);
200
- const isValid = this.cryptoCore.verify(senderPublicKey, message, signature);
201
- if (!isValid) {
202
- throw new Error('Invalid sender signature');
203
- }
204
- return message;
205
- }
206
- return decrypted;
207
- }
208
- /**
209
- * Build header for multi-recipient message
210
- */
211
- buildHeader(data) {
212
- if (data.recipientIds.length !== data.recipientKeys.length) {
213
- const engine = getEciesI18nEngine();
214
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_RecipientCountMismatch));
215
- }
216
- if (data.dataLength < 0 || data.dataLength > this.eciesConsts.MAX_RAW_DATA_SIZE) {
217
- const engine = getEciesI18nEngine();
218
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidDataLength));
219
- }
220
- const versionArray = new Uint8Array([EciesVersionEnum.V1]);
221
- const cipherSuiteArray = new Uint8Array([EciesCipherSuiteEnum.Secp256k1_Aes256Gcm_Sha256]);
222
- const encryptionTypeArray = new Uint8Array([EciesEncryptionTypeEnum.Multiple]);
223
- if (!data.ephemeralPublicKey) {
224
- const engine = getEciesI18nEngine();
225
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_MissingEphemeralPublicKey));
226
- }
227
- // Data length (8 bytes)
228
- // We use the most significant byte (MSB) to store the recipient ID size
229
- // This allows parsing the header without knowing the configured ID provider
230
- // Max data size is 2^53-1, so the top byte is always 0 for valid data lengths
231
- const recipientIdSize = this.eciesConsts.MULTIPLE.RECIPIENT_ID_SIZE;
232
- if (recipientIdSize > 255) {
233
- const engine = getEciesI18nEngine();
234
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_RecipientIdSizeTooLargeTemplate, { size: recipientIdSize }));
235
- }
236
- const dataLengthBigInt = BigInt(data.dataLength);
237
- const recipientIdSizeBigInt = BigInt(recipientIdSize);
238
- const combinedLength = (recipientIdSizeBigInt << 56n) | dataLengthBigInt;
239
- const dataLengthUint8Array = new Uint8Array(8);
240
- new DataView(dataLengthUint8Array.buffer).setBigUint64(0, combinedLength, false);
241
- // Recipient count (2 bytes)
242
- const recipientCountUint8Array = new Uint8Array(2);
243
- new DataView(recipientCountUint8Array.buffer).setUint16(0, data.recipientIds.length, false);
244
- // Recipient IDs
245
- const recipientIdsUint8Array = concatUint8Arrays(...data.recipientIds);
246
- // Encrypted keys
247
- const encryptedKeysUint8Array = concatUint8Arrays(...data.recipientKeys);
248
- return concatUint8Arrays(versionArray, cipherSuiteArray, encryptionTypeArray, data.ephemeralPublicKey, dataLengthUint8Array, recipientCountUint8Array, recipientIdsUint8Array, encryptedKeysUint8Array);
249
- }
250
- /**
251
- * Parse multi-recipient header
252
- */
253
- parseHeader(data) {
254
- const engine = getEciesI18nEngine();
255
- // minimum: 1 (ver) + 1 (suite) + 1 (type) + 33 (pubkey) + 8 (len) + 2 (count) = 46
256
- if (data.length < 46) {
257
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_DataTooShortForMultiRecipientHeader));
258
- }
259
- let offset = 0;
260
- const view = new DataView(data.buffer, data.byteOffset);
261
- // Read Version
262
- const version = data[offset];
263
- offset += this.eciesConsts.VERSION_SIZE;
264
- if (version !== EciesVersionEnum.V1) {
265
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidVersionTemplate, { version }));
266
- }
267
- // Read CipherSuite
268
- const cipherSuite = data[offset];
269
- offset += this.eciesConsts.CIPHER_SUITE_SIZE;
270
- if (cipherSuite !== EciesCipherSuiteEnum.Secp256k1_Aes256Gcm_Sha256) {
271
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidCipherSuiteTemplate, { cipherSuite }));
272
- }
273
- // Read Encryption Type
274
- const encryptionType = data[offset];
275
- offset += this.eciesConsts.ENCRYPTION_TYPE_SIZE;
276
- if (encryptionType !== EciesEncryptionTypeEnum.Multiple) {
277
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidEncryptionTypeTemplate, { encryptionType: encryptionType.toString(16) }));
278
- }
279
- // Read Ephemeral Public Key
280
- const ephemeralPublicKey = data.slice(offset, offset + this.eciesConsts.PUBLIC_KEY_LENGTH);
281
- offset += this.eciesConsts.PUBLIC_KEY_LENGTH;
282
- // Read data length and recipient ID size
283
- const combinedLength = view.getBigUint64(offset, false);
284
- offset += 8;
285
- // Extract recipient ID size from MSB (top 8 bits)
286
- const storedRecipientIdSize = Number(combinedLength >> 56n);
287
- // Extract data length from lower 56 bits
288
- const dataLength = Number(combinedLength & 0x00ffffffffffffffn);
289
- if (dataLength <= 0 || dataLength > this.eciesConsts.MAX_RAW_DATA_SIZE) {
290
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidDataLength));
291
- }
292
- // Use stored recipient ID size if available (non-legacy), otherwise fallback to config
293
- const recipientIdSize = storedRecipientIdSize > 0
294
- ? storedRecipientIdSize
295
- : this.eciesConsts.MULTIPLE.RECIPIENT_ID_SIZE;
296
- // Read recipient count
297
- const recipientCount = view.getUint16(offset, false);
298
- offset += 2;
299
- if (recipientCount <= 0 || recipientCount > this.eciesConsts.MULTIPLE.MAX_RECIPIENTS) {
300
- throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidRecipientCount));
301
- }
302
- // Read recipient IDs
303
- const recipientIds = [];
304
- for (let i = 0; i < recipientCount; i++) {
305
- recipientIds.push(data.slice(offset, offset + recipientIdSize));
306
- offset += recipientIdSize;
307
- }
308
- // Read encrypted keys
309
- const recipientKeys = [];
310
- for (let i = 0; i < recipientCount; i++) {
311
- recipientKeys.push(data.slice(offset, offset + this.eciesConsts.MULTIPLE.ENCRYPTED_KEY_SIZE));
312
- offset += this.eciesConsts.MULTIPLE.ENCRYPTED_KEY_SIZE;
313
- }
314
- return {
315
- dataLength,
316
- recipientCount,
317
- recipientIds,
318
- recipientKeys,
319
- headerSize: offset,
320
- ephemeralPublicKey,
321
- };
322
- }
323
- /**
324
- * Parse complete multi-recipient message
325
- */
326
- parseMessage(data) {
327
- const header = this.parseHeader(data);
328
- const encryptedMessage = data.slice(header.headerSize);
329
- return {
330
- ...header,
331
- encryptedMessage,
332
- };
333
- }
334
- arraysEqual(a, b) {
335
- if (a.length !== b.length)
336
- return false;
337
- for (let i = 0; i < a.length; i++) {
338
- if (a[i] !== b[i])
339
- return false;
340
- }
341
- return true;
342
- }
343
- }
344
- //# sourceMappingURL=multi-recipient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-recipient.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/services/ecies/multi-recipient.ts"],"names":[],"mappings":"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"}