@digitaldefiance/node-ecies-lib 4.4.8 → 4.4.10

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 (385) hide show
  1. package/package.json +6 -5
  2. package/src/builders/ecies-builder.d.ts +11 -0
  3. package/src/builders/ecies-builder.d.ts.map +1 -0
  4. package/src/builders/ecies-builder.js +26 -0
  5. package/src/builders/ecies-builder.js.map +1 -0
  6. package/src/builders/{index.ts → index.d.ts} +1 -0
  7. package/src/builders/index.d.ts.map +1 -0
  8. package/src/builders/index.js +6 -0
  9. package/src/builders/index.js.map +1 -0
  10. package/src/builders/member-builder.d.ts +47 -0
  11. package/src/builders/member-builder.d.ts.map +1 -0
  12. package/src/builders/member-builder.js +99 -0
  13. package/src/builders/member-builder.js.map +1 -0
  14. package/src/constants.d.ts +38 -0
  15. package/src/constants.d.ts.map +1 -0
  16. package/src/constants.js +183 -0
  17. package/src/constants.js.map +1 -0
  18. package/src/core/errors/crypto-error.d.ts +6 -0
  19. package/src/core/errors/crypto-error.d.ts.map +1 -0
  20. package/src/core/errors/crypto-error.js +15 -0
  21. package/src/core/errors/crypto-error.js.map +1 -0
  22. package/src/core/{index.ts → index.d.ts} +1 -0
  23. package/src/core/index.d.ts.map +1 -0
  24. package/src/core/index.js +6 -0
  25. package/src/core/index.js.map +1 -0
  26. package/src/core/types/result.d.ts +8 -0
  27. package/src/core/types/result.d.ts.map +1 -0
  28. package/src/core/types/result.js +3 -0
  29. package/src/core/types/result.js.map +1 -0
  30. package/src/enumerations/index.d.ts +2 -0
  31. package/src/enumerations/index.d.ts.map +1 -0
  32. package/src/enumerations/index.js +5 -0
  33. package/src/enumerations/index.js.map +1 -0
  34. package/src/enumerations/pbkdf2-profile.d.ts +9 -0
  35. package/src/enumerations/pbkdf2-profile.d.ts.map +1 -0
  36. package/src/enumerations/pbkdf2-profile.js +13 -0
  37. package/src/enumerations/pbkdf2-profile.js.map +1 -0
  38. package/src/i18n/ecies-i18n-factory.d.ts +28 -0
  39. package/src/i18n/ecies-i18n-factory.d.ts.map +1 -0
  40. package/src/i18n/ecies-i18n-factory.js +89 -0
  41. package/src/i18n/ecies-i18n-factory.js.map +1 -0
  42. package/src/i18n/{index.ts → index.d.ts} +1 -3
  43. package/src/i18n/index.d.ts.map +1 -0
  44. package/src/i18n/index.js +8 -0
  45. package/src/i18n/index.js.map +1 -0
  46. package/src/i18n/node-ecies-i18n-setup.d.ts +5 -0
  47. package/src/i18n/node-ecies-i18n-setup.d.ts.map +1 -0
  48. package/src/i18n/node-ecies-i18n-setup.js +46 -0
  49. package/src/i18n/node-ecies-i18n-setup.js.map +1 -0
  50. package/src/i18n/node-keys.d.ts +57 -0
  51. package/src/i18n/node-keys.d.ts.map +1 -0
  52. package/src/i18n/node-keys.js +67 -0
  53. package/src/i18n/node-keys.js.map +1 -0
  54. package/src/i18n/translations/de.d.ts +3 -0
  55. package/src/i18n/translations/de.d.ts.map +1 -0
  56. package/src/i18n/translations/de.js +57 -0
  57. package/src/i18n/translations/de.js.map +1 -0
  58. package/src/i18n/translations/en-GB.d.ts +3 -0
  59. package/src/i18n/translations/en-GB.d.ts.map +1 -0
  60. package/src/i18n/translations/en-GB.js +61 -0
  61. package/src/i18n/translations/en-GB.js.map +1 -0
  62. package/src/i18n/translations/en-US.d.ts +6 -0
  63. package/src/i18n/translations/en-US.d.ts.map +1 -0
  64. package/src/i18n/translations/en-US.js +65 -0
  65. package/src/i18n/translations/en-US.js.map +1 -0
  66. package/src/i18n/translations/es.d.ts +3 -0
  67. package/src/i18n/translations/es.d.ts.map +1 -0
  68. package/src/i18n/translations/es.js +57 -0
  69. package/src/i18n/translations/es.js.map +1 -0
  70. package/src/i18n/translations/fr.d.ts +3 -0
  71. package/src/i18n/translations/fr.d.ts.map +1 -0
  72. package/src/i18n/translations/fr.js +57 -0
  73. package/src/i18n/translations/fr.js.map +1 -0
  74. package/src/i18n/translations/{index.ts → index.d.ts} +1 -0
  75. package/src/i18n/translations/index.d.ts.map +1 -0
  76. package/src/i18n/translations/index.js +20 -0
  77. package/src/i18n/translations/index.js.map +1 -0
  78. package/src/i18n/translations/ja.d.ts +3 -0
  79. package/src/i18n/translations/ja.d.ts.map +1 -0
  80. package/src/i18n/translations/ja.js +57 -0
  81. package/src/i18n/translations/ja.js.map +1 -0
  82. package/src/i18n/translations/uk.d.ts +3 -0
  83. package/src/i18n/translations/uk.d.ts.map +1 -0
  84. package/src/i18n/translations/uk.js +57 -0
  85. package/src/i18n/translations/uk.js.map +1 -0
  86. package/src/i18n/translations/zh-cn.d.ts +3 -0
  87. package/src/i18n/translations/zh-cn.d.ts.map +1 -0
  88. package/src/i18n/translations/zh-cn.js +57 -0
  89. package/src/i18n/translations/zh-cn.js.map +1 -0
  90. package/src/{index.ts → index.d.ts} +1 -5
  91. package/src/index.d.ts.map +1 -0
  92. package/src/index.js +31 -0
  93. package/src/index.js.map +1 -0
  94. package/src/interfaces/authenticated-cipher.d.ts +12 -0
  95. package/src/interfaces/authenticated-cipher.d.ts.map +1 -0
  96. package/src/interfaces/authenticated-cipher.js +3 -0
  97. package/src/interfaces/authenticated-cipher.js.map +1 -0
  98. package/src/interfaces/authenticated-decipher.d.ts +11 -0
  99. package/src/interfaces/authenticated-decipher.d.ts.map +1 -0
  100. package/src/interfaces/authenticated-decipher.js +3 -0
  101. package/src/interfaces/authenticated-decipher.js.map +1 -0
  102. package/src/interfaces/backend-member-operational.d.ts +48 -0
  103. package/src/interfaces/backend-member-operational.d.ts.map +1 -0
  104. package/src/interfaces/backend-member-operational.js +3 -0
  105. package/src/interfaces/backend-member-operational.js.map +1 -0
  106. package/src/interfaces/checksum-config.d.ts +5 -0
  107. package/src/interfaces/checksum-config.d.ts.map +1 -0
  108. package/src/interfaces/checksum-config.js +3 -0
  109. package/src/interfaces/checksum-config.js.map +1 -0
  110. package/src/interfaces/checksum-consts.d.ts +11 -0
  111. package/src/interfaces/checksum-consts.d.ts.map +1 -0
  112. package/src/interfaces/checksum-consts.js +3 -0
  113. package/src/interfaces/checksum-consts.js.map +1 -0
  114. package/src/interfaces/constants.d.ts +52 -0
  115. package/src/interfaces/constants.d.ts.map +1 -0
  116. package/src/interfaces/constants.js +3 -0
  117. package/src/interfaces/constants.js.map +1 -0
  118. package/src/interfaces/ecies-consts.d.ts +88 -0
  119. package/src/interfaces/ecies-consts.d.ts.map +1 -0
  120. package/src/interfaces/ecies-consts.js +3 -0
  121. package/src/interfaces/ecies-consts.js.map +1 -0
  122. package/src/interfaces/encrypted-chunk.d.ts +12 -0
  123. package/src/interfaces/encrypted-chunk.d.ts.map +1 -0
  124. package/src/interfaces/encrypted-chunk.js +3 -0
  125. package/src/interfaces/encrypted-chunk.js.map +1 -0
  126. package/src/interfaces/encryption-consts.d.ts +11 -0
  127. package/src/interfaces/encryption-consts.d.ts.map +1 -0
  128. package/src/interfaces/encryption-consts.js +3 -0
  129. package/src/interfaces/encryption-consts.js.map +1 -0
  130. package/src/interfaces/{index.ts → index.d.ts} +1 -0
  131. package/src/interfaces/index.d.ts.map +1 -0
  132. package/src/interfaces/index.js +30 -0
  133. package/src/interfaces/index.js.map +1 -0
  134. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts +6 -0
  135. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts.map +1 -0
  136. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js +3 -0
  137. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js.map +1 -0
  138. package/src/interfaces/keyring-consts.d.ts +6 -0
  139. package/src/interfaces/keyring-consts.d.ts.map +1 -0
  140. package/src/interfaces/keyring-consts.js +3 -0
  141. package/src/interfaces/keyring-consts.js.map +1 -0
  142. package/src/interfaces/{member-with-mnemonic.ts → member-with-mnemonic.d.ts} +3 -3
  143. package/src/interfaces/member-with-mnemonic.d.ts.map +1 -0
  144. package/src/interfaces/member-with-mnemonic.js +3 -0
  145. package/src/interfaces/member-with-mnemonic.js.map +1 -0
  146. package/src/interfaces/member.d.ts +47 -0
  147. package/src/interfaces/member.d.ts.map +1 -0
  148. package/src/interfaces/member.js +3 -0
  149. package/src/interfaces/member.js.map +1 -0
  150. package/src/interfaces/{multi-encrypted-message.ts → multi-encrypted-message.d.ts} +5 -5
  151. package/src/interfaces/multi-encrypted-message.d.ts.map +1 -0
  152. package/src/interfaces/multi-encrypted-message.js +3 -0
  153. package/src/interfaces/multi-encrypted-message.js.map +1 -0
  154. package/src/interfaces/multi-encrypted-parsed-header.d.ts +27 -0
  155. package/src/interfaces/multi-encrypted-parsed-header.d.ts.map +1 -0
  156. package/src/interfaces/multi-encrypted-parsed-header.js +3 -0
  157. package/src/interfaces/multi-encrypted-parsed-header.js.map +1 -0
  158. package/src/interfaces/multi-recipient-chunk.d.ts +26 -0
  159. package/src/interfaces/multi-recipient-chunk.d.ts.map +1 -0
  160. package/src/interfaces/multi-recipient-chunk.js +13 -0
  161. package/src/interfaces/multi-recipient-chunk.js.map +1 -0
  162. package/src/interfaces/{pbkdf-profiles.ts → pbkdf-profiles.d.ts} +2 -2
  163. package/src/interfaces/pbkdf-profiles.d.ts.map +1 -0
  164. package/src/interfaces/pbkdf-profiles.js +3 -0
  165. package/src/interfaces/pbkdf-profiles.js.map +1 -0
  166. package/src/interfaces/pbkdf2-result.d.ts +6 -0
  167. package/src/interfaces/pbkdf2-result.d.ts.map +1 -0
  168. package/src/interfaces/pbkdf2-result.js +3 -0
  169. package/src/interfaces/pbkdf2-result.js.map +1 -0
  170. package/src/interfaces/signing-key-private-key-info.d.ts +11 -0
  171. package/src/interfaces/signing-key-private-key-info.d.ts.map +1 -0
  172. package/src/interfaces/signing-key-private-key-info.js +3 -0
  173. package/src/interfaces/signing-key-private-key-info.js.map +1 -0
  174. package/src/interfaces/{simple-keypair-buffer.ts → simple-keypair-buffer.d.ts} +3 -3
  175. package/src/interfaces/simple-keypair-buffer.d.ts.map +1 -0
  176. package/src/interfaces/simple-keypair-buffer.js +3 -0
  177. package/src/interfaces/simple-keypair-buffer.js.map +1 -0
  178. package/src/interfaces/{simple-keypair.ts → simple-keypair.d.ts} +3 -3
  179. package/src/interfaces/simple-keypair.d.ts.map +1 -0
  180. package/src/interfaces/simple-keypair.js +3 -0
  181. package/src/interfaces/simple-keypair.js.map +1 -0
  182. package/src/interfaces/simple-public-key-only-buffer.d.ts +4 -0
  183. package/src/interfaces/simple-public-key-only-buffer.d.ts.map +1 -0
  184. package/src/interfaces/simple-public-key-only-buffer.js +3 -0
  185. package/src/interfaces/simple-public-key-only-buffer.js.map +1 -0
  186. package/src/interfaces/simple-public-key-only.d.ts +4 -0
  187. package/src/interfaces/simple-public-key-only.d.ts.map +1 -0
  188. package/src/interfaces/simple-public-key-only.js +3 -0
  189. package/src/interfaces/simple-public-key-only.js.map +1 -0
  190. package/src/interfaces/single-encrypted-parsed-header.d.ts +35 -0
  191. package/src/interfaces/single-encrypted-parsed-header.d.ts.map +1 -0
  192. package/src/interfaces/single-encrypted-parsed-header.js +3 -0
  193. package/src/interfaces/single-encrypted-parsed-header.js.map +1 -0
  194. package/src/interfaces/stream-config.d.ts +6 -0
  195. package/src/interfaces/stream-config.d.ts.map +1 -0
  196. package/src/interfaces/stream-config.js +8 -0
  197. package/src/interfaces/stream-config.js.map +1 -0
  198. package/src/interfaces/stream-progress.d.ts +8 -0
  199. package/src/interfaces/stream-progress.d.ts.map +1 -0
  200. package/src/interfaces/stream-progress.js +3 -0
  201. package/src/interfaces/stream-progress.js.map +1 -0
  202. package/src/interfaces/{wallet-seed.ts → wallet-seed.d.ts} +3 -3
  203. package/src/interfaces/wallet-seed.d.ts.map +1 -0
  204. package/src/interfaces/wallet-seed.js +3 -0
  205. package/src/interfaces/wallet-seed.js.map +1 -0
  206. package/src/interfaces/wrapped-key-consts.d.ts +7 -0
  207. package/src/interfaces/wrapped-key-consts.d.ts.map +1 -0
  208. package/src/interfaces/wrapped-key-consts.js +3 -0
  209. package/src/interfaces/wrapped-key-consts.js.map +1 -0
  210. package/src/lib/crypto-container.d.ts +13 -0
  211. package/src/lib/crypto-container.d.ts.map +1 -0
  212. package/src/lib/crypto-container.js +29 -0
  213. package/src/lib/crypto-container.js.map +1 -0
  214. package/src/lib/{index.ts → index.d.ts} +1 -0
  215. package/src/lib/index.d.ts.map +1 -0
  216. package/src/lib/index.js +7 -0
  217. package/src/lib/index.js.map +1 -0
  218. package/src/lib/invariant-validator.d.ts +62 -0
  219. package/src/lib/invariant-validator.d.ts.map +1 -0
  220. package/src/lib/invariant-validator.js +108 -0
  221. package/src/lib/invariant-validator.js.map +1 -0
  222. package/src/lib/invariants/{index.ts → index.d.ts} +2 -2
  223. package/src/lib/invariants/index.d.ts.map +1 -0
  224. package/src/lib/invariants/index.js +12 -0
  225. package/src/lib/invariants/index.js.map +1 -0
  226. package/src/lib/invariants/recipient-id-consistency.d.ts +22 -0
  227. package/src/lib/invariants/recipient-id-consistency.d.ts.map +1 -0
  228. package/src/lib/invariants/recipient-id-consistency.js +62 -0
  229. package/src/lib/invariants/recipient-id-consistency.js.map +1 -0
  230. package/src/member.d.ts +81 -0
  231. package/src/member.d.ts.map +1 -0
  232. package/src/member.js +285 -0
  233. package/src/member.js.map +1 -0
  234. package/src/services/aes-gcm.d.ts +66 -0
  235. package/src/services/aes-gcm.d.ts.map +1 -0
  236. package/src/services/aes-gcm.js +158 -0
  237. package/src/services/aes-gcm.js.map +1 -0
  238. package/src/services/chunk-processor.d.ts +15 -0
  239. package/src/services/chunk-processor.d.ts.map +1 -0
  240. package/src/services/chunk-processor.js +36 -0
  241. package/src/services/chunk-processor.js.map +1 -0
  242. package/src/services/ecies/crypto-core.d.ts +104 -0
  243. package/src/services/ecies/crypto-core.d.ts.map +1 -0
  244. package/src/services/ecies/crypto-core.js +237 -0
  245. package/src/services/ecies/crypto-core.js.map +1 -0
  246. package/src/services/ecies/file.d.ts +30 -0
  247. package/src/services/ecies/file.d.ts.map +1 -0
  248. package/src/services/ecies/file.js +112 -0
  249. package/src/services/ecies/file.js.map +1 -0
  250. package/src/services/ecies/{index.ts → index.d.ts} +1 -0
  251. package/src/services/ecies/index.d.ts.map +1 -0
  252. package/src/services/ecies/index.js +11 -0
  253. package/src/services/ecies/index.js.map +1 -0
  254. package/src/services/ecies/multi-recipient.d.ts +84 -0
  255. package/src/services/ecies/multi-recipient.d.ts.map +1 -0
  256. package/src/services/ecies/multi-recipient.js +496 -0
  257. package/src/services/ecies/multi-recipient.js.map +1 -0
  258. package/src/services/ecies/service.d.ts +69 -0
  259. package/src/services/ecies/service.d.ts.map +1 -0
  260. package/src/services/ecies/service.js +144 -0
  261. package/src/services/ecies/service.js.map +1 -0
  262. package/src/services/ecies/signature.d.ts +38 -0
  263. package/src/services/ecies/signature.d.ts.map +1 -0
  264. package/src/services/ecies/signature.js +69 -0
  265. package/src/services/ecies/signature.js.map +1 -0
  266. package/src/services/ecies/single-recipient.d.ts +83 -0
  267. package/src/services/ecies/single-recipient.d.ts.map +1 -0
  268. package/src/services/ecies/single-recipient.js +447 -0
  269. package/src/services/ecies/single-recipient.js.map +1 -0
  270. package/src/services/ecies/utilities.d.ts +33 -0
  271. package/src/services/ecies/utilities.d.ts.map +1 -0
  272. package/src/services/ecies/utilities.js +91 -0
  273. package/src/services/ecies/utilities.js.map +1 -0
  274. package/src/services/encryption-stream.d.ts +33 -0
  275. package/src/services/encryption-stream.d.ts.map +1 -0
  276. package/src/services/encryption-stream.js +207 -0
  277. package/src/services/encryption-stream.js.map +1 -0
  278. package/src/services/{index.ts → index.d.ts} +1 -0
  279. package/src/services/index.d.ts.map +1 -0
  280. package/src/services/index.js +11 -0
  281. package/src/services/index.js.map +1 -0
  282. package/src/services/multi-recipient-processor.d.ts +72 -0
  283. package/src/services/multi-recipient-processor.d.ts.map +1 -0
  284. package/src/services/multi-recipient-processor.js +322 -0
  285. package/src/services/multi-recipient-processor.js.map +1 -0
  286. package/src/services/pbkdf2.d.ts +105 -0
  287. package/src/services/pbkdf2.d.ts.map +1 -0
  288. package/src/services/pbkdf2.js +189 -0
  289. package/src/services/pbkdf2.js.map +1 -0
  290. package/src/services/progress-tracker.d.ts +9 -0
  291. package/src/services/progress-tracker.d.ts.map +1 -0
  292. package/src/services/progress-tracker.js +41 -0
  293. package/src/services/progress-tracker.js.map +1 -0
  294. package/src/test-mocks/index.d.ts +2 -0
  295. package/src/test-mocks/index.d.ts.map +1 -0
  296. package/src/test-mocks/index.js +5 -0
  297. package/src/test-mocks/index.js.map +1 -0
  298. package/src/test-mocks/mock-backend-member.d.ts +71 -0
  299. package/src/test-mocks/mock-backend-member.d.ts.map +1 -0
  300. package/src/test-mocks/mock-backend-member.js +133 -0
  301. package/src/test-mocks/mock-backend-member.js.map +1 -0
  302. package/src/testing.d.ts +2 -0
  303. package/src/testing.d.ts.map +1 -0
  304. package/src/testing.js +6 -0
  305. package/src/testing.js.map +1 -0
  306. package/src/types/id-guards.d.ts +39 -0
  307. package/src/types/id-guards.d.ts.map +1 -0
  308. package/src/types/id-guards.js +91 -0
  309. package/src/types/id-guards.js.map +1 -0
  310. package/src/types/index.d.ts +2 -0
  311. package/src/types/index.d.ts.map +1 -0
  312. package/src/types/index.js +5 -0
  313. package/src/types/index.js.map +1 -0
  314. package/src/{types.ts → types.d.ts} +9 -28
  315. package/src/types.d.ts.map +1 -0
  316. package/src/types.js +6 -0
  317. package/src/types.js.map +1 -0
  318. package/src/utils.d.ts +11 -0
  319. package/src/utils.d.ts.map +1 -0
  320. package/src/utils.js +82 -0
  321. package/src/utils.js.map +1 -0
  322. package/LICENSE +0 -21
  323. package/src/builders/ecies-builder.ts +0 -27
  324. package/src/builders/member-builder.ts +0 -158
  325. package/src/constants.ts +0 -251
  326. package/src/core/errors/crypto-error.ts +0 -10
  327. package/src/core/types/result.ts +0 -3
  328. package/src/enumerations/index.ts +0 -2
  329. package/src/enumerations/pbkdf2-profile.ts +0 -8
  330. package/src/i18n/ecies-i18n-factory.ts +0 -111
  331. package/src/i18n/node-ecies-i18n-setup.ts +0 -56
  332. package/src/i18n/node-keys.ts +0 -69
  333. package/src/i18n/translations/de.ts +0 -54
  334. package/src/i18n/translations/en-GB.ts +0 -83
  335. package/src/i18n/translations/en-US.ts +0 -88
  336. package/src/i18n/translations/es.ts +0 -54
  337. package/src/i18n/translations/fr.ts +0 -54
  338. package/src/i18n/translations/ja.ts +0 -54
  339. package/src/i18n/translations/uk.ts +0 -54
  340. package/src/i18n/translations/zh-cn.ts +0 -54
  341. package/src/interfaces/authenticated-cipher.ts +0 -10
  342. package/src/interfaces/authenticated-decipher.ts +0 -9
  343. package/src/interfaces/backend-member-operational.ts +0 -75
  344. package/src/interfaces/checksum-config.ts +0 -4
  345. package/src/interfaces/checksum-consts.ts +0 -13
  346. package/src/interfaces/constants.ts +0 -54
  347. package/src/interfaces/ecies-consts.ts +0 -99
  348. package/src/interfaces/encrypted-chunk.ts +0 -12
  349. package/src/interfaces/encryption-consts.ts +0 -10
  350. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.ts +0 -7
  351. package/src/interfaces/keyring-consts.ts +0 -5
  352. package/src/interfaces/member.ts +0 -76
  353. package/src/interfaces/multi-encrypted-parsed-header.ts +0 -28
  354. package/src/interfaces/multi-recipient-chunk.ts +0 -35
  355. package/src/interfaces/pbkdf2-result.ts +0 -5
  356. package/src/interfaces/signing-key-private-key-info.ts +0 -12
  357. package/src/interfaces/simple-public-key-only-buffer.ts +0 -3
  358. package/src/interfaces/simple-public-key-only.ts +0 -3
  359. package/src/interfaces/single-encrypted-parsed-header.ts +0 -35
  360. package/src/interfaces/stream-config.ts +0 -9
  361. package/src/interfaces/stream-progress.ts +0 -7
  362. package/src/interfaces/wrapped-key-consts.ts +0 -6
  363. package/src/lib/crypto-container.ts +0 -32
  364. package/src/lib/invariant-validator.ts +0 -124
  365. package/src/lib/invariants/recipient-id-consistency.ts +0 -77
  366. package/src/member.ts +0 -511
  367. package/src/services/aes-gcm.ts +0 -260
  368. package/src/services/chunk-processor.ts +0 -47
  369. package/src/services/ecies/crypto-core.ts +0 -319
  370. package/src/services/ecies/file.ts +0 -171
  371. package/src/services/ecies/multi-recipient.ts +0 -782
  372. package/src/services/ecies/service.ts +0 -316
  373. package/src/services/ecies/signature.ts +0 -91
  374. package/src/services/ecies/single-recipient.ts +0 -743
  375. package/src/services/ecies/utilities.ts +0 -128
  376. package/src/services/encryption-stream.ts +0 -432
  377. package/src/services/multi-recipient-processor.ts +0 -505
  378. package/src/services/pbkdf2.ts +0 -304
  379. package/src/services/progress-tracker.ts +0 -43
  380. package/src/test-mocks/index.ts +0 -1
  381. package/src/test-mocks/mock-backend-member.ts +0 -195
  382. package/src/testing.ts +0 -2
  383. package/src/types/id-guards.ts +0 -91
  384. package/src/types/index.ts +0 -1
  385. package/src/utils.ts +0 -124
@@ -1,505 +0,0 @@
1
- import {
2
- ECIESError,
3
- ECIESErrorTypeEnum,
4
- IECIESConstants,
5
- } from '@digitaldefiance/ecies-lib';
6
- import {
7
- createCipheriv,
8
- createDecipheriv,
9
- createECDH,
10
- randomBytes,
11
- } from 'crypto';
12
- import { Constants } from '../constants';
13
- import { AuthenticatedCipher } from '../interfaces/authenticated-cipher';
14
- import { AuthenticatedDecipher } from '../interfaces/authenticated-decipher';
15
- import type { IMember } from '../interfaces/member';
16
- import {
17
- getMultiRecipientConstants,
18
- IMultiRecipientChunk,
19
- IMultiRecipientChunkHeader,
20
- IMultiRecipientConstants,
21
- } from '../interfaces/multi-recipient-chunk';
22
- import { AESGCMService } from './aes-gcm';
23
- import { EciesCryptoCore } from './ecies/crypto-core';
24
- import { EciesMultiRecipient } from './ecies/multi-recipient';
25
-
26
- export interface IMultiRecipient {
27
- id: Buffer;
28
- publicKey: Buffer;
29
- }
30
-
31
- export interface IMultiEncryptedMessage {
32
- dataLength: number;
33
- recipientCount: number;
34
- recipientIds: Buffer[];
35
- recipientKeys: Buffer[];
36
- encryptedMessage: Buffer;
37
- headerSize: number;
38
- ephemeralPublicKey?: Buffer;
39
- }
40
-
41
- export class MultiRecipientProcessor {
42
- private readonly aesGcm: AESGCMService;
43
- private readonly cryptoCore: EciesCryptoCore;
44
- private readonly consts: IECIESConstants;
45
- private readonly eciesMultiRecipient: EciesMultiRecipient;
46
- private readonly constants: IMultiRecipientConstants;
47
- private readonly recipientIdSize: number;
48
-
49
- constructor(
50
- cryptoCore: EciesCryptoCore,
51
- consts: IECIESConstants = Constants.ECIES,
52
- aesGcm?: AESGCMService,
53
- eciesMultiRecipient?: EciesMultiRecipient
54
- ) {
55
- this.cryptoCore = cryptoCore;
56
- this.consts = consts;
57
- // Use injected dependencies or create defaults
58
- this.aesGcm = aesGcm ?? new AESGCMService();
59
- this.eciesMultiRecipient =
60
- eciesMultiRecipient ?? new EciesMultiRecipient(cryptoCore);
61
- this.recipientIdSize = consts.MULTIPLE.RECIPIENT_ID_SIZE;
62
- this.constants = getMultiRecipientConstants(this.recipientIdSize);
63
- }
64
-
65
- /**
66
- * Encrypts a message for multiple recipients.
67
- * Wrapper around EciesMultiRecipient.encryptMultiple for backward compatibility.
68
- */
69
- public async encryptMultiple(
70
- recipients: IMultiRecipient[],
71
- message: Buffer,
72
- preamble: Buffer = Buffer.alloc(0)
73
- ): Promise<IMultiEncryptedMessage> {
74
- // Convert IMultiRecipient to IMember-like objects
75
- // EciesMultiRecipient expects IMember[] which has id: Buffer and publicKey: Buffer
76
- // IMultiRecipient already matches this structure, so we can safely cast
77
- const members = recipients as IMember[];
78
-
79
- const result = this.eciesMultiRecipient.encryptMultiple(
80
- members,
81
- message,
82
- preamble
83
- );
84
-
85
- return result;
86
- }
87
-
88
- /**
89
- * Builds the header for a message encrypted for multiple recipients.
90
- * Wrapper around EciesMultiRecipient.buildECIESMultipleRecipientHeader for backward compatibility.
91
- */
92
- public buildHeader(data: IMultiEncryptedMessage): Buffer {
93
- return this.eciesMultiRecipient.buildECIESMultipleRecipientHeader(data);
94
- }
95
-
96
- public async encryptChunk(
97
- data: Buffer,
98
- recipients: IMultiRecipient[],
99
- chunkIndex: number,
100
- isLast: boolean,
101
- symmetricKey: Buffer,
102
- senderPrivateKey?: Buffer
103
- ): Promise<IMultiRecipientChunk> {
104
- if (chunkIndex < 0 || chunkIndex > 0xffffffff) {
105
- throw new ECIESError(ECIESErrorTypeEnum.InvalidDataLength);
106
- }
107
-
108
- // Sign-then-Encrypt
109
- let dataToEncrypt = data;
110
- if (senderPrivateKey) {
111
- const signature = this.cryptoCore.sign(senderPrivateKey, data);
112
- dataToEncrypt = Buffer.concat([signature, data]);
113
- }
114
-
115
- if (dataToEncrypt.length > this.consts.MAX_RAW_DATA_SIZE) {
116
- throw new ECIESError(ECIESErrorTypeEnum.FileSizeTooLarge);
117
- }
118
-
119
- // Generate ONE ephemeral key pair for all recipients
120
- const ecdh = createECDH(this.cryptoCore.config.curveName);
121
- ecdh.generateKeys();
122
- const ephemeralPrivateKey = ecdh.getPrivateKey();
123
- let ephemeralPublicKey = ecdh.getPublicKey(null, 'compressed');
124
-
125
- // Ensure public key has 0x04 prefix
126
- if (
127
- ephemeralPublicKey.length === this.cryptoCore.consts.RAW_PUBLIC_KEY_LENGTH
128
- ) {
129
- ephemeralPublicKey = Buffer.concat([
130
- Buffer.from([this.cryptoCore.consts.PUBLIC_KEY_MAGIC]),
131
- ephemeralPublicKey,
132
- ]);
133
- }
134
-
135
- // Build recipient headers
136
- const recipientHeaders: Array<{
137
- id: Buffer;
138
- keySize: number;
139
- encryptedKey: Buffer;
140
- }> = [];
141
- for (const recipient of recipients) {
142
- // Use Recipient ID as AAD for key encryption
143
- const encryptedKey = this.eciesMultiRecipient.encryptKey(
144
- recipient.publicKey,
145
- symmetricKey,
146
- ephemeralPrivateKey,
147
- recipient.id
148
- );
149
-
150
- recipientHeaders.push({
151
- id: recipient.id,
152
- keySize: encryptedKey.length,
153
- encryptedKey,
154
- });
155
- }
156
-
157
- // Calculate encrypted size (Data + Tag)
158
- // AES-GCM tag is 16 bytes
159
- const encryptedSize = dataToEncrypt.length + 16;
160
-
161
- // Calculate total size
162
- let recipientHeadersSize = 0;
163
- for (const h of recipientHeaders) {
164
- recipientHeadersSize +=
165
- this.recipientIdSize + this.constants.KEY_SIZE_BYTES + h.keySize;
166
- }
167
-
168
- const totalSize =
169
- this.constants.HEADER_SIZE +
170
- recipientHeadersSize +
171
- 12 + // IV
172
- encryptedSize;
173
-
174
- // Build chunk buffer
175
- const chunk = Buffer.alloc(totalSize);
176
- let offset = 0;
177
-
178
- // Write header
179
- chunk.writeUInt32BE(this.constants.MAGIC, offset);
180
- offset += 4;
181
- chunk.writeUInt16BE(this.constants.VERSION, offset);
182
- offset += 2;
183
- chunk.writeUInt16BE(recipients.length, offset);
184
- offset += 2;
185
- chunk.writeUInt32BE(chunkIndex, offset);
186
- offset += 4;
187
- chunk.writeUInt32BE(dataToEncrypt.length, offset); // Original Size
188
- offset += 4;
189
- chunk.writeUInt32BE(encryptedSize, offset);
190
- offset += 4;
191
- chunk.writeUInt8(isLast ? this.constants.FLAG_IS_LAST : 0, offset);
192
- offset += 1;
193
-
194
- // Write Ephemeral Public Key (33 bytes)
195
- ephemeralPublicKey.copy(chunk, offset);
196
- offset += 33;
197
-
198
- // Padding to HEADER_SIZE (64 bytes)
199
- offset = this.constants.HEADER_SIZE;
200
-
201
- // Write recipient headers
202
- for (const header of recipientHeaders) {
203
- header.id.copy(chunk, offset);
204
- offset += this.recipientIdSize;
205
- chunk.writeUInt16BE(header.keySize, offset);
206
- offset += this.constants.KEY_SIZE_BYTES;
207
- header.encryptedKey.copy(chunk, offset);
208
- offset += header.keySize;
209
- }
210
-
211
- // Extract the full header (including recipient headers) to use as AAD
212
- const headerBytes = chunk.subarray(0, offset);
213
-
214
- // Encrypt data with AES-256-GCM using Header as AAD
215
- const iv = randomBytes(this.consts.IV_SIZE);
216
- const cipher = createCipheriv(
217
- this.consts.SYMMETRIC_ALGORITHM_CONFIGURATION,
218
- symmetricKey,
219
- iv
220
- ) as AuthenticatedCipher;
221
-
222
- cipher.setAAD(headerBytes);
223
-
224
- const encrypted = cipher.update(dataToEncrypt);
225
- const final = cipher.final();
226
- const authTag = cipher.getAuthTag();
227
-
228
- // Write IV
229
- iv.copy(chunk, offset);
230
- offset += 12;
231
-
232
- // Write encrypted data
233
- encrypted.copy(chunk, offset);
234
- offset += encrypted.length;
235
- final.copy(chunk, offset); // Should be empty usually
236
- offset += final.length;
237
-
238
- // Write auth tag
239
- authTag.copy(chunk, offset);
240
-
241
- const header: IMultiRecipientChunkHeader = {
242
- chunkIndex,
243
- flags: isLast ? 1 : 0,
244
- recipientCount: recipients.length,
245
- magic: this.constants.MAGIC,
246
- version: this.constants.VERSION,
247
- originalSize: dataToEncrypt.length,
248
- encryptedSize,
249
- };
250
-
251
- return {
252
- header,
253
- data: chunk,
254
- };
255
- }
256
-
257
- public async decryptChunk(
258
- chunkData: Buffer,
259
- recipientId: Buffer,
260
- privateKey: Buffer,
261
- senderPublicKey?: Buffer
262
- ): Promise<{ data: Buffer; header: IMultiRecipientChunkHeader }> {
263
- if (chunkData.length < this.constants.HEADER_SIZE) {
264
- throw new ECIESError(ECIESErrorTypeEnum.InvalidDataLength);
265
- }
266
-
267
- let offset = 0;
268
-
269
- // Parse header
270
- const magic = chunkData.readUInt32BE(offset);
271
- offset += 4;
272
- if (magic !== this.constants.MAGIC) {
273
- throw new ECIESError(ECIESErrorTypeEnum.InvalidDataLength); // Invalid Magic
274
- }
275
-
276
- const version = chunkData.readUInt16BE(offset);
277
- offset += 2;
278
- if (version !== this.constants.VERSION) {
279
- throw new ECIESError(ECIESErrorTypeEnum.InvalidVersion);
280
- }
281
-
282
- const recipientCount = chunkData.readUInt16BE(offset);
283
- offset += 2;
284
-
285
- const chunkIndex = chunkData.readUInt32BE(offset);
286
- offset += 4;
287
- const originalSize = chunkData.readUInt32BE(offset);
288
- offset += 4;
289
- const encryptedSize = chunkData.readUInt32BE(offset);
290
- offset += 4;
291
- const flags = chunkData.readUInt8(offset);
292
- offset += 1;
293
-
294
- // Read Ephemeral Public Key (33 bytes)
295
- const ephemeralPublicKey = chunkData.subarray(offset, offset + 33);
296
- offset += 33;
297
-
298
- offset = this.constants.HEADER_SIZE;
299
-
300
- // Find recipient header and decrypt symmetric key
301
- let symmetricKey: Buffer | null = null;
302
- let tempOffset = offset;
303
-
304
- for (let i = 0; i < recipientCount; i++) {
305
- const id = chunkData.subarray(
306
- tempOffset,
307
- tempOffset + this.recipientIdSize
308
- );
309
- tempOffset += this.recipientIdSize;
310
-
311
- const keySize = chunkData.readUInt16BE(tempOffset);
312
- tempOffset += this.constants.KEY_SIZE_BYTES;
313
-
314
- const encryptedKey = chunkData.subarray(tempOffset, tempOffset + keySize);
315
- tempOffset += keySize;
316
-
317
- // Check if this is our recipient
318
- if (id.equals(recipientId)) {
319
- // Use Recipient ID as AAD for key decryption
320
- symmetricKey = this.eciesMultiRecipient.decryptKey(
321
- privateKey,
322
- encryptedKey,
323
- ephemeralPublicKey,
324
- id
325
- );
326
- }
327
- }
328
-
329
- if (!symmetricKey) {
330
- throw new ECIESError(ECIESErrorTypeEnum.RecipientNotFound);
331
- }
332
-
333
- // Update offset to after all recipient headers
334
- offset = tempOffset;
335
-
336
- // Extract header bytes for AAD
337
- const headerBytes = chunkData.subarray(0, offset);
338
-
339
- // Read IV
340
- const iv = chunkData.subarray(offset, offset + 12);
341
- offset += 12;
342
-
343
- // Read encrypted data (includes tag)
344
- const encryptedWithTag = chunkData.subarray(offset, offset + encryptedSize);
345
- offset += encryptedSize;
346
-
347
- // Extract tag from end of encrypted data
348
- const authTag = encryptedWithTag.subarray(encryptedWithTag.length - 16);
349
- const encrypted = encryptedWithTag.subarray(
350
- 0,
351
- encryptedWithTag.length - 16
352
- );
353
-
354
- // Decrypt with AAD
355
- const decipher = createDecipheriv(
356
- this.consts.SYMMETRIC_ALGORITHM_CONFIGURATION,
357
- symmetricKey,
358
- iv
359
- ) as AuthenticatedDecipher;
360
-
361
- decipher.setAuthTag(authTag);
362
- decipher.setAAD(headerBytes);
363
-
364
- const decrypted = decipher.update(encrypted);
365
- const final = decipher.final();
366
- const decryptedMessage = Buffer.concat([decrypted, final]);
367
-
368
- // Verify signature if sender public key provided
369
- let finalData = decryptedMessage;
370
- if (senderPublicKey) {
371
- if (decryptedMessage.length < 64) {
372
- throw new ECIESError(ECIESErrorTypeEnum.InvalidSignature);
373
- }
374
- const signature = decryptedMessage.subarray(0, 64);
375
- const message = decryptedMessage.subarray(64);
376
-
377
- const isValid = this.cryptoCore.verify(
378
- senderPublicKey,
379
- message,
380
- signature
381
- );
382
- if (!isValid) {
383
- throw new ECIESError(ECIESErrorTypeEnum.InvalidSignature);
384
- }
385
- finalData = message;
386
- }
387
-
388
- return {
389
- data: finalData,
390
- header: {
391
- chunkIndex,
392
- flags,
393
- recipientCount,
394
- magic,
395
- version,
396
- originalSize,
397
- encryptedSize,
398
- },
399
- };
400
- }
401
-
402
- /**
403
- * Decrypts a message encrypted with multiple ECIE for a recipient.
404
- * Wrapper around EciesMultiRecipient.decryptMultipleECIEForRecipient for backward compatibility.
405
- */
406
- public async decryptMultipleForRecipient(
407
- encryptedData: IMultiEncryptedMessage,
408
- recipientId: Buffer,
409
- privateKey: Buffer,
410
- senderPublicKey?: Buffer
411
- ): Promise<Buffer> {
412
- // Create a mock IMember with minimal required properties
413
- const member = {
414
- id: recipientId,
415
- privateKey: { value: privateKey },
416
- } as IMember;
417
-
418
- return this.eciesMultiRecipient.decryptMultipleECIEForRecipient(
419
- encryptedData,
420
- member,
421
- senderPublicKey
422
- );
423
- }
424
-
425
- /**
426
- * Parses a multi-encrypted header.
427
- * Wrapper around EciesMultiRecipient.parseMultiEncryptedHeader for backward compatibility.
428
- */
429
- public parseHeader(
430
- data: Buffer
431
- ): Omit<IMultiEncryptedMessage, 'encryptedMessage'> & { headerSize: number } {
432
- const result = this.eciesMultiRecipient.parseMultiEncryptedHeader(data);
433
- return result;
434
- }
435
-
436
- /**
437
- * Parses a multi-encrypted buffer into its components.
438
- * Wrapper around EciesMultiRecipient.parseMultiEncryptedBuffer for backward compatibility.
439
- */
440
- public parseMessage(data: Buffer): IMultiEncryptedMessage {
441
- const result = this.eciesMultiRecipient.parseMultiEncryptedBuffer(data);
442
- return result;
443
- }
444
-
445
- /**
446
- * Encrypts a symmetric key for a recipient.
447
- * Generates a new ephemeral key pair.
448
- * Returns [EphemeralPublicKey][EncryptedKey]
449
- */
450
- public async encryptKey(
451
- recipientPublicKey: Buffer,
452
- symmetricKey: Buffer
453
- ): Promise<Buffer> {
454
- // Generate ephemeral key pair
455
- const ecdh = createECDH(this.cryptoCore.config.curveName);
456
- ecdh.generateKeys();
457
- const ephemeralPrivateKey = ecdh.getPrivateKey();
458
- let ephemeralPublicKey = ecdh.getPublicKey(null, 'compressed');
459
-
460
- // Ensure public key has 0x04 prefix
461
- if (
462
- ephemeralPublicKey.length === this.cryptoCore.consts.RAW_PUBLIC_KEY_LENGTH
463
- ) {
464
- ephemeralPublicKey = Buffer.concat([
465
- Buffer.from([this.cryptoCore.consts.PUBLIC_KEY_MAGIC]),
466
- ephemeralPublicKey,
467
- ]);
468
- }
469
-
470
- const encryptedKey = this.eciesMultiRecipient.encryptKey(
471
- recipientPublicKey,
472
- symmetricKey,
473
- ephemeralPrivateKey,
474
- Buffer.alloc(0) // No AAD for simple key encryption? Or use recipient ID?
475
- );
476
-
477
- return Buffer.concat([ephemeralPublicKey, encryptedKey]);
478
- }
479
-
480
- /**
481
- * Decrypts a symmetric key.
482
- * Expects [EphemeralPublicKey][EncryptedKey]
483
- */
484
- public async decryptKey(
485
- privateKey: Buffer,
486
- encryptedData: Buffer
487
- ): Promise<Buffer> {
488
- // Extract ephemeral public key
489
- const pubKeyLength = this.cryptoCore.consts.PUBLIC_KEY_LENGTH; // 33
490
-
491
- const ephemeralPublicKey = encryptedData.subarray(0, 33);
492
- const encryptedKey = encryptedData.subarray(33);
493
-
494
- return this.eciesMultiRecipient.decryptKey(
495
- privateKey,
496
- encryptedKey,
497
- ephemeralPublicKey,
498
- Buffer.alloc(0)
499
- );
500
- }
501
-
502
- public getHeaderSize(recipientCount: number): number {
503
- return this.eciesMultiRecipient.getHeaderSize(recipientCount);
504
- }
505
- }