@digitaldefiance/node-ecies-lib 4.5.0 → 4.5.17

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 (325) hide show
  1. package/package.json +6 -2
  2. package/src/builders/ecies-builder.d.ts +0 -11
  3. package/src/builders/ecies-builder.d.ts.map +0 -1
  4. package/src/builders/ecies-builder.js +0 -26
  5. package/src/builders/ecies-builder.js.map +0 -1
  6. package/src/builders/index.d.ts +0 -3
  7. package/src/builders/index.d.ts.map +0 -1
  8. package/src/builders/index.js +0 -6
  9. package/src/builders/index.js.map +0 -1
  10. package/src/builders/member-builder.d.ts +0 -47
  11. package/src/builders/member-builder.d.ts.map +0 -1
  12. package/src/builders/member-builder.js +0 -99
  13. package/src/builders/member-builder.js.map +0 -1
  14. package/src/constants.d.ts +0 -38
  15. package/src/constants.d.ts.map +0 -1
  16. package/src/constants.js +0 -191
  17. package/src/constants.js.map +0 -1
  18. package/src/core/errors/crypto-error.d.ts +0 -6
  19. package/src/core/errors/crypto-error.d.ts.map +0 -1
  20. package/src/core/errors/crypto-error.js +0 -15
  21. package/src/core/errors/crypto-error.js.map +0 -1
  22. package/src/core/index.d.ts +0 -3
  23. package/src/core/index.d.ts.map +0 -1
  24. package/src/core/index.js +0 -6
  25. package/src/core/index.js.map +0 -1
  26. package/src/core/types/result.d.ts +0 -8
  27. package/src/core/types/result.d.ts.map +0 -1
  28. package/src/core/types/result.js +0 -3
  29. package/src/core/types/result.js.map +0 -1
  30. package/src/enumerations/index.d.ts +0 -2
  31. package/src/enumerations/index.d.ts.map +0 -1
  32. package/src/enumerations/index.js +0 -5
  33. package/src/enumerations/index.js.map +0 -1
  34. package/src/enumerations/pbkdf2-profile.d.ts +0 -9
  35. package/src/enumerations/pbkdf2-profile.d.ts.map +0 -1
  36. package/src/enumerations/pbkdf2-profile.js +0 -13
  37. package/src/enumerations/pbkdf2-profile.js.map +0 -1
  38. package/src/i18n/ecies-i18n-factory.d.ts +0 -28
  39. package/src/i18n/ecies-i18n-factory.d.ts.map +0 -1
  40. package/src/i18n/ecies-i18n-factory.js +0 -90
  41. package/src/i18n/ecies-i18n-factory.js.map +0 -1
  42. package/src/i18n/index.d.ts +0 -3
  43. package/src/i18n/index.d.ts.map +0 -1
  44. package/src/i18n/index.js +0 -8
  45. package/src/i18n/index.js.map +0 -1
  46. package/src/i18n/node-ecies-i18n-setup.d.ts +0 -5
  47. package/src/i18n/node-ecies-i18n-setup.d.ts.map +0 -1
  48. package/src/i18n/node-ecies-i18n-setup.js +0 -48
  49. package/src/i18n/node-ecies-i18n-setup.js.map +0 -1
  50. package/src/i18n/node-keys.d.ts +0 -57
  51. package/src/i18n/node-keys.d.ts.map +0 -1
  52. package/src/i18n/node-keys.js +0 -67
  53. package/src/i18n/node-keys.js.map +0 -1
  54. package/src/i18n/translations/de.d.ts +0 -3
  55. package/src/i18n/translations/de.d.ts.map +0 -1
  56. package/src/i18n/translations/de.js +0 -57
  57. package/src/i18n/translations/de.js.map +0 -1
  58. package/src/i18n/translations/en-GB.d.ts +0 -3
  59. package/src/i18n/translations/en-GB.d.ts.map +0 -1
  60. package/src/i18n/translations/en-GB.js +0 -61
  61. package/src/i18n/translations/en-GB.js.map +0 -1
  62. package/src/i18n/translations/en-US.d.ts +0 -6
  63. package/src/i18n/translations/en-US.d.ts.map +0 -1
  64. package/src/i18n/translations/en-US.js +0 -65
  65. package/src/i18n/translations/en-US.js.map +0 -1
  66. package/src/i18n/translations/es.d.ts +0 -3
  67. package/src/i18n/translations/es.d.ts.map +0 -1
  68. package/src/i18n/translations/es.js +0 -57
  69. package/src/i18n/translations/es.js.map +0 -1
  70. package/src/i18n/translations/fr.d.ts +0 -3
  71. package/src/i18n/translations/fr.d.ts.map +0 -1
  72. package/src/i18n/translations/fr.js +0 -57
  73. package/src/i18n/translations/fr.js.map +0 -1
  74. package/src/i18n/translations/index.d.ts +0 -9
  75. package/src/i18n/translations/index.d.ts.map +0 -1
  76. package/src/i18n/translations/index.js +0 -20
  77. package/src/i18n/translations/index.js.map +0 -1
  78. package/src/i18n/translations/ja.d.ts +0 -3
  79. package/src/i18n/translations/ja.d.ts.map +0 -1
  80. package/src/i18n/translations/ja.js +0 -57
  81. package/src/i18n/translations/ja.js.map +0 -1
  82. package/src/i18n/translations/uk.d.ts +0 -3
  83. package/src/i18n/translations/uk.d.ts.map +0 -1
  84. package/src/i18n/translations/uk.js +0 -57
  85. package/src/i18n/translations/uk.js.map +0 -1
  86. package/src/i18n/translations/zh-cn.d.ts +0 -3
  87. package/src/i18n/translations/zh-cn.d.ts.map +0 -1
  88. package/src/i18n/translations/zh-cn.js +0 -57
  89. package/src/i18n/translations/zh-cn.js.map +0 -1
  90. package/src/index.d.ts +0 -19
  91. package/src/index.d.ts.map +0 -1
  92. package/src/index.js +0 -31
  93. package/src/index.js.map +0 -1
  94. package/src/interfaces/authenticated-cipher.d.ts +0 -12
  95. package/src/interfaces/authenticated-cipher.d.ts.map +0 -1
  96. package/src/interfaces/authenticated-cipher.js +0 -3
  97. package/src/interfaces/authenticated-cipher.js.map +0 -1
  98. package/src/interfaces/authenticated-decipher.d.ts +0 -11
  99. package/src/interfaces/authenticated-decipher.d.ts.map +0 -1
  100. package/src/interfaces/authenticated-decipher.js +0 -3
  101. package/src/interfaces/authenticated-decipher.js.map +0 -1
  102. package/src/interfaces/backend-member-operational.d.ts +0 -48
  103. package/src/interfaces/backend-member-operational.d.ts.map +0 -1
  104. package/src/interfaces/backend-member-operational.js +0 -3
  105. package/src/interfaces/backend-member-operational.js.map +0 -1
  106. package/src/interfaces/checksum-config.d.ts +0 -5
  107. package/src/interfaces/checksum-config.d.ts.map +0 -1
  108. package/src/interfaces/checksum-config.js +0 -3
  109. package/src/interfaces/checksum-config.js.map +0 -1
  110. package/src/interfaces/checksum-consts.d.ts +0 -11
  111. package/src/interfaces/checksum-consts.d.ts.map +0 -1
  112. package/src/interfaces/checksum-consts.js +0 -3
  113. package/src/interfaces/checksum-consts.js.map +0 -1
  114. package/src/interfaces/constants.d.ts +0 -52
  115. package/src/interfaces/constants.d.ts.map +0 -1
  116. package/src/interfaces/constants.js +0 -3
  117. package/src/interfaces/constants.js.map +0 -1
  118. package/src/interfaces/ecies-consts.d.ts +0 -88
  119. package/src/interfaces/ecies-consts.d.ts.map +0 -1
  120. package/src/interfaces/ecies-consts.js +0 -3
  121. package/src/interfaces/ecies-consts.js.map +0 -1
  122. package/src/interfaces/encrypted-chunk.d.ts +0 -12
  123. package/src/interfaces/encrypted-chunk.d.ts.map +0 -1
  124. package/src/interfaces/encrypted-chunk.js +0 -3
  125. package/src/interfaces/encrypted-chunk.js.map +0 -1
  126. package/src/interfaces/encryption-consts.d.ts +0 -11
  127. package/src/interfaces/encryption-consts.d.ts.map +0 -1
  128. package/src/interfaces/encryption-consts.js +0 -3
  129. package/src/interfaces/encryption-consts.js.map +0 -1
  130. package/src/interfaces/index.d.ts +0 -29
  131. package/src/interfaces/index.d.ts.map +0 -1
  132. package/src/interfaces/index.js +0 -30
  133. package/src/interfaces/index.js.map +0 -1
  134. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts +0 -6
  135. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts.map +0 -1
  136. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js +0 -3
  137. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js.map +0 -1
  138. package/src/interfaces/keyring-consts.d.ts +0 -6
  139. package/src/interfaces/keyring-consts.d.ts.map +0 -1
  140. package/src/interfaces/keyring-consts.js +0 -3
  141. package/src/interfaces/keyring-consts.js.map +0 -1
  142. package/src/interfaces/member-with-mnemonic.d.ts +0 -7
  143. package/src/interfaces/member-with-mnemonic.d.ts.map +0 -1
  144. package/src/interfaces/member-with-mnemonic.js +0 -3
  145. package/src/interfaces/member-with-mnemonic.js.map +0 -1
  146. package/src/interfaces/member.d.ts +0 -54
  147. package/src/interfaces/member.d.ts.map +0 -1
  148. package/src/interfaces/member.js +0 -3
  149. package/src/interfaces/member.js.map +0 -1
  150. package/src/interfaces/multi-encrypted-message.d.ts +0 -8
  151. package/src/interfaces/multi-encrypted-message.d.ts.map +0 -1
  152. package/src/interfaces/multi-encrypted-message.js +0 -3
  153. package/src/interfaces/multi-encrypted-message.js.map +0 -1
  154. package/src/interfaces/multi-encrypted-parsed-header.d.ts +0 -27
  155. package/src/interfaces/multi-encrypted-parsed-header.d.ts.map +0 -1
  156. package/src/interfaces/multi-encrypted-parsed-header.js +0 -3
  157. package/src/interfaces/multi-encrypted-parsed-header.js.map +0 -1
  158. package/src/interfaces/multi-recipient-chunk.d.ts +0 -26
  159. package/src/interfaces/multi-recipient-chunk.d.ts.map +0 -1
  160. package/src/interfaces/multi-recipient-chunk.js +0 -15
  161. package/src/interfaces/multi-recipient-chunk.js.map +0 -1
  162. package/src/interfaces/pbkdf-profiles.d.ts +0 -6
  163. package/src/interfaces/pbkdf-profiles.d.ts.map +0 -1
  164. package/src/interfaces/pbkdf-profiles.js +0 -3
  165. package/src/interfaces/pbkdf-profiles.js.map +0 -1
  166. package/src/interfaces/pbkdf2-result.d.ts +0 -6
  167. package/src/interfaces/pbkdf2-result.d.ts.map +0 -1
  168. package/src/interfaces/pbkdf2-result.js +0 -3
  169. package/src/interfaces/pbkdf2-result.js.map +0 -1
  170. package/src/interfaces/signing-key-private-key-info.d.ts +0 -11
  171. package/src/interfaces/signing-key-private-key-info.d.ts.map +0 -1
  172. package/src/interfaces/signing-key-private-key-info.js +0 -3
  173. package/src/interfaces/signing-key-private-key-info.js.map +0 -1
  174. package/src/interfaces/simple-keypair-buffer.d.ts +0 -6
  175. package/src/interfaces/simple-keypair-buffer.d.ts.map +0 -1
  176. package/src/interfaces/simple-keypair-buffer.js +0 -3
  177. package/src/interfaces/simple-keypair-buffer.js.map +0 -1
  178. package/src/interfaces/simple-keypair.d.ts +0 -6
  179. package/src/interfaces/simple-keypair.d.ts.map +0 -1
  180. package/src/interfaces/simple-keypair.js +0 -3
  181. package/src/interfaces/simple-keypair.js.map +0 -1
  182. package/src/interfaces/simple-public-key-only-buffer.d.ts +0 -4
  183. package/src/interfaces/simple-public-key-only-buffer.d.ts.map +0 -1
  184. package/src/interfaces/simple-public-key-only-buffer.js +0 -3
  185. package/src/interfaces/simple-public-key-only-buffer.js.map +0 -1
  186. package/src/interfaces/simple-public-key-only.d.ts +0 -4
  187. package/src/interfaces/simple-public-key-only.d.ts.map +0 -1
  188. package/src/interfaces/simple-public-key-only.js +0 -3
  189. package/src/interfaces/simple-public-key-only.js.map +0 -1
  190. package/src/interfaces/single-encrypted-parsed-header.d.ts +0 -35
  191. package/src/interfaces/single-encrypted-parsed-header.d.ts.map +0 -1
  192. package/src/interfaces/single-encrypted-parsed-header.js +0 -3
  193. package/src/interfaces/single-encrypted-parsed-header.js.map +0 -1
  194. package/src/interfaces/stream-config.d.ts +0 -6
  195. package/src/interfaces/stream-config.d.ts.map +0 -1
  196. package/src/interfaces/stream-config.js +0 -8
  197. package/src/interfaces/stream-config.js.map +0 -1
  198. package/src/interfaces/stream-progress.d.ts +0 -8
  199. package/src/interfaces/stream-progress.d.ts.map +0 -1
  200. package/src/interfaces/stream-progress.js +0 -3
  201. package/src/interfaces/stream-progress.js.map +0 -1
  202. package/src/interfaces/wallet-seed.d.ts +0 -7
  203. package/src/interfaces/wallet-seed.d.ts.map +0 -1
  204. package/src/interfaces/wallet-seed.js +0 -3
  205. package/src/interfaces/wallet-seed.js.map +0 -1
  206. package/src/interfaces/wrapped-key-consts.d.ts +0 -7
  207. package/src/interfaces/wrapped-key-consts.d.ts.map +0 -1
  208. package/src/interfaces/wrapped-key-consts.js +0 -3
  209. package/src/interfaces/wrapped-key-consts.js.map +0 -1
  210. package/src/lib/crypto-container.d.ts +0 -13
  211. package/src/lib/crypto-container.d.ts.map +0 -1
  212. package/src/lib/crypto-container.js +0 -32
  213. package/src/lib/crypto-container.js.map +0 -1
  214. package/src/lib/index.d.ts +0 -4
  215. package/src/lib/index.d.ts.map +0 -1
  216. package/src/lib/index.js +0 -7
  217. package/src/lib/index.js.map +0 -1
  218. package/src/lib/invariant-validator.d.ts +0 -69
  219. package/src/lib/invariant-validator.d.ts.map +0 -1
  220. package/src/lib/invariant-validator.js +0 -98
  221. package/src/lib/invariant-validator.js.map +0 -1
  222. package/src/lib/invariants/index.d.ts +0 -8
  223. package/src/lib/invariants/index.d.ts.map +0 -1
  224. package/src/lib/invariants/index.js +0 -12
  225. package/src/lib/invariants/index.js.map +0 -1
  226. package/src/lib/invariants/recipient-id-consistency.d.ts +0 -41
  227. package/src/lib/invariants/recipient-id-consistency.d.ts.map +0 -1
  228. package/src/lib/invariants/recipient-id-consistency.js +0 -75
  229. package/src/lib/invariants/recipient-id-consistency.js.map +0 -1
  230. package/src/member.d.ts +0 -97
  231. package/src/member.d.ts.map +0 -1
  232. package/src/member.js +0 -322
  233. package/src/member.js.map +0 -1
  234. package/src/services/aes-gcm.d.ts +0 -66
  235. package/src/services/aes-gcm.d.ts.map +0 -1
  236. package/src/services/aes-gcm.js +0 -161
  237. package/src/services/aes-gcm.js.map +0 -1
  238. package/src/services/chunk-processor.d.ts +0 -15
  239. package/src/services/chunk-processor.d.ts.map +0 -1
  240. package/src/services/chunk-processor.js +0 -36
  241. package/src/services/chunk-processor.js.map +0 -1
  242. package/src/services/ecies/crypto-core.d.ts +0 -104
  243. package/src/services/ecies/crypto-core.d.ts.map +0 -1
  244. package/src/services/ecies/crypto-core.js +0 -234
  245. package/src/services/ecies/crypto-core.js.map +0 -1
  246. package/src/services/ecies/file.d.ts +0 -30
  247. package/src/services/ecies/file.d.ts.map +0 -1
  248. package/src/services/ecies/file.js +0 -112
  249. package/src/services/ecies/file.js.map +0 -1
  250. package/src/services/ecies/index.d.ts +0 -8
  251. package/src/services/ecies/index.d.ts.map +0 -1
  252. package/src/services/ecies/index.js +0 -11
  253. package/src/services/ecies/index.js.map +0 -1
  254. package/src/services/ecies/multi-recipient.d.ts +0 -84
  255. package/src/services/ecies/multi-recipient.d.ts.map +0 -1
  256. package/src/services/ecies/multi-recipient.js +0 -494
  257. package/src/services/ecies/multi-recipient.js.map +0 -1
  258. package/src/services/ecies/service.d.ts +0 -75
  259. package/src/services/ecies/service.d.ts.map +0 -1
  260. package/src/services/ecies/service.js +0 -152
  261. package/src/services/ecies/service.js.map +0 -1
  262. package/src/services/ecies/signature.d.ts +0 -38
  263. package/src/services/ecies/signature.d.ts.map +0 -1
  264. package/src/services/ecies/signature.js +0 -69
  265. package/src/services/ecies/signature.js.map +0 -1
  266. package/src/services/ecies/single-recipient.d.ts +0 -83
  267. package/src/services/ecies/single-recipient.d.ts.map +0 -1
  268. package/src/services/ecies/single-recipient.js +0 -448
  269. package/src/services/ecies/single-recipient.js.map +0 -1
  270. package/src/services/ecies/utilities.d.ts +0 -33
  271. package/src/services/ecies/utilities.d.ts.map +0 -1
  272. package/src/services/ecies/utilities.js +0 -91
  273. package/src/services/ecies/utilities.js.map +0 -1
  274. package/src/services/encryption-stream.d.ts +0 -33
  275. package/src/services/encryption-stream.d.ts.map +0 -1
  276. package/src/services/encryption-stream.js +0 -211
  277. package/src/services/encryption-stream.js.map +0 -1
  278. package/src/services/index.d.ts +0 -8
  279. package/src/services/index.d.ts.map +0 -1
  280. package/src/services/index.js +0 -11
  281. package/src/services/index.js.map +0 -1
  282. package/src/services/multi-recipient-processor.d.ts +0 -72
  283. package/src/services/multi-recipient-processor.d.ts.map +0 -1
  284. package/src/services/multi-recipient-processor.js +0 -321
  285. package/src/services/multi-recipient-processor.js.map +0 -1
  286. package/src/services/pbkdf2.d.ts +0 -105
  287. package/src/services/pbkdf2.d.ts.map +0 -1
  288. package/src/services/pbkdf2.js +0 -191
  289. package/src/services/pbkdf2.js.map +0 -1
  290. package/src/services/progress-tracker.d.ts +0 -9
  291. package/src/services/progress-tracker.d.ts.map +0 -1
  292. package/src/services/progress-tracker.js +0 -41
  293. package/src/services/progress-tracker.js.map +0 -1
  294. package/src/services/voting.service.d.ts +0 -232
  295. package/src/services/voting.service.d.ts.map +0 -1
  296. package/src/services/voting.service.js +0 -589
  297. package/src/services/voting.service.js.map +0 -1
  298. package/src/test-mocks/index.d.ts +0 -2
  299. package/src/test-mocks/index.d.ts.map +0 -1
  300. package/src/test-mocks/index.js +0 -5
  301. package/src/test-mocks/index.js.map +0 -1
  302. package/src/test-mocks/mock-backend-member.d.ts +0 -76
  303. package/src/test-mocks/mock-backend-member.d.ts.map +0 -1
  304. package/src/test-mocks/mock-backend-member.js +0 -139
  305. package/src/test-mocks/mock-backend-member.js.map +0 -1
  306. package/src/testing.d.ts +0 -2
  307. package/src/testing.d.ts.map +0 -1
  308. package/src/testing.js +0 -6
  309. package/src/testing.js.map +0 -1
  310. package/src/types/id-guards.d.ts +0 -39
  311. package/src/types/id-guards.d.ts.map +0 -1
  312. package/src/types/id-guards.js +0 -91
  313. package/src/types/id-guards.js.map +0 -1
  314. package/src/types/index.d.ts +0 -2
  315. package/src/types/index.d.ts.map +0 -1
  316. package/src/types/index.js +0 -5
  317. package/src/types/index.js.map +0 -1
  318. package/src/types.d.ts +0 -26
  319. package/src/types.d.ts.map +0 -1
  320. package/src/types.js +0 -6
  321. package/src/types.js.map +0 -1
  322. package/src/utils.d.ts +0 -11
  323. package/src/utils.d.ts.map +0 -1
  324. package/src/utils.js +0 -82
  325. package/src/utils.js.map +0 -1
@@ -1,589 +0,0 @@
1
- "use strict";
2
- /**
3
- * Voting Service for Node.js environments
4
- * Provides ECIES-to-Paillier key bridge for homomorphic encryption voting systems.
5
- *
6
- * SECURITY ARCHITECTURE:
7
- * This service implements a novel but cryptographically sound bridge between
8
- * ECDSA/ECDH keys and Paillier homomorphic encryption keys. The construction
9
- * uses only proven cryptographic primitives:
10
- *
11
- * - ECDH (secp256k1): Shared secret computation
12
- * - HKDF (RFC 5869): Cryptographically secure key derivation
13
- * - HMAC-DRBG (NIST SP 800-90A): Deterministic random generation
14
- * - Miller-Rabin (256 rounds): Primality testing (error < 2^-512)
15
- * - Paillier (3072-bit): Homomorphic encryption
16
- *
17
- * SECURITY GUARANTEES:
18
- * - 128-bit security level (equivalent to 3072-bit RSA)
19
- * - One-way: Cannot recover ECDH keys from Paillier keys
20
- * - Deterministic: Enables key recovery from same ECDH source
21
- * - Collision-resistant: Birthday bound ~2^128 operations
22
- * - Domain-separated: Cryptographic binding via HKDF info string
23
- *
24
- * THREAT MODEL:
25
- * Protected against: factorization attacks, weak primes, small prime attacks
26
- * Timing attacks: Mitigated via constant-time operations where possible
27
- * Side-channels: Dependent on underlying crypto library implementation
28
- * Quantum: Vulnerable to Shor's algorithm (like all RSA-type systems)
29
- *
30
- * For detailed security analysis, see:
31
- * docs/SECURITY_ANALYSIS_ECIES_PAILLIER_BRIDGE.md
32
- */
33
- Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.VotingService = exports.SecureDeterministicDRBG = void 0;
35
- exports.millerRabinTest = millerRabinTest;
36
- exports.modPow = modPow;
37
- exports.modInverse = modInverse;
38
- exports.gcd = gcd;
39
- exports.lcm = lcm;
40
- exports.hkdf = hkdf;
41
- exports.generateDeterministicPrime = generateDeterministicPrime;
42
- exports.generateDeterministicKeyPair = generateDeterministicKeyPair;
43
- exports.deriveVotingKeysFromECDH = deriveVotingKeysFromECDH;
44
- const crypto_1 = require("crypto");
45
- const secp256k1_js_1 = require("@noble/curves/secp256k1.js");
46
- /**
47
- * Miller-Rabin primality test with deterministic witnesses
48
- *
49
- * SECURITY: With k=256 rounds, probability of false positive is < 2^-512
50
- *
51
- * @param n - Number to test for primality
52
- * @param k - Number of rounds (witnesses to test)
53
- * @returns true if n is probably prime, false if definitely composite
54
- */
55
- function millerRabinTest(n, k) {
56
- if (n <= 1n || n === 4n)
57
- return false;
58
- if (n <= 3n)
59
- return true;
60
- // Write n-1 as 2^r * d
61
- let d = n - 1n;
62
- let r = 0;
63
- while (d % 2n === 0n) {
64
- d /= 2n;
65
- r++;
66
- }
67
- // Use first k prime numbers as witnesses
68
- const witnesses = [2n, 3n, 5n, 7n, 11n, 13n, 17n, 19n, 23n, 29n, 31n, 37n];
69
- // Witness loop
70
- const witnessLoop = (a) => {
71
- let x = modPow(a, d, n);
72
- if (x === 1n || x === n - 1n)
73
- return true;
74
- for (let i = 1; i < r; i++) {
75
- x = (x * x) % n;
76
- if (x === 1n)
77
- return false;
78
- if (x === n - 1n)
79
- return true;
80
- }
81
- return false;
82
- };
83
- // Test with deterministic witnesses
84
- for (let i = 0; i < Math.min(k, witnesses.length); i++) {
85
- const a = (witnesses[i] % (n - 2n)) + 2n;
86
- if (!witnessLoop(a))
87
- return false;
88
- }
89
- return true;
90
- }
91
- /**
92
- * Modular exponentiation: (base^exp) mod mod
93
- */
94
- function modPow(base, exp, mod) {
95
- if (mod === 1n)
96
- return 0n;
97
- let result = 1n;
98
- base = base % mod;
99
- while (exp > 0n) {
100
- if (exp % 2n === 1n) {
101
- result = (result * base) % mod;
102
- }
103
- exp = exp >> 1n;
104
- base = (base * base) % mod;
105
- }
106
- return result;
107
- }
108
- /**
109
- * Extended Euclidean algorithm to find modular multiplicative inverse
110
- */
111
- function modInverse(a, m) {
112
- if (m === 1n)
113
- return 0n;
114
- const m0 = m;
115
- let x0 = 0n;
116
- let x1 = 1n;
117
- let a0 = a;
118
- while (a0 > 1n) {
119
- const q = a0 / m;
120
- let t = m;
121
- m = a0 % m;
122
- a0 = t;
123
- t = x0;
124
- x0 = x1 - q * x0;
125
- x1 = t;
126
- }
127
- if (x1 < 0n)
128
- x1 += m0;
129
- return x1;
130
- }
131
- /**
132
- * Greatest common divisor using Euclidean algorithm
133
- */
134
- function gcd(a, b) {
135
- a = a < 0n ? -a : a;
136
- b = b < 0n ? -b : b;
137
- while (b !== 0n) {
138
- const t = b;
139
- b = a % b;
140
- a = t;
141
- }
142
- return a;
143
- }
144
- /**
145
- * Least common multiple
146
- */
147
- function lcm(a, b) {
148
- return (a * b) / gcd(a, b);
149
- }
150
- /**
151
- * HKDF implementation following RFC 5869 using Node.js crypto
152
- *
153
- * SECURITY: This is a cryptographically secure key derivation function.
154
- * - Provides pseudorandomness indistinguishable from random
155
- * - One-way: computationally infeasible to recover IKM from OKM
156
- * - Domain separation via 'info' parameter
157
- *
158
- * @param secret - The input key material (IKM)
159
- * @param salt - Optional salt value (non-secret random value)
160
- * @param info - Context string for domain separation
161
- * @param length - Length of output keying material in bytes
162
- * @param hmacAlgorithm - HMAC algorithm to use (default: 'sha512')
163
- * @returns Derived key material (OKM)
164
- */
165
- function hkdf(secret, salt, info, length, hmacAlgorithm = 'sha512') {
166
- // Step 1: Extract - HKDF-Extract(salt, IKM) -> PRK
167
- const actualSalt = salt || Buffer.alloc((0, crypto_1.createHash)(hmacAlgorithm).digest().length);
168
- const prk = (0, crypto_1.createHmac)(hmacAlgorithm, actualSalt).update(secret).digest();
169
- // Step 2: Expand - HKDF-Expand(PRK, info, L) -> OKM
170
- const hashLength = prk.length;
171
- const n = Math.ceil(length / hashLength);
172
- const okm = Buffer.alloc(length);
173
- let t = Buffer.alloc(0);
174
- let offset = 0;
175
- for (let i = 1; i <= n; i++) {
176
- const hmac = (0, crypto_1.createHmac)(hmacAlgorithm, prk);
177
- hmac.update(t);
178
- hmac.update(info);
179
- hmac.update(Buffer.from([i]));
180
- t = hmac.digest();
181
- const copyLength = Math.min(t.length, length - offset);
182
- t.copy(okm, offset, 0, copyLength);
183
- offset += copyLength;
184
- }
185
- return new Uint8Array(okm);
186
- }
187
- /**
188
- * Secure Deterministic Random Bit Generator using HMAC-DRBG (SP 800-90A)
189
- * This is a simplified version focused on the specific needs of prime generation.
190
- */
191
- class SecureDeterministicDRBG {
192
- v;
193
- k;
194
- hmacAlgorithm;
195
- constructor(seed, hmacAlgorithm = 'sha512') {
196
- this.hmacAlgorithm = hmacAlgorithm;
197
- const hashLength = (0, crypto_1.createHash)(hmacAlgorithm).digest().length;
198
- // Initialize V and K
199
- this.v = Buffer.alloc(hashLength, 0x01);
200
- this.k = Buffer.alloc(hashLength, 0x00);
201
- // Update with seed
202
- this.update(Buffer.from(seed));
203
- }
204
- update(providedData) {
205
- // K = HMAC(K, V || 0x00 || provided_data)
206
- let hmac = (0, crypto_1.createHmac)(this.hmacAlgorithm, this.k);
207
- hmac.update(this.v);
208
- hmac.update(Buffer.from([0x00]));
209
- if (providedData) {
210
- hmac.update(providedData);
211
- }
212
- this.k = hmac.digest();
213
- // V = HMAC(K, V)
214
- this.v = (0, crypto_1.createHmac)(this.hmacAlgorithm, this.k).update(this.v).digest();
215
- if (providedData) {
216
- // K = HMAC(K, V || 0x01 || provided_data)
217
- hmac = (0, crypto_1.createHmac)(this.hmacAlgorithm, this.k);
218
- hmac.update(this.v);
219
- hmac.update(Buffer.from([0x01]));
220
- hmac.update(providedData);
221
- this.k = hmac.digest();
222
- // V = HMAC(K, V)
223
- this.v = (0, crypto_1.createHmac)(this.hmacAlgorithm, this.k).update(this.v).digest();
224
- }
225
- }
226
- generate(numBytes) {
227
- const result = Buffer.alloc(numBytes);
228
- let offset = 0;
229
- while (offset < numBytes) {
230
- this.v = (0, crypto_1.createHmac)(this.hmacAlgorithm, this.k).update(this.v).digest();
231
- const copyLength = Math.min(this.v.length, numBytes - offset);
232
- this.v.copy(result, offset, 0, copyLength);
233
- offset += copyLength;
234
- }
235
- this.update();
236
- return result;
237
- }
238
- }
239
- exports.SecureDeterministicDRBG = SecureDeterministicDRBG;
240
- /**
241
- * Small prime sieve for quick composite elimination
242
- */
243
- const SMALL_PRIMES = [
244
- 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,
245
- 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193,
246
- 197, 199, 211, 223, 227, 229, 233, 239, 241, 251,
247
- ];
248
- /**
249
- * Generate a deterministic prime number using DRBG
250
- * @param drbg - Deterministic random bit generator
251
- * @param numBits - Number of bits in the prime
252
- * @param primeTestIterations - Miller-Rabin iterations (default: 256)
253
- * @param maxAttempts - Maximum attempts (default: 10000)
254
- * @returns A prime number of specified bit length
255
- */
256
- function generateDeterministicPrime(drbg, numBits, primeTestIterations = 256, maxAttempts = 10000) {
257
- const numBytes = Math.ceil(numBits / 8);
258
- const topBitMask = 1 << ((numBits - 1) % 8);
259
- // Always perform exactly maxAttempts iterations for timing attack mitigation
260
- let foundPrime = null;
261
- for (let attempt = 0; attempt < maxAttempts; attempt++) {
262
- // Continue checking even after finding prime to maintain constant timing
263
- if (foundPrime !== null) {
264
- // Perform dummy operations to maintain timing consistency
265
- drbg.generate(numBytes);
266
- continue;
267
- }
268
- // Generate random bytes
269
- const bytes = drbg.generate(numBytes);
270
- // Set top bit to ensure exact bit length
271
- bytes[0] |= topBitMask;
272
- // Set bottom bit to ensure odd number
273
- bytes[bytes.length - 1] |= 1;
274
- const candidate = BigInt('0x' + Buffer.from(bytes).toString('hex'));
275
- // Quick check against small primes
276
- let isComposite = false;
277
- for (const smallPrime of SMALL_PRIMES) {
278
- if (candidate % BigInt(smallPrime) === 0n && candidate !== BigInt(smallPrime)) {
279
- isComposite = true;
280
- break;
281
- }
282
- }
283
- if (isComposite)
284
- continue;
285
- // Miller-Rabin primality test (using function from this module)
286
- if (millerRabinTest(candidate, primeTestIterations)) {
287
- foundPrime = candidate;
288
- }
289
- }
290
- if (foundPrime === null) {
291
- throw new Error(`Failed to generate prime after ${maxAttempts} attempts`);
292
- }
293
- return foundPrime;
294
- }
295
- /**
296
- * Generate a deterministic Paillier key pair from a seed
297
- * @param seed - Seed bytes for deterministic generation
298
- * @param bits - Key pair bit length (default: 3072)
299
- * @param primeTestIterations - Miller-Rabin iterations (default: 256)
300
- * @returns Paillier key pair
301
- */
302
- function generateDeterministicKeyPair(seed, bits = 3072, primeTestIterations = 256) {
303
- // Validate inputs
304
- if (!seed || seed.length < 32) {
305
- throw new Error(`Seed must be at least 32 bytes, got ${seed?.length || 0}`);
306
- }
307
- if (bits < 2048) {
308
- throw new Error(`Key size must be at least 2048 bits, got ${bits}`);
309
- }
310
- if (bits % 2 !== 0) {
311
- throw new Error(`Key size must be even, got ${bits}`);
312
- }
313
- if (primeTestIterations < 64) {
314
- throw new Error(`Must perform at least 64 Miller-Rabin iterations, got ${primeTestIterations}`);
315
- }
316
- // Load paillier-bigint dynamically (optional peer dependency)
317
- let PublicKey;
318
- let PrivateKey;
319
- try {
320
- const paillier = require('paillier-bigint');
321
- PublicKey = paillier.PublicKey;
322
- PrivateKey = paillier.PrivateKey;
323
- }
324
- catch (error) {
325
- throw new Error('paillier-bigint is required for voting functionality. Install it with: npm install paillier-bigint');
326
- }
327
- const drbg = new SecureDeterministicDRBG(seed);
328
- // Generate two primes of half the key size
329
- const primeBits = Math.floor(bits / 2);
330
- const p = generateDeterministicPrime(drbg, primeBits, primeTestIterations);
331
- const q = generateDeterministicPrime(drbg, primeBits, primeTestIterations);
332
- // Calculate n = p * q
333
- const n = p * q;
334
- // Calculate lambda = lcm(p-1, q-1) using function from this module
335
- const lambda = lcm(p - 1n, q - 1n);
336
- // For Paillier, g = n + 1 (simplest form)
337
- const g = n + 1n;
338
- // Calculate mu = (L(g^lambda mod n^2))^-1 mod n
339
- // where L(x) = (x-1)/n
340
- const nSquared = n * n;
341
- const gLambda = modPow(g, lambda, nSquared);
342
- const l = (gLambda - 1n) / n;
343
- const mu = modInverse(l, n);
344
- // Create key pair
345
- const publicKey = new PublicKey(n, g);
346
- const privateKey = new PrivateKey(lambda, mu, publicKey);
347
- // Validate with test encryption/decryption
348
- const testPlaintext = 42n;
349
- const encrypted = publicKey.encrypt(testPlaintext);
350
- const decrypted = privateKey.decrypt(encrypted);
351
- if (decrypted !== testPlaintext) {
352
- throw new Error('Key pair validation failed: test encryption/decryption mismatch');
353
- }
354
- return { publicKey, privateKey };
355
- }
356
- /**
357
- * Derive Paillier voting keys from ECDH key pair.
358
- * This is the core bridge function that connects ECDSA/ECDH keys
359
- * to homomorphic encryption keys for secure voting systems.
360
- *
361
- * SECURITY PROPERTIES:
362
- * - One-way: Computationally infeasible to recover ECDH keys from Paillier keys
363
- * - Deterministic: Same ECDH keys always produce same Paillier keys (enables key recovery)
364
- * - Collision-resistant: Different ECDH keys produce different Paillier keys (Birthday bound ~2^128)
365
- * - Domain-separated: Cryptographically bound to voting purpose via HKDF info="PaillierPrimeGen"
366
- *
367
- * SECURITY LEVEL: ~128 bits (equivalent to 3072-bit RSA)
368
- * - ECDH: secp256k1 curve (~128-bit security)
369
- * - HKDF: SHA-512 (512-bit security against preimage)
370
- * - Paillier: 3072-bit modulus (NIST recommended for 128-bit security)
371
- *
372
- * @param ecdhPrivKey - ECDH private key (32 bytes for secp256k1)
373
- * @param ecdhPubKey - ECDH public key (64 or 65 bytes, with or without 0x04 prefix)
374
- * @param options - Configuration options
375
- * @returns Paillier key pair for voting operations
376
- */
377
- function deriveVotingKeysFromECDH(ecdhPrivKey, ecdhPubKey, options = {}) {
378
- const { curveName = 'secp256k1', publicKeyMagic = 0x04, rawPublicKeyLength = 64, publicKeyLength = 65, hmacAlgorithm = 'sha512', hkdfInfo = 'PaillierPrimeGen', hkdfLength = 64, keypairBitLength = 3072, primeTestIterations = 256, } = options;
379
- // Validate inputs with strict length checks
380
- if (!ecdhPrivKey || ecdhPrivKey.length === 0) {
381
- throw new Error('ECDH private key is required');
382
- }
383
- // Validate private key length (32 bytes for secp256k1)
384
- if (ecdhPrivKey.length !== 32) {
385
- throw new Error(`Invalid ECDH private key length: expected 32 bytes, got ${ecdhPrivKey.length}`);
386
- }
387
- if (!ecdhPubKey || ecdhPubKey.length === 0) {
388
- throw new Error('ECDH public key is required');
389
- }
390
- // Handle both compressed (33 bytes) and uncompressed (65 bytes) public keys
391
- let fullPubKey;
392
- if (ecdhPubKey.length === 33) {
393
- // Compressed key - need to decompress it
394
- const ecdh = (0, crypto_1.createECDH)(curveName);
395
- ecdh.setPrivateKey(Buffer.from(ecdhPrivKey));
396
- // Use a temporary ECDH instance to decompress the public key
397
- const tempEcdh = (0, crypto_1.createECDH)(curveName);
398
- tempEcdh.generateKeys(); // Generate temporary keys
399
- // Import the compressed key and get uncompressed format
400
- // We'll use the ECDH computeSecret which accepts compressed keys
401
- fullPubKey = Buffer.from(ecdhPubKey);
402
- }
403
- else if (ecdhPubKey.length === publicKeyLength && ecdhPubKey[0] === publicKeyMagic) {
404
- // Already uncompressed with 0x04 prefix
405
- fullPubKey = Buffer.from(ecdhPubKey);
406
- }
407
- else if (ecdhPubKey.length === rawPublicKeyLength) {
408
- // Uncompressed without prefix - add it
409
- fullPubKey = Buffer.concat([
410
- Buffer.from([publicKeyMagic]),
411
- Buffer.from(ecdhPubKey),
412
- ]);
413
- }
414
- else {
415
- throw new Error(`Invalid public key length: expected 33 (compressed), 64 (uncompressed raw), or 65 (uncompressed with prefix) bytes, got ${ecdhPubKey.length}`);
416
- }
417
- // Compute shared secret using @noble/secp256k1 (same as frontend implementation)
418
- // We use @noble/curves to ensure exact compatibility with the browser version
419
- // which uses the full uncompressed point (65 bytes) as the shared secret
420
- const sharedSecret = secp256k1_js_1.secp256k1.getSharedSecret(ecdhPrivKey, fullPubKey, false);
421
- // Derive seed using HKDF
422
- const seed = hkdf(sharedSecret, Buffer.alloc(0), // Empty salt to match frontend's null/empty salt
423
- hkdfInfo, hkdfLength, hmacAlgorithm);
424
- // Generate deterministic key pair
425
- return generateDeterministicKeyPair(seed, keypairBitLength, primeTestIterations);
426
- }
427
- /**
428
- * Voting service for deriving and managing Paillier voting keys from ECDH keys.
429
- */
430
- class VotingService {
431
- static instance;
432
- /**
433
- * Get singleton instance of VotingService
434
- */
435
- static getInstance() {
436
- if (!VotingService.instance) {
437
- VotingService.instance = new VotingService();
438
- }
439
- return VotingService.instance;
440
- }
441
- /**
442
- * Derive Paillier voting keys from ECDH key pair.
443
- *
444
- * @param ecdhPrivKey - ECDH private key (32 bytes for secp256k1)
445
- * @param ecdhPubKey - ECDH public key (64 or 65 bytes)
446
- * @param options - Configuration options
447
- * @returns Paillier key pair for voting operations
448
- */
449
- deriveVotingKeysFromECDH(ecdhPrivKey, ecdhPubKey, options) {
450
- return deriveVotingKeysFromECDH(ecdhPrivKey, ecdhPubKey, options);
451
- }
452
- /**
453
- * HKDF key derivation function (RFC 5869)
454
- */
455
- hkdf(secret, salt, info, length, hmacAlgorithm) {
456
- return hkdf(secret, salt, info, length, hmacAlgorithm);
457
- }
458
- /**
459
- * Miller-Rabin primality test
460
- */
461
- millerRabinTest(n, k) {
462
- return millerRabinTest(n, k);
463
- }
464
- /**
465
- * Modular exponentiation
466
- */
467
- modPow(base, exp, mod) {
468
- return modPow(base, exp, mod);
469
- }
470
- /**
471
- * Modular multiplicative inverse
472
- */
473
- modInverse(a, m) {
474
- return modInverse(a, m);
475
- }
476
- /**
477
- * Greatest common divisor
478
- */
479
- gcd(a, b) {
480
- return gcd(a, b);
481
- }
482
- /**
483
- * Least common multiple
484
- */
485
- lcm(a, b) {
486
- return lcm(a, b);
487
- }
488
- /**
489
- * Generate a deterministic prime using DRBG
490
- */
491
- generateDeterministicPrime(drbg, numBits, primeTestIterations, maxAttempts) {
492
- return generateDeterministicPrime(drbg, numBits, primeTestIterations, maxAttempts);
493
- }
494
- /**
495
- * Generate a deterministic Paillier key pair from seed
496
- */
497
- generateDeterministicKeyPair(seed, bits, primeTestIterations) {
498
- return generateDeterministicKeyPair(seed, bits, primeTestIterations);
499
- }
500
- /**
501
- * Create a secure deterministic random bit generator
502
- */
503
- createDRBG(seed, hmacAlgorithm) {
504
- return new SecureDeterministicDRBG(seed, hmacAlgorithm);
505
- }
506
- /**
507
- * Serialize a Paillier public key to buffer
508
- *
509
- * SECURITY: Public keys are safe to share. This serialization
510
- * format is deterministic and preserves all key information.
511
- */
512
- votingPublicKeyToBuffer(publicKey) {
513
- // Serialize n value as hex string
514
- const nHex = publicKey.n.toString(16);
515
- // Store length prefix (4 bytes) + hex string as UTF-8
516
- const lengthBuffer = Buffer.alloc(4);
517
- lengthBuffer.writeUInt32BE(nHex.length);
518
- return Buffer.concat([lengthBuffer, Buffer.from(nHex, 'utf-8')]);
519
- }
520
- /**
521
- * Deserialize a Paillier public key from buffer
522
- */
523
- bufferToVotingPublicKey(buffer) {
524
- // Load PublicKey class
525
- const { PublicKey } = require('paillier-bigint');
526
- // Read length prefix
527
- const length = buffer.readUInt32BE(0);
528
- // Read hex string
529
- const nHex = buffer.subarray(4, 4 + length).toString('utf-8');
530
- const n = BigInt('0x' + nHex);
531
- // g = n + 1 for simplified Paillier
532
- return new PublicKey(n, n + 1n);
533
- }
534
- /**
535
- * Serialize a Paillier private key to buffer
536
- *
537
- * SECURITY WARNING: Private keys must be kept secret!
538
- * - Only serialize for secure storage or transmission
539
- * - Encrypt serialized keys before storing or transmitting
540
- * - Clear sensitive memory after use
541
- * - Consider using hardware security modules (HSM) for production
542
- */
543
- votingPrivateKeyToBuffer(privateKey) {
544
- // Serialize lambda and mu values
545
- const lambdaHex = privateKey.lambda.toString(16);
546
- const muHex = privateKey.mu.toString(16);
547
- const lambdaLengthBuffer = Buffer.alloc(4);
548
- lambdaLengthBuffer.writeUInt32BE(lambdaHex.length);
549
- const muLengthBuffer = Buffer.alloc(4);
550
- muLengthBuffer.writeUInt32BE(muHex.length);
551
- return Buffer.concat([
552
- lambdaLengthBuffer,
553
- Buffer.from(lambdaHex, 'utf-8'),
554
- muLengthBuffer,
555
- Buffer.from(muHex, 'utf-8'),
556
- ]);
557
- }
558
- /**
559
- * Deserialize a Paillier private key from buffer
560
- */
561
- bufferToVotingPrivateKey(buffer, publicKey) {
562
- // Load PrivateKey class
563
- const { PrivateKey } = require('paillier-bigint');
564
- // Read lambda
565
- const lambdaLength = buffer.readUInt32BE(0);
566
- const lambdaHex = buffer.subarray(4, 4 + lambdaLength).toString('utf-8');
567
- const lambda = BigInt('0x' + lambdaHex);
568
- // Read mu
569
- const muLength = buffer.readUInt32BE(4 + lambdaLength);
570
- const muHex = buffer.subarray(8 + lambdaLength, 8 + lambdaLength + muLength).toString('utf-8');
571
- const mu = BigInt('0x' + muHex);
572
- return new PrivateKey(lambda, mu, publicKey);
573
- }
574
- // Aliases for cross-platform compatibility tests
575
- serializePublicKey(publicKey) {
576
- return this.votingPublicKeyToBuffer(publicKey);
577
- }
578
- deserializePublicKey(buffer) {
579
- return this.bufferToVotingPublicKey(Buffer.from(buffer));
580
- }
581
- serializePrivateKey(privateKey) {
582
- return this.votingPrivateKeyToBuffer(privateKey);
583
- }
584
- deserializePrivateKey(buffer, publicKey) {
585
- return this.bufferToVotingPrivateKey(Buffer.from(buffer), publicKey);
586
- }
587
- }
588
- exports.VotingService = VotingService;
589
- //# sourceMappingURL=voting.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"voting.service.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/services/voting.service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from './mock-backend-member';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/test-mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./mock-backend-member"), exports);
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/test-mocks/index.ts"],"names":[],"mappings":";;;AAAA,gEAAsC"}