@digitaldefiance/node-ecies-lib 4.5.19 → 4.6.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 (353) hide show
  1. package/package.json +2 -2
  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.d.ts +3 -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.d.ts +3 -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 +3 -0
  31. package/src/enumerations/index.d.ts.map +1 -0
  32. package/src/enumerations/index.js +6 -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/enumerations/voting-error-type.d.ts +37 -0
  39. package/src/enumerations/voting-error-type.d.ts.map +1 -0
  40. package/src/enumerations/voting-error-type.js +48 -0
  41. package/src/enumerations/voting-error-type.js.map +1 -0
  42. package/src/errors/index.d.ts +2 -0
  43. package/src/errors/index.d.ts.map +1 -0
  44. package/src/errors/index.js +5 -0
  45. package/src/errors/index.js.map +1 -0
  46. package/src/errors/voting.d.ts +16 -0
  47. package/src/errors/voting.d.ts.map +1 -0
  48. package/src/errors/voting.js +27 -0
  49. package/src/errors/voting.js.map +1 -0
  50. package/src/i18n/ecies-i18n-factory.d.ts +28 -0
  51. package/src/i18n/ecies-i18n-factory.d.ts.map +1 -0
  52. package/src/i18n/ecies-i18n-factory.js +90 -0
  53. package/src/i18n/ecies-i18n-factory.js.map +1 -0
  54. package/src/i18n/index.d.ts +3 -0
  55. package/src/i18n/index.d.ts.map +1 -0
  56. package/src/i18n/index.js +8 -0
  57. package/src/i18n/index.js.map +1 -0
  58. package/src/i18n/node-ecies-i18n-setup.d.ts +5 -0
  59. package/src/i18n/node-ecies-i18n-setup.d.ts.map +1 -0
  60. package/src/i18n/node-ecies-i18n-setup.js +48 -0
  61. package/src/i18n/node-ecies-i18n-setup.js.map +1 -0
  62. package/src/i18n/node-keys.d.ts +57 -0
  63. package/src/i18n/node-keys.d.ts.map +1 -0
  64. package/src/i18n/node-keys.js +67 -0
  65. package/src/i18n/node-keys.js.map +1 -0
  66. package/src/i18n/translations/de.d.ts +3 -0
  67. package/src/i18n/translations/de.d.ts.map +1 -0
  68. package/src/i18n/translations/de.js +57 -0
  69. package/src/i18n/translations/de.js.map +1 -0
  70. package/src/i18n/translations/en-GB.d.ts +3 -0
  71. package/src/i18n/translations/en-GB.d.ts.map +1 -0
  72. package/src/i18n/translations/en-GB.js +61 -0
  73. package/src/i18n/translations/en-GB.js.map +1 -0
  74. package/src/i18n/translations/en-US.d.ts +6 -0
  75. package/src/i18n/translations/en-US.d.ts.map +1 -0
  76. package/src/i18n/translations/en-US.js +65 -0
  77. package/src/i18n/translations/en-US.js.map +1 -0
  78. package/src/i18n/translations/es.d.ts +3 -0
  79. package/src/i18n/translations/es.d.ts.map +1 -0
  80. package/src/i18n/translations/es.js +57 -0
  81. package/src/i18n/translations/es.js.map +1 -0
  82. package/src/i18n/translations/fr.d.ts +3 -0
  83. package/src/i18n/translations/fr.d.ts.map +1 -0
  84. package/src/i18n/translations/fr.js +57 -0
  85. package/src/i18n/translations/fr.js.map +1 -0
  86. package/src/i18n/translations/index.d.ts +9 -0
  87. package/src/i18n/translations/index.d.ts.map +1 -0
  88. package/src/i18n/translations/index.js +20 -0
  89. package/src/i18n/translations/index.js.map +1 -0
  90. package/src/i18n/translations/ja.d.ts +3 -0
  91. package/src/i18n/translations/ja.d.ts.map +1 -0
  92. package/src/i18n/translations/ja.js +57 -0
  93. package/src/i18n/translations/ja.js.map +1 -0
  94. package/src/i18n/translations/uk.d.ts +3 -0
  95. package/src/i18n/translations/uk.d.ts.map +1 -0
  96. package/src/i18n/translations/uk.js +57 -0
  97. package/src/i18n/translations/uk.js.map +1 -0
  98. package/src/i18n/translations/zh-cn.d.ts +3 -0
  99. package/src/i18n/translations/zh-cn.d.ts.map +1 -0
  100. package/src/i18n/translations/zh-cn.js +57 -0
  101. package/src/i18n/translations/zh-cn.js.map +1 -0
  102. package/src/i18n-setup.d.ts +26 -0
  103. package/src/i18n-setup.d.ts.map +1 -0
  104. package/src/i18n-setup.js +111 -0
  105. package/src/i18n-setup.js.map +1 -0
  106. package/src/index.d.ts +21 -0
  107. package/src/index.d.ts.map +1 -0
  108. package/src/index.js +36 -0
  109. package/src/index.js.map +1 -0
  110. package/src/interfaces/authenticated-cipher.d.ts +12 -0
  111. package/src/interfaces/authenticated-cipher.d.ts.map +1 -0
  112. package/src/interfaces/authenticated-cipher.js +3 -0
  113. package/src/interfaces/authenticated-cipher.js.map +1 -0
  114. package/src/interfaces/authenticated-decipher.d.ts +11 -0
  115. package/src/interfaces/authenticated-decipher.d.ts.map +1 -0
  116. package/src/interfaces/authenticated-decipher.js +3 -0
  117. package/src/interfaces/authenticated-decipher.js.map +1 -0
  118. package/src/interfaces/backend-member-operational.d.ts +48 -0
  119. package/src/interfaces/backend-member-operational.d.ts.map +1 -0
  120. package/src/interfaces/backend-member-operational.js +3 -0
  121. package/src/interfaces/backend-member-operational.js.map +1 -0
  122. package/src/interfaces/checksum-config.d.ts +5 -0
  123. package/src/interfaces/checksum-config.d.ts.map +1 -0
  124. package/src/interfaces/checksum-config.js +3 -0
  125. package/src/interfaces/checksum-config.js.map +1 -0
  126. package/src/interfaces/checksum-consts.d.ts +11 -0
  127. package/src/interfaces/checksum-consts.d.ts.map +1 -0
  128. package/src/interfaces/checksum-consts.js +3 -0
  129. package/src/interfaces/checksum-consts.js.map +1 -0
  130. package/src/interfaces/constants.d.ts +52 -0
  131. package/src/interfaces/constants.d.ts.map +1 -0
  132. package/src/interfaces/constants.js +3 -0
  133. package/src/interfaces/constants.js.map +1 -0
  134. package/src/interfaces/ecies-consts.d.ts +88 -0
  135. package/src/interfaces/ecies-consts.d.ts.map +1 -0
  136. package/src/interfaces/ecies-consts.js +3 -0
  137. package/src/interfaces/ecies-consts.js.map +1 -0
  138. package/src/interfaces/encrypted-chunk.d.ts +12 -0
  139. package/src/interfaces/encrypted-chunk.d.ts.map +1 -0
  140. package/src/interfaces/encrypted-chunk.js +3 -0
  141. package/src/interfaces/encrypted-chunk.js.map +1 -0
  142. package/src/interfaces/encryption-consts.d.ts +11 -0
  143. package/src/interfaces/encryption-consts.d.ts.map +1 -0
  144. package/src/interfaces/encryption-consts.js +3 -0
  145. package/src/interfaces/encryption-consts.js.map +1 -0
  146. package/src/interfaces/index.d.ts +31 -0
  147. package/src/interfaces/index.d.ts.map +1 -0
  148. package/src/interfaces/index.js +33 -0
  149. package/src/interfaces/index.js.map +1 -0
  150. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts +6 -0
  151. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts.map +1 -0
  152. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js +3 -0
  153. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js.map +1 -0
  154. package/src/interfaces/keyring-consts.d.ts +6 -0
  155. package/src/interfaces/keyring-consts.d.ts.map +1 -0
  156. package/src/interfaces/keyring-consts.js +3 -0
  157. package/src/interfaces/keyring-consts.js.map +1 -0
  158. package/src/interfaces/member-with-mnemonic.d.ts +7 -0
  159. package/src/interfaces/member-with-mnemonic.d.ts.map +1 -0
  160. package/src/interfaces/member-with-mnemonic.js +3 -0
  161. package/src/interfaces/member-with-mnemonic.js.map +1 -0
  162. package/src/interfaces/member.d.ts +47 -0
  163. package/src/interfaces/member.d.ts.map +1 -0
  164. package/src/interfaces/member.js +3 -0
  165. package/src/interfaces/member.js.map +1 -0
  166. package/src/interfaces/multi-encrypted-message.d.ts +8 -0
  167. package/src/interfaces/multi-encrypted-message.d.ts.map +1 -0
  168. package/src/interfaces/multi-encrypted-message.js +3 -0
  169. package/src/interfaces/multi-encrypted-message.js.map +1 -0
  170. package/src/interfaces/multi-encrypted-parsed-header.d.ts +27 -0
  171. package/src/interfaces/multi-encrypted-parsed-header.d.ts.map +1 -0
  172. package/src/interfaces/multi-encrypted-parsed-header.js +3 -0
  173. package/src/interfaces/multi-encrypted-parsed-header.js.map +1 -0
  174. package/src/interfaces/multi-recipient-chunk.d.ts +26 -0
  175. package/src/interfaces/multi-recipient-chunk.d.ts.map +1 -0
  176. package/src/interfaces/multi-recipient-chunk.js +15 -0
  177. package/src/interfaces/multi-recipient-chunk.js.map +1 -0
  178. package/src/interfaces/pbkdf-profiles.d.ts +6 -0
  179. package/src/interfaces/pbkdf-profiles.d.ts.map +1 -0
  180. package/src/interfaces/pbkdf-profiles.js +3 -0
  181. package/src/interfaces/pbkdf-profiles.js.map +1 -0
  182. package/src/interfaces/pbkdf2-result.d.ts +6 -0
  183. package/src/interfaces/pbkdf2-result.d.ts.map +1 -0
  184. package/src/interfaces/pbkdf2-result.js +3 -0
  185. package/src/interfaces/pbkdf2-result.js.map +1 -0
  186. package/src/interfaces/signing-key-private-key-info.d.ts +11 -0
  187. package/src/interfaces/signing-key-private-key-info.d.ts.map +1 -0
  188. package/src/interfaces/signing-key-private-key-info.js +3 -0
  189. package/src/interfaces/signing-key-private-key-info.js.map +1 -0
  190. package/src/interfaces/simple-keypair-buffer.d.ts +6 -0
  191. package/src/interfaces/simple-keypair-buffer.d.ts.map +1 -0
  192. package/src/interfaces/simple-keypair-buffer.js +3 -0
  193. package/src/interfaces/simple-keypair-buffer.js.map +1 -0
  194. package/src/interfaces/simple-keypair.d.ts +6 -0
  195. package/src/interfaces/simple-keypair.d.ts.map +1 -0
  196. package/src/interfaces/simple-keypair.js +3 -0
  197. package/src/interfaces/simple-keypair.js.map +1 -0
  198. package/src/interfaces/simple-public-key-only-buffer.d.ts +4 -0
  199. package/src/interfaces/simple-public-key-only-buffer.d.ts.map +1 -0
  200. package/src/interfaces/simple-public-key-only-buffer.js +3 -0
  201. package/src/interfaces/simple-public-key-only-buffer.js.map +1 -0
  202. package/src/interfaces/simple-public-key-only.d.ts +4 -0
  203. package/src/interfaces/simple-public-key-only.d.ts.map +1 -0
  204. package/src/interfaces/simple-public-key-only.js +3 -0
  205. package/src/interfaces/simple-public-key-only.js.map +1 -0
  206. package/src/interfaces/single-encrypted-parsed-header.d.ts +35 -0
  207. package/src/interfaces/single-encrypted-parsed-header.d.ts.map +1 -0
  208. package/src/interfaces/single-encrypted-parsed-header.js +3 -0
  209. package/src/interfaces/single-encrypted-parsed-header.js.map +1 -0
  210. package/src/interfaces/stream-config.d.ts +6 -0
  211. package/src/interfaces/stream-config.d.ts.map +1 -0
  212. package/src/interfaces/stream-config.js +8 -0
  213. package/src/interfaces/stream-config.js.map +1 -0
  214. package/src/interfaces/stream-progress.d.ts +22 -0
  215. package/src/interfaces/stream-progress.d.ts.map +1 -0
  216. package/src/interfaces/stream-progress.js +3 -0
  217. package/src/interfaces/stream-progress.js.map +1 -0
  218. package/src/interfaces/voting-consts.d.ts +86 -0
  219. package/src/interfaces/voting-consts.d.ts.map +1 -0
  220. package/src/interfaces/voting-consts.js +27 -0
  221. package/src/interfaces/voting-consts.js.map +1 -0
  222. package/src/interfaces/wallet-seed.d.ts +7 -0
  223. package/src/interfaces/wallet-seed.d.ts.map +1 -0
  224. package/src/interfaces/wallet-seed.js +3 -0
  225. package/src/interfaces/wallet-seed.js.map +1 -0
  226. package/src/interfaces/wrapped-key-consts.d.ts +7 -0
  227. package/src/interfaces/wrapped-key-consts.d.ts.map +1 -0
  228. package/src/interfaces/wrapped-key-consts.js +3 -0
  229. package/src/interfaces/wrapped-key-consts.js.map +1 -0
  230. package/src/isolated-private.d.ts +62 -0
  231. package/src/isolated-private.d.ts.map +1 -0
  232. package/src/isolated-private.js +139 -0
  233. package/src/isolated-private.js.map +1 -0
  234. package/src/isolated-public.d.ts +118 -0
  235. package/src/isolated-public.d.ts.map +1 -0
  236. package/src/isolated-public.js +317 -0
  237. package/src/isolated-public.js.map +1 -0
  238. package/src/lib/crypto-container.d.ts +13 -0
  239. package/src/lib/crypto-container.d.ts.map +1 -0
  240. package/src/lib/crypto-container.js +32 -0
  241. package/src/lib/crypto-container.js.map +1 -0
  242. package/src/lib/index.d.ts +4 -0
  243. package/src/lib/index.d.ts.map +1 -0
  244. package/src/lib/index.js +7 -0
  245. package/src/lib/index.js.map +1 -0
  246. package/src/lib/invariant-validator.d.ts +69 -0
  247. package/src/lib/invariant-validator.d.ts.map +1 -0
  248. package/src/lib/invariant-validator.js +98 -0
  249. package/src/lib/invariant-validator.js.map +1 -0
  250. package/src/lib/invariants/index.d.ts +8 -0
  251. package/src/lib/invariants/index.d.ts.map +1 -0
  252. package/src/lib/invariants/index.js +12 -0
  253. package/src/lib/invariants/index.js.map +1 -0
  254. package/src/lib/invariants/recipient-id-consistency.d.ts +41 -0
  255. package/src/lib/invariants/recipient-id-consistency.d.ts.map +1 -0
  256. package/src/lib/invariants/recipient-id-consistency.js +75 -0
  257. package/src/lib/invariants/recipient-id-consistency.js.map +1 -0
  258. package/src/member.d.ts +100 -0
  259. package/src/member.d.ts.map +1 -0
  260. package/src/member.js +345 -0
  261. package/src/member.js.map +1 -0
  262. package/src/services/aes-gcm.d.ts +66 -0
  263. package/src/services/aes-gcm.d.ts.map +1 -0
  264. package/src/services/aes-gcm.js +161 -0
  265. package/src/services/aes-gcm.js.map +1 -0
  266. package/src/services/chunk-processor.d.ts +15 -0
  267. package/src/services/chunk-processor.d.ts.map +1 -0
  268. package/src/services/chunk-processor.js +36 -0
  269. package/src/services/chunk-processor.js.map +1 -0
  270. package/src/services/ecies/crypto-core.d.ts +104 -0
  271. package/src/services/ecies/crypto-core.d.ts.map +1 -0
  272. package/src/services/ecies/crypto-core.js +234 -0
  273. package/src/services/ecies/crypto-core.js.map +1 -0
  274. package/src/services/ecies/file.d.ts +30 -0
  275. package/src/services/ecies/file.d.ts.map +1 -0
  276. package/src/services/ecies/file.js +112 -0
  277. package/src/services/ecies/file.js.map +1 -0
  278. package/src/services/ecies/index.d.ts +8 -0
  279. package/src/services/ecies/index.d.ts.map +1 -0
  280. package/src/services/ecies/index.js +11 -0
  281. package/src/services/ecies/index.js.map +1 -0
  282. package/src/services/ecies/multi-recipient.d.ts +84 -0
  283. package/src/services/ecies/multi-recipient.d.ts.map +1 -0
  284. package/src/services/ecies/multi-recipient.js +502 -0
  285. package/src/services/ecies/multi-recipient.js.map +1 -0
  286. package/src/services/ecies/service.d.ts +75 -0
  287. package/src/services/ecies/service.d.ts.map +1 -0
  288. package/src/services/ecies/service.js +152 -0
  289. package/src/services/ecies/service.js.map +1 -0
  290. package/src/services/ecies/signature.d.ts +38 -0
  291. package/src/services/ecies/signature.d.ts.map +1 -0
  292. package/src/services/ecies/signature.js +70 -0
  293. package/src/services/ecies/signature.js.map +1 -0
  294. package/src/services/ecies/single-recipient.d.ts +83 -0
  295. package/src/services/ecies/single-recipient.d.ts.map +1 -0
  296. package/src/services/ecies/single-recipient.js +452 -0
  297. package/src/services/ecies/single-recipient.js.map +1 -0
  298. package/src/services/ecies/utilities.d.ts +33 -0
  299. package/src/services/ecies/utilities.d.ts.map +1 -0
  300. package/src/services/ecies/utilities.js +91 -0
  301. package/src/services/ecies/utilities.js.map +1 -0
  302. package/src/services/encryption-stream.d.ts +33 -0
  303. package/src/services/encryption-stream.d.ts.map +1 -0
  304. package/src/services/encryption-stream.js +211 -0
  305. package/src/services/encryption-stream.js.map +1 -0
  306. package/src/services/index.d.ts +9 -0
  307. package/src/services/index.d.ts.map +1 -0
  308. package/src/services/index.js +14 -0
  309. package/src/services/index.js.map +1 -0
  310. package/src/services/multi-recipient-processor.d.ts +72 -0
  311. package/src/services/multi-recipient-processor.d.ts.map +1 -0
  312. package/src/services/multi-recipient-processor.js +325 -0
  313. package/src/services/multi-recipient-processor.js.map +1 -0
  314. package/src/services/pbkdf2.d.ts +105 -0
  315. package/src/services/pbkdf2.d.ts.map +1 -0
  316. package/src/services/pbkdf2.js +191 -0
  317. package/src/services/pbkdf2.js.map +1 -0
  318. package/src/services/progress-tracker.d.ts +14 -0
  319. package/src/services/progress-tracker.d.ts.map +1 -0
  320. package/src/services/progress-tracker.js +94 -0
  321. package/src/services/progress-tracker.js.map +1 -0
  322. package/src/services/voting.service.d.ts +262 -0
  323. package/src/services/voting.service.d.ts.map +1 -0
  324. package/src/services/voting.service.js +791 -0
  325. package/src/services/voting.service.js.map +1 -0
  326. package/src/test-mocks/index.d.ts +2 -0
  327. package/src/test-mocks/index.d.ts.map +1 -0
  328. package/src/test-mocks/index.js +5 -0
  329. package/src/test-mocks/index.js.map +1 -0
  330. package/src/test-mocks/mock-backend-member.d.ts +76 -0
  331. package/src/test-mocks/mock-backend-member.d.ts.map +1 -0
  332. package/src/test-mocks/mock-backend-member.js +139 -0
  333. package/src/test-mocks/mock-backend-member.js.map +1 -0
  334. package/src/testing.d.ts +2 -0
  335. package/src/testing.d.ts.map +1 -0
  336. package/src/testing.js +6 -0
  337. package/src/testing.js.map +1 -0
  338. package/src/types/id-guards.d.ts +39 -0
  339. package/src/types/id-guards.d.ts.map +1 -0
  340. package/src/types/id-guards.js +91 -0
  341. package/src/types/id-guards.js.map +1 -0
  342. package/src/types/index.d.ts +2 -0
  343. package/src/types/index.d.ts.map +1 -0
  344. package/src/types/index.js +5 -0
  345. package/src/types/index.js.map +1 -0
  346. package/src/types.d.ts +26 -0
  347. package/src/types.d.ts.map +1 -0
  348. package/src/types.js +6 -0
  349. package/src/types.js.map +1 -0
  350. package/src/utils.d.ts +11 -0
  351. package/src/utils.d.ts.map +1 -0
  352. package/src/utils.js +82 -0
  353. package/src/utils.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipient-id-consistency.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/invariants/recipient-id-consistency.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD;;GAEG;AACH,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IACnC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;CAC1C;AAED;;GAEG;AACH,uBAAe,aAAc,YAAW,UAAU;aAE9B,IAAI,EAAE,MAAM;aACZ,WAAW,EAAE,MAAM;gBADnB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM;IAGrC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAC3C,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;CAClD;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,+BAAgC,SAAQ,aAAa;;IAQhE,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAgBlC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;CAoDzC"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecipientIdConsistencyInvariant = void 0;
4
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
5
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
6
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
7
+ const ecies_i18n_factory_1 = require("../../i18n/ecies-i18n-factory");
8
+ /**
9
+ * Base class for invariants
10
+ */
11
+ class BaseInvariant {
12
+ name;
13
+ description;
14
+ constructor(name, description) {
15
+ this.name = name;
16
+ this.description = description;
17
+ }
18
+ }
19
+ /**
20
+ * Node.js-specific recipient ID consistency invariant.
21
+ *
22
+ * Extends the base ecies-lib invariant to also validate node-specific
23
+ * ENCRYPTION.RECIPIENT_ID_SIZE constant.
24
+ *
25
+ * This invariant would have caught the 12 vs 32 byte discrepancy.
26
+ *
27
+ * Checks:
28
+ * - MEMBER_ID_LENGTH === idProvider.byteLength
29
+ * - ECIES.MULTIPLE.RECIPIENT_ID_SIZE === idProvider.byteLength
30
+ * - ENCRYPTION.RECIPIENT_ID_SIZE === idProvider.byteLength (Node-specific)
31
+ * - All values must be in sync
32
+ */
33
+ class RecipientIdConsistencyInvariant extends BaseInvariant {
34
+ constructor() {
35
+ super('NodeRecipientIdConsistency', 'All recipient ID size configurations must match the ID provider byte length (including Node-specific ENCRYPTION constant)');
36
+ }
37
+ check(config) {
38
+ const baseChecks = config.MEMBER_ID_LENGTH === config.idProvider.byteLength &&
39
+ config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE === config.idProvider.byteLength;
40
+ // ENCRYPTION is node-specific and may not exist in all configs
41
+ if (config.ENCRYPTION && 'RECIPIENT_ID_SIZE' in config.ENCRYPTION) {
42
+ return (baseChecks &&
43
+ config.ENCRYPTION.RECIPIENT_ID_SIZE === config.idProvider.byteLength);
44
+ }
45
+ return baseChecks;
46
+ }
47
+ errorMessage(config) {
48
+ const issues = [];
49
+ if (config.MEMBER_ID_LENGTH !== config.idProvider.byteLength) {
50
+ issues.push((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Invariant_MemberIdLengthMismatchTemplate, {
51
+ actual: config.MEMBER_ID_LENGTH,
52
+ expected: config.idProvider.byteLength,
53
+ }));
54
+ }
55
+ if (config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE !== config.idProvider.byteLength) {
56
+ issues.push((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Invariant_EciesMultipleRecipientIdSizeMismatchTemplate, {
57
+ actual: config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE,
58
+ expected: config.idProvider.byteLength,
59
+ }));
60
+ }
61
+ if (config.ENCRYPTION && 'RECIPIENT_ID_SIZE' in config.ENCRYPTION) {
62
+ if (config.ENCRYPTION.RECIPIENT_ID_SIZE !== config.idProvider.byteLength) {
63
+ issues.push((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Invariant_EncryptionRecipientIdSizeMismatchTemplate, {
64
+ actual: config.ENCRYPTION.RECIPIENT_ID_SIZE,
65
+ expected: config.idProvider.byteLength,
66
+ }));
67
+ }
68
+ }
69
+ return (0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Invariant_NodeRecipientIdConsistency_FailedTemplate, {
70
+ issues: issues.join('\n '),
71
+ });
72
+ }
73
+ }
74
+ exports.RecipientIdConsistencyInvariant = RecipientIdConsistencyInvariant;
75
+ //# sourceMappingURL=recipient-id-consistency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipient-id-consistency.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/invariants/recipient-id-consistency.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,0DAA0D;AAC1D,wDAAwD;AACxD,sEAGuC;AAavC;;GAEG;AACH,MAAe,aAAa;IAER;IACA;IAFlB,YACkB,IAAY,EACZ,WAAmB;QADnB,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;IAClC,CAAC;CAIL;AAED;;;;;;;;;;;;;GAaG;AACH,MAAa,+BAAgC,SAAQ,aAAa;IAChE;QACE,KAAK,CACH,4BAA4B,EAC5B,2HAA2H,CAC5H,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAkB;QACtB,MAAM,UAAU,GACd,MAAM,CAAC,gBAAgB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU;YACxD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;QAE3E,+DAA+D;QAC/D,IAAI,MAAM,CAAC,UAAU,IAAI,mBAAmB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAClE,OAAO,CACL,UAAU;gBACV,MAAM,CAAC,UAAU,CAAC,iBAAiB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,CACrE,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,YAAY,CAAC,MAAkB;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,MAAM,CAAC,gBAAgB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CACT,IAAA,4CAAuB,EACrB,uCAAkB,CAAC,8CAA8C,EACjE;gBACE,MAAM,EAAE,MAAM,CAAC,gBAAgB;gBAC/B,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;aACvC,CACF,CACF,CAAC;QACJ,CAAC;QAED,IACE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,EACxE,CAAC;YACD,MAAM,CAAC,IAAI,CACT,IAAA,4CAAuB,EACrB,uCAAkB,CAAC,4DAA4D,EAC/E;gBACE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB;gBAC/C,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;aACvC,CACF,CACF,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,IAAI,mBAAmB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAClE,IACE,MAAM,CAAC,UAAU,CAAC,iBAAiB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,EACpE,CAAC;gBACD,MAAM,CAAC,IAAI,CACT,IAAA,4CAAuB,EACrB,uCAAkB,CAAC,yDAAyD,EAC5E;oBACE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB;oBAC3C,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU;iBACvC,CACF,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAA,4CAAuB,EAC5B,uCAAkB,CAAC,yDAAyD,EAC5E;YACE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SAC5B,CACF,CAAC;IACJ,CAAC;CACF;AA5ED,0EA4EC"}
@@ -0,0 +1,100 @@
1
+ import { EmailString, MemberErrorType, MemberType, SecureBuffer, SecureString } from '@digitaldefiance/ecies-lib';
2
+ import { Types } from '@digitaldefiance/mongoose-types';
3
+ import { Wallet } from '@ethereumjs/wallet';
4
+ import type { PrivateKey, PublicKey } from 'paillier-bigint';
5
+ import { IBackendMemberOperational } from './interfaces/backend-member-operational';
6
+ import { IEncryptedChunk } from './interfaces/encrypted-chunk';
7
+ import { IMember } from './interfaces/member';
8
+ import { IStreamProgress } from './interfaces/stream-progress';
9
+ import { ECIESService } from './services/ecies/service';
10
+ import { SignatureBuffer } from './types';
11
+ /**
12
+ * Custom error classes that work with the plugin i18n system
13
+ */
14
+ export declare class NodeMemberError extends Error {
15
+ readonly type: MemberErrorType;
16
+ constructor(message: string, type: MemberErrorType);
17
+ }
18
+ /**
19
+ * A member of an ECIES interchange
20
+ */
21
+ export declare class Member<TID extends string | Types.ObjectId | Buffer = Buffer> implements IMember<TID>, IBackendMemberOperational<TID> {
22
+ private readonly _eciesService;
23
+ private readonly _id;
24
+ private readonly _type;
25
+ private readonly _name;
26
+ private readonly _email;
27
+ private readonly _publicKey;
28
+ private readonly _creatorId;
29
+ private readonly _dateCreated;
30
+ private readonly _dateUpdated;
31
+ private _privateKey?;
32
+ private _wallet?;
33
+ private _votingPublicKey?;
34
+ private _votingPrivateKey?;
35
+ constructor(eciesService: ECIESService, type: MemberType, name: string, email: EmailString, publicKey: Buffer, privateKey?: SecureBuffer, wallet?: Wallet, id?: TID, dateCreated?: Date, dateUpdated?: Date, creatorId?: TID);
36
+ get id(): TID;
37
+ get type(): MemberType;
38
+ get name(): string;
39
+ get email(): EmailString;
40
+ get publicKey(): Buffer;
41
+ get creatorId(): TID;
42
+ get dateCreated(): Date;
43
+ get dateUpdated(): Date;
44
+ get constants(): import('@digitaldefiance/ecies-lib').IECIESConstants;
45
+ getPublicKeyString(): string;
46
+ getIdString(): string;
47
+ get privateKey(): SecureBuffer | undefined;
48
+ get wallet(): Wallet;
49
+ get hasPrivateKey(): boolean;
50
+ get votingPublicKey(): PublicKey | undefined;
51
+ get votingPrivateKey(): PrivateKey | undefined;
52
+ get hasVotingPrivateKey(): boolean;
53
+ loadVotingKeys(votingPublicKey: PublicKey, votingPrivateKey?: PrivateKey): void;
54
+ unloadVotingPrivateKey(): void;
55
+ /**
56
+ * Derive Paillier voting keys from this member's ECDH keys.
57
+ * This bridges ECDSA/ECDH cryptography to homomorphic encryption for voting.
58
+ *
59
+ * @param options - Configuration options for key derivation
60
+ * @throws Error if private key is not loaded or paillier-bigint is not installed
61
+ */
62
+ deriveVotingKeys(options?: import('./services/voting.service').DeriveVotingKeysOptions): Promise<void>;
63
+ unloadPrivateKey(): void;
64
+ unloadWallet(): void;
65
+ unloadWalletAndPrivateKey(): void;
66
+ loadWallet(mnemonic: SecureString): void;
67
+ /**
68
+ * Loads the private key and optionally the voting private key.
69
+ *
70
+ * @param privateKey The private key to load.
71
+ * @param votingPrivateKey The voting private key to load.
72
+ */
73
+ loadPrivateKey(privateKey: SecureBuffer): void;
74
+ sign(data: Buffer): SignatureBuffer;
75
+ signData(data: Buffer): SignatureBuffer;
76
+ verify(signature: SignatureBuffer, data: Buffer): boolean;
77
+ verifySignature(data: Buffer, signature: Buffer, publicKey: Buffer): boolean;
78
+ private static readonly MAX_ENCRYPTION_SIZE;
79
+ private static readonly VALID_STRING_REGEX;
80
+ encryptData(data: string | Buffer, recipientPublicKey?: Buffer): Buffer;
81
+ decryptData(encryptedData: Buffer): Buffer;
82
+ toJson(): string;
83
+ dispose(): void;
84
+ encryptDataStream(source: AsyncIterable<Buffer>, options?: {
85
+ recipientPublicKey?: Buffer;
86
+ onProgress?: (progress: IStreamProgress) => void;
87
+ signal?: AbortSignal;
88
+ }): AsyncGenerator<IEncryptedChunk, void, unknown>;
89
+ decryptDataStream(source: AsyncIterable<Buffer>, options?: {
90
+ onProgress?: (progress: IStreamProgress) => void;
91
+ signal?: AbortSignal;
92
+ }): AsyncGenerator<Buffer, void, unknown>;
93
+ static fromJson(json: string, eciesService: ECIESService): Member;
94
+ static fromMnemonic(mnemonic: SecureString, eciesService: ECIESService, memberType?: MemberType, name?: string, email?: EmailString): Member;
95
+ static newMember(eciesService: ECIESService, type: MemberType, name: string, email: EmailString, forceMnemonic?: SecureString, createdBy?: Buffer): {
96
+ member: Member;
97
+ mnemonic: SecureString;
98
+ };
99
+ }
100
+ //# sourceMappingURL=member.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-ecies-lib/src/member.ts"],"names":[],"mappings":"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"}
package/src/member.js ADDED
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Member = exports.NodeMemberError = void 0;
4
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
6
+ const mongoose_types_1 = require("@digitaldefiance/mongoose-types");
7
+ const constants_1 = require("./constants");
8
+ const ecies_i18n_factory_1 = require("./i18n/ecies-i18n-factory");
9
+ const encryption_stream_1 = require("./services/encryption-stream");
10
+ const types_1 = require("./types");
11
+ /**
12
+ * Custom error classes that work with the plugin i18n system
13
+ */
14
+ class NodeMemberError extends Error {
15
+ type;
16
+ constructor(message, type) {
17
+ super(message);
18
+ this.type = type;
19
+ this.name = 'NodeMemberError';
20
+ }
21
+ }
22
+ exports.NodeMemberError = NodeMemberError;
23
+ /**
24
+ * A member of an ECIES interchange
25
+ */
26
+ class Member {
27
+ _eciesService;
28
+ _id;
29
+ _type;
30
+ _name;
31
+ _email;
32
+ _publicKey;
33
+ _creatorId;
34
+ _dateCreated;
35
+ _dateUpdated;
36
+ _privateKey;
37
+ _wallet;
38
+ // Optional voting keys for homomorphic encryption voting systems
39
+ _votingPublicKey;
40
+ _votingPrivateKey;
41
+ constructor(
42
+ // Add injected services as parameters
43
+ eciesService,
44
+ // Original parameters
45
+ type, name, email, publicKey, privateKey, wallet, id, dateCreated, dateUpdated, creatorId) {
46
+ // Assign injected services
47
+ this._eciesService = eciesService;
48
+ // Assign original parameters
49
+ this._type = type;
50
+ this._id = id ?? (0, types_1.toBuffer)(constants_1.Constants.idProvider.generate());
51
+ this._name = name;
52
+ if (!this._name || this._name.length == 0) {
53
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_MissingMemberName), ecies_lib_1.MemberErrorType.MissingMemberName);
54
+ }
55
+ if (this._name.trim() != this._name) {
56
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_InvalidMemberNameWhitespace), ecies_lib_1.MemberErrorType.InvalidMemberNameWhitespace);
57
+ }
58
+ this._email = email;
59
+ this._publicKey = publicKey;
60
+ this._privateKey = privateKey;
61
+ this._wallet = wallet;
62
+ // don't create a new date object with nearly identical values to the existing one
63
+ let _now = null;
64
+ const now = function () {
65
+ if (!_now) {
66
+ _now = new Date();
67
+ }
68
+ return _now;
69
+ };
70
+ this._dateCreated = dateCreated ?? now();
71
+ this._dateUpdated = dateUpdated ?? now();
72
+ this._creatorId = creatorId ?? this._id;
73
+ }
74
+ // Required getters
75
+ get id() {
76
+ return this._id;
77
+ }
78
+ get type() {
79
+ return this._type;
80
+ }
81
+ get name() {
82
+ return this._name;
83
+ }
84
+ get email() {
85
+ return this._email;
86
+ }
87
+ get publicKey() {
88
+ return this._publicKey;
89
+ }
90
+ get creatorId() {
91
+ return this._creatorId;
92
+ }
93
+ get dateCreated() {
94
+ return this._dateCreated;
95
+ }
96
+ get dateUpdated() {
97
+ return this._dateUpdated;
98
+ }
99
+ get constants() {
100
+ return constants_1.Constants.ECIES;
101
+ }
102
+ // Helper methods for string conversion
103
+ getPublicKeyString() {
104
+ return this._publicKey.toString('hex');
105
+ }
106
+ getIdString() {
107
+ if (typeof this._id === 'string') {
108
+ return this._id;
109
+ }
110
+ else if (Buffer.isBuffer(this._id)) {
111
+ return this._id.toString('hex');
112
+ }
113
+ else if (this._id instanceof mongoose_types_1.Types.ObjectId) {
114
+ return this._id.toString();
115
+ }
116
+ // Fallback for Uint8Array
117
+ return Buffer.from(this._id).toString('hex');
118
+ }
119
+ // Optional private data getters
120
+ get privateKey() {
121
+ return this._privateKey;
122
+ }
123
+ get wallet() {
124
+ if (!this._wallet) {
125
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_NoWallet), ecies_lib_1.MemberErrorType.NoWallet);
126
+ }
127
+ return this._wallet;
128
+ }
129
+ // State getters
130
+ get hasPrivateKey() {
131
+ return this._privateKey !== undefined;
132
+ }
133
+ get votingPublicKey() {
134
+ return this._votingPublicKey;
135
+ }
136
+ get votingPrivateKey() {
137
+ return this._votingPrivateKey;
138
+ }
139
+ get hasVotingPrivateKey() {
140
+ return this._votingPrivateKey !== undefined;
141
+ }
142
+ loadVotingKeys(votingPublicKey, votingPrivateKey) {
143
+ this._votingPublicKey = votingPublicKey;
144
+ if (votingPrivateKey) {
145
+ this._votingPrivateKey = votingPrivateKey;
146
+ }
147
+ }
148
+ unloadVotingPrivateKey() {
149
+ this._votingPrivateKey = undefined;
150
+ }
151
+ /**
152
+ * Derive Paillier voting keys from this member's ECDH keys.
153
+ * This bridges ECDSA/ECDH cryptography to homomorphic encryption for voting.
154
+ *
155
+ * @param options - Configuration options for key derivation
156
+ * @throws Error if private key is not loaded or paillier-bigint is not installed
157
+ */
158
+ async deriveVotingKeys(options) {
159
+ if (!this._privateKey) {
160
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_MissingPrivateKey), ecies_lib_1.MemberErrorType.MissingPrivateKey);
161
+ }
162
+ // Import deriveVotingKeysFromECDH from voting service
163
+ const { deriveVotingKeysFromECDH } =
164
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
165
+ require('./services/voting.service');
166
+ // Derive keys using ECDH bridge
167
+ const keyPair = deriveVotingKeysFromECDH((0, types_1.toUint8Array)(this._privateKey.value), (0, types_1.toUint8Array)(this._publicKey), options);
168
+ // Load the derived keys
169
+ this._votingPublicKey = keyPair.publicKey;
170
+ this._votingPrivateKey = keyPair.privateKey;
171
+ }
172
+ unloadPrivateKey() {
173
+ // Do not dispose here; tests expect the same SecureBuffer instance to remain usable
174
+ // when reloaded into another member in the same process.
175
+ this._privateKey = undefined;
176
+ }
177
+ unloadWallet() {
178
+ this._wallet = undefined;
179
+ }
180
+ unloadWalletAndPrivateKey() {
181
+ this.unloadWallet();
182
+ this.unloadPrivateKey();
183
+ }
184
+ loadWallet(mnemonic) {
185
+ if (this._wallet) {
186
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_WalletAlreadyLoaded), ecies_lib_1.MemberErrorType.WalletAlreadyLoaded);
187
+ }
188
+ const { wallet } = this._eciesService.walletAndSeedFromMnemonic(mnemonic);
189
+ const privateKey = wallet.getPrivateKey();
190
+ const publicKeyWithPrefix = this._eciesService.getPublicKey(Buffer.from(privateKey));
191
+ if (publicKeyWithPrefix.toString('hex') !== this._publicKey.toString('hex')) {
192
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_InvalidMnemonic), ecies_lib_1.MemberErrorType.InvalidMnemonic);
193
+ }
194
+ this._wallet = wallet;
195
+ this._privateKey = new ecies_lib_1.SecureBuffer(privateKey);
196
+ }
197
+ /**
198
+ * Loads the private key and optionally the voting private key.
199
+ *
200
+ * @param privateKey The private key to load.
201
+ * @param votingPrivateKey The voting private key to load.
202
+ */
203
+ loadPrivateKey(privateKey) {
204
+ this._privateKey = privateKey;
205
+ }
206
+ sign(data) {
207
+ if (!this._privateKey) {
208
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_MissingPrivateKey), ecies_lib_1.MemberErrorType.MissingPrivateKey);
209
+ }
210
+ return this._eciesService.signMessage(Buffer.from(this._privateKey.value), data);
211
+ }
212
+ signData(data) {
213
+ if (!this._privateKey) {
214
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_MissingPrivateKey), ecies_lib_1.MemberErrorType.MissingPrivateKey);
215
+ }
216
+ return this._eciesService.signMessage(Buffer.from(this._privateKey.value), data);
217
+ }
218
+ verify(signature, data) {
219
+ return this._eciesService.verifyMessage(this._publicKey, data, signature);
220
+ }
221
+ verifySignature(data, signature, publicKey) {
222
+ return this._eciesService.verifyMessage(publicKey, data, signature);
223
+ }
224
+ static MAX_ENCRYPTION_SIZE = 1024 * 1024 * 10; // 10MB limit
225
+ static VALID_STRING_REGEX = /^[\x20-\x7E\n\r\t]*$/; // Printable ASCII + common whitespace
226
+ encryptData(data, recipientPublicKey) {
227
+ // Validate input
228
+ if (!data) {
229
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_MissingEncryptionData), ecies_lib_1.MemberErrorType.MissingEncryptionData);
230
+ }
231
+ // Check size limit
232
+ const dataSize = Buffer.isBuffer(data)
233
+ ? data.length
234
+ : Buffer.byteLength(data);
235
+ if (dataSize > Member.MAX_ENCRYPTION_SIZE) {
236
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_EncryptionDataTooLarge), ecies_lib_1.MemberErrorType.EncryptionDataTooLarge);
237
+ }
238
+ // Create buffer from data
239
+ const bufferData = Buffer.isBuffer(data) ? data : Buffer.from(data);
240
+ // Use recipient public key or self public key
241
+ const targetPublicKey = recipientPublicKey || this._publicKey;
242
+ return this._eciesService.encryptSimpleOrSingle(false, targetPublicKey, bufferData);
243
+ }
244
+ decryptData(encryptedData) {
245
+ if (!this._privateKey) {
246
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_MissingPrivateKey), ecies_lib_1.MemberErrorType.MissingPrivateKey);
247
+ }
248
+ // decryptSingleWithHeader now returns the Buffer directly
249
+ return this._eciesService.decryptSimpleOrSingleWithHeader(false, Buffer.from(this._privateKey.value), encryptedData);
250
+ }
251
+ toJson() {
252
+ const storage = {
253
+ id: constants_1.Constants.idProvider.serialize((0, types_1.toUint8Array)(this._id)),
254
+ type: this._type,
255
+ name: this._name,
256
+ email: this._email.toString(),
257
+ publicKey: this._publicKey.toString('base64'),
258
+ creatorId: constants_1.Constants.idProvider.serialize((0, types_1.toUint8Array)(this._creatorId)),
259
+ dateCreated: this._dateCreated.toISOString(),
260
+ dateUpdated: this._dateUpdated.toISOString(),
261
+ };
262
+ return JSON.stringify(storage);
263
+ }
264
+ dispose() {
265
+ // Ensure secret material is zeroized when disposing
266
+ try {
267
+ this._privateKey?.dispose();
268
+ }
269
+ finally {
270
+ this.unloadWalletAndPrivateKey();
271
+ }
272
+ }
273
+ async *encryptDataStream(source, options) {
274
+ const targetPublicKey = options?.recipientPublicKey || this._publicKey;
275
+ const stream = new encryption_stream_1.EncryptionStream(this._eciesService);
276
+ for await (const chunk of stream.encryptStream(source, targetPublicKey, {
277
+ onProgress: options?.onProgress,
278
+ signal: options?.signal,
279
+ })) {
280
+ yield chunk;
281
+ }
282
+ }
283
+ async *decryptDataStream(source, options) {
284
+ if (!this._privateKey) {
285
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_MissingPrivateKey), ecies_lib_1.MemberErrorType.MissingPrivateKey);
286
+ }
287
+ const stream = new encryption_stream_1.EncryptionStream(this._eciesService);
288
+ for await (const chunk of stream.decryptStream(source, Buffer.from(this._privateKey.value), {
289
+ onProgress: options?.onProgress,
290
+ signal: options?.signal,
291
+ })) {
292
+ yield chunk;
293
+ }
294
+ }
295
+ static fromJson(json,
296
+ // Add injected services as parameters
297
+ eciesService) {
298
+ const storage = JSON.parse(json);
299
+ const email = new ecies_lib_1.EmailString(storage.email);
300
+ // Pass injected services to constructor
301
+ const dateCreated = new Date(storage.dateCreated);
302
+ return new Member(eciesService, storage.type, storage.name, email, Buffer.from(storage.publicKey, 'base64'), undefined, undefined, Buffer.from(constants_1.Constants.idProvider.deserialize(storage.id)), dateCreated, new Date(storage.dateUpdated), Buffer.from(constants_1.Constants.idProvider.deserialize(storage.creatorId)));
303
+ }
304
+ static fromMnemonic(mnemonic, eciesService, memberType = ecies_lib_1.MemberType.User, name = 'Test User', email = new ecies_lib_1.EmailString('test@example.com')) {
305
+ const { wallet } = eciesService.walletAndSeedFromMnemonic(mnemonic);
306
+ const privateKey = wallet.getPrivateKey();
307
+ const publicKeyWithPrefix = eciesService.getPublicKey(Buffer.from(privateKey));
308
+ return new Member(eciesService, memberType, name, email, publicKeyWithPrefix, new ecies_lib_1.SecureBuffer(privateKey), wallet);
309
+ }
310
+ static newMember(
311
+ // Add injected services as parameters
312
+ eciesService,
313
+ // Original parameters
314
+ type, name, email, forceMnemonic, createdBy) {
315
+ // Validate inputs first
316
+ if (!name || name.length == 0) {
317
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_MissingMemberName), ecies_lib_1.MemberErrorType.MissingMemberName);
318
+ }
319
+ if (name.trim() != name) {
320
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_InvalidMemberNameWhitespace), ecies_lib_1.MemberErrorType.InvalidMemberNameWhitespace);
321
+ }
322
+ if (!email || email.toString().length == 0) {
323
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_MissingEmail), ecies_lib_1.MemberErrorType.MissingEmail);
324
+ }
325
+ if (email.toString().trim() != email.toString()) {
326
+ throw new NodeMemberError((0, ecies_i18n_factory_1.getNodeEciesTranslation)(ecies_i18n_factory_1.NodeEciesStringKey.Error_Member_InvalidEmailWhitespace), ecies_lib_1.MemberErrorType.InvalidEmailWhitespace);
327
+ }
328
+ // Use injected services
329
+ const mnemonic = forceMnemonic ?? eciesService.generateNewMnemonic();
330
+ const { wallet } = eciesService.walletAndSeedFromMnemonic(mnemonic);
331
+ // Get private key from wallet
332
+ const privateKey = wallet.getPrivateKey();
333
+ // Get compressed public key (33 bytes with 0x02 or 0x03 prefix)
334
+ const publicKeyWithPrefix = eciesService.getPublicKey(Buffer.from(privateKey));
335
+ const newId = Buffer.from(constants_1.Constants.idProvider.generate());
336
+ const dateCreated = new Date();
337
+ return {
338
+ // Pass injected services to constructor
339
+ member: new Member(eciesService, type, name, email, publicKeyWithPrefix, new ecies_lib_1.SecureBuffer(privateKey), wallet, newId, dateCreated, dateCreated, createdBy ?? newId),
340
+ mnemonic,
341
+ };
342
+ }
343
+ }
344
+ exports.Member = Member;
345
+ //# sourceMappingURL=member.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-ecies-lib/src/member.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { IConstants } from '../interfaces/constants';
2
+ export declare class AESGCMService {
3
+ private readonly algorithmName;
4
+ private readonly mode;
5
+ private readonly keyBits;
6
+ private readonly ivSize;
7
+ private readonly keyringAlgorithmConfiguration;
8
+ constructor(constants?: IConstants);
9
+ get ALGORITHM_NAME(): string;
10
+ get MODE(): string;
11
+ get KEY_BITS(): number;
12
+ /**
13
+ * Encrypt data using AES-GCM
14
+ * @param data Data to encrypt
15
+ * @param key Key to use for encryption (must be 16, 24 or 32 bytes for AES)
16
+ * @param authTag Whether to return separate auth tag
17
+ * @returns Encrypted data with IV and optional separate auth tag
18
+ */
19
+ encrypt(data: Buffer, key: Buffer, authTag?: boolean, aad?: Buffer): {
20
+ encrypted: Buffer;
21
+ iv: Buffer;
22
+ tag?: Buffer;
23
+ };
24
+ /**
25
+ * Combine encrypted data and auth tag into a single Buffer
26
+ * @param encryptedData The encrypted data
27
+ * @param authTag The authentication tag
28
+ * @returns The combined Buffer
29
+ */
30
+ combineEncryptedDataAndTag(encryptedData: Buffer, authTag: Buffer): Buffer;
31
+ /**
32
+ * Combine IV and encrypted data (with optional auth tag) into a single Buffer
33
+ * @param iv The initialization vector
34
+ * @param encryptedDataWithTag The encrypted data with auth tag already appended (if applicable)
35
+ * @returns The combined Buffer
36
+ */
37
+ combineIvAndEncryptedData(iv: Buffer, encryptedDataWithTag: Buffer): Buffer;
38
+ /**
39
+ * Combine IV, encrypted data and auth tag into a single Buffer
40
+ * @param iv The initialization vector
41
+ * @param encryptedData The encrypted data
42
+ * @param authTag The authentication tag
43
+ * @returns The combined Buffer
44
+ */
45
+ combineIvTagAndEncryptedData(iv: Buffer, encryptedData: Buffer, authTag: Buffer): Buffer;
46
+ /**
47
+ * Split combined encrypted data back into its components
48
+ * @param combinedData The combined data containing IV, encrypted data, and optionally auth tag
49
+ * @param hasAuthTag Whether the combined data includes an authentication tag
50
+ * @returns Object containing the split components
51
+ */
52
+ splitEncryptedData(combinedData: Buffer, hasAuthTag?: boolean): {
53
+ iv: Buffer;
54
+ encryptedDataWithTag: Buffer;
55
+ };
56
+ /**
57
+ * Decrypt data using AES-GCM
58
+ * @param iv The initialization vector
59
+ * @param encryptedData Data to decrypt (with auth tag appended)
60
+ * @param key Key to use for decryption (must be 16, 24 or 32 bytes for AES)
61
+ * @param authTag Whether the encrypted data includes an authentication tag
62
+ * @returns Decrypted data
63
+ */
64
+ decrypt(iv: Buffer, encryptedData: Buffer, key: Buffer, _authTag?: boolean, aad?: Buffer): Buffer;
65
+ }
66
+ //# sourceMappingURL=aes-gcm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aes-gcm.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/services/aes-gcm.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAiB;gBAEnD,SAAS,GAAE,UAAsB;IAS7C,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;;;OAMG;IACI,OAAO,CACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAe,EACxB,GAAG,CAAC,EAAE,MAAM,GACX;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;IAyDlD;;;;;OAKG;IACI,0BAA0B,CAC/B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,MAAM;IAIT;;;;;OAKG;IACI,yBAAyB,CAC9B,EAAE,EAAE,MAAM,EACV,oBAAoB,EAAE,MAAM,GAC3B,MAAM;IAIT;;;;;;OAMG;IACI,4BAA4B,CACjC,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,MAAM;IAQT;;;;;OAKG;IACI,kBAAkB,CACvB,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,OAAc,GACzB;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE;IAqB/C;;;;;;;OAOG;IACI,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EAEX,QAAQ,GAAE,OAAe,EACzB,GAAG,CAAC,EAAE,MAAM,GACX,MAAM;CA+DV"}