@digitaldefiance/node-ecies-lib 4.4.9 → 4.4.12

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 +191 -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,260 +0,0 @@
1
- import { createCipheriv, createDecipheriv, randomBytes } from 'crypto';
2
- import { CipherGCMTypes } from 'crypto';
3
- import { IConstants } from '../interfaces/constants';
4
- import {
5
- getEciesPluginI18nEngine,
6
- NodeEciesComponentId,
7
- NodeEciesStringKey,
8
- } from '../i18n';
9
- import { Constants } from '../constants';
10
-
11
- export class AESGCMService {
12
- private readonly algorithmName: string;
13
- private readonly mode: string;
14
- private readonly keyBits: number;
15
- private readonly ivSize: number;
16
- private readonly keyringAlgorithmConfiguration: CipherGCMTypes;
17
-
18
- constructor(constants: IConstants = Constants) {
19
- this.algorithmName = constants.KEYRING.ALGORITHM;
20
- this.mode = constants.KEYRING.MODE;
21
- this.keyBits = constants.KEYRING.KEY_BITS;
22
- this.ivSize = constants.WRAPPED_KEY.IV_SIZE;
23
- this.keyringAlgorithmConfiguration =
24
- constants.KEYRING_ALGORITHM_CONFIGURATION;
25
- }
26
-
27
- public get ALGORITHM_NAME(): string {
28
- return this.algorithmName;
29
- }
30
-
31
- public get MODE(): string {
32
- return this.mode;
33
- }
34
-
35
- public get KEY_BITS(): number {
36
- return this.keyBits;
37
- }
38
-
39
- /**
40
- * Encrypt data using AES-GCM
41
- * @param data Data to encrypt
42
- * @param key Key to use for encryption (must be 16, 24 or 32 bytes for AES)
43
- * @param authTag Whether to return separate auth tag
44
- * @returns Encrypted data with IV and optional separate auth tag
45
- */
46
- public encrypt(
47
- data: Buffer,
48
- key: Buffer,
49
- authTag: boolean = false,
50
- aad?: Buffer,
51
- ): { encrypted: Buffer; iv: Buffer; tag?: Buffer } {
52
- // Security fix 9: Key length validation - must match algorithm requirements
53
- const requiredKeyLength = this.keyBits / 8;
54
- if (key.length !== requiredKeyLength) {
55
- const pluginEngine = getEciesPluginI18nEngine();
56
- throw new Error(
57
- pluginEngine.translate(
58
- NodeEciesComponentId,
59
- NodeEciesStringKey.Error_InvalidAESKeyLength,
60
- ),
61
- );
62
- }
63
-
64
- // Security fix 11: Data null/undefined check
65
- if (data === null || data === undefined) {
66
- const pluginEngine = getEciesPluginI18nEngine();
67
- throw new Error(
68
- pluginEngine.translate(
69
- NodeEciesComponentId,
70
- NodeEciesStringKey.Error_CannotEncryptEmptyData,
71
- ),
72
- );
73
- }
74
-
75
- // Security fix 12: Data size validation (max 2GB)
76
- if (data.length > 0x7FFFFFFF) {
77
- const pluginEngine = getEciesPluginI18nEngine();
78
- throw new Error(
79
- pluginEngine.translate(
80
- NodeEciesComponentId,
81
- NodeEciesStringKey.Error_MessageTooLarge,
82
- ),
83
- );
84
- }
85
-
86
- const iv = randomBytes(this.ivSize);
87
- const cipher = createCipheriv(this.keyringAlgorithmConfiguration, key, iv);
88
-
89
- if (aad) {
90
- cipher.setAAD(aad);
91
- }
92
-
93
- const encrypted = Buffer.concat([cipher.update(data), cipher.final()]);
94
- const tag = cipher.getAuthTag();
95
-
96
- if (!authTag) {
97
- const encryptedWithTag = Buffer.concat([encrypted, tag]);
98
- return { encrypted: encryptedWithTag, iv: iv };
99
- }
100
-
101
- return {
102
- encrypted: encrypted,
103
- iv: iv,
104
- tag: tag,
105
- };
106
- }
107
-
108
- /**
109
- * Combine encrypted data and auth tag into a single Buffer
110
- * @param encryptedData The encrypted data
111
- * @param authTag The authentication tag
112
- * @returns The combined Buffer
113
- */
114
- public combineEncryptedDataAndTag(
115
- encryptedData: Buffer,
116
- authTag: Buffer,
117
- ): Buffer {
118
- return Buffer.concat([encryptedData, authTag]);
119
- }
120
-
121
- /**
122
- * Combine IV and encrypted data (with optional auth tag) into a single Buffer
123
- * @param iv The initialization vector
124
- * @param encryptedDataWithTag The encrypted data with auth tag already appended (if applicable)
125
- * @returns The combined Buffer
126
- */
127
- public combineIvAndEncryptedData(
128
- iv: Buffer,
129
- encryptedDataWithTag: Buffer,
130
- ): Buffer {
131
- return Buffer.concat([iv, encryptedDataWithTag]);
132
- }
133
-
134
- /**
135
- * Combine IV, encrypted data and auth tag into a single Buffer
136
- * @param iv The initialization vector
137
- * @param encryptedData The encrypted data
138
- * @param authTag The authentication tag
139
- * @returns The combined Buffer
140
- */
141
- public combineIvTagAndEncryptedData(
142
- iv: Buffer,
143
- encryptedData: Buffer,
144
- authTag: Buffer,
145
- ): Buffer {
146
- const encryptedWithTag = this.combineEncryptedDataAndTag(
147
- encryptedData,
148
- authTag,
149
- );
150
- return this.combineIvAndEncryptedData(iv, encryptedWithTag);
151
- }
152
-
153
- /**
154
- * Split combined encrypted data back into its components
155
- * @param combinedData The combined data containing IV, encrypted data, and optionally auth tag
156
- * @param hasAuthTag Whether the combined data includes an authentication tag
157
- * @returns Object containing the split components
158
- */
159
- public splitEncryptedData(
160
- combinedData: Buffer,
161
- hasAuthTag: boolean = true,
162
- ): { iv: Buffer; encryptedDataWithTag: Buffer } {
163
- const ivLength = this.ivSize;
164
- const minLength = ivLength + (hasAuthTag ? 16 : 0);
165
-
166
- if (combinedData.length < minLength) {
167
- const pluginEngine = getEciesPluginI18nEngine();
168
-
169
- throw new Error(
170
- pluginEngine.translate(
171
- NodeEciesComponentId,
172
- NodeEciesStringKey.Error_CombinedDataTooShort,
173
- ),
174
- );
175
- }
176
-
177
- const iv = combinedData.subarray(0, ivLength);
178
- const encryptedDataWithTag = combinedData.subarray(ivLength);
179
-
180
- return { iv, encryptedDataWithTag };
181
- }
182
-
183
- /**
184
- * Decrypt data using AES-GCM
185
- * @param iv The initialization vector
186
- * @param encryptedData Data to decrypt (with auth tag appended)
187
- * @param key Key to use for decryption (must be 16, 24 or 32 bytes for AES)
188
- * @param authTag Whether the encrypted data includes an authentication tag
189
- * @returns Decrypted data
190
- */
191
- public decrypt(
192
- iv: Buffer,
193
- encryptedData: Buffer,
194
- key: Buffer,
195
- authTag: boolean = false,
196
- aad?: Buffer,
197
- ): Buffer {
198
- // Security fix 9: Key length validation - must match algorithm requirements
199
- const requiredKeyLength = this.keyBits / 8;
200
- if (key.length !== requiredKeyLength) {
201
- const pluginEngine = getEciesPluginI18nEngine();
202
- throw new Error(
203
- pluginEngine.translate(
204
- NodeEciesComponentId,
205
- NodeEciesStringKey.Error_InvalidAESKeyLength,
206
- ),
207
- );
208
- }
209
-
210
- // Security fix 10: IV length validation
211
- if (iv.length !== 16) {
212
- const pluginEngine = getEciesPluginI18nEngine();
213
- throw new Error(
214
- pluginEngine.translate(
215
- NodeEciesComponentId,
216
- NodeEciesStringKey.Error_InvalidIVLength,
217
- ),
218
- );
219
- }
220
-
221
- // Security fix 13: Decrypt input validation
222
- if (encryptedData === null || encryptedData === undefined) {
223
- const pluginEngine = getEciesPluginI18nEngine();
224
- throw new Error(
225
- pluginEngine.translate(
226
- NodeEciesComponentId,
227
- NodeEciesStringKey.Error_CannotDecryptEmptyData,
228
- ),
229
- );
230
- }
231
-
232
- if (encryptedData.length > 0x7FFFFFFF) {
233
- const pluginEngine = getEciesPluginI18nEngine();
234
- throw new Error(
235
- pluginEngine.translate(
236
- NodeEciesComponentId,
237
- NodeEciesStringKey.Error_MessageTooLarge,
238
- ),
239
- );
240
- }
241
-
242
- const decipher = createDecipheriv(
243
- this.keyringAlgorithmConfiguration,
244
- key,
245
- iv,
246
- );
247
-
248
- if (aad) {
249
- decipher.setAAD(aad);
250
- }
251
-
252
- const tagLength = 16;
253
- const tag = encryptedData.subarray(-tagLength);
254
- const ciphertext = encryptedData.subarray(0, -tagLength);
255
-
256
- decipher.setAuthTag(tag);
257
-
258
- return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
259
- }
260
- }
@@ -1,47 +0,0 @@
1
- import { IEncryptedChunk } from '../interfaces/encrypted-chunk';
2
- import { ECIESService } from './ecies/service';
3
-
4
- export class ChunkProcessor {
5
- constructor(private readonly ecies: ECIESService) {}
6
-
7
- public async encryptChunk(
8
- data: Buffer,
9
- publicKey: Buffer,
10
- chunkIndex: number,
11
- isLast: boolean,
12
- includeChecksums: boolean = false,
13
- ): Promise<IEncryptedChunk> {
14
- const encrypted = this.ecies.encryptSimpleOrSingle(false, publicKey, data);
15
-
16
- // Prepend chunk header: 4 bytes index + 1 byte flags
17
- const header = Buffer.alloc(5);
18
- header.writeUInt32BE(chunkIndex, 0);
19
- header.writeUInt8(isLast ? 1 : 0, 4);
20
-
21
- const dataWithHeader = Buffer.concat([header, encrypted]);
22
-
23
- return {
24
- index: chunkIndex,
25
- data: dataWithHeader,
26
- isLast,
27
- metadata: includeChecksums ? { totalChunks: chunkIndex + 1 } : undefined,
28
- };
29
- }
30
-
31
- public async decryptChunk(
32
- chunkData: Buffer,
33
- privateKey: Buffer,
34
- ): Promise<{ data: Buffer; header: { index: number; flags: number } }> {
35
- // Extract chunk header: 4 bytes index + 1 byte flags
36
- const index = chunkData.readUInt32BE(0);
37
- const flags = chunkData.readUInt8(4);
38
- const encrypted = chunkData.subarray(5);
39
-
40
- const decrypted = this.ecies.decryptSimpleOrSingleWithHeader(false, privateKey, encrypted);
41
-
42
- return {
43
- data: decrypted,
44
- header: { index, flags },
45
- };
46
- }
47
- }
@@ -1,319 +0,0 @@
1
- import {
2
- ECIESError,
3
- ECIESErrorTypeEnum,
4
- IECIESConfig,
5
- IECIESConstants,
6
- SecureBuffer,
7
- SecureString,
8
- } from '@digitaldefiance/ecies-lib';
9
- import { hdkey, Wallet } from '@ethereumjs/wallet';
10
- import { generateMnemonic, mnemonicToSeedSync, validateMnemonic } from 'bip39';
11
- import { secp256k1 } from 'ethereum-cryptography/secp256k1.js';
12
- import { createHash, hkdfSync } from 'crypto';
13
- import {
14
- createEciesTranslationEngine,
15
- getEciesPluginI18nEngine,
16
- NodeEciesComponentId,
17
- NodeEciesStringKey,
18
- } from '../../i18n/ecies-i18n-factory';
19
- import { ISimpleKeyPairBuffer } from '../../interfaces/simple-keypair-buffer';
20
- import { IWalletSeed } from '../../interfaces/wallet-seed';
21
- import { Constants } from '../../constants';
22
-
23
- /**
24
- * Core encryption and decryption functions for ECIES
25
- * Includes coverage for simple and single modes, does not cover multiple mode which is in a separate module
26
- */
27
- export class EciesCryptoCore {
28
- protected readonly _config: IECIESConfig;
29
- protected readonly _consts: IECIESConstants;
30
- public get config(): IECIESConfig {
31
- return this._config;
32
- }
33
-
34
- public get consts(): IECIESConstants {
35
- return this._consts;
36
- }
37
-
38
- constructor(
39
- config: IECIESConfig,
40
- eciesParams: IECIESConstants = Constants.ECIES,
41
- ) {
42
- this._config = config;
43
- this._consts = eciesParams;
44
- }
45
-
46
- /**
47
- * Validates and normalizes a public key for ECIES operations
48
- * @param publicKey The public key to normalize
49
- * @returns Properly formatted public key
50
- */
51
- public normalizePublicKey(publicKey: Buffer): Buffer {
52
- if (!publicKey) {
53
- const pluginEngine = getEciesPluginI18nEngine();
54
- throw new ECIESError(
55
- ECIESErrorTypeEnum.InvalidEphemeralPublicKey,
56
- undefined,
57
- undefined,
58
- {
59
- error: pluginEngine.translate(
60
- NodeEciesComponentId,
61
- NodeEciesStringKey.Error_InvalidPublicKey,
62
- ),
63
- },
64
- );
65
- }
66
-
67
- const keyLength = publicKey.length;
68
- // console.log('[normalizePublicKey] Magic:', this._consts.PUBLIC_KEY_MAGIC);
69
-
70
- // Check for compressed key (33 bytes, starts with 0x02 or 0x03)
71
- if (
72
- keyLength === 33 &&
73
- (publicKey[0] === 0x02 || publicKey[0] === 0x03)
74
- ) {
75
- return publicKey;
76
- }
77
-
78
- // Check for uncompressed key (65 bytes, starts with 0x04)
79
- if (
80
- keyLength === 65 &&
81
- publicKey[0] === 0x04
82
- ) {
83
- return publicKey;
84
- }
85
-
86
- // Raw key without prefix (64 bytes) - add the 0x04 prefix
87
- if (keyLength === 64) {
88
- return Buffer.concat([
89
- Buffer.from([0x04]),
90
- publicKey,
91
- ]);
92
- }
93
-
94
- // Raw key without prefix (32 bytes) - add the 0x02 prefix (assuming even Y)
95
- // Note: This is ambiguous for compressed keys as we don't know Y parity.
96
- // But if we assume it's a raw X coordinate, we might default to 0x02?
97
- // Actually, RAW_PUBLIC_KEY_LENGTH is 32.
98
- if (keyLength === this._consts.RAW_PUBLIC_KEY_LENGTH) {
99
- // If we only have X, we can't fully reconstruct without knowing Y parity.
100
- // But maybe the intention of RAW_PUBLIC_KEY_LENGTH was for uncompressed without prefix (64 bytes)?
101
- // The constants say RAW_PUBLIC_KEY_LENGTH = 32.
102
- // So it expects X coordinate only.
103
- // We can try to prepend 0x02.
104
- return Buffer.concat([
105
- Buffer.from([this._consts.PUBLIC_KEY_MAGIC]),
106
- publicKey,
107
- ]);
108
- }
109
-
110
- const pluginEngine = getEciesPluginI18nEngine();
111
- // Invalid format
112
- throw new ECIESError(
113
- ECIESErrorTypeEnum.InvalidEphemeralPublicKey,
114
- undefined,
115
- undefined,
116
- {
117
- error: pluginEngine.translate(
118
- NodeEciesComponentId,
119
- NodeEciesStringKey.Error_InvalidPublicKeyFormat,
120
- ),
121
- keyLength: String(keyLength),
122
- expectedLength64: String(this._consts.RAW_PUBLIC_KEY_LENGTH),
123
- expectedLength65: String(this._consts.PUBLIC_KEY_LENGTH),
124
- keyPrefix: keyLength > 0 ? String(publicKey[0]) : 'N/A',
125
- expectedPrefix: String(this._consts.PUBLIC_KEY_MAGIC),
126
- },
127
- );
128
- }
129
-
130
- /**
131
- * Generate a new mnemonic
132
- * @returns {SecureString} The new mnemonic
133
- */
134
- public generateNewMnemonic(): SecureString {
135
- return new SecureString(generateMnemonic(this._config.mnemonicStrength));
136
- }
137
-
138
- /**
139
- * Generate a new wallet from a seed
140
- * @param seed {Buffer} The seed to generate the wallet from
141
- * @returns {Wallet} The new wallet
142
- */
143
- public walletFromSeed(seed: Buffer): Wallet {
144
- const hdWallet = hdkey.EthereumHDKey.fromMasterSeed(seed);
145
- return hdWallet
146
- .derivePath(this._config.primaryKeyDerivationPath)
147
- .getWallet();
148
- }
149
-
150
- /**
151
- * Generate a new wallet and seed from a mnemonic
152
- * @param mnemonic {SecureString} The mnemonic to generate the wallet and seed from
153
- * @returns {IWalletSeed} The new wallet and seed
154
- */
155
- public walletAndSeedFromMnemonic(mnemonic: SecureString): IWalletSeed {
156
- if (!mnemonic.value || !validateMnemonic(mnemonic.value)) {
157
- throw new ECIESError(
158
- ECIESErrorTypeEnum.InvalidMnemonic,
159
- createEciesTranslationEngine(),
160
- );
161
- }
162
-
163
- const seed = mnemonicToSeedSync(mnemonic.value);
164
- const wallet = this.walletFromSeed(seed);
165
-
166
- return {
167
- seed: new SecureBuffer(seed),
168
- wallet,
169
- };
170
- }
171
-
172
- /**
173
- * Generate a new wallet and seed from a mnemonic
174
- * @param wallet {Wallet} The wallet to generate the key pair from
175
- * @returns {ISimpleKeyPairBuffer} The new key pair
176
- */
177
- public walletToSimpleKeyPairBuffer(wallet: Wallet): ISimpleKeyPairBuffer {
178
- const privateKey = Buffer.from(wallet.getPrivateKey());
179
- const publicKey = this.getPublicKey(privateKey);
180
-
181
- return {
182
- privateKey,
183
- publicKey,
184
- };
185
- }
186
-
187
- /**
188
- * Create a simple key pair from a seed
189
- * @param seed {Buffer} The seed to generate the key pair from
190
- * @returns {ISimpleKeyPairBuffer} The new key pair
191
- */
192
- public seedToSimpleKeyPairBuffer(seed: Buffer): ISimpleKeyPairBuffer {
193
- const wallet = this.walletFromSeed(seed);
194
- return this.walletToSimpleKeyPairBuffer(wallet);
195
- }
196
-
197
- /**
198
- * Create a simple key pair from a mnemonic
199
- * @param mnemonic {SecureString} The mnemonic to generate the key pair from
200
- * @returns {ISimpleKeyPairBuffer} The new key pair
201
- */
202
- public mnemonicToSimpleKeyPairBuffer(
203
- mnemonic: SecureString,
204
- ): ISimpleKeyPairBuffer {
205
- const { seed } = this.walletAndSeedFromMnemonic(mnemonic);
206
- return this.seedToSimpleKeyPairBuffer(Buffer.from(seed.value));
207
- }
208
-
209
- /**
210
- * Generate a random private key
211
- * @returns {Buffer} The new private key
212
- */
213
- public generatePrivateKey(): Buffer {
214
- return Buffer.from(secp256k1.utils.randomPrivateKey());
215
- }
216
-
217
- /**
218
- * Get public key from private key
219
- * @param privateKey {Buffer} The private key
220
- * @returns {Buffer} The public key
221
- */
222
- public getPublicKey(privateKey: Buffer): Buffer {
223
- // Security fix 2: Private key validation
224
- if (privateKey.every(byte => byte === 0)) {
225
- throw new ECIESError(
226
- ECIESErrorTypeEnum.PrivateKeyNotLoaded,
227
- createEciesTranslationEngine(),
228
- );
229
- }
230
- const publicKey = secp256k1.getPublicKey(privateKey, true);
231
- return Buffer.from(publicKey);
232
- }
233
-
234
- /**
235
- * Generate ephemeral key pair for ECIES
236
- * @returns {Promise<ISimpleKeyPairBuffer>} The key pair
237
- */
238
- public async generateEphemeralKeyPair(): Promise<{
239
- privateKey: Buffer;
240
- publicKey: Buffer;
241
- }> {
242
- const privateKey = this.generatePrivateKey();
243
- const publicKey = this.getPublicKey(privateKey);
244
- return { privateKey, publicKey };
245
- }
246
-
247
- /**
248
- * Compute ECDH shared secret
249
- * @param privateKey {Buffer} The private key
250
- * @param publicKey {Buffer} The public key
251
- * @returns {Buffer} The shared secret
252
- */
253
- public computeSharedSecret(privateKey: Buffer, publicKey: Buffer): Buffer {
254
- // Security fix 1: Public key validation (check normalized key)
255
- const normalizedKey = this.normalizePublicKey(publicKey);
256
- const isAllZeros = normalizedKey.slice(1).every(byte => byte === 0);
257
- if (isAllZeros) {
258
- throw new ECIESError(
259
- ECIESErrorTypeEnum.InvalidRecipientPublicKey,
260
- createEciesTranslationEngine(),
261
- );
262
- }
263
-
264
- const sharedSecret = secp256k1.getSharedSecret(privateKey, normalizedKey, true);
265
- const secret = Buffer.from(sharedSecret.slice(1)); // Remove the 0x02/0x03 prefix
266
-
267
- // Security fix 3: Shared secret validation
268
- if (secret.every(byte => byte === 0)) {
269
- throw new ECIESError(
270
- ECIESErrorTypeEnum.SecretComputationFailed,
271
- createEciesTranslationEngine(),
272
- );
273
- }
274
-
275
- return secret;
276
- }
277
-
278
- /**
279
- * Derive a symmetric key from a shared secret using HKDF
280
- * @param sharedSecret The shared secret (ECDH output)
281
- * @param salt Optional salt
282
- * @param info Optional context info
283
- * @param length Length of the output key (default 32 for AES-256)
284
- */
285
- public deriveSharedKey(
286
- sharedSecret: Buffer,
287
- salt: Buffer = Buffer.alloc(0),
288
- info: Buffer = Buffer.alloc(0),
289
- length: number = 32
290
- ): Buffer {
291
- return Buffer.from(hkdfSync('sha256', sharedSecret, salt, info, length));
292
- }
293
-
294
- /**
295
- * Sign a message using ECDSA
296
- * @param privateKey The private key to sign with
297
- * @param message The message to sign
298
- */
299
- public sign(privateKey: Buffer, message: Buffer): Buffer {
300
- const hash = createHash('sha256').update(message).digest();
301
- const signature = secp256k1.sign(hash, privateKey);
302
- return Buffer.from(signature.toCompactRawBytes());
303
- }
304
-
305
- /**
306
- * Verify a signature using ECDSA
307
- * @param publicKey The public key to verify with
308
- * @param message The message that was signed
309
- * @param signature The signature to verify
310
- */
311
- public verify(publicKey: Buffer, message: Buffer, signature: Buffer): boolean {
312
- const hash = createHash('sha256').update(message).digest();
313
- try {
314
- return secp256k1.verify(signature, hash, publicKey);
315
- } catch (e) {
316
- return false;
317
- }
318
- }
319
- }