@digitaldefiance/node-ecies-lib 4.8.2 → 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 (252) hide show
  1. package/package.json +10 -5
  2. package/src/constants.d.ts.map +1 -1
  3. package/src/constants.js +31 -25
  4. package/src/constants.js.map +1 -1
  5. package/src/interfaces/index.d.ts +1 -2
  6. package/src/interfaces/index.d.ts.map +1 -1
  7. package/src/interfaces/index.js +6 -3
  8. package/src/interfaces/index.js.map +1 -1
  9. package/src/interfaces/member.d.ts +30 -12
  10. package/src/interfaces/member.d.ts.map +1 -1
  11. package/src/interfaces/platform-buffer.d.ts +9 -0
  12. package/src/interfaces/platform-buffer.d.ts.map +1 -0
  13. package/src/interfaces/platform-buffer.js +3 -0
  14. package/src/interfaces/platform-buffer.js.map +1 -0
  15. package/src/interfaces/platform-id.d.ts +2 -2
  16. package/src/interfaces/platform-id.d.ts.map +1 -1
  17. package/src/lib/id-providers/buffer-provider.d.ts +54 -0
  18. package/src/lib/id-providers/buffer-provider.d.ts.map +1 -0
  19. package/src/lib/id-providers/buffer-provider.js +93 -0
  20. package/src/lib/id-providers/buffer-provider.js.map +1 -0
  21. package/src/lib/index.d.ts +1 -0
  22. package/src/lib/index.d.ts.map +1 -1
  23. package/src/lib/index.js +1 -0
  24. package/src/lib/index.js.map +1 -1
  25. package/src/lib/voting/audit.d.ts +39 -48
  26. package/src/lib/voting/audit.d.ts.map +1 -1
  27. package/src/lib/voting/audit.js +103 -111
  28. package/src/lib/voting/audit.js.map +1 -1
  29. package/src/lib/voting/bulletin-board.d.ts +47 -81
  30. package/src/lib/voting/bulletin-board.d.ts.map +1 -1
  31. package/src/lib/voting/bulletin-board.js +95 -231
  32. package/src/lib/voting/bulletin-board.js.map +1 -1
  33. package/src/lib/voting/encoder.d.ts +7 -16
  34. package/src/lib/voting/encoder.d.ts.map +1 -1
  35. package/src/lib/voting/encoder.js +11 -107
  36. package/src/lib/voting/encoder.js.map +1 -1
  37. package/src/lib/voting/enumerations/index.d.ts +6 -0
  38. package/src/lib/voting/enumerations/index.d.ts.map +1 -0
  39. package/src/lib/voting/enumerations/index.js +14 -0
  40. package/src/lib/voting/enumerations/index.js.map +1 -0
  41. package/src/lib/voting/event-logger.d.ts +13 -74
  42. package/src/lib/voting/event-logger.d.ts.map +1 -1
  43. package/src/lib/voting/event-logger.js +19 -140
  44. package/src/lib/voting/event-logger.js.map +1 -1
  45. package/src/lib/voting/examples.d.ts +112 -0
  46. package/src/lib/voting/examples.d.ts.map +1 -0
  47. package/src/lib/voting/examples.js +386 -0
  48. package/src/lib/voting/examples.js.map +1 -0
  49. package/src/lib/voting/factory.d.ts +38 -9
  50. package/src/lib/voting/factory.d.ts.map +1 -1
  51. package/src/lib/voting/factory.js +42 -8
  52. package/src/lib/voting/factory.js.map +1 -1
  53. package/src/lib/voting/hierarchical-aggregator.d.ts +44 -0
  54. package/src/lib/voting/hierarchical-aggregator.d.ts.map +1 -0
  55. package/src/lib/voting/hierarchical-aggregator.js +56 -0
  56. package/src/lib/voting/hierarchical-aggregator.js.map +1 -0
  57. package/src/lib/voting/index.d.ts +43 -7
  58. package/src/lib/voting/index.d.ts.map +1 -1
  59. package/src/lib/voting/index.js +53 -10
  60. package/src/lib/voting/index.js.map +1 -1
  61. package/src/lib/voting/interfaces/aggregated-tally.d.ts +10 -0
  62. package/src/lib/voting/interfaces/aggregated-tally.d.ts.map +1 -0
  63. package/src/lib/voting/interfaces/aggregated-tally.js +3 -0
  64. package/src/lib/voting/interfaces/aggregated-tally.js.map +1 -0
  65. package/src/lib/voting/interfaces/audit-entry.d.ts +10 -0
  66. package/src/lib/voting/interfaces/audit-entry.d.ts.map +1 -0
  67. package/src/lib/voting/interfaces/audit-entry.js +3 -0
  68. package/src/lib/voting/interfaces/audit-entry.js.map +1 -0
  69. package/src/lib/voting/interfaces/audit-log.d.ts +10 -0
  70. package/src/lib/voting/interfaces/audit-log.d.ts.map +1 -0
  71. package/src/lib/voting/interfaces/audit-log.js +3 -0
  72. package/src/lib/voting/interfaces/audit-log.js.map +1 -0
  73. package/src/lib/voting/interfaces/bulletin-board-entry.d.ts +10 -0
  74. package/src/lib/voting/interfaces/bulletin-board-entry.d.ts.map +1 -0
  75. package/src/lib/voting/interfaces/bulletin-board-entry.js +3 -0
  76. package/src/lib/voting/interfaces/bulletin-board-entry.js.map +1 -0
  77. package/src/lib/voting/interfaces/bulletin-board.d.ts +10 -0
  78. package/src/lib/voting/interfaces/bulletin-board.d.ts.map +1 -0
  79. package/src/lib/voting/interfaces/bulletin-board.js +3 -0
  80. package/src/lib/voting/interfaces/bulletin-board.js.map +1 -0
  81. package/src/lib/voting/interfaces/checkpoint-manager-extended.d.ts +10 -0
  82. package/src/lib/voting/interfaces/checkpoint-manager-extended.d.ts.map +1 -0
  83. package/src/lib/voting/interfaces/checkpoint-manager-extended.js +3 -0
  84. package/src/lib/voting/interfaces/checkpoint-manager-extended.js.map +1 -0
  85. package/src/lib/voting/interfaces/checkpoint-manager.d.ts +9 -0
  86. package/src/lib/voting/interfaces/checkpoint-manager.d.ts.map +1 -0
  87. package/src/lib/voting/interfaces/checkpoint-manager.js +3 -0
  88. package/src/lib/voting/interfaces/checkpoint-manager.js.map +1 -0
  89. package/src/lib/voting/interfaces/checkpoint-metadata.d.ts +8 -0
  90. package/src/lib/voting/interfaces/checkpoint-metadata.d.ts.map +1 -0
  91. package/src/lib/voting/interfaces/checkpoint-metadata.js +3 -0
  92. package/src/lib/voting/interfaces/checkpoint-metadata.js.map +1 -0
  93. package/src/lib/voting/interfaces/ecies-service-with-voting.d.ts +8 -0
  94. package/src/lib/voting/interfaces/ecies-service-with-voting.d.ts.map +1 -0
  95. package/src/lib/voting/interfaces/ecies-service-with-voting.js +3 -0
  96. package/src/lib/voting/interfaces/ecies-service-with-voting.js.map +1 -0
  97. package/src/lib/voting/interfaces/encrypted-vote.d.ts +10 -0
  98. package/src/lib/voting/interfaces/encrypted-vote.d.ts.map +1 -0
  99. package/src/lib/voting/interfaces/encrypted-vote.js +3 -0
  100. package/src/lib/voting/interfaces/encrypted-vote.js.map +1 -0
  101. package/src/lib/voting/interfaces/event-log-entry.d.ts +10 -0
  102. package/src/lib/voting/interfaces/event-log-entry.d.ts.map +1 -0
  103. package/src/lib/voting/interfaces/event-log-entry.js +3 -0
  104. package/src/lib/voting/interfaces/event-log-entry.js.map +1 -0
  105. package/src/lib/voting/interfaces/event-logger.d.ts +10 -0
  106. package/src/lib/voting/interfaces/event-logger.d.ts.map +1 -0
  107. package/src/lib/voting/interfaces/event-logger.js +3 -0
  108. package/src/lib/voting/interfaces/event-logger.js.map +1 -0
  109. package/src/lib/voting/interfaces/index.d.ts +37 -0
  110. package/src/lib/voting/interfaces/index.d.ts.map +1 -0
  111. package/src/lib/voting/interfaces/index.js +9 -0
  112. package/src/lib/voting/interfaces/index.js.map +1 -0
  113. package/src/lib/voting/interfaces/jurisdiction-config.d.ts +10 -0
  114. package/src/lib/voting/interfaces/jurisdiction-config.d.ts.map +1 -0
  115. package/src/lib/voting/interfaces/jurisdiction-config.js +3 -0
  116. package/src/lib/voting/interfaces/jurisdiction-config.js.map +1 -0
  117. package/src/lib/voting/interfaces/plaintext-vote.d.ts +10 -0
  118. package/src/lib/voting/interfaces/plaintext-vote.d.ts.map +1 -0
  119. package/src/lib/voting/interfaces/plaintext-vote.js +3 -0
  120. package/src/lib/voting/interfaces/plaintext-vote.js.map +1 -0
  121. package/src/lib/voting/interfaces/poll-configuration.d.ts +8 -0
  122. package/src/lib/voting/interfaces/poll-configuration.d.ts.map +1 -0
  123. package/src/lib/voting/interfaces/poll-configuration.js +3 -0
  124. package/src/lib/voting/interfaces/poll-configuration.js.map +1 -0
  125. package/src/lib/voting/interfaces/poll-results.d.ts +8 -0
  126. package/src/lib/voting/interfaces/poll-results.d.ts.map +1 -0
  127. package/src/lib/voting/interfaces/poll-results.js +3 -0
  128. package/src/lib/voting/interfaces/poll-results.js.map +1 -0
  129. package/src/lib/voting/interfaces/poll-tallier.d.ts +10 -0
  130. package/src/lib/voting/interfaces/poll-tallier.d.ts.map +1 -0
  131. package/src/lib/voting/interfaces/poll-tallier.js +3 -0
  132. package/src/lib/voting/interfaces/poll-tallier.js.map +1 -0
  133. package/src/lib/voting/interfaces/poll.d.ts +10 -0
  134. package/src/lib/voting/interfaces/poll.d.ts.map +1 -0
  135. package/src/lib/voting/interfaces/poll.js +3 -0
  136. package/src/lib/voting/interfaces/poll.js.map +1 -0
  137. package/src/lib/voting/interfaces/round-result.d.ts +8 -0
  138. package/src/lib/voting/interfaces/round-result.d.ts.map +1 -0
  139. package/src/lib/voting/interfaces/round-result.js +3 -0
  140. package/src/lib/voting/interfaces/round-result.js.map +1 -0
  141. package/src/lib/voting/interfaces/state-snapshot.d.ts +15 -0
  142. package/src/lib/voting/interfaces/state-snapshot.d.ts.map +1 -0
  143. package/src/lib/voting/interfaces/state-snapshot.js +3 -0
  144. package/src/lib/voting/interfaces/state-snapshot.js.map +1 -0
  145. package/src/lib/voting/interfaces/supermajority-config.d.ts +8 -0
  146. package/src/lib/voting/interfaces/supermajority-config.d.ts.map +1 -0
  147. package/src/lib/voting/interfaces/supermajority-config.js +3 -0
  148. package/src/lib/voting/interfaces/supermajority-config.js.map +1 -0
  149. package/src/lib/voting/interfaces/tally-proof.d.ts +10 -0
  150. package/src/lib/voting/interfaces/tally-proof.d.ts.map +1 -0
  151. package/src/lib/voting/interfaces/tally-proof.js +3 -0
  152. package/src/lib/voting/interfaces/tally-proof.js.map +1 -0
  153. package/src/lib/voting/interfaces/vote-encoder.d.ts +10 -0
  154. package/src/lib/voting/interfaces/vote-encoder.d.ts.map +1 -0
  155. package/src/lib/voting/interfaces/vote-encoder.js +3 -0
  156. package/src/lib/voting/interfaces/vote-encoder.js.map +1 -0
  157. package/src/lib/voting/interfaces/vote-logger-extended.d.ts +10 -0
  158. package/src/lib/voting/interfaces/vote-logger-extended.d.ts.map +1 -0
  159. package/src/lib/voting/interfaces/vote-logger-extended.js +3 -0
  160. package/src/lib/voting/interfaces/vote-logger-extended.js.map +1 -0
  161. package/src/lib/voting/interfaces/vote-logger.d.ts +9 -0
  162. package/src/lib/voting/interfaces/vote-logger.d.ts.map +1 -0
  163. package/src/lib/voting/interfaces/vote-logger.js +3 -0
  164. package/src/lib/voting/interfaces/vote-logger.js.map +1 -0
  165. package/src/lib/voting/interfaces/voting-consts.d.ts +9 -0
  166. package/src/lib/voting/interfaces/voting-consts.d.ts.map +1 -0
  167. package/src/lib/voting/interfaces/voting-consts.js +3 -0
  168. package/src/lib/voting/interfaces/voting-consts.js.map +1 -0
  169. package/src/lib/voting/interfaces/voting-key-derivation-options.d.ts +7 -0
  170. package/src/lib/voting/interfaces/voting-key-derivation-options.d.ts.map +1 -0
  171. package/src/lib/voting/interfaces/voting-key-derivation-options.js +3 -0
  172. package/src/lib/voting/interfaces/voting-key-derivation-options.js.map +1 -0
  173. package/src/lib/voting/interfaces/voting-poll-results.d.ts +7 -0
  174. package/src/lib/voting/interfaces/voting-poll-results.d.ts.map +1 -0
  175. package/src/lib/voting/interfaces/voting-poll-results.js +3 -0
  176. package/src/lib/voting/interfaces/voting-poll-results.js.map +1 -0
  177. package/src/lib/voting/interfaces/voting-receipt.d.ts +10 -0
  178. package/src/lib/voting/interfaces/voting-receipt.d.ts.map +1 -0
  179. package/src/lib/voting/interfaces/voting-receipt.js +3 -0
  180. package/src/lib/voting/interfaces/voting-receipt.js.map +1 -0
  181. package/src/lib/voting/interfaces/voting-security-validator.d.ts +8 -0
  182. package/src/lib/voting/interfaces/voting-security-validator.d.ts.map +1 -0
  183. package/src/lib/voting/interfaces/voting-security-validator.js +3 -0
  184. package/src/lib/voting/interfaces/voting-security-validator.js.map +1 -0
  185. package/src/lib/voting/node-persistent-state.d.ts +40 -0
  186. package/src/lib/voting/node-persistent-state.d.ts.map +1 -0
  187. package/src/lib/voting/node-persistent-state.js +222 -0
  188. package/src/lib/voting/node-persistent-state.js.map +1 -0
  189. package/src/lib/voting/persistent-state.d.ts +44 -0
  190. package/src/lib/voting/persistent-state.d.ts.map +1 -0
  191. package/src/lib/voting/persistent-state.js +106 -0
  192. package/src/lib/voting/persistent-state.js.map +1 -0
  193. package/src/lib/voting/poll-core.d.ts +14 -29
  194. package/src/lib/voting/poll-core.d.ts.map +1 -1
  195. package/src/lib/voting/poll-core.js +13 -176
  196. package/src/lib/voting/poll-core.js.map +1 -1
  197. package/src/lib/voting/poll.js +3 -3
  198. package/src/lib/voting/poll.js.map +1 -1
  199. package/src/lib/voting/security.d.ts +9 -15
  200. package/src/lib/voting/security.d.ts.map +1 -1
  201. package/src/lib/voting/security.js +12 -44
  202. package/src/lib/voting/security.js.map +1 -1
  203. package/src/lib/voting/tallier.d.ts +11 -20
  204. package/src/lib/voting/tallier.d.ts.map +1 -1
  205. package/src/lib/voting/tallier.js +17 -366
  206. package/src/lib/voting/tallier.js.map +1 -1
  207. package/src/lib/voting/test-voter-pool.d.ts +16 -0
  208. package/src/lib/voting/test-voter-pool.d.ts.map +1 -0
  209. package/src/lib/voting/test-voter-pool.js +69 -0
  210. package/src/lib/voting/test-voter-pool.js.map +1 -0
  211. package/src/lib/voting/us-election-example.d.ts +2 -0
  212. package/src/lib/voting/us-election-example.d.ts.map +1 -0
  213. package/src/lib/voting/us-election-example.js +170 -0
  214. package/src/lib/voting/us-election-example.js.map +1 -0
  215. package/src/member.d.ts +4 -1
  216. package/src/member.d.ts.map +1 -1
  217. package/src/member.js +40 -16
  218. package/src/member.js.map +1 -1
  219. package/src/secure-buffer.d.ts +1 -2
  220. package/src/secure-buffer.d.ts.map +1 -1
  221. package/src/secure-buffer.js +3 -9
  222. package/src/secure-buffer.js.map +1 -1
  223. package/src/services/ecies/crypto-core.d.ts.map +1 -1
  224. package/src/services/ecies/crypto-core.js +24 -0
  225. package/src/services/ecies/crypto-core.js.map +1 -1
  226. package/src/services/ecies/multi-recipient.d.ts +9 -1
  227. package/src/services/ecies/multi-recipient.d.ts.map +1 -1
  228. package/src/services/ecies/multi-recipient.js +153 -21
  229. package/src/services/ecies/multi-recipient.js.map +1 -1
  230. package/src/services/ecies/service.d.ts +56 -15
  231. package/src/services/ecies/service.d.ts.map +1 -1
  232. package/src/services/ecies/service.js +196 -39
  233. package/src/services/ecies/service.js.map +1 -1
  234. package/src/services/ecies/single-recipient.d.ts.map +1 -1
  235. package/src/services/ecies/single-recipient.js +4 -2
  236. package/src/services/ecies/single-recipient.js.map +1 -1
  237. package/src/services/encryption-stream.d.ts +1 -1
  238. package/src/services/encryption-stream.d.ts.map +1 -1
  239. package/src/services/encryption-stream.js +4 -8
  240. package/src/services/encryption-stream.js.map +1 -1
  241. package/src/services/multi-recipient-processor.d.ts +5 -2
  242. package/src/services/multi-recipient-processor.d.ts.map +1 -1
  243. package/src/services/multi-recipient-processor.js +29 -14
  244. package/src/services/multi-recipient-processor.js.map +1 -1
  245. package/src/test-mocks/mock-backend-member.d.ts +22 -3
  246. package/src/test-mocks/mock-backend-member.d.ts.map +1 -1
  247. package/src/test-mocks/mock-backend-member.js +71 -0
  248. package/src/test-mocks/mock-backend-member.js.map +1 -1
  249. package/src/lib/voting/types.d.ts +0 -67
  250. package/src/lib/voting/types.d.ts.map +0 -1
  251. package/src/lib/voting/types.js +0 -29
  252. package/src/lib/voting/types.js.map +0 -1
@@ -3,255 +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");
10
- const constants_1 = require("../../constants");
11
- const Constants = (0, constants_1.getNodeRuntimeConfiguration)();
9
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
12
10
  /**
13
- * 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.
14
16
  */
15
- class PublicBulletinBoard {
16
- entries = [];
17
- tallyProofs = new Map();
18
- authority;
19
- sequence = 0;
17
+ class PublicBulletinBoard extends ecies_lib_1.PublicBulletinBoard {
20
18
  constructor(authority) {
21
- 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);
22
22
  }
23
+ /**
24
+ * Override publishVote to ensure Buffer types are returned
25
+ */
23
26
  publishVote(pollId, encryptedVote, voterIdHash) {
24
- const timestamp = this.getMicrosecondTimestamp();
25
- const merkleRoot = this.computeMerkleRoot([...this.entries]);
26
- const entryData = this.serializeEntryData({
27
- sequence: this.sequence,
28
- timestamp,
29
- pollId: Buffer.from(Constants.idProvider.toBytes(pollId)),
30
- encryptedVote,
31
- voterIdHash,
32
- merkleRoot,
33
- });
34
- const entryHash = this.sha256(entryData);
35
- const signature = this.authority.sign(entryHash);
36
- const entry = {
37
- sequence: this.sequence++,
38
- timestamp,
39
- pollId,
40
- encryptedVote,
41
- voterIdHash,
42
- merkleRoot,
43
- entryHash,
44
- 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),
45
37
  };
46
- this.entries.push(entry);
47
- return entry;
48
38
  }
39
+ /**
40
+ * Override publishTally to ensure Buffer types are returned
41
+ */
49
42
  publishTally(pollId, tallies, choices, encryptedVotes) {
50
- const timestamp = this.getMicrosecondTimestamp();
51
- const votesHash = this.hashEncryptedVotes(encryptedVotes);
52
- const decryptionProof = this.generateDecryptionProof(encryptedVotes, tallies);
53
- const proofData = this.serializeTallyProof({
54
- pollId: Buffer.from(Constants.idProvider.toBytes(pollId)),
55
- tallies,
56
- choices,
57
- timestamp,
58
- votesHash,
59
- decryptionProof,
60
- });
61
- const signature = this.authority.sign(proofData);
62
- const proof = {
63
- pollId,
64
- tallies,
65
- choices,
66
- timestamp,
67
- votesHash,
68
- decryptionProof,
69
- 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),
70
52
  };
71
- this.tallyProofs.set(pollId.toString('hex'), proof);
72
- return proof;
73
53
  }
54
+ /**
55
+ * Override getEntries to ensure Buffer types are returned and array is immutable
56
+ */
74
57
  getEntries(pollId) {
75
- const pollIdStr = Buffer.from(Constants.idProvider.toBytes(pollId)).toString('hex');
76
- return Object.freeze(this.entries.filter((e) => e.pollId.toString('hex') === pollIdStr));
77
- }
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
+ */
78
73
  getAllEntries() {
79
- return Object.freeze([...this.entries]);
80
- }
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
+ */
81
88
  getTallyProof(pollId) {
82
- 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
+ };
83
100
  }
84
- verifyEntry(entry) {
85
- const entryData = this.serializeEntryData({
86
- sequence: entry.sequence,
87
- 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) => ({
88
115
  pollId: entry.pollId,
89
116
  encryptedVote: entry.encryptedVote,
90
- voterIdHash: entry.voterIdHash,
91
- merkleRoot: entry.merkleRoot,
92
- });
93
- const computedHash = this.sha256(entryData);
94
- if (!computedHash.equals(entry.entryHash)) {
95
- return false;
96
- }
97
- return this.authority.verify(entry.signature, entry.entryHash);
98
- }
99
- verifyTallyProof(proof) {
100
- const pollIdBytes = Buffer.from(Constants.idProvider.toBytes(proof.pollId));
101
- const proofData = this.serializeTallyProof({
102
- pollId: pollIdBytes,
103
- tallies: proof.tallies,
104
- choices: proof.choices,
105
- timestamp: proof.timestamp,
106
- votesHash: proof.votesHash,
107
- decryptionProof: proof.decryptionProof,
108
- });
109
- return this.authority.verify(proof.signature, proofData);
110
- }
111
- verifyMerkleTree() {
112
- for (let i = 0; i < this.entries.length; i++) {
113
- const entry = this.entries[i];
114
- const expectedRoot = this.computeMerkleRoot(this.entries.slice(0, i));
115
- if (!entry.merkleRoot.equals(expectedRoot)) {
116
- return false;
117
- }
118
- }
119
- return true;
120
- }
121
- export() {
122
- const parts = [];
123
- // Export entries
124
- parts.push(this.encodeNumber(this.entries.length));
125
- for (const entry of this.entries) {
126
- parts.push(this.serializeEntry(entry));
127
- }
128
- // Export tally proofs
129
- parts.push(this.encodeNumber(this.tallyProofs.size));
130
- for (const proof of this.tallyProofs.values()) {
131
- parts.push(this.serializeTallyProofFull(proof));
132
- }
133
- return Buffer.concat(parts);
134
- }
135
- computeMerkleRoot(entries) {
136
- if (entries.length === 0) {
137
- return Buffer.alloc(32);
138
- }
139
- let hashes = entries.map((e) => e.entryHash);
140
- while (hashes.length > 1) {
141
- const nextLevel = [];
142
- for (let i = 0; i < hashes.length; i += 2) {
143
- if (i + 1 < hashes.length) {
144
- nextLevel.push(this.sha256(Buffer.concat([hashes[i], hashes[i + 1]])));
145
- }
146
- else {
147
- nextLevel.push(hashes[i]);
148
- }
149
- }
150
- hashes = nextLevel;
151
- }
152
- return hashes[0];
153
- }
154
- hashEncryptedVotes(votes) {
155
- const parts = [];
156
- for (const vote of votes) {
157
- for (const value of vote) {
158
- parts.push(this.encodeBigInt(value));
159
- }
160
- }
161
- return this.sha256(Buffer.concat(parts));
162
- }
163
- generateDecryptionProof(encryptedVotes, tallies) {
164
- // Simplified proof: hash of encrypted votes + tallies
165
- // In production, use ZK-SNARK or similar
166
- const parts = [];
167
- for (const vote of encryptedVotes) {
168
- for (const value of vote) {
169
- parts.push(this.encodeBigInt(value));
170
- }
171
- }
172
- for (const tally of tallies) {
173
- parts.push(this.encodeBigInt(tally));
174
- }
175
- return this.sha256(Buffer.concat(parts));
176
- }
177
- serializeEntryData(data) {
178
- const parts = [
179
- this.encodeNumber(data.sequence),
180
- this.encodeNumber(data.timestamp),
181
- data.pollId,
182
- data.voterIdHash,
183
- data.merkleRoot,
184
- ];
185
- for (const value of data.encryptedVote) {
186
- parts.push(this.encodeBigInt(value));
187
- }
188
- return Buffer.concat(parts);
189
- }
190
- serializeTallyProof(data) {
191
- const parts = [
192
- data.pollId,
193
- this.encodeNumber(data.timestamp),
194
- data.votesHash,
195
- data.decryptionProof,
196
- ];
197
- for (const tally of data.tallies) {
198
- parts.push(this.encodeBigInt(tally));
199
- }
200
- for (const choice of data.choices) {
201
- parts.push(Buffer.from(choice, 'utf8'));
202
- }
203
- return Buffer.concat(parts);
204
- }
205
- serializeEntry(entry) {
206
- const pollIdBytes = Buffer.from(Constants.idProvider.toBytes(entry.pollId));
207
- const parts = [
208
- this.encodeNumber(entry.sequence),
209
- this.encodeNumber(entry.timestamp),
210
- this.encodeNumber(pollIdBytes.length),
211
- pollIdBytes,
212
- this.encodeNumber(entry.encryptedVote.length),
213
- ];
214
- for (const value of entry.encryptedVote) {
215
- parts.push(this.encodeBigInt(value));
216
- }
217
- 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);
218
- return Buffer.concat(parts);
219
- }
220
- serializeTallyProofFull(proof) {
221
- const pollIdBytes = Buffer.from(Constants.idProvider.toBytes(proof.pollId));
222
- const parts = [
223
- this.encodeNumber(pollIdBytes.length),
224
- pollIdBytes,
225
- this.encodeNumber(proof.tallies.length),
226
- ];
227
- for (const tally of proof.tallies) {
228
- parts.push(this.encodeBigInt(tally));
229
- }
230
- parts.push(this.encodeNumber(proof.choices.length));
231
- for (const choice of proof.choices) {
232
- const encoded = Buffer.from(choice, 'utf8');
233
- parts.push(this.encodeNumber(encoded.length), encoded);
234
- }
235
- 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);
236
- return Buffer.concat(parts);
237
- }
238
- getMicrosecondTimestamp() {
239
- // Get milliseconds since epoch and convert to microseconds
240
- // performance.now() is relative to process start, not epoch, so we only use Date.now()
241
- const now = Date.now();
242
- return now * 1000;
243
- }
244
- sha256(data) {
245
- return (0, crypto_1.createHash)('sha256').update(data).digest();
246
- }
247
- encodeNumber(n) {
248
- const buffer = Buffer.alloc(8);
249
- buffer.writeBigUInt64BE(BigInt(n));
250
- return buffer;
251
- }
252
- encodeBigInt(n) {
253
- const hex = n.toString(16).padStart(64, '0');
254
- return Buffer.from(hex, 'hex');
117
+ voterIdHash: Buffer.from(entry.voterIdHash), // Convert Uint8Array to Buffer
118
+ }));
255
119
  }
256
120
  }
257
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,23 +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 type { PlatformID } from '../../interfaces';
7
- import { VotingMethod, type EncryptedVote } from './types';
8
- export declare class VoteEncoder<TID extends PlatformID = Buffer> {
9
- 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> {
10
12
  constructor(votingPublicKey: PublicKey);
11
- encodePlurality(choiceIndex: number, choiceCount: number): EncryptedVote<TID>;
12
- encodeApproval(choices: number[], choiceCount: number): EncryptedVote<TID>;
13
- encodeWeighted(choiceIndex: number, weight: bigint, choiceCount: number): EncryptedVote<TID>;
14
- encodeBorda(rankings: number[], choiceCount: number): EncryptedVote<TID>;
15
- encodeRankedChoice(rankings: number[], choiceCount: number): EncryptedVote<TID>;
16
- encode(method: VotingMethod, data: {
17
- choiceIndex?: number;
18
- choices?: number[];
19
- rankings?: number[];
20
- weight?: bigint;
21
- }, choiceCount: number): EncryptedVote<TID>;
22
13
  }
23
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,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAE3D,qBAAa,WAAW,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,SAAS;IAEvD,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,aAAa,CAAC,GAAG,CAAC;IAYrB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC;IAa1E,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,aAAa,CAAC,GAAG,CAAC;IAYrB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC;IAgBxE,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAClB,aAAa,CAAC,GAAG,CAAC;IAcrB,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,CAAC,GAAG,CAAC;CA+CtB"}
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":";;;AAQA,mCAA2D;AAE3D,MAAa,WAAW;IACO;IAA7B,YAA6B,eAA0B;QAA1B,oBAAe,GAAf,eAAe,CAAW;IAAG,CAAC;IAE3D,eAAe,CACb,WAAmB,EACnB,WAAmB;QAEnB,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,SAAS,CAAC,IAAI,CACZ,CAAC,KAAK,WAAW;gBACf,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CACrC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,OAAiB,EAAE,WAAmB;QACnD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,SAAS,CAAC,IAAI,CACZ,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBACd,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CACrC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,cAAc,CACZ,WAAmB,EACnB,MAAc,EACd,WAAmB;QAEnB,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,SAAS,CAAC,IAAI,CACZ,CAAC,KAAK,WAAW;gBACf,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;gBACtC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CACrC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,QAAkB,EAAE,WAAmB;QACjD,MAAM,SAAS,GAAa,IAAI,KAAK,CAAC,WAAW,CAAa,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAW,CAAC;QAC5D,CAAC;QACD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CACnD,YAAY,CACH,CAAC;QACd,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,kBAAkB,CAChB,QAAkB,EAClB,WAAmB;QAEnB,MAAM,SAAS,GAAa,IAAI,KAAK,CAAC,WAAW,CAAa,CAAC;QAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAW,CAAC;QAC5D,CAAC;QACD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CACnD,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CACP,CAAC;QACd,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,CACJ,MAAoB,EACpB,IAKC,EACD,WAAmB;QAEnB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,oBAAY,CAAC,SAAS;gBACzB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC7D,KAAK,oBAAY,CAAC,QAAQ;gBACxB,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACvD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACxD,KAAK,oBAAY,CAAC,QAAQ;gBACxB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACnD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACzE,KAAK,oBAAY,CAAC,KAAK;gBACrB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACtD,KAAK,oBAAY,CAAC,YAAY;gBAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC7D,KAAK,oBAAY,CAAC,SAAS;gBACzB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACnD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACzE,KAAK,oBAAY,CAAC,SAAS;gBACzB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC7D,KAAK,oBAAY,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC/B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACvE,MAAM,SAAS,GAAa,EAAE,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,SAAS,CAAC,IAAI,CACZ,CAAC,KAAK,IAAI,CAAC,WAAW;wBACpB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;wBACjD,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CACrC,CAAC;gBACJ,CAAC;gBACD,OAAO;oBACL,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,SAAS;iBACV,CAAC;YACJ,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF;AAxID,kCAwIC"}
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"}