@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
@@ -0,0 +1,370 @@
1
+ import { IECIESConstants } from '../../interfaces/ecies-consts';
2
+ import { Constants } from '../../constants';
3
+ import {
4
+ EciesEncryptionType,
5
+ EciesEncryptionTypeEnum,
6
+ } from '../../enumerations/ecies-encryption-type';
7
+ import { IECIESConfig } from '../../interfaces/ecies-config';
8
+ import { SecureString } from '../../secure-string';
9
+ import { SignatureString, SignatureUint8Array } from '../../types';
10
+ import { EciesCryptoCore } from './crypto-core';
11
+ import { IMultiEncryptedMessage, IMultiRecipient, ISimpleKeyPair, IWalletSeed } from './interfaces';
12
+ import { EciesSignature } from './signature';
13
+ import { EciesSingleRecipient } from './single-recipient';
14
+ import { getEciesI18nEngine, EciesComponentId } from '../../i18n-setup';
15
+ import { EciesStringKey } from '../../enumerations/ecies-string-key';
16
+ import { EciesMultiRecipient } from './multi-recipient';
17
+
18
+ /**
19
+ * Browser-compatible ECIES service that mirrors the server-side functionality
20
+ * Uses Web Crypto API and @scure/@noble libraries for browser compatibility
21
+ */
22
+ export class ECIESService {
23
+ protected readonly _config: IECIESConfig;
24
+ protected readonly cryptoCore: EciesCryptoCore;
25
+ protected readonly signature: EciesSignature;
26
+ protected readonly singleRecipient: EciesSingleRecipient;
27
+ protected readonly multiRecipient: EciesMultiRecipient;
28
+ protected readonly eciesConsts: IECIESConstants;
29
+
30
+ constructor(config?: Partial<IECIESConfig>, eciesParams: IECIESConstants = Constants.ECIES) {
31
+ this.eciesConsts = eciesParams;
32
+ this._config = {
33
+ curveName: this.eciesConsts.CURVE_NAME,
34
+ primaryKeyDerivationPath: this.eciesConsts.PRIMARY_KEY_DERIVATION_PATH,
35
+ mnemonicStrength: this.eciesConsts.MNEMONIC_STRENGTH,
36
+ symmetricAlgorithm: this.eciesConsts.SYMMETRIC.ALGORITHM,
37
+ symmetricKeyBits: this.eciesConsts.SYMMETRIC.KEY_BITS,
38
+ symmetricKeyMode: this.eciesConsts.SYMMETRIC.MODE,
39
+ ...config,
40
+ };
41
+
42
+ // Initialize components
43
+ this.cryptoCore = new EciesCryptoCore(this._config, this.eciesConsts);
44
+ this.signature = new EciesSignature(this.cryptoCore);
45
+ this.singleRecipient = new EciesSingleRecipient(this._config, this.eciesConsts);
46
+ this.multiRecipient = new EciesMultiRecipient(this._config, this.eciesConsts);
47
+ }
48
+
49
+ public get core(): EciesCryptoCore {
50
+ return this.cryptoCore;
51
+ }
52
+
53
+ public get config(): IECIESConfig {
54
+ return this._config;
55
+ }
56
+
57
+ public get curveName(): string {
58
+ return this._config.curveName;
59
+ }
60
+
61
+ // === Key Management Methods ===
62
+
63
+ /**
64
+ * Generate a new mnemonic
65
+ */
66
+ public generateNewMnemonic(): SecureString {
67
+ return this.cryptoCore.generateNewMnemonic();
68
+ }
69
+
70
+ /**
71
+ * Generate wallet and seed from mnemonic
72
+ */
73
+ public walletAndSeedFromMnemonic(mnemonic: SecureString): IWalletSeed {
74
+ return this.cryptoCore.walletAndSeedFromMnemonic(mnemonic);
75
+ }
76
+
77
+ /**
78
+ * Create simple key pair from seed
79
+ */
80
+ public seedToSimpleKeyPair(seed: Uint8Array): ISimpleKeyPair {
81
+ return this.cryptoCore.seedToSimpleKeyPair(seed);
82
+ }
83
+
84
+ /**
85
+ * Create simple key pair from mnemonic
86
+ */
87
+ public mnemonicToSimpleKeyPair(mnemonic: SecureString): ISimpleKeyPair {
88
+ return this.cryptoCore.mnemonicToSimpleKeyPair(mnemonic);
89
+ }
90
+
91
+ /**
92
+ * Get public key from private key
93
+ */
94
+ public getPublicKey(privateKey: Uint8Array): Uint8Array {
95
+ return this.cryptoCore.getPublicKey(privateKey);
96
+ }
97
+
98
+ // === Core Encryption/Decryption Methods ===
99
+
100
+ /**
101
+ * Encrypt for single recipient (simple or single mode)
102
+ */
103
+ public async encryptSimpleOrSingle(
104
+ encryptSimple: boolean,
105
+ receiverPublicKey: Uint8Array,
106
+ message: Uint8Array,
107
+ preamble: Uint8Array = new Uint8Array(0),
108
+ ): Promise<Uint8Array> {
109
+ return this.singleRecipient.encrypt(
110
+ encryptSimple,
111
+ receiverPublicKey,
112
+ message,
113
+ preamble,
114
+ );
115
+ }
116
+
117
+ /**
118
+ * Parse single encrypted header
119
+ */
120
+ public parseSingleEncryptedHeader(
121
+ encryptionType: EciesEncryptionTypeEnum,
122
+ data: Uint8Array,
123
+ preambleSize: number = 0,
124
+ options?: { dataLength?: number },
125
+ ) {
126
+ const { header } = this.singleRecipient.parseEncryptedMessage(
127
+ encryptionType,
128
+ data,
129
+ preambleSize,
130
+ options,
131
+ );
132
+ return header;
133
+ }
134
+
135
+ /**
136
+ * Decrypt with header
137
+ */
138
+ public async decryptSimpleOrSingleWithHeader(
139
+ decryptSimple: boolean,
140
+ privateKey: Uint8Array,
141
+ encryptedData: Uint8Array,
142
+ preambleSize: number = 0,
143
+ options?: { dataLength?: number },
144
+ ): Promise<Uint8Array> {
145
+ return await this.singleRecipient.decryptWithHeader(
146
+ decryptSimple
147
+ ? EciesEncryptionTypeEnum.Simple
148
+ : EciesEncryptionTypeEnum.Single,
149
+ privateKey,
150
+ encryptedData,
151
+ preambleSize,
152
+ options,
153
+ );
154
+ }
155
+
156
+ /**
157
+ * Extended decrypt with header
158
+ */
159
+ public async decryptSimpleOrSingleWithHeaderEx(
160
+ encryptionType: EciesEncryptionTypeEnum,
161
+ privateKey: Uint8Array,
162
+ encryptedData: Uint8Array,
163
+ preambleSize: number = 0,
164
+ options?: { dataLength?: number },
165
+ ) {
166
+ return this.singleRecipient.decryptWithHeaderEx(
167
+ encryptionType,
168
+ privateKey,
169
+ encryptedData,
170
+ preambleSize,
171
+ options,
172
+ );
173
+ }
174
+
175
+ /**
176
+ * Decrypt with individual components
177
+ */
178
+ public async decryptSingleWithComponents(
179
+ privateKey: Uint8Array,
180
+ ephemeralPublicKey: Uint8Array,
181
+ iv: Uint8Array,
182
+ authTag: Uint8Array,
183
+ encrypted: Uint8Array,
184
+ ): Promise<{ decrypted: Uint8Array; ciphertextLength?: number }> {
185
+ const decrypted = await this.singleRecipient.decryptWithComponents(
186
+ privateKey,
187
+ ephemeralPublicKey,
188
+ iv,
189
+ authTag,
190
+ encrypted,
191
+ );
192
+
193
+ return { decrypted, ciphertextLength: encrypted.length };
194
+ }
195
+
196
+ // === Signature Methods ===
197
+
198
+ /**
199
+ * Sign a message
200
+ */
201
+ public signMessage(
202
+ privateKey: Uint8Array,
203
+ data: Uint8Array,
204
+ ): SignatureUint8Array {
205
+ return this.signature.signMessage(privateKey, data);
206
+ }
207
+
208
+ /**
209
+ * Verify a message signature
210
+ */
211
+ public verifyMessage(
212
+ publicKey: Uint8Array,
213
+ data: Uint8Array,
214
+ signature: SignatureUint8Array,
215
+ ): boolean {
216
+ return this.signature.verifyMessage(publicKey, data, signature);
217
+ }
218
+
219
+ /**
220
+ * Convert signature string to buffer
221
+ */
222
+ public signatureStringToSignatureUint8Array(
223
+ signatureString: SignatureString,
224
+ ): SignatureUint8Array {
225
+ return this.signature.signatureStringToSignatureUint8Array(signatureString);
226
+ }
227
+
228
+ /**
229
+ * Convert signature buffer to string
230
+ */
231
+ public signatureUint8ArrayToSignatureString(
232
+ signatureArray: SignatureUint8Array,
233
+ ): string {
234
+ return this.signature.signatureUint8ArrayToSignatureString(signatureArray);
235
+ }
236
+
237
+ // === Utility Methods ===
238
+
239
+ /**
240
+ * Compute encrypted length from data length
241
+ */
242
+ public computeEncryptedLengthFromDataLength(
243
+ dataLength: number,
244
+ encryptionMode: EciesEncryptionType,
245
+ recipientCount?: number,
246
+ ): number {
247
+ if (dataLength < 0) {
248
+ const engine = getEciesI18nEngine();
249
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Service_InvalidDataLength));
250
+ }
251
+
252
+ switch (encryptionMode) {
253
+ case 'simple':
254
+ return dataLength + this.eciesConsts.SIMPLE.FIXED_OVERHEAD_SIZE;
255
+ case 'single':
256
+ return dataLength + this.eciesConsts.SINGLE.FIXED_OVERHEAD_SIZE;
257
+ case 'multiple':
258
+ // Basic calculation for multiple recipients
259
+ return (
260
+ dataLength +
261
+ this.eciesConsts.MULTIPLE.FIXED_OVERHEAD_SIZE +
262
+ (recipientCount ?? 1) * this.eciesConsts.MULTIPLE.ENCRYPTED_KEY_SIZE
263
+ );
264
+ default:
265
+ const engine = getEciesI18nEngine();
266
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Service_InvalidEncryptionType));
267
+ }
268
+ }
269
+
270
+ /**
271
+ * Compute decrypted length from encrypted data length
272
+ */
273
+ public computeDecryptedLengthFromEncryptedDataLength(
274
+ encryptedDataLength: number,
275
+ padding?: number,
276
+ ): number {
277
+ if (encryptedDataLength < 0) {
278
+ const engine = getEciesI18nEngine();
279
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Service_InvalidEncryptedDataLength));
280
+ }
281
+
282
+ const overhead = this.eciesConsts.SINGLE.FIXED_OVERHEAD_SIZE;
283
+ const actualPadding = padding !== undefined ? padding : 0;
284
+ const decryptedLength = encryptedDataLength - overhead - actualPadding;
285
+
286
+ if (decryptedLength < 0) {
287
+ const engine = getEciesI18nEngine();
288
+ throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Service_ComputedDecryptedLengthNegative));
289
+ }
290
+
291
+ return decryptedLength;
292
+ }
293
+
294
+ /**
295
+ * Generic encrypt method
296
+ */
297
+ public async encrypt(
298
+ encryptionType: EciesEncryptionTypeEnum,
299
+ recipientPublicKey: Uint8Array,
300
+ message: Uint8Array,
301
+ preamble?: Uint8Array,
302
+ ): Promise<Uint8Array> {
303
+ if (encryptionType === EciesEncryptionTypeEnum.Multiple) {
304
+ throw new Error(
305
+ getEciesI18nEngine().translate(
306
+ EciesComponentId,
307
+ EciesStringKey.Error_ECIESError_MultipleEncryptionTypeNotSupportedInSingleRecipientMode,
308
+ ),
309
+ );
310
+ }
311
+ return this.singleRecipient.encrypt(
312
+ encryptionType === EciesEncryptionTypeEnum.Simple,
313
+ recipientPublicKey,
314
+ message,
315
+ preamble,
316
+ );
317
+ }
318
+ /**
319
+ * Encrypt for multiple recipients
320
+ * @param recipients
321
+ * @param message
322
+ * @param preamble
323
+ * @returns
324
+ */
325
+ public async encryptMultiple(
326
+ recipients: Array<IMultiRecipient>,
327
+ message: Uint8Array,
328
+ preamble?: Uint8Array,
329
+ ): Promise<IMultiEncryptedMessage> {
330
+ return this.multiRecipient.encryptMultiple(
331
+ recipients,
332
+ message,
333
+ preamble,
334
+ );
335
+ }
336
+
337
+ /**
338
+ * Encrypt a symmetric key for a recipient using an ephemeral private key
339
+ */
340
+ public async encryptKey(
341
+ receiverPublicKey: Uint8Array,
342
+ messageSymmetricKey: Uint8Array,
343
+ ephemeralPrivateKey: Uint8Array,
344
+ aad?: Uint8Array,
345
+ ): Promise<Uint8Array> {
346
+ return this.multiRecipient.encryptKey(
347
+ receiverPublicKey,
348
+ messageSymmetricKey,
349
+ ephemeralPrivateKey,
350
+ aad,
351
+ );
352
+ }
353
+
354
+ /**
355
+ * Decrypt a symmetric key using an ephemeral public key
356
+ */
357
+ public async decryptKey(
358
+ privateKey: Uint8Array,
359
+ encryptedKey: Uint8Array,
360
+ ephemeralPublicKey: Uint8Array,
361
+ aad?: Uint8Array,
362
+ ): Promise<Uint8Array> {
363
+ return this.multiRecipient.decryptKey(
364
+ privateKey,
365
+ encryptedKey,
366
+ ephemeralPublicKey,
367
+ aad,
368
+ );
369
+ }
370
+ }
@@ -0,0 +1,93 @@
1
+ import { secp256k1 } from '@noble/curves/secp256k1.js';
2
+ import { sha256 } from '@noble/hashes/sha2.js';
3
+ import { SignatureString, SignatureUint8Array } from '../../types';
4
+ import { uint8ArrayToHex } from '../../utils';
5
+ import { EciesCryptoCore } from './crypto-core';
6
+
7
+ /**
8
+ * Browser-compatible ECDSA signature operations
9
+ */
10
+ export class EciesSignature {
11
+ private readonly cryptoCore: EciesCryptoCore;
12
+
13
+ constructor(cryptoCore: EciesCryptoCore) {
14
+ this.cryptoCore = cryptoCore;
15
+ }
16
+
17
+ /**
18
+ * Sign arbitrary binary data with a secp256k1 private key.
19
+ * Returns 64 bytes: [r(32) | s(32)]
20
+ */
21
+ public signMessage(
22
+ privateKey: Uint8Array,
23
+ data: Uint8Array,
24
+ ): SignatureUint8Array {
25
+ const hash = sha256(data);
26
+ // Use deterministic signatures (RFC 6979) for consistency
27
+ const signature = secp256k1.sign(hash, privateKey, {
28
+ format: 'compact',
29
+ extraEntropy: false,
30
+ });
31
+ return signature as SignatureUint8Array;
32
+ }
33
+
34
+ /**
35
+ * Verify signature (64 bytes: [r|s]) over arbitrary binary data against a public key.
36
+ */
37
+ public verifyMessage(
38
+ publicKey: Uint8Array,
39
+ data: Uint8Array,
40
+ signature: SignatureUint8Array,
41
+ ): boolean {
42
+ try {
43
+ if (!signature || signature.length !== 64) return false;
44
+ const hash = sha256(data);
45
+ const normalizedPublicKey = this.cryptoCore.normalizePublicKey(publicKey);
46
+
47
+ // Try direct verification first
48
+ try {
49
+ const directResult = secp256k1.verify(
50
+ signature,
51
+ hash,
52
+ normalizedPublicKey,
53
+ );
54
+ if (directResult) return true;
55
+ } catch {
56
+ // Continue to alternative verification methods
57
+ }
58
+
59
+ // If direct verification fails, the signature might be from a different library
60
+ // that uses different nonce generation. Since we can't make @noble/curves
61
+ // verify signatures from ethereumjs-util directly, we'll return false here.
62
+ // The calling code should handle cross-platform verification at a higher level.
63
+
64
+ return false;
65
+ } catch (err) {
66
+ console.error('Signature verification failed:', err);
67
+ return false;
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Convert signature string to signature Uint8Array
73
+ */
74
+ public signatureStringToSignatureUint8Array(
75
+ signatureString: SignatureString,
76
+ ): SignatureUint8Array {
77
+ const cleanHex = signatureString.replace(/^0x/, '');
78
+ const result = new Uint8Array(cleanHex.length / 2);
79
+ for (let i = 0; i < cleanHex.length; i += 2) {
80
+ result[i / 2] = parseInt(cleanHex.substring(i, i + 2), 16);
81
+ }
82
+ return result as SignatureUint8Array;
83
+ }
84
+
85
+ /**
86
+ * Convert signature buffer to signature string
87
+ */
88
+ public signatureUint8ArrayToSignatureString(
89
+ signatureArray: SignatureUint8Array,
90
+ ): SignatureString {
91
+ return uint8ArrayToHex(signatureArray) as SignatureString;
92
+ }
93
+ }