@digitaldefiance/node-ecies-lib 4.8.1 → 4.10.6

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 (267) hide show
  1. package/package.json +10 -5
  2. package/src/builders/member-builder.d.ts +1 -1
  3. package/src/builders/member-builder.d.ts.map +1 -1
  4. package/src/builders/member-builder.js +3 -1
  5. package/src/builders/member-builder.js.map +1 -1
  6. package/src/constants.d.ts.map +1 -1
  7. package/src/constants.js +31 -25
  8. package/src/constants.js.map +1 -1
  9. package/src/interfaces/index.d.ts +1 -2
  10. package/src/interfaces/index.d.ts.map +1 -1
  11. package/src/interfaces/index.js +6 -3
  12. package/src/interfaces/index.js.map +1 -1
  13. package/src/interfaces/member-with-mnemonic.d.ts +3 -2
  14. package/src/interfaces/member-with-mnemonic.d.ts.map +1 -1
  15. package/src/interfaces/member.d.ts +30 -12
  16. package/src/interfaces/member.d.ts.map +1 -1
  17. package/src/interfaces/multi-encrypted-message.d.ts +2 -1
  18. package/src/interfaces/multi-encrypted-message.d.ts.map +1 -1
  19. package/src/interfaces/multi-encrypted-parsed-header.d.ts +3 -2
  20. package/src/interfaces/multi-encrypted-parsed-header.d.ts.map +1 -1
  21. package/src/interfaces/platform-buffer.d.ts +9 -0
  22. package/src/interfaces/platform-buffer.d.ts.map +1 -0
  23. package/src/interfaces/platform-buffer.js +3 -0
  24. package/src/interfaces/platform-buffer.js.map +1 -0
  25. package/src/interfaces/platform-id.d.ts +2 -2
  26. package/src/interfaces/platform-id.d.ts.map +1 -1
  27. package/src/interfaces/voting-poll.d.ts +32 -31
  28. package/src/interfaces/voting-poll.d.ts.map +1 -1
  29. package/src/interfaces/voting-poll.js.map +1 -1
  30. package/src/lib/id-providers/buffer-provider.d.ts +54 -0
  31. package/src/lib/id-providers/buffer-provider.d.ts.map +1 -0
  32. package/src/lib/id-providers/buffer-provider.js +93 -0
  33. package/src/lib/id-providers/buffer-provider.js.map +1 -0
  34. package/src/lib/index.d.ts +1 -0
  35. package/src/lib/index.d.ts.map +1 -1
  36. package/src/lib/index.js +1 -0
  37. package/src/lib/index.js.map +1 -1
  38. package/src/lib/voting/audit.d.ts +39 -48
  39. package/src/lib/voting/audit.d.ts.map +1 -1
  40. package/src/lib/voting/audit.js +103 -111
  41. package/src/lib/voting/audit.js.map +1 -1
  42. package/src/lib/voting/bulletin-board.d.ts +47 -80
  43. package/src/lib/voting/bulletin-board.d.ts.map +1 -1
  44. package/src/lib/voting/bulletin-board.js +95 -226
  45. package/src/lib/voting/bulletin-board.js.map +1 -1
  46. package/src/lib/voting/encoder.d.ts +7 -15
  47. package/src/lib/voting/encoder.d.ts.map +1 -1
  48. package/src/lib/voting/encoder.js +11 -107
  49. package/src/lib/voting/encoder.js.map +1 -1
  50. package/src/lib/voting/enumerations/index.d.ts +6 -0
  51. package/src/lib/voting/enumerations/index.d.ts.map +1 -0
  52. package/src/lib/voting/enumerations/index.js +14 -0
  53. package/src/lib/voting/enumerations/index.js.map +1 -0
  54. package/src/lib/voting/event-logger.d.ts +13 -74
  55. package/src/lib/voting/event-logger.d.ts.map +1 -1
  56. package/src/lib/voting/event-logger.js +19 -140
  57. package/src/lib/voting/event-logger.js.map +1 -1
  58. package/src/lib/voting/examples.d.ts +112 -0
  59. package/src/lib/voting/examples.d.ts.map +1 -0
  60. package/src/lib/voting/examples.js +386 -0
  61. package/src/lib/voting/examples.js.map +1 -0
  62. package/src/lib/voting/factory.d.ts +38 -9
  63. package/src/lib/voting/factory.d.ts.map +1 -1
  64. package/src/lib/voting/factory.js +42 -8
  65. package/src/lib/voting/factory.js.map +1 -1
  66. package/src/lib/voting/hierarchical-aggregator.d.ts +44 -0
  67. package/src/lib/voting/hierarchical-aggregator.d.ts.map +1 -0
  68. package/src/lib/voting/hierarchical-aggregator.js +56 -0
  69. package/src/lib/voting/hierarchical-aggregator.js.map +1 -0
  70. package/src/lib/voting/index.d.ts +43 -7
  71. package/src/lib/voting/index.d.ts.map +1 -1
  72. package/src/lib/voting/index.js +53 -10
  73. package/src/lib/voting/index.js.map +1 -1
  74. package/src/lib/voting/interfaces/aggregated-tally.d.ts +10 -0
  75. package/src/lib/voting/interfaces/aggregated-tally.d.ts.map +1 -0
  76. package/src/lib/voting/interfaces/aggregated-tally.js +3 -0
  77. package/src/lib/voting/interfaces/aggregated-tally.js.map +1 -0
  78. package/src/lib/voting/interfaces/audit-entry.d.ts +10 -0
  79. package/src/lib/voting/interfaces/audit-entry.d.ts.map +1 -0
  80. package/src/lib/voting/interfaces/audit-entry.js +3 -0
  81. package/src/lib/voting/interfaces/audit-entry.js.map +1 -0
  82. package/src/lib/voting/interfaces/audit-log.d.ts +10 -0
  83. package/src/lib/voting/interfaces/audit-log.d.ts.map +1 -0
  84. package/src/lib/voting/interfaces/audit-log.js +3 -0
  85. package/src/lib/voting/interfaces/audit-log.js.map +1 -0
  86. package/src/lib/voting/interfaces/bulletin-board-entry.d.ts +10 -0
  87. package/src/lib/voting/interfaces/bulletin-board-entry.d.ts.map +1 -0
  88. package/src/lib/voting/interfaces/bulletin-board-entry.js +3 -0
  89. package/src/lib/voting/interfaces/bulletin-board-entry.js.map +1 -0
  90. package/src/lib/voting/interfaces/bulletin-board.d.ts +10 -0
  91. package/src/lib/voting/interfaces/bulletin-board.d.ts.map +1 -0
  92. package/src/lib/voting/interfaces/bulletin-board.js +3 -0
  93. package/src/lib/voting/interfaces/bulletin-board.js.map +1 -0
  94. package/src/lib/voting/interfaces/checkpoint-manager-extended.d.ts +10 -0
  95. package/src/lib/voting/interfaces/checkpoint-manager-extended.d.ts.map +1 -0
  96. package/src/lib/voting/interfaces/checkpoint-manager-extended.js +3 -0
  97. package/src/lib/voting/interfaces/checkpoint-manager-extended.js.map +1 -0
  98. package/src/lib/voting/interfaces/checkpoint-manager.d.ts +9 -0
  99. package/src/lib/voting/interfaces/checkpoint-manager.d.ts.map +1 -0
  100. package/src/lib/voting/interfaces/checkpoint-manager.js +3 -0
  101. package/src/lib/voting/interfaces/checkpoint-manager.js.map +1 -0
  102. package/src/lib/voting/interfaces/checkpoint-metadata.d.ts +8 -0
  103. package/src/lib/voting/interfaces/checkpoint-metadata.d.ts.map +1 -0
  104. package/src/lib/voting/interfaces/checkpoint-metadata.js +3 -0
  105. package/src/lib/voting/interfaces/checkpoint-metadata.js.map +1 -0
  106. package/src/lib/voting/interfaces/ecies-service-with-voting.d.ts +8 -0
  107. package/src/lib/voting/interfaces/ecies-service-with-voting.d.ts.map +1 -0
  108. package/src/lib/voting/interfaces/ecies-service-with-voting.js +3 -0
  109. package/src/lib/voting/interfaces/ecies-service-with-voting.js.map +1 -0
  110. package/src/lib/voting/interfaces/encrypted-vote.d.ts +10 -0
  111. package/src/lib/voting/interfaces/encrypted-vote.d.ts.map +1 -0
  112. package/src/lib/voting/interfaces/encrypted-vote.js +3 -0
  113. package/src/lib/voting/interfaces/encrypted-vote.js.map +1 -0
  114. package/src/lib/voting/interfaces/event-log-entry.d.ts +10 -0
  115. package/src/lib/voting/interfaces/event-log-entry.d.ts.map +1 -0
  116. package/src/lib/voting/interfaces/event-log-entry.js +3 -0
  117. package/src/lib/voting/interfaces/event-log-entry.js.map +1 -0
  118. package/src/lib/voting/interfaces/event-logger.d.ts +10 -0
  119. package/src/lib/voting/interfaces/event-logger.d.ts.map +1 -0
  120. package/src/lib/voting/interfaces/event-logger.js +3 -0
  121. package/src/lib/voting/interfaces/event-logger.js.map +1 -0
  122. package/src/lib/voting/interfaces/index.d.ts +37 -0
  123. package/src/lib/voting/interfaces/index.d.ts.map +1 -0
  124. package/src/lib/voting/interfaces/index.js +9 -0
  125. package/src/lib/voting/interfaces/index.js.map +1 -0
  126. package/src/lib/voting/interfaces/jurisdiction-config.d.ts +10 -0
  127. package/src/lib/voting/interfaces/jurisdiction-config.d.ts.map +1 -0
  128. package/src/lib/voting/interfaces/jurisdiction-config.js +3 -0
  129. package/src/lib/voting/interfaces/jurisdiction-config.js.map +1 -0
  130. package/src/lib/voting/interfaces/plaintext-vote.d.ts +10 -0
  131. package/src/lib/voting/interfaces/plaintext-vote.d.ts.map +1 -0
  132. package/src/lib/voting/interfaces/plaintext-vote.js +3 -0
  133. package/src/lib/voting/interfaces/plaintext-vote.js.map +1 -0
  134. package/src/lib/voting/interfaces/poll-configuration.d.ts +8 -0
  135. package/src/lib/voting/interfaces/poll-configuration.d.ts.map +1 -0
  136. package/src/lib/voting/interfaces/poll-configuration.js +3 -0
  137. package/src/lib/voting/interfaces/poll-configuration.js.map +1 -0
  138. package/src/lib/voting/interfaces/poll-results.d.ts +8 -0
  139. package/src/lib/voting/interfaces/poll-results.d.ts.map +1 -0
  140. package/src/lib/voting/interfaces/poll-results.js +3 -0
  141. package/src/lib/voting/interfaces/poll-results.js.map +1 -0
  142. package/src/lib/voting/interfaces/poll-tallier.d.ts +10 -0
  143. package/src/lib/voting/interfaces/poll-tallier.d.ts.map +1 -0
  144. package/src/lib/voting/interfaces/poll-tallier.js +3 -0
  145. package/src/lib/voting/interfaces/poll-tallier.js.map +1 -0
  146. package/src/lib/voting/interfaces/poll.d.ts +10 -0
  147. package/src/lib/voting/interfaces/poll.d.ts.map +1 -0
  148. package/src/lib/voting/interfaces/poll.js +3 -0
  149. package/src/lib/voting/interfaces/poll.js.map +1 -0
  150. package/src/lib/voting/interfaces/round-result.d.ts +8 -0
  151. package/src/lib/voting/interfaces/round-result.d.ts.map +1 -0
  152. package/src/lib/voting/interfaces/round-result.js +3 -0
  153. package/src/lib/voting/interfaces/round-result.js.map +1 -0
  154. package/src/lib/voting/interfaces/state-snapshot.d.ts +15 -0
  155. package/src/lib/voting/interfaces/state-snapshot.d.ts.map +1 -0
  156. package/src/lib/voting/interfaces/state-snapshot.js +3 -0
  157. package/src/lib/voting/interfaces/state-snapshot.js.map +1 -0
  158. package/src/lib/voting/interfaces/supermajority-config.d.ts +8 -0
  159. package/src/lib/voting/interfaces/supermajority-config.d.ts.map +1 -0
  160. package/src/lib/voting/interfaces/supermajority-config.js +3 -0
  161. package/src/lib/voting/interfaces/supermajority-config.js.map +1 -0
  162. package/src/lib/voting/interfaces/tally-proof.d.ts +10 -0
  163. package/src/lib/voting/interfaces/tally-proof.d.ts.map +1 -0
  164. package/src/lib/voting/interfaces/tally-proof.js +3 -0
  165. package/src/lib/voting/interfaces/tally-proof.js.map +1 -0
  166. package/src/lib/voting/interfaces/vote-encoder.d.ts +10 -0
  167. package/src/lib/voting/interfaces/vote-encoder.d.ts.map +1 -0
  168. package/src/lib/voting/interfaces/vote-encoder.js +3 -0
  169. package/src/lib/voting/interfaces/vote-encoder.js.map +1 -0
  170. package/src/lib/voting/interfaces/vote-logger-extended.d.ts +10 -0
  171. package/src/lib/voting/interfaces/vote-logger-extended.d.ts.map +1 -0
  172. package/src/lib/voting/interfaces/vote-logger-extended.js +3 -0
  173. package/src/lib/voting/interfaces/vote-logger-extended.js.map +1 -0
  174. package/src/lib/voting/interfaces/vote-logger.d.ts +9 -0
  175. package/src/lib/voting/interfaces/vote-logger.d.ts.map +1 -0
  176. package/src/lib/voting/interfaces/vote-logger.js +3 -0
  177. package/src/lib/voting/interfaces/vote-logger.js.map +1 -0
  178. package/src/lib/voting/interfaces/voting-consts.d.ts +9 -0
  179. package/src/lib/voting/interfaces/voting-consts.d.ts.map +1 -0
  180. package/src/lib/voting/interfaces/voting-consts.js +3 -0
  181. package/src/lib/voting/interfaces/voting-consts.js.map +1 -0
  182. package/src/lib/voting/interfaces/voting-key-derivation-options.d.ts +7 -0
  183. package/src/lib/voting/interfaces/voting-key-derivation-options.d.ts.map +1 -0
  184. package/src/lib/voting/interfaces/voting-key-derivation-options.js +3 -0
  185. package/src/lib/voting/interfaces/voting-key-derivation-options.js.map +1 -0
  186. package/src/lib/voting/interfaces/voting-poll-results.d.ts +7 -0
  187. package/src/lib/voting/interfaces/voting-poll-results.d.ts.map +1 -0
  188. package/src/lib/voting/interfaces/voting-poll-results.js +3 -0
  189. package/src/lib/voting/interfaces/voting-poll-results.js.map +1 -0
  190. package/src/lib/voting/interfaces/voting-receipt.d.ts +10 -0
  191. package/src/lib/voting/interfaces/voting-receipt.d.ts.map +1 -0
  192. package/src/lib/voting/interfaces/voting-receipt.js +3 -0
  193. package/src/lib/voting/interfaces/voting-receipt.js.map +1 -0
  194. package/src/lib/voting/interfaces/voting-security-validator.d.ts +8 -0
  195. package/src/lib/voting/interfaces/voting-security-validator.d.ts.map +1 -0
  196. package/src/lib/voting/interfaces/voting-security-validator.js +3 -0
  197. package/src/lib/voting/interfaces/voting-security-validator.js.map +1 -0
  198. package/src/lib/voting/node-persistent-state.d.ts +40 -0
  199. package/src/lib/voting/node-persistent-state.d.ts.map +1 -0
  200. package/src/lib/voting/node-persistent-state.js +222 -0
  201. package/src/lib/voting/node-persistent-state.js.map +1 -0
  202. package/src/lib/voting/persistent-state.d.ts +44 -0
  203. package/src/lib/voting/persistent-state.d.ts.map +1 -0
  204. package/src/lib/voting/persistent-state.js +106 -0
  205. package/src/lib/voting/persistent-state.js.map +1 -0
  206. package/src/lib/voting/poll-core.d.ts +14 -29
  207. package/src/lib/voting/poll-core.d.ts.map +1 -1
  208. package/src/lib/voting/poll-core.js +13 -174
  209. package/src/lib/voting/poll-core.js.map +1 -1
  210. package/src/lib/voting/poll.d.ts +12 -11
  211. package/src/lib/voting/poll.d.ts.map +1 -1
  212. package/src/lib/voting/poll.js +5 -4
  213. package/src/lib/voting/poll.js.map +1 -1
  214. package/src/lib/voting/security.d.ts +9 -15
  215. package/src/lib/voting/security.d.ts.map +1 -1
  216. package/src/lib/voting/security.js +12 -44
  217. package/src/lib/voting/security.js.map +1 -1
  218. package/src/lib/voting/tallier.d.ts +12 -20
  219. package/src/lib/voting/tallier.d.ts.map +1 -1
  220. package/src/lib/voting/tallier.js +17 -366
  221. package/src/lib/voting/tallier.js.map +1 -1
  222. package/src/lib/voting/test-voter-pool.d.ts +16 -0
  223. package/src/lib/voting/test-voter-pool.d.ts.map +1 -0
  224. package/src/lib/voting/test-voter-pool.js +69 -0
  225. package/src/lib/voting/test-voter-pool.js.map +1 -0
  226. package/src/lib/voting/us-election-example.d.ts +2 -0
  227. package/src/lib/voting/us-election-example.d.ts.map +1 -0
  228. package/src/lib/voting/us-election-example.js +170 -0
  229. package/src/lib/voting/us-election-example.js.map +1 -0
  230. package/src/member.d.ts +5 -2
  231. package/src/member.d.ts.map +1 -1
  232. package/src/member.js +42 -17
  233. package/src/member.js.map +1 -1
  234. package/src/secure-buffer.d.ts +1 -2
  235. package/src/secure-buffer.d.ts.map +1 -1
  236. package/src/secure-buffer.js +3 -8
  237. package/src/secure-buffer.js.map +1 -1
  238. package/src/services/ecies/crypto-core.d.ts.map +1 -1
  239. package/src/services/ecies/crypto-core.js +24 -0
  240. package/src/services/ecies/crypto-core.js.map +1 -1
  241. package/src/services/ecies/multi-recipient.d.ts +16 -7
  242. package/src/services/ecies/multi-recipient.d.ts.map +1 -1
  243. package/src/services/ecies/multi-recipient.js +164 -23
  244. package/src/services/ecies/multi-recipient.js.map +1 -1
  245. package/src/services/ecies/service.d.ts +63 -21
  246. package/src/services/ecies/service.d.ts.map +1 -1
  247. package/src/services/ecies/service.js +196 -39
  248. package/src/services/ecies/service.js.map +1 -1
  249. package/src/services/ecies/single-recipient.d.ts.map +1 -1
  250. package/src/services/ecies/single-recipient.js +4 -2
  251. package/src/services/ecies/single-recipient.js.map +1 -1
  252. package/src/services/encryption-stream.d.ts +1 -1
  253. package/src/services/encryption-stream.d.ts.map +1 -1
  254. package/src/services/encryption-stream.js +4 -8
  255. package/src/services/encryption-stream.js.map +1 -1
  256. package/src/services/multi-recipient-processor.d.ts +16 -12
  257. package/src/services/multi-recipient-processor.d.ts.map +1 -1
  258. package/src/services/multi-recipient-processor.js +29 -10
  259. package/src/services/multi-recipient-processor.js.map +1 -1
  260. package/src/test-mocks/mock-backend-member.d.ts +22 -3
  261. package/src/test-mocks/mock-backend-member.d.ts.map +1 -1
  262. package/src/test-mocks/mock-backend-member.js +71 -0
  263. package/src/test-mocks/mock-backend-member.js.map +1 -1
  264. package/src/lib/voting/types.d.ts +0 -66
  265. package/src/lib/voting/types.d.ts.map +0 -1
  266. package/src/lib/voting/types.js +0 -29
  267. package/src/lib/voting/types.js.map +0 -1
@@ -3,250 +3,119 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PublicBulletinBoard = void 0;
4
4
  /**
5
5
  * Public Bulletin Board for Government-Grade Voting
6
- * Node.js optimized with native crypto
6
+ * Node.js optimized - extends ecies-lib PublicBulletinBoard with Buffer support
7
7
  * Implements requirement 1.2: Append-only, publicly verifiable vote publication
8
8
  */
9
- const crypto_1 = require("crypto");
9
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
10
10
  /**
11
- * Append-only public bulletin board with cryptographic verification
11
+ * Node.js PublicBulletinBoard that extends ecies-lib PublicBulletinBoard
12
+ * Uses Buffer for binary data instead of Uint8Array
13
+ *
14
+ * The base class handles all the logic, we just provide Node.js-specific defaults
15
+ * and ensure Buffer is used by default instead of Uint8Array.
12
16
  */
13
- class PublicBulletinBoard {
14
- entries = [];
15
- tallyProofs = new Map();
16
- authority;
17
- sequence = 0;
17
+ class PublicBulletinBoard extends ecies_lib_1.PublicBulletinBoard {
18
18
  constructor(authority) {
19
- this.authority = authority;
19
+ // Cast to the ecies-lib IMember type which has a different signature
20
+ // The node-ecies-lib IMember is compatible but has a different signature
21
+ super(authority);
20
22
  }
23
+ /**
24
+ * Override publishVote to ensure Buffer types are returned
25
+ */
21
26
  publishVote(pollId, encryptedVote, voterIdHash) {
22
- const timestamp = this.getMicrosecondTimestamp();
23
- const merkleRoot = this.computeMerkleRoot([...this.entries]);
24
- const entryData = this.serializeEntryData({
25
- sequence: this.sequence,
26
- timestamp,
27
- pollId,
28
- encryptedVote,
29
- voterIdHash,
30
- merkleRoot,
31
- });
32
- const entryHash = this.sha256(entryData);
33
- const signature = this.authority.sign(entryHash);
34
- const entry = {
35
- sequence: this.sequence++,
36
- timestamp,
37
- pollId,
38
- encryptedVote,
39
- voterIdHash,
40
- merkleRoot,
41
- entryHash,
42
- signature,
27
+ // Convert Buffer arguments to Uint8Array for parent class
28
+ const entry = super.publishVote(new Uint8Array(pollId), encryptedVote, new Uint8Array(voterIdHash));
29
+ // Convert Uint8Array fields to Buffer
30
+ return {
31
+ ...entry,
32
+ pollId: Buffer.from(entry.pollId),
33
+ voterIdHash: Buffer.from(entry.voterIdHash),
34
+ entryHash: Buffer.from(entry.entryHash),
35
+ signature: Buffer.from(entry.signature),
36
+ merkleRoot: Buffer.from(entry.merkleRoot),
43
37
  };
44
- this.entries.push(entry);
45
- return entry;
46
38
  }
39
+ /**
40
+ * Override publishTally to ensure Buffer types are returned
41
+ */
47
42
  publishTally(pollId, tallies, choices, encryptedVotes) {
48
- const timestamp = this.getMicrosecondTimestamp();
49
- const votesHash = this.hashEncryptedVotes(encryptedVotes);
50
- const decryptionProof = this.generateDecryptionProof(encryptedVotes, tallies);
51
- const proofData = this.serializeTallyProof({
52
- pollId,
53
- tallies,
54
- choices,
55
- timestamp,
56
- votesHash,
57
- decryptionProof,
58
- });
59
- const signature = this.authority.sign(proofData);
60
- const proof = {
61
- pollId,
62
- tallies,
63
- choices,
64
- timestamp,
65
- votesHash,
66
- decryptionProof,
67
- signature,
43
+ // Convert Buffer argument to Uint8Array for parent class
44
+ const proof = super.publishTally(new Uint8Array(pollId), tallies, choices, encryptedVotes);
45
+ // Convert Uint8Array fields to Buffer
46
+ return {
47
+ ...proof,
48
+ pollId: Buffer.from(proof.pollId),
49
+ votesHash: Buffer.from(proof.votesHash),
50
+ decryptionProof: Buffer.from(proof.decryptionProof),
51
+ signature: Buffer.from(proof.signature),
68
52
  };
69
- this.tallyProofs.set(pollId.toString('hex'), proof);
70
- return proof;
71
53
  }
54
+ /**
55
+ * Override getEntries to ensure Buffer types are returned and array is immutable
56
+ */
72
57
  getEntries(pollId) {
73
- const pollIdStr = pollId.toString('hex');
74
- return Object.freeze(this.entries.filter((e) => e.pollId.toString('hex') === pollIdStr));
75
- }
58
+ // Convert Buffer argument to Uint8Array for parent class
59
+ const entries = super.getEntries(new Uint8Array(pollId));
60
+ const bufferEntries = entries.map((entry) => ({
61
+ ...entry,
62
+ pollId: Buffer.from(entry.pollId),
63
+ voterIdHash: Buffer.from(entry.voterIdHash),
64
+ entryHash: Buffer.from(entry.entryHash),
65
+ signature: Buffer.from(entry.signature),
66
+ merkleRoot: Buffer.from(entry.merkleRoot),
67
+ }));
68
+ return Object.freeze(bufferEntries);
69
+ }
70
+ /**
71
+ * Override getAllEntries to ensure Buffer types are returned and array is immutable
72
+ */
76
73
  getAllEntries() {
77
- return Object.freeze([...this.entries]);
78
- }
74
+ const entries = super.getAllEntries();
75
+ const bufferEntries = entries.map((entry) => ({
76
+ ...entry,
77
+ pollId: Buffer.from(entry.pollId),
78
+ voterIdHash: Buffer.from(entry.voterIdHash),
79
+ entryHash: Buffer.from(entry.entryHash),
80
+ signature: Buffer.from(entry.signature),
81
+ merkleRoot: Buffer.from(entry.merkleRoot),
82
+ }));
83
+ return Object.freeze(bufferEntries);
84
+ }
85
+ /**
86
+ * Override getTallyProof to ensure Buffer types are returned
87
+ */
79
88
  getTallyProof(pollId) {
80
- return this.tallyProofs.get(pollId.toString('hex'));
89
+ // Convert Buffer argument to Uint8Array for parent class
90
+ const proof = super.getTallyProof(new Uint8Array(pollId));
91
+ if (!proof)
92
+ return undefined;
93
+ return {
94
+ ...proof,
95
+ pollId: Buffer.from(proof.pollId),
96
+ votesHash: Buffer.from(proof.votesHash),
97
+ decryptionProof: Buffer.from(proof.decryptionProof),
98
+ signature: Buffer.from(proof.signature),
99
+ };
81
100
  }
82
- verifyEntry(entry) {
83
- const entryData = this.serializeEntryData({
84
- sequence: entry.sequence,
85
- timestamp: entry.timestamp,
101
+ /**
102
+ * Override export method to return Buffer instead of Uint8Array
103
+ */
104
+ export() {
105
+ const exported = super.export();
106
+ return Buffer.from(exported);
107
+ }
108
+ /**
109
+ * Get all votes published to the bulletin board
110
+ * Returns the encrypted votes for verification
111
+ */
112
+ getVotes() {
113
+ const entries = this.getAllEntries();
114
+ return entries.map((entry) => ({
86
115
  pollId: entry.pollId,
87
116
  encryptedVote: entry.encryptedVote,
88
- voterIdHash: entry.voterIdHash,
89
- merkleRoot: entry.merkleRoot,
90
- });
91
- const computedHash = this.sha256(entryData);
92
- if (!computedHash.equals(entry.entryHash)) {
93
- return false;
94
- }
95
- return this.authority.verify(entry.signature, entry.entryHash);
96
- }
97
- verifyTallyProof(proof) {
98
- const proofData = this.serializeTallyProof({
99
- pollId: proof.pollId,
100
- tallies: proof.tallies,
101
- choices: proof.choices,
102
- timestamp: proof.timestamp,
103
- votesHash: proof.votesHash,
104
- decryptionProof: proof.decryptionProof,
105
- });
106
- return this.authority.verify(proof.signature, proofData);
107
- }
108
- verifyMerkleTree() {
109
- for (let i = 0; i < this.entries.length; i++) {
110
- const entry = this.entries[i];
111
- const expectedRoot = this.computeMerkleRoot(this.entries.slice(0, i));
112
- if (!entry.merkleRoot.equals(expectedRoot)) {
113
- return false;
114
- }
115
- }
116
- return true;
117
- }
118
- export() {
119
- const parts = [];
120
- // Export entries
121
- parts.push(this.encodeNumber(this.entries.length));
122
- for (const entry of this.entries) {
123
- parts.push(this.serializeEntry(entry));
124
- }
125
- // Export tally proofs
126
- parts.push(this.encodeNumber(this.tallyProofs.size));
127
- for (const proof of this.tallyProofs.values()) {
128
- parts.push(this.serializeTallyProofFull(proof));
129
- }
130
- return Buffer.concat(parts);
131
- }
132
- computeMerkleRoot(entries) {
133
- if (entries.length === 0) {
134
- return Buffer.alloc(32);
135
- }
136
- let hashes = entries.map((e) => e.entryHash);
137
- while (hashes.length > 1) {
138
- const nextLevel = [];
139
- for (let i = 0; i < hashes.length; i += 2) {
140
- if (i + 1 < hashes.length) {
141
- nextLevel.push(this.sha256(Buffer.concat([hashes[i], hashes[i + 1]])));
142
- }
143
- else {
144
- nextLevel.push(hashes[i]);
145
- }
146
- }
147
- hashes = nextLevel;
148
- }
149
- return hashes[0];
150
- }
151
- hashEncryptedVotes(votes) {
152
- const parts = [];
153
- for (const vote of votes) {
154
- for (const value of vote) {
155
- parts.push(this.encodeBigInt(value));
156
- }
157
- }
158
- return this.sha256(Buffer.concat(parts));
159
- }
160
- generateDecryptionProof(encryptedVotes, tallies) {
161
- // Simplified proof: hash of encrypted votes + tallies
162
- // In production, use ZK-SNARK or similar
163
- const parts = [];
164
- for (const vote of encryptedVotes) {
165
- for (const value of vote) {
166
- parts.push(this.encodeBigInt(value));
167
- }
168
- }
169
- for (const tally of tallies) {
170
- parts.push(this.encodeBigInt(tally));
171
- }
172
- return this.sha256(Buffer.concat(parts));
173
- }
174
- serializeEntryData(data) {
175
- const parts = [
176
- this.encodeNumber(data.sequence),
177
- this.encodeNumber(data.timestamp),
178
- data.pollId,
179
- data.voterIdHash,
180
- data.merkleRoot,
181
- ];
182
- for (const value of data.encryptedVote) {
183
- parts.push(this.encodeBigInt(value));
184
- }
185
- return Buffer.concat(parts);
186
- }
187
- serializeTallyProof(data) {
188
- const parts = [
189
- data.pollId,
190
- this.encodeNumber(data.timestamp),
191
- data.votesHash,
192
- data.decryptionProof,
193
- ];
194
- for (const tally of data.tallies) {
195
- parts.push(this.encodeBigInt(tally));
196
- }
197
- for (const choice of data.choices) {
198
- parts.push(Buffer.from(choice, 'utf8'));
199
- }
200
- return Buffer.concat(parts);
201
- }
202
- serializeEntry(entry) {
203
- const parts = [
204
- this.encodeNumber(entry.sequence),
205
- this.encodeNumber(entry.timestamp),
206
- this.encodeNumber(entry.pollId.length),
207
- entry.pollId,
208
- this.encodeNumber(entry.encryptedVote.length),
209
- ];
210
- for (const value of entry.encryptedVote) {
211
- parts.push(this.encodeBigInt(value));
212
- }
213
- parts.push(this.encodeNumber(entry.voterIdHash.length), entry.voterIdHash, this.encodeNumber(entry.merkleRoot.length), entry.merkleRoot, this.encodeNumber(entry.entryHash.length), entry.entryHash, this.encodeNumber(entry.signature.length), entry.signature);
214
- return Buffer.concat(parts);
215
- }
216
- serializeTallyProofFull(proof) {
217
- const parts = [
218
- this.encodeNumber(proof.pollId.length),
219
- proof.pollId,
220
- this.encodeNumber(proof.tallies.length),
221
- ];
222
- for (const tally of proof.tallies) {
223
- parts.push(this.encodeBigInt(tally));
224
- }
225
- parts.push(this.encodeNumber(proof.choices.length));
226
- for (const choice of proof.choices) {
227
- const encoded = Buffer.from(choice, 'utf8');
228
- parts.push(this.encodeNumber(encoded.length), encoded);
229
- }
230
- parts.push(this.encodeNumber(proof.timestamp), this.encodeNumber(proof.votesHash.length), proof.votesHash, this.encodeNumber(proof.decryptionProof.length), proof.decryptionProof, this.encodeNumber(proof.signature.length), proof.signature);
231
- return Buffer.concat(parts);
232
- }
233
- getMicrosecondTimestamp() {
234
- // Get milliseconds since epoch and convert to microseconds
235
- // performance.now() is relative to process start, not epoch, so we only use Date.now()
236
- const now = Date.now();
237
- return now * 1000;
238
- }
239
- sha256(data) {
240
- return (0, crypto_1.createHash)('sha256').update(data).digest();
241
- }
242
- encodeNumber(n) {
243
- const buffer = Buffer.alloc(8);
244
- buffer.writeBigUInt64BE(BigInt(n));
245
- return buffer;
246
- }
247
- encodeBigInt(n) {
248
- const hex = n.toString(16).padStart(64, '0');
249
- return Buffer.from(hex, 'hex');
117
+ voterIdHash: Buffer.from(entry.voterIdHash), // Convert Uint8Array to Buffer
118
+ }));
250
119
  }
251
120
  }
252
121
  exports.PublicBulletinBoard = PublicBulletinBoard;
@@ -1 +1 @@
1
- {"version":3,"file":"bulletin-board.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/bulletin-board.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bulletin-board.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/bulletin-board.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,14 @@
1
1
  /**
2
2
  * Vote Encoder - Encrypts votes using Paillier homomorphic encryption
3
- * Node.js optimized
3
+ * Node.js optimized - extends ecies-lib VoteEncoder with Buffer support
4
4
  */
5
+ import { VoteEncoder as BaseVoteEncoder } from '@digitaldefiance/ecies-lib';
5
6
  import type { PublicKey } from 'paillier-bigint';
6
- import { VotingMethod, type EncryptedVote } from './types';
7
- export declare class VoteEncoder {
8
- private readonly votingPublicKey;
7
+ /**
8
+ * Node.js VoteEncoder that extends ecies-lib VoteEncoder
9
+ * Specializes the generic TID parameter to Buffer for Node.js compatibility
10
+ */
11
+ export declare class VoteEncoder extends BaseVoteEncoder<Buffer> {
9
12
  constructor(votingPublicKey: PublicKey);
10
- encodePlurality(choiceIndex: number, choiceCount: number): EncryptedVote;
11
- encodeApproval(choices: number[], choiceCount: number): EncryptedVote;
12
- encodeWeighted(choiceIndex: number, weight: bigint, choiceCount: number): EncryptedVote;
13
- encodeBorda(rankings: number[], choiceCount: number): EncryptedVote;
14
- encodeRankedChoice(rankings: number[], choiceCount: number): EncryptedVote;
15
- encode(method: VotingMethod, data: {
16
- choiceIndex?: number;
17
- choices?: number[];
18
- rankings?: number[];
19
- weight?: bigint;
20
- }, choiceCount: number): EncryptedVote;
21
13
  }
22
14
  //# sourceMappingURL=encoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/encoder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAE3D,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,SAAS;IAEvD,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;IAYxE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;IAarE,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,aAAa;IAYhB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;IAgBnE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;IAc1E,MAAM,CACJ,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;QACJ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EACD,WAAW,EAAE,MAAM,GAClB,aAAa;CA+CjB"}
1
+ {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/encoder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,WAAY,SAAQ,eAAe,CAAC,MAAM,CAAC;gBAC1C,eAAe,EAAE,SAAS;CAOvC"}
@@ -1,114 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VoteEncoder = void 0;
4
- const types_1 = require("./types");
5
- class VoteEncoder {
6
- votingPublicKey;
4
+ /**
5
+ * Vote Encoder - Encrypts votes using Paillier homomorphic encryption
6
+ * Node.js optimized - extends ecies-lib VoteEncoder with Buffer support
7
+ */
8
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
9
+ /**
10
+ * Node.js VoteEncoder that extends ecies-lib VoteEncoder
11
+ * Specializes the generic TID parameter to Buffer for Node.js compatibility
12
+ */
13
+ class VoteEncoder extends ecies_lib_1.VoteEncoder {
7
14
  constructor(votingPublicKey) {
8
- this.votingPublicKey = votingPublicKey;
9
- }
10
- encodePlurality(choiceIndex, choiceCount) {
11
- const encrypted = [];
12
- for (let i = 0; i < choiceCount; i++) {
13
- encrypted.push(i === choiceIndex
14
- ? this.votingPublicKey.encrypt(1n)
15
- : this.votingPublicKey.encrypt(0n));
16
- }
17
- return { choiceIndex, encrypted };
18
- }
19
- encodeApproval(choices, choiceCount) {
20
- const choiceSet = new Set(choices);
21
- const encrypted = [];
22
- for (let i = 0; i < choiceCount; i++) {
23
- encrypted.push(choiceSet.has(i)
24
- ? this.votingPublicKey.encrypt(1n)
25
- : this.votingPublicKey.encrypt(0n));
26
- }
27
- return { choices, encrypted };
28
- }
29
- encodeWeighted(choiceIndex, weight, choiceCount) {
30
- const encrypted = [];
31
- for (let i = 0; i < choiceCount; i++) {
32
- encrypted.push(i === choiceIndex
33
- ? this.votingPublicKey.encrypt(weight)
34
- : this.votingPublicKey.encrypt(0n));
35
- }
36
- return { choiceIndex, weight, encrypted };
37
- }
38
- encodeBorda(rankings, choiceCount) {
39
- const encrypted = new Array(choiceCount);
40
- const points = BigInt(rankings.length);
41
- for (let i = 0; i < choiceCount; i++) {
42
- encrypted[i] = this.votingPublicKey.encrypt(0n);
43
- }
44
- for (let rank = 0; rank < rankings.length; rank++) {
45
- const choiceIndex = rankings[rank];
46
- const choicePoints = points - BigInt(rank);
47
- encrypted[choiceIndex] = this.votingPublicKey.encrypt(choicePoints);
48
- }
49
- return { rankings, encrypted };
50
- }
51
- encodeRankedChoice(rankings, choiceCount) {
52
- const encrypted = new Array(choiceCount);
53
- for (let i = 0; i < choiceCount; i++) {
54
- encrypted[i] = this.votingPublicKey.encrypt(0n);
55
- }
56
- for (let rank = 0; rank < rankings.length; rank++) {
57
- const choiceIndex = rankings[rank];
58
- encrypted[choiceIndex] = this.votingPublicKey.encrypt(BigInt(rank + 1));
59
- }
60
- return { rankings, encrypted };
61
- }
62
- encode(method, data, choiceCount) {
63
- switch (method) {
64
- case types_1.VotingMethod.Plurality:
65
- if (data.choiceIndex === undefined)
66
- throw new Error('Choice required');
67
- return this.encodePlurality(data.choiceIndex, choiceCount);
68
- case types_1.VotingMethod.Approval:
69
- if (!data.choices)
70
- throw new Error('Choices required');
71
- return this.encodeApproval(data.choices, choiceCount);
72
- case types_1.VotingMethod.Weighted:
73
- if (data.choiceIndex === undefined || !data.weight) {
74
- throw new Error('Choice and weight required');
75
- }
76
- return this.encodeWeighted(data.choiceIndex, data.weight, choiceCount);
77
- case types_1.VotingMethod.Borda:
78
- if (!data.rankings)
79
- throw new Error('Rankings required');
80
- return this.encodeBorda(data.rankings, choiceCount);
81
- case types_1.VotingMethod.RankedChoice:
82
- if (!data.rankings)
83
- throw new Error('Rankings required');
84
- return this.encodeRankedChoice(data.rankings, choiceCount);
85
- case types_1.VotingMethod.Quadratic:
86
- if (data.choiceIndex === undefined || !data.weight) {
87
- throw new Error('Choice and weight required');
88
- }
89
- return this.encodeWeighted(data.choiceIndex, data.weight, choiceCount);
90
- case types_1.VotingMethod.Consensus:
91
- if (data.choiceIndex === undefined)
92
- throw new Error('Choice required');
93
- return this.encodePlurality(data.choiceIndex, choiceCount);
94
- case types_1.VotingMethod.ConsentBased: {
95
- if (data.choiceIndex === undefined)
96
- throw new Error('Choice required');
97
- const encrypted = [];
98
- for (let i = 0; i < choiceCount; i++) {
99
- encrypted.push(i === data.choiceIndex
100
- ? this.votingPublicKey.encrypt(data.weight || 1n)
101
- : this.votingPublicKey.encrypt(0n));
102
- }
103
- return {
104
- choiceIndex: data.choiceIndex,
105
- weight: data.weight,
106
- encrypted,
107
- };
108
- }
109
- default:
110
- throw new Error('Unknown voting method');
111
- }
15
+ super(votingPublicKey);
112
16
  }
113
17
  }
114
18
  exports.VoteEncoder = VoteEncoder;
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/encoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/encoder.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,0DAA4E;AAG5E;;;GAGG;AACH,MAAa,WAAY,SAAQ,uBAAuB;IACtD,YAAY,eAA0B;QACpC,KAAK,CAAC,eAAe,CAAC,CAAC;IACzB,CAAC;CAKF;AARD,kCAQC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Re-export all enumerations from ecies-lib
3
+ * This ensures enumeration parity between browser and Node.js implementations
4
+ */
5
+ export { VotingMethod, SecurityLevel, EventType, AuditEventType, JurisdictionLevel, } from '@digitaldefiance/ecies-lib';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/enumerations/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JurisdictionLevel = exports.AuditEventType = exports.EventType = exports.SecurityLevel = exports.VotingMethod = void 0;
4
+ /**
5
+ * Re-export all enumerations from ecies-lib
6
+ * This ensures enumeration parity between browser and Node.js implementations
7
+ */
8
+ var ecies_lib_1 = require("@digitaldefiance/ecies-lib");
9
+ Object.defineProperty(exports, "VotingMethod", { enumerable: true, get: function () { return ecies_lib_1.VotingMethod; } });
10
+ Object.defineProperty(exports, "SecurityLevel", { enumerable: true, get: function () { return ecies_lib_1.SecurityLevel; } });
11
+ Object.defineProperty(exports, "EventType", { enumerable: true, get: function () { return ecies_lib_1.EventType; } });
12
+ Object.defineProperty(exports, "AuditEventType", { enumerable: true, get: function () { return ecies_lib_1.AuditEventType; } });
13
+ Object.defineProperty(exports, "JurisdictionLevel", { enumerable: true, get: function () { return ecies_lib_1.JurisdictionLevel; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/enumerations/index.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,wDAMoC;AALlC,yGAAA,YAAY,OAAA;AACZ,0GAAA,aAAa,OAAA;AACb,sGAAA,SAAS,OAAA;AACT,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA"}