@digitaldefiance/ecies-lib 4.4.13 → 4.4.15

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 (597) hide show
  1. package/package.json +5 -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 +34 -0
  5. package/src/builders/ecies-builder.js.map +1 -0
  6. package/src/builders/{index.ts → index.d.ts} +1 -1
  7. package/src/builders/index.d.ts.map +1 -0
  8. package/src/builders/index.js +9 -0
  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 +101 -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 +457 -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 +60 -0
  21. package/src/core/errors/crypto-error.js.map +1 -0
  22. package/src/core/{index.ts → index.d.ts} +1 -1
  23. package/src/core/index.d.ts.map +1 -0
  24. package/src/core/index.js +9 -0
  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 +16 -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 +72 -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 +16 -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 +9 -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 +30 -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 +48 -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 +202 -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 +8 -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 +31 -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 +11 -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 +47 -0
  69. package/src/enumerations/id-provider-error-type.js.map +1 -0
  70. package/src/enumerations/{index.ts → index.d.ts} +1 -0
  71. package/src/enumerations/index.d.ts.map +1 -0
  72. package/src/enumerations/index.js +21 -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 +10 -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 +11 -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 +10 -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 +91 -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 +19 -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 +9 -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 +10 -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 +10 -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 +10 -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 +32 -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 +82 -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 +100 -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 +33 -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 +13 -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 +19 -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 +15 -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 +15 -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 +15 -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 +16 -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 +16 -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 +11 -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 +109 -0
  161. package/src/i18n-setup.js.map +1 -0
  162. package/src/{index.ts → index.d.ts} +12 -72
  163. package/src/index.d.ts.map +1 -0
  164. package/src/index.js +146 -0
  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 +3 -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 +3 -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 +8 -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 +3 -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 +3 -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 +3 -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 +3 -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 +15 -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 +5 -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 +3 -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 +3 -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 +56 -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 +16 -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 +22 -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 +3 -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 +3 -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 +3 -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 +3 -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 +16 -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 +3 -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 +3 -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 +3 -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 +11 -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 +12 -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 +3 -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 +30 -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 +50 -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 +919 -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 +89 -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 +126 -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 +37 -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 +108 -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 +114 -0
  297. package/src/lib/id-providers/uuid-provider.js.map +1 -0
  298. package/src/lib/{index.ts → index.d.ts} +2 -2
  299. package/src/lib/index.d.ts.map +1 -0
  300. package/src/lib/index.js +9 -0
  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 +101 -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 +53 -0
  309. package/src/lib/invariants/encryption-algorithm-consistency.js.map +1 -0
  310. package/src/lib/invariants/{index.ts → index.d.ts} +1 -0
  311. package/src/lib/invariants/index.d.ts.map +1 -0
  312. package/src/lib/invariants/index.js +7 -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 +62 -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 +35 -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 +45 -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 +327 -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 +3 -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 +22 -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 +10 -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 +205 -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 +210 -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 +146 -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 +149 -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 +209 -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 +128 -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 +110 -0
  369. package/src/services/ecies/file.js.map +1 -0
  370. package/src/services/ecies/{index.ts → index.d.ts} +1 -3
  371. package/src/services/ecies/index.d.ts.map +1 -0
  372. package/src/services/ecies/index.js +44 -0
  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 +172 -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 +6 -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 +171 -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 +348 -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 +214 -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 +76 -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 +326 -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 +299 -0
  405. package/src/services/encryption-stream.js.map +1 -0
  406. package/src/services/{index.ts → index.d.ts} +1 -0
  407. package/src/services/index.d.ts.map +1 -0
  408. package/src/services/index.js +14 -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 +293 -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 +119 -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 +112 -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 +107 -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 +109 -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 +67 -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 +5 -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 +194 -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.js +6 -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.js +207 -0
  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.js +207 -0
  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.js +207 -0
  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.js +207 -0
  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.js +206 -0
  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.js +209 -0
  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.js +206 -0
  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 +3 -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 +3 -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 +67 -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 +291 -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 -76
  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/testing.ts +0 -2
  588. package/src/translations/de.ts +0 -260
  589. package/src/translations/en-US.ts +0 -262
  590. package/src/translations/es.ts +0 -271
  591. package/src/translations/fr.ts +0 -269
  592. package/src/translations/ja.ts +0 -259
  593. package/src/translations/uk.ts +0 -271
  594. package/src/translations/zh-cn.ts +0 -234
  595. package/src/types/deep-partial.ts +0 -11
  596. package/src/utils/encryption-type-utils.ts +0 -76
  597. package/src/utils.ts +0 -329
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultiRecipientProcessor = void 0;
4
+ const multi_recipient_chunk_1 = require("../interfaces/multi-recipient-chunk");
5
+ const i18n_setup_1 = require("../i18n-setup");
6
+ const enumerations_1 = require("../enumerations");
7
+ const constants_1 = require("../constants");
8
+ const aes_gcm_1 = require("./aes-gcm");
9
+ const utils_1 = require("../utils");
10
+ /**
11
+ * Processes multi-recipient chunks using symmetric encryption.
12
+ * Supports dynamic recipient ID sizes based on the configured ID provider.
13
+ */
14
+ class MultiRecipientProcessor {
15
+ ecies;
16
+ config;
17
+ recipientIdSize;
18
+ constants;
19
+ /**
20
+ * Create a new multi-recipient processor.
21
+ * @param ecies - ECIES service for key encryption
22
+ * @param config - Configuration containing ID provider (defaults to global Constants)
23
+ */
24
+ constructor(ecies, config = constants_1.Constants) {
25
+ this.ecies = ecies;
26
+ this.config = config;
27
+ this.recipientIdSize = config.idProvider.byteLength;
28
+ this.constants = (0, multi_recipient_chunk_1.getMultiRecipientConstants)(this.recipientIdSize);
29
+ }
30
+ /**
31
+ * Encrypt chunk for multiple recipients
32
+ */
33
+ async encryptChunk(data, recipients, chunkIndex, isLast, symmetricKey, senderPrivateKey) {
34
+ // Validate inputs
35
+ const engine = (0, i18n_setup_1.getEciesI18nEngine)();
36
+ if (recipients.length === 0 || recipients.length > this.constants.MAX_RECIPIENTS) {
37
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_InvalidRecipientCountTemplate, { count: recipients.length }));
38
+ }
39
+ if (symmetricKey.length !== 32) {
40
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_SymmetricKeyMust32Bytes));
41
+ }
42
+ if (chunkIndex < 0 || chunkIndex > 0xFFFFFFFF) {
43
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_InvalidChunkIndexTemplate, { index: chunkIndex }));
44
+ }
45
+ // Sign-then-Encrypt
46
+ let dataToEncrypt = data;
47
+ if (senderPrivateKey) {
48
+ const signature = this.ecies.core.sign(senderPrivateKey, data);
49
+ dataToEncrypt = (0, utils_1.concatUint8Arrays)(signature, data);
50
+ }
51
+ if (dataToEncrypt.length > 0x7FFFFFFF) {
52
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_DataSizeExceedsMaximumTemplate, { size: dataToEncrypt.length }));
53
+ }
54
+ // Check for duplicate recipient IDs
55
+ const seenIds = new Set();
56
+ for (const recipient of recipients) {
57
+ const idStr = Buffer.from(recipient.id).toString('hex');
58
+ if (seenIds.has(idStr)) {
59
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_DuplicateRecipientId));
60
+ }
61
+ seenIds.add(idStr);
62
+ }
63
+ // Generate ONE ephemeral key pair for all recipients
64
+ const ephemeralKeyPair = await this.ecies.core.generateEphemeralKeyPair();
65
+ // Build recipient headers
66
+ const recipientHeaders = [];
67
+ for (const recipient of recipients) {
68
+ if (recipient.id.length !== this.recipientIdSize) {
69
+ throw new Error(`Recipient ID must be ${this.recipientIdSize} bytes (configured by ID provider), got ${recipient.id.length} bytes`);
70
+ }
71
+ // Use Recipient ID as AAD for key encryption
72
+ const encryptedKey = await this.ecies.encryptKey(recipient.publicKey, symmetricKey, ephemeralKeyPair.privateKey, recipient.id);
73
+ recipientHeaders.push({
74
+ id: recipient.id,
75
+ keySize: encryptedKey.length,
76
+ encryptedKey,
77
+ });
78
+ }
79
+ // Calculate sizes with overflow check
80
+ let recipientHeadersSize = 0;
81
+ for (const h of recipientHeaders) {
82
+ const headerSize = this.recipientIdSize +
83
+ this.constants.KEY_SIZE_BYTES + h.keySize;
84
+ if (recipientHeadersSize + headerSize < recipientHeadersSize) {
85
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_RecipientHeadersSizeOverflow));
86
+ }
87
+ recipientHeadersSize += headerSize;
88
+ }
89
+ // Calculate encrypted size (Data + Tag)
90
+ // AES-GCM tag is 16 bytes
91
+ const encryptedSize = dataToEncrypt.length + 16;
92
+ const totalSize = this.constants.HEADER_SIZE +
93
+ recipientHeadersSize +
94
+ constants_1.Constants.ECIES.IV_SIZE + // IV
95
+ encryptedSize;
96
+ // Check for integer overflow (max safe: 2^31 - 1 for Uint8Array)
97
+ if (totalSize > 0x7FFFFFFF || totalSize < 0) {
98
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_ChunkSizeOverflow));
99
+ }
100
+ // Build chunk buffer
101
+ const chunk = new Uint8Array(totalSize);
102
+ const view = new DataView(chunk.buffer);
103
+ let offset = 0;
104
+ // Write header
105
+ view.setUint32(offset, this.constants.MAGIC, false);
106
+ offset += 4;
107
+ view.setUint16(offset, this.constants.VERSION, false);
108
+ offset += 2;
109
+ view.setUint16(offset, recipients.length, false);
110
+ offset += 2;
111
+ view.setUint32(offset, chunkIndex, false);
112
+ offset += 4;
113
+ view.setUint32(offset, dataToEncrypt.length, false); // Original Size (includes signature if present)
114
+ offset += 4;
115
+ view.setUint32(offset, encryptedSize, false);
116
+ offset += 4;
117
+ view.setUint8(offset, isLast ? this.constants.FLAG_IS_LAST : 0);
118
+ offset += 1;
119
+ // Write Ephemeral Public Key (33 bytes)
120
+ chunk.set(ephemeralKeyPair.publicKey, offset);
121
+ offset += 33;
122
+ // Padding to HEADER_SIZE (64 bytes)
123
+ offset = this.constants.HEADER_SIZE;
124
+ // Write recipient headers
125
+ for (const header of recipientHeaders) {
126
+ chunk.set(header.id, offset);
127
+ offset += this.recipientIdSize;
128
+ view.setUint16(offset, header.keySize, false);
129
+ offset += this.constants.KEY_SIZE_BYTES;
130
+ chunk.set(header.encryptedKey, offset);
131
+ offset += header.keySize;
132
+ }
133
+ // Extract the full header (including recipient headers) to use as AAD
134
+ const headerBytes = chunk.slice(0, offset);
135
+ // Encrypt data with AES-256-GCM using Header as AAD
136
+ const encryptResult = await aes_gcm_1.AESGCMService.encrypt(dataToEncrypt, symmetricKey, true, // Return tag separately
137
+ constants_1.Constants.ECIES, headerBytes // AAD
138
+ );
139
+ // Write IV
140
+ chunk.set(encryptResult.iv, offset);
141
+ offset += constants_1.Constants.ECIES.IV_SIZE;
142
+ // Write encrypted data
143
+ chunk.set(encryptResult.encrypted, offset);
144
+ offset += encryptResult.encrypted.length;
145
+ // Write auth tag
146
+ if (encryptResult.tag) {
147
+ chunk.set(encryptResult.tag, offset);
148
+ }
149
+ return {
150
+ index: chunkIndex,
151
+ data: chunk,
152
+ isLast,
153
+ recipientCount: recipients.length,
154
+ };
155
+ }
156
+ /**
157
+ * Decrypt chunk for specific recipient
158
+ */
159
+ async decryptChunk(chunkData, recipientId, privateKey, senderPublicKey) {
160
+ const engine = (0, i18n_setup_1.getEciesI18nEngine)();
161
+ if (chunkData.length < this.constants.HEADER_SIZE) {
162
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_ChunkTooSmall));
163
+ }
164
+ const view = new DataView(chunkData.buffer, chunkData.byteOffset);
165
+ let offset = 0;
166
+ // Parse header
167
+ const magic = view.getUint32(offset, false);
168
+ offset += 4;
169
+ if (magic !== this.constants.MAGIC) {
170
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_InvalidChunkMagic));
171
+ }
172
+ const version = view.getUint16(offset, false);
173
+ offset += 2;
174
+ if (version !== this.constants.VERSION) {
175
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_UnsupportedVersionTemplate, { version }));
176
+ }
177
+ const recipientCount = view.getUint16(offset, false);
178
+ offset += 2;
179
+ if (recipientCount === 0 || recipientCount > this.constants.MAX_RECIPIENTS) {
180
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_InvalidRecipientCountTemplate, { count: recipientCount }));
181
+ }
182
+ const chunkIndex = view.getUint32(offset, false);
183
+ offset += 4;
184
+ const originalSize = view.getUint32(offset, false);
185
+ offset += 4;
186
+ const encryptedSize = view.getUint32(offset, false);
187
+ offset += 4;
188
+ const flags = view.getUint8(offset);
189
+ offset += 1;
190
+ // Read Ephemeral Public Key (33 bytes)
191
+ const ephemeralPublicKey = chunkData.slice(offset, offset + 33);
192
+ offset += 33;
193
+ offset = this.constants.HEADER_SIZE;
194
+ // Validate encryptedSize against chunk size
195
+ // We know it must be at least HEADER + IV + EncryptedSize (which includes tag)
196
+ const minChunkSize = this.constants.HEADER_SIZE + constants_1.Constants.ECIES.IV_SIZE + encryptedSize;
197
+ if (chunkData.length < minChunkSize) {
198
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_ChunkTooSmallForEncryptedSize));
199
+ }
200
+ // Find recipient header and decrypt symmetric key
201
+ let symmetricKey = null;
202
+ let tempOffset = offset;
203
+ for (let i = 0; i < recipientCount; i++) {
204
+ // Check if we have enough data for recipient ID
205
+ if (tempOffset + this.recipientIdSize > chunkData.length) {
206
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_ChunkTruncatedRecipientId));
207
+ }
208
+ const id = chunkData.slice(tempOffset, tempOffset + this.recipientIdSize);
209
+ tempOffset += this.recipientIdSize;
210
+ // Check if we have enough data for keySize field
211
+ if (tempOffset + this.constants.KEY_SIZE_BYTES > chunkData.length) {
212
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_ChunkTruncatedKeySize));
213
+ }
214
+ const keySize = view.getUint16(tempOffset, false);
215
+ tempOffset += this.constants.KEY_SIZE_BYTES;
216
+ // Validate keySize (typical ECIES: 100-400 bytes)
217
+ if (keySize === 0 || keySize > 1000) {
218
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_InvalidKeySizeTemplate, { size: keySize }));
219
+ }
220
+ // Check if we have enough data for the encrypted key
221
+ if (tempOffset + keySize > chunkData.length) {
222
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_ChunkTruncatedEncryptedKey));
223
+ }
224
+ const encryptedKey = chunkData.slice(tempOffset, tempOffset + keySize);
225
+ tempOffset += keySize;
226
+ // Check if this is our recipient
227
+ if (this.arraysEqual(id, recipientId)) {
228
+ // Use Recipient ID as AAD for key decryption
229
+ symmetricKey = await this.ecies.decryptKey(privateKey, encryptedKey, ephemeralPublicKey, id);
230
+ // Don't break - need to skip all recipient headers
231
+ }
232
+ }
233
+ if (!symmetricKey) {
234
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_RecipientNotFoundInChunk));
235
+ }
236
+ // Update offset to after all recipient headers
237
+ offset = tempOffset;
238
+ // Extract header bytes for AAD
239
+ const headerBytes = chunkData.slice(0, offset);
240
+ // Read IV
241
+ if (offset + constants_1.Constants.ECIES.IV_SIZE > chunkData.length) {
242
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_ChunkTooSmall));
243
+ }
244
+ const iv = chunkData.slice(offset, offset + constants_1.Constants.ECIES.IV_SIZE);
245
+ offset += constants_1.Constants.ECIES.IV_SIZE;
246
+ // Read encrypted data (includes auth tag)
247
+ if (offset + encryptedSize > chunkData.length) {
248
+ throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_MultiRecipient_ChunkTooSmall));
249
+ }
250
+ const encryptedWithTag = chunkData.slice(offset, offset + encryptedSize);
251
+ offset += encryptedSize;
252
+ // Decrypt with AAD
253
+ const decrypted = await aes_gcm_1.AESGCMService.decrypt(iv, encryptedWithTag, symmetricKey, true, constants_1.Constants.ECIES, headerBytes);
254
+ // Verify signature if sender public key provided
255
+ let finalData = decrypted;
256
+ if (senderPublicKey) {
257
+ if (decrypted.length < 64) {
258
+ throw new Error('Decrypted chunk too short to contain signature');
259
+ }
260
+ const signature = decrypted.slice(0, 64);
261
+ const message = decrypted.slice(64);
262
+ const isValid = this.ecies.core.verify(senderPublicKey, message, signature);
263
+ if (!isValid) {
264
+ throw new Error('Invalid sender signature in chunk');
265
+ }
266
+ finalData = message;
267
+ }
268
+ return {
269
+ data: finalData,
270
+ header: {
271
+ magic,
272
+ version,
273
+ recipientCount,
274
+ chunkIndex,
275
+ originalSize,
276
+ encryptedSize,
277
+ flags,
278
+ },
279
+ };
280
+ }
281
+ arraysEqual(a, b) {
282
+ if (a.length !== b.length)
283
+ return false;
284
+ // Constant-time comparison to prevent timing attacks
285
+ let diff = 0;
286
+ for (let i = 0; i < a.length; i++) {
287
+ diff |= a[i] ^ b[i];
288
+ }
289
+ return diff === 0;
290
+ }
291
+ }
292
+ exports.MultiRecipientProcessor = MultiRecipientProcessor;
293
+ //# sourceMappingURL=multi-recipient-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-recipient-processor.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/multi-recipient-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Wallet } from '@ethereumjs/wallet';
2
+ import { Pbkdf2ProfileEnum } from '../enumerations/pbkdf2-profile';
3
+ import { SecureString } from '../secure-string';
4
+ import { ECIESService } from './ecies/service';
5
+ import { Pbkdf2Service } from './pbkdf2';
6
+ import { IECIESConstants } from '../interfaces/ecies-consts';
7
+ export declare class PasswordLoginService {
8
+ protected readonly eciesService: ECIESService;
9
+ protected readonly pbkdf2Service: Pbkdf2Service;
10
+ protected readonly eciesConsts: IECIESConstants;
11
+ static readonly privateKeyStorageKey = "encryptedPrivateKey";
12
+ static readonly saltStorageKey = "passwordLoginSalt";
13
+ static readonly encryptedMnemonicStorageKey = "encryptedMnemonic";
14
+ static readonly profileStorageKey = "pbkdf2Profile";
15
+ constructor(eciesService: ECIESService, pbkdf2Service: Pbkdf2Service, eciesParams?: IECIESConstants);
16
+ createPasswordLoginBundle(mnemonic: SecureString, password: SecureString, profile?: Pbkdf2ProfileEnum): Promise<{
17
+ salt: Uint8Array;
18
+ encryptedPrivateKey: Uint8Array;
19
+ encryptedMnemonic: Uint8Array;
20
+ wallet: Wallet;
21
+ }>;
22
+ /**
23
+ * Set up password login by deriving a key from the password and using it to encrypt
24
+ * @param mnemonic The user's mnemonic
25
+ * @param password The user's password
26
+ */
27
+ setupPasswordLoginLocalStorageBundle(mnemonic: SecureString, password: SecureString, profile?: Pbkdf2ProfileEnum): Promise<Wallet>;
28
+ getWalletAndMnemonicFromEncryptedPasswordBundle(salt: Uint8Array, encryptedPrivateKey: Uint8Array, encryptedMnemonic: Uint8Array, password: SecureString, profile?: Pbkdf2ProfileEnum): Promise<{
29
+ wallet: Wallet;
30
+ mnemonic: SecureString;
31
+ }>;
32
+ /**
33
+ * Recover wallet and mnemonic from password
34
+ * @param password The user's password
35
+ * @returns The user's wallet and mnemonic
36
+ */
37
+ getWalletAndMnemonicFromLocalStorageBundle(password: SecureString): Promise<{
38
+ wallet: Wallet;
39
+ mnemonic: SecureString;
40
+ }>;
41
+ /**
42
+ *
43
+ * @returns True if password login is set up (i.e. salt and encrypted private key are in local storage)
44
+ */
45
+ static isPasswordLoginSetup(): boolean;
46
+ }
47
+ //# sourceMappingURL=password-login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-login.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/password-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAK7D,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAChD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAChD,gBAAuB,oBAAoB,yBAAyB;IACpE,gBAAuB,cAAc,uBAAuB;IAC5D,gBAAuB,2BAA2B,uBAAuB;IACzE,gBAAuB,iBAAiB,mBAAmB;gBAE/C,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,GAAE,eAAiC;IAMvG,yBAAyB,CACpC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,iBAAsD,GAC9D,OAAO,CAAC;QACT,IAAI,EAAE,UAAU,CAAC;QACjB,mBAAmB,EAAE,UAAU,CAAC;QAChC,iBAAiB,EAAE,UAAU,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAwCF;;;;OAIG;IACU,oCAAoC,CAC/C,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,iBAAsD,GAC9D,OAAO,CAAC,MAAM,CAAC;IA4BL,+CAA+C,CAC1D,IAAI,EAAE,UAAU,EAChB,mBAAmB,EAAE,UAAU,EAC/B,iBAAiB,EAAE,UAAU,EAC7B,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,iBAAsD,GAC9D,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IAuCtD;;;;OAIG;IACU,0CAA0C,CACrD,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IAmCtD;;;OAGG;WACW,oBAAoB,IAAI,OAAO;CAkB9C"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PasswordLoginService = void 0;
4
+ const wallet_1 = require("@ethereumjs/wallet");
5
+ const ecies_encryption_type_1 = require("../enumerations/ecies-encryption-type");
6
+ const pbkdf2_profile_1 = require("../enumerations/pbkdf2-profile");
7
+ const secure_string_1 = require("../secure-string");
8
+ const utils_1 = require("../utils");
9
+ const aes_gcm_1 = require("./aes-gcm");
10
+ const enumerations_1 = require("../enumerations");
11
+ const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
12
+ const constants_1 = require("../constants");
13
+ const i18n_setup_1 = require("../i18n-setup");
14
+ class PasswordLoginService {
15
+ eciesService;
16
+ pbkdf2Service;
17
+ eciesConsts;
18
+ static privateKeyStorageKey = 'encryptedPrivateKey';
19
+ static saltStorageKey = 'passwordLoginSalt';
20
+ static encryptedMnemonicStorageKey = 'encryptedMnemonic';
21
+ static profileStorageKey = 'pbkdf2Profile';
22
+ constructor(eciesService, pbkdf2Service, eciesParams = constants_1.Constants.ECIES) {
23
+ this.eciesService = eciesService;
24
+ this.pbkdf2Service = pbkdf2Service;
25
+ this.eciesConsts = eciesParams;
26
+ }
27
+ async createPasswordLoginBundle(mnemonic, password, profile = pbkdf2_profile_1.Pbkdf2ProfileEnum.BROWSER_PASSWORD) {
28
+ const { wallet } = this.eciesService.walletAndSeedFromMnemonic(mnemonic);
29
+ const derivedKey = await this.pbkdf2Service.deriveKeyFromPasswordWithProfileAsync(password.valueAsUint8Array, profile);
30
+ // Encrypt private key with derived key
31
+ const privateKeyBytes = wallet.getPrivateKey();
32
+ const { encrypted, iv, tag } = await aes_gcm_1.AESGCMService.encrypt(privateKeyBytes, derivedKey.hash, true);
33
+ if (!tag) {
34
+ throw new i18n_lib_1.TranslatableGenericError(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_Utils_EncryptionFailedNoAuthTag);
35
+ }
36
+ const encryptedPrivateKey = aes_gcm_1.AESGCMService.combineIvTagAndEncryptedData(iv, encrypted, tag);
37
+ // now use the public key to encrypt the mnemonic and store it
38
+ const encryptedMnemonic = await this.eciesService.encrypt(ecies_encryption_type_1.EciesEncryptionTypeEnum.Simple, wallet.getPublicKey(), mnemonic.valueAsUint8Array);
39
+ return {
40
+ salt: derivedKey.salt,
41
+ encryptedPrivateKey: encryptedPrivateKey,
42
+ encryptedMnemonic: encryptedMnemonic,
43
+ wallet,
44
+ };
45
+ }
46
+ /**
47
+ * Set up password login by deriving a key from the password and using it to encrypt
48
+ * @param mnemonic The user's mnemonic
49
+ * @param password The user's password
50
+ */
51
+ async setupPasswordLoginLocalStorageBundle(mnemonic, password, profile = pbkdf2_profile_1.Pbkdf2ProfileEnum.BROWSER_PASSWORD) {
52
+ const { salt, encryptedPrivateKey, encryptedMnemonic, wallet } = await this.createPasswordLoginBundle(mnemonic, password, profile);
53
+ // store the salt and encrypted private key in local storage
54
+ try {
55
+ localStorage.setItem(PasswordLoginService.saltStorageKey, (0, utils_1.uint8ArrayToHex)(salt));
56
+ localStorage.setItem(PasswordLoginService.privateKeyStorageKey, (0, utils_1.uint8ArrayToHex)(encryptedPrivateKey));
57
+ localStorage.setItem(PasswordLoginService.encryptedMnemonicStorageKey, (0, utils_1.uint8ArrayToHex)(encryptedMnemonic));
58
+ localStorage.setItem(PasswordLoginService.profileStorageKey, profile);
59
+ }
60
+ catch (error) {
61
+ throw new i18n_lib_1.TypedHandleableError(i18n_setup_1.EciesComponentId, enumerations_1.PasswordLoginErrorTypeEnum.FailedToStoreLoginData, (0, i18n_lib_1.buildReasonMap)(enumerations_1.PasswordLoginErrorTypeEnum, ['Error', 'PasswordLoginError']), new Error(), { cause: error instanceof Error ? error : undefined });
62
+ }
63
+ return wallet;
64
+ }
65
+ async getWalletAndMnemonicFromEncryptedPasswordBundle(salt, encryptedPrivateKey, encryptedMnemonic, password, profile = pbkdf2_profile_1.Pbkdf2ProfileEnum.BROWSER_PASSWORD) {
66
+ if (!salt || !encryptedPrivateKey || !encryptedMnemonic) {
67
+ throw new i18n_lib_1.TypedHandleableError(i18n_setup_1.EciesComponentId, enumerations_1.PasswordLoginErrorTypeEnum.PasswordLoginNotSetUp, (0, i18n_lib_1.buildReasonMap)(enumerations_1.PasswordLoginErrorTypeEnum, ['Error', 'PasswordLoginError']), new Error());
68
+ }
69
+ const derivedKey = await this.pbkdf2Service.deriveKeyFromPasswordWithProfileAsync(password.valueAsUint8Array, profile, salt);
70
+ // Decrypt private key with derived key
71
+ const { iv, encryptedDataWithTag } = aes_gcm_1.AESGCMService.splitEncryptedData(encryptedPrivateKey, true, this.eciesConsts);
72
+ const privateKeyBytes = await aes_gcm_1.AESGCMService.decrypt(iv, encryptedDataWithTag, derivedKey.hash, true, this.eciesConsts);
73
+ const wallet = wallet_1.Wallet.fromPrivateKey(privateKeyBytes);
74
+ // now decrypt the mnemonic
75
+ const decryptedMnemonic = await this.eciesService.decryptSimpleOrSingleWithHeader(true, wallet.getPrivateKey(), encryptedMnemonic);
76
+ return { wallet, mnemonic: new secure_string_1.SecureString(decryptedMnemonic) };
77
+ }
78
+ /**
79
+ * Recover wallet and mnemonic from password
80
+ * @param password The user's password
81
+ * @returns The user's wallet and mnemonic
82
+ */
83
+ async getWalletAndMnemonicFromLocalStorageBundle(password) {
84
+ const saltHex = localStorage.getItem(PasswordLoginService.saltStorageKey);
85
+ const encryptedPrivateKeyHex = localStorage.getItem(PasswordLoginService.privateKeyStorageKey);
86
+ const encryptedMnemonicHex = localStorage.getItem(PasswordLoginService.encryptedMnemonicStorageKey);
87
+ const profileStr = localStorage.getItem(PasswordLoginService.profileStorageKey);
88
+ if (!saltHex ||
89
+ !encryptedPrivateKeyHex ||
90
+ !encryptedMnemonicHex ||
91
+ saltHex === '' ||
92
+ encryptedPrivateKeyHex === '' ||
93
+ encryptedMnemonicHex === '') {
94
+ throw new i18n_lib_1.TypedHandleableError(i18n_setup_1.EciesComponentId, enumerations_1.PasswordLoginErrorTypeEnum.PasswordLoginNotSetUp, (0, i18n_lib_1.buildReasonMap)(enumerations_1.PasswordLoginErrorTypeEnum, ['Error', 'PasswordLoginError']), new Error());
95
+ }
96
+ const salt = (0, utils_1.hexToUint8Array)(saltHex);
97
+ const encryptedPrivateKey = (0, utils_1.hexToUint8Array)(encryptedPrivateKeyHex);
98
+ const encryptedMnemonic = (0, utils_1.hexToUint8Array)(encryptedMnemonicHex);
99
+ const profile = profileStr || pbkdf2_profile_1.Pbkdf2ProfileEnum.BROWSER_PASSWORD;
100
+ return await this.getWalletAndMnemonicFromEncryptedPasswordBundle(salt, encryptedPrivateKey, encryptedMnemonic, password, profile);
101
+ }
102
+ /**
103
+ *
104
+ * @returns True if password login is set up (i.e. salt and encrypted private key are in local storage)
105
+ */
106
+ static isPasswordLoginSetup() {
107
+ const saltHex = localStorage.getItem(PasswordLoginService.saltStorageKey);
108
+ const encryptedPrivateKeyHex = localStorage.getItem(PasswordLoginService.privateKeyStorageKey);
109
+ const encryptedMnemonicHex = localStorage.getItem(PasswordLoginService.encryptedMnemonicStorageKey);
110
+ return !!(saltHex &&
111
+ encryptedPrivateKeyHex &&
112
+ encryptedMnemonicHex &&
113
+ saltHex !== '' &&
114
+ encryptedPrivateKeyHex !== '' &&
115
+ encryptedMnemonicHex !== '');
116
+ }
117
+ }
118
+ exports.PasswordLoginService = PasswordLoginService;
119
+ //# sourceMappingURL=password-login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-login.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/password-login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { Pbkdf2ProfileEnum } from '../enumerations/pbkdf2-profile';
2
+ import { IPbkdf2Config } from '../interfaces/pbkdf2-config';
3
+ import { IPbkdf2Result } from '../interfaces/pbkdf2-result';
4
+ import { IECIESConstants } from '../interfaces/ecies-consts';
5
+ import { IPBkdf2Consts } from '../interfaces/pbkdf2-consts';
6
+ /**
7
+ * Service for handling PBKDF2 (Password-Based Key Derivation Function 2) operations.
8
+ * This service provides functionality for:
9
+ * - Generating secure key derivation configurations
10
+ * - Deriving cryptographic keys from passwords
11
+ * - Managing salt and iteration parameters
12
+ * - Both synchronous and asynchronous key derivation
13
+ */
14
+ export declare class Pbkdf2Service {
15
+ protected readonly profiles: Record<string, IPbkdf2Config>;
16
+ protected readonly eciesConsts: IECIESConstants;
17
+ protected readonly pbkdf2Consts: IPBkdf2Consts;
18
+ constructor(profiles?: Record<string, IPbkdf2Config>, eciesParams?: IECIESConstants, pbkdf2Params?: IPBkdf2Consts);
19
+ /**
20
+ * Get a predefined configuration profile for common use cases
21
+ * @param profile The name of the profile to use
22
+ * @returns Configuration object for the specified profile
23
+ */
24
+ getProfileConfig(profile: string): IPbkdf2Config;
25
+ /**
26
+ * Generate an options object for pbkdf2
27
+ * @param iterations Optional number of iterations (defaults to Pbkdf2IterationsPerSecond)
28
+ * @param saltBytes Optional salt size in bytes (defaults to PBKDF2.SALT_BYTES)
29
+ * @param hashBytes Optional hash size in bytes (defaults to ECIES.SYMMETRIC.KEY_SIZE)
30
+ * @param algorithm Optional hash algorithm (defaults to PBKDF2.ALGORITHM)
31
+ * @returns Configuration object for PBKDF2
32
+ */
33
+ getConfig(iterations?: number, saltBytes?: number, hashBytes?: number, algorithm?: string): IPbkdf2Config;
34
+ /**
35
+ * Given a password, use pbkdf2 to generate an appropriately sized key for AES encryption
36
+ * @param password The password to derive a key from
37
+ * @param salt Optional salt (will be randomly generated if not provided)
38
+ * @param iterations Optional number of iterations
39
+ * @param saltBytes Optional salt size in bytes
40
+ * @param keySize Optional key size in bytes
41
+ * @param algorithm Optional hash algorithm
42
+ * @returns Object containing the derived key, salt, and iteration count
43
+ */
44
+ deriveKeyFromPasswordAsync(password: Uint8Array, salt?: Uint8Array, iterations?: number, saltBytes?: number, keySize?: number, algorithm?: string): Promise<IPbkdf2Result>;
45
+ /**
46
+ * Derive a key using a predefined configuration profile
47
+ * @param password The password to derive a key from
48
+ * @param profile The configuration profile to use
49
+ * @param salt Optional salt (will be randomly generated if not provided)
50
+ * @returns Object containing the derived key, salt, and iteration count
51
+ */
52
+ deriveKeyFromPasswordWithProfileAsync(password: Uint8Array, profile: Pbkdf2ProfileEnum, salt?: Uint8Array): Promise<IPbkdf2Result>;
53
+ }
54
+ //# sourceMappingURL=pbkdf2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/pbkdf2.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;;GAOG;AACH,qBAAa,aAAa;IACxB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAChD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;gBAG7C,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAA6B,EACnE,WAAW,GAAE,eAAiC,EAC9C,YAAY,GAAE,aAAgC;IAMhD;;;;OAIG;IACI,gBAAgB,CACrB,OAAO,EAAE,MAAM,GACd,aAAa;IAahB;;;;;;;OAOG;IACI,SAAS,CACd,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,aAAa;IAkBhB;;;;;;;;;OASG;IACU,0BAA0B,CACrC,QAAQ,EAAE,UAAU,EACpB,IAAI,CAAC,EAAE,UAAU,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IA8CzB;;;;;;OAMG;IACU,qCAAqC,CAChD,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,iBAAiB,EAC1B,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,aAAa,CAAC;CAW1B"}