@digitaldefiance/node-ecies-lib 4.8.2 → 4.10.7

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 (253) hide show
  1. package/README.md +195 -13
  2. package/package.json +10 -5
  3. package/src/constants.d.ts.map +1 -1
  4. package/src/constants.js +31 -25
  5. package/src/constants.js.map +1 -1
  6. package/src/interfaces/index.d.ts +1 -2
  7. package/src/interfaces/index.d.ts.map +1 -1
  8. package/src/interfaces/index.js +6 -3
  9. package/src/interfaces/index.js.map +1 -1
  10. package/src/interfaces/member.d.ts +30 -12
  11. package/src/interfaces/member.d.ts.map +1 -1
  12. package/src/interfaces/platform-buffer.d.ts +9 -0
  13. package/src/interfaces/platform-buffer.d.ts.map +1 -0
  14. package/src/interfaces/platform-buffer.js +3 -0
  15. package/src/interfaces/platform-buffer.js.map +1 -0
  16. package/src/interfaces/platform-id.d.ts +2 -2
  17. package/src/interfaces/platform-id.d.ts.map +1 -1
  18. package/src/lib/id-providers/buffer-provider.d.ts +54 -0
  19. package/src/lib/id-providers/buffer-provider.d.ts.map +1 -0
  20. package/src/lib/id-providers/buffer-provider.js +93 -0
  21. package/src/lib/id-providers/buffer-provider.js.map +1 -0
  22. package/src/lib/index.d.ts +1 -0
  23. package/src/lib/index.d.ts.map +1 -1
  24. package/src/lib/index.js +1 -0
  25. package/src/lib/index.js.map +1 -1
  26. package/src/lib/voting/audit.d.ts +39 -48
  27. package/src/lib/voting/audit.d.ts.map +1 -1
  28. package/src/lib/voting/audit.js +103 -111
  29. package/src/lib/voting/audit.js.map +1 -1
  30. package/src/lib/voting/bulletin-board.d.ts +47 -81
  31. package/src/lib/voting/bulletin-board.d.ts.map +1 -1
  32. package/src/lib/voting/bulletin-board.js +95 -231
  33. package/src/lib/voting/bulletin-board.js.map +1 -1
  34. package/src/lib/voting/encoder.d.ts +7 -16
  35. package/src/lib/voting/encoder.d.ts.map +1 -1
  36. package/src/lib/voting/encoder.js +11 -107
  37. package/src/lib/voting/encoder.js.map +1 -1
  38. package/src/lib/voting/enumerations/index.d.ts +6 -0
  39. package/src/lib/voting/enumerations/index.d.ts.map +1 -0
  40. package/src/lib/voting/enumerations/index.js +14 -0
  41. package/src/lib/voting/enumerations/index.js.map +1 -0
  42. package/src/lib/voting/event-logger.d.ts +13 -74
  43. package/src/lib/voting/event-logger.d.ts.map +1 -1
  44. package/src/lib/voting/event-logger.js +19 -140
  45. package/src/lib/voting/event-logger.js.map +1 -1
  46. package/src/lib/voting/examples.d.ts +112 -0
  47. package/src/lib/voting/examples.d.ts.map +1 -0
  48. package/src/lib/voting/examples.js +386 -0
  49. package/src/lib/voting/examples.js.map +1 -0
  50. package/src/lib/voting/factory.d.ts +38 -9
  51. package/src/lib/voting/factory.d.ts.map +1 -1
  52. package/src/lib/voting/factory.js +42 -8
  53. package/src/lib/voting/factory.js.map +1 -1
  54. package/src/lib/voting/hierarchical-aggregator.d.ts +44 -0
  55. package/src/lib/voting/hierarchical-aggregator.d.ts.map +1 -0
  56. package/src/lib/voting/hierarchical-aggregator.js +56 -0
  57. package/src/lib/voting/hierarchical-aggregator.js.map +1 -0
  58. package/src/lib/voting/index.d.ts +43 -7
  59. package/src/lib/voting/index.d.ts.map +1 -1
  60. package/src/lib/voting/index.js +53 -10
  61. package/src/lib/voting/index.js.map +1 -1
  62. package/src/lib/voting/interfaces/aggregated-tally.d.ts +10 -0
  63. package/src/lib/voting/interfaces/aggregated-tally.d.ts.map +1 -0
  64. package/src/lib/voting/interfaces/aggregated-tally.js +3 -0
  65. package/src/lib/voting/interfaces/aggregated-tally.js.map +1 -0
  66. package/src/lib/voting/interfaces/audit-entry.d.ts +10 -0
  67. package/src/lib/voting/interfaces/audit-entry.d.ts.map +1 -0
  68. package/src/lib/voting/interfaces/audit-entry.js +3 -0
  69. package/src/lib/voting/interfaces/audit-entry.js.map +1 -0
  70. package/src/lib/voting/interfaces/audit-log.d.ts +10 -0
  71. package/src/lib/voting/interfaces/audit-log.d.ts.map +1 -0
  72. package/src/lib/voting/interfaces/audit-log.js +3 -0
  73. package/src/lib/voting/interfaces/audit-log.js.map +1 -0
  74. package/src/lib/voting/interfaces/bulletin-board-entry.d.ts +10 -0
  75. package/src/lib/voting/interfaces/bulletin-board-entry.d.ts.map +1 -0
  76. package/src/lib/voting/interfaces/bulletin-board-entry.js +3 -0
  77. package/src/lib/voting/interfaces/bulletin-board-entry.js.map +1 -0
  78. package/src/lib/voting/interfaces/bulletin-board.d.ts +10 -0
  79. package/src/lib/voting/interfaces/bulletin-board.d.ts.map +1 -0
  80. package/src/lib/voting/interfaces/bulletin-board.js +3 -0
  81. package/src/lib/voting/interfaces/bulletin-board.js.map +1 -0
  82. package/src/lib/voting/interfaces/checkpoint-manager-extended.d.ts +10 -0
  83. package/src/lib/voting/interfaces/checkpoint-manager-extended.d.ts.map +1 -0
  84. package/src/lib/voting/interfaces/checkpoint-manager-extended.js +3 -0
  85. package/src/lib/voting/interfaces/checkpoint-manager-extended.js.map +1 -0
  86. package/src/lib/voting/interfaces/checkpoint-manager.d.ts +9 -0
  87. package/src/lib/voting/interfaces/checkpoint-manager.d.ts.map +1 -0
  88. package/src/lib/voting/interfaces/checkpoint-manager.js +3 -0
  89. package/src/lib/voting/interfaces/checkpoint-manager.js.map +1 -0
  90. package/src/lib/voting/interfaces/checkpoint-metadata.d.ts +8 -0
  91. package/src/lib/voting/interfaces/checkpoint-metadata.d.ts.map +1 -0
  92. package/src/lib/voting/interfaces/checkpoint-metadata.js +3 -0
  93. package/src/lib/voting/interfaces/checkpoint-metadata.js.map +1 -0
  94. package/src/lib/voting/interfaces/ecies-service-with-voting.d.ts +8 -0
  95. package/src/lib/voting/interfaces/ecies-service-with-voting.d.ts.map +1 -0
  96. package/src/lib/voting/interfaces/ecies-service-with-voting.js +3 -0
  97. package/src/lib/voting/interfaces/ecies-service-with-voting.js.map +1 -0
  98. package/src/lib/voting/interfaces/encrypted-vote.d.ts +10 -0
  99. package/src/lib/voting/interfaces/encrypted-vote.d.ts.map +1 -0
  100. package/src/lib/voting/interfaces/encrypted-vote.js +3 -0
  101. package/src/lib/voting/interfaces/encrypted-vote.js.map +1 -0
  102. package/src/lib/voting/interfaces/event-log-entry.d.ts +10 -0
  103. package/src/lib/voting/interfaces/event-log-entry.d.ts.map +1 -0
  104. package/src/lib/voting/interfaces/event-log-entry.js +3 -0
  105. package/src/lib/voting/interfaces/event-log-entry.js.map +1 -0
  106. package/src/lib/voting/interfaces/event-logger.d.ts +10 -0
  107. package/src/lib/voting/interfaces/event-logger.d.ts.map +1 -0
  108. package/src/lib/voting/interfaces/event-logger.js +3 -0
  109. package/src/lib/voting/interfaces/event-logger.js.map +1 -0
  110. package/src/lib/voting/interfaces/index.d.ts +37 -0
  111. package/src/lib/voting/interfaces/index.d.ts.map +1 -0
  112. package/src/lib/voting/interfaces/index.js +9 -0
  113. package/src/lib/voting/interfaces/index.js.map +1 -0
  114. package/src/lib/voting/interfaces/jurisdiction-config.d.ts +10 -0
  115. package/src/lib/voting/interfaces/jurisdiction-config.d.ts.map +1 -0
  116. package/src/lib/voting/interfaces/jurisdiction-config.js +3 -0
  117. package/src/lib/voting/interfaces/jurisdiction-config.js.map +1 -0
  118. package/src/lib/voting/interfaces/plaintext-vote.d.ts +10 -0
  119. package/src/lib/voting/interfaces/plaintext-vote.d.ts.map +1 -0
  120. package/src/lib/voting/interfaces/plaintext-vote.js +3 -0
  121. package/src/lib/voting/interfaces/plaintext-vote.js.map +1 -0
  122. package/src/lib/voting/interfaces/poll-configuration.d.ts +8 -0
  123. package/src/lib/voting/interfaces/poll-configuration.d.ts.map +1 -0
  124. package/src/lib/voting/interfaces/poll-configuration.js +3 -0
  125. package/src/lib/voting/interfaces/poll-configuration.js.map +1 -0
  126. package/src/lib/voting/interfaces/poll-results.d.ts +8 -0
  127. package/src/lib/voting/interfaces/poll-results.d.ts.map +1 -0
  128. package/src/lib/voting/interfaces/poll-results.js +3 -0
  129. package/src/lib/voting/interfaces/poll-results.js.map +1 -0
  130. package/src/lib/voting/interfaces/poll-tallier.d.ts +10 -0
  131. package/src/lib/voting/interfaces/poll-tallier.d.ts.map +1 -0
  132. package/src/lib/voting/interfaces/poll-tallier.js +3 -0
  133. package/src/lib/voting/interfaces/poll-tallier.js.map +1 -0
  134. package/src/lib/voting/interfaces/poll.d.ts +10 -0
  135. package/src/lib/voting/interfaces/poll.d.ts.map +1 -0
  136. package/src/lib/voting/interfaces/poll.js +3 -0
  137. package/src/lib/voting/interfaces/poll.js.map +1 -0
  138. package/src/lib/voting/interfaces/round-result.d.ts +8 -0
  139. package/src/lib/voting/interfaces/round-result.d.ts.map +1 -0
  140. package/src/lib/voting/interfaces/round-result.js +3 -0
  141. package/src/lib/voting/interfaces/round-result.js.map +1 -0
  142. package/src/lib/voting/interfaces/state-snapshot.d.ts +15 -0
  143. package/src/lib/voting/interfaces/state-snapshot.d.ts.map +1 -0
  144. package/src/lib/voting/interfaces/state-snapshot.js +3 -0
  145. package/src/lib/voting/interfaces/state-snapshot.js.map +1 -0
  146. package/src/lib/voting/interfaces/supermajority-config.d.ts +8 -0
  147. package/src/lib/voting/interfaces/supermajority-config.d.ts.map +1 -0
  148. package/src/lib/voting/interfaces/supermajority-config.js +3 -0
  149. package/src/lib/voting/interfaces/supermajority-config.js.map +1 -0
  150. package/src/lib/voting/interfaces/tally-proof.d.ts +10 -0
  151. package/src/lib/voting/interfaces/tally-proof.d.ts.map +1 -0
  152. package/src/lib/voting/interfaces/tally-proof.js +3 -0
  153. package/src/lib/voting/interfaces/tally-proof.js.map +1 -0
  154. package/src/lib/voting/interfaces/vote-encoder.d.ts +10 -0
  155. package/src/lib/voting/interfaces/vote-encoder.d.ts.map +1 -0
  156. package/src/lib/voting/interfaces/vote-encoder.js +3 -0
  157. package/src/lib/voting/interfaces/vote-encoder.js.map +1 -0
  158. package/src/lib/voting/interfaces/vote-logger-extended.d.ts +10 -0
  159. package/src/lib/voting/interfaces/vote-logger-extended.d.ts.map +1 -0
  160. package/src/lib/voting/interfaces/vote-logger-extended.js +3 -0
  161. package/src/lib/voting/interfaces/vote-logger-extended.js.map +1 -0
  162. package/src/lib/voting/interfaces/vote-logger.d.ts +9 -0
  163. package/src/lib/voting/interfaces/vote-logger.d.ts.map +1 -0
  164. package/src/lib/voting/interfaces/vote-logger.js +3 -0
  165. package/src/lib/voting/interfaces/vote-logger.js.map +1 -0
  166. package/src/lib/voting/interfaces/voting-consts.d.ts +9 -0
  167. package/src/lib/voting/interfaces/voting-consts.d.ts.map +1 -0
  168. package/src/lib/voting/interfaces/voting-consts.js +3 -0
  169. package/src/lib/voting/interfaces/voting-consts.js.map +1 -0
  170. package/src/lib/voting/interfaces/voting-key-derivation-options.d.ts +7 -0
  171. package/src/lib/voting/interfaces/voting-key-derivation-options.d.ts.map +1 -0
  172. package/src/lib/voting/interfaces/voting-key-derivation-options.js +3 -0
  173. package/src/lib/voting/interfaces/voting-key-derivation-options.js.map +1 -0
  174. package/src/lib/voting/interfaces/voting-poll-results.d.ts +7 -0
  175. package/src/lib/voting/interfaces/voting-poll-results.d.ts.map +1 -0
  176. package/src/lib/voting/interfaces/voting-poll-results.js +3 -0
  177. package/src/lib/voting/interfaces/voting-poll-results.js.map +1 -0
  178. package/src/lib/voting/interfaces/voting-receipt.d.ts +10 -0
  179. package/src/lib/voting/interfaces/voting-receipt.d.ts.map +1 -0
  180. package/src/lib/voting/interfaces/voting-receipt.js +3 -0
  181. package/src/lib/voting/interfaces/voting-receipt.js.map +1 -0
  182. package/src/lib/voting/interfaces/voting-security-validator.d.ts +8 -0
  183. package/src/lib/voting/interfaces/voting-security-validator.d.ts.map +1 -0
  184. package/src/lib/voting/interfaces/voting-security-validator.js +3 -0
  185. package/src/lib/voting/interfaces/voting-security-validator.js.map +1 -0
  186. package/src/lib/voting/node-persistent-state.d.ts +40 -0
  187. package/src/lib/voting/node-persistent-state.d.ts.map +1 -0
  188. package/src/lib/voting/node-persistent-state.js +222 -0
  189. package/src/lib/voting/node-persistent-state.js.map +1 -0
  190. package/src/lib/voting/persistent-state.d.ts +44 -0
  191. package/src/lib/voting/persistent-state.d.ts.map +1 -0
  192. package/src/lib/voting/persistent-state.js +106 -0
  193. package/src/lib/voting/persistent-state.js.map +1 -0
  194. package/src/lib/voting/poll-core.d.ts +14 -29
  195. package/src/lib/voting/poll-core.d.ts.map +1 -1
  196. package/src/lib/voting/poll-core.js +13 -176
  197. package/src/lib/voting/poll-core.js.map +1 -1
  198. package/src/lib/voting/poll.js +3 -3
  199. package/src/lib/voting/poll.js.map +1 -1
  200. package/src/lib/voting/security.d.ts +9 -15
  201. package/src/lib/voting/security.d.ts.map +1 -1
  202. package/src/lib/voting/security.js +12 -44
  203. package/src/lib/voting/security.js.map +1 -1
  204. package/src/lib/voting/tallier.d.ts +11 -20
  205. package/src/lib/voting/tallier.d.ts.map +1 -1
  206. package/src/lib/voting/tallier.js +17 -366
  207. package/src/lib/voting/tallier.js.map +1 -1
  208. package/src/lib/voting/test-voter-pool.d.ts +16 -0
  209. package/src/lib/voting/test-voter-pool.d.ts.map +1 -0
  210. package/src/lib/voting/test-voter-pool.js +69 -0
  211. package/src/lib/voting/test-voter-pool.js.map +1 -0
  212. package/src/lib/voting/us-election-example.d.ts +2 -0
  213. package/src/lib/voting/us-election-example.d.ts.map +1 -0
  214. package/src/lib/voting/us-election-example.js +170 -0
  215. package/src/lib/voting/us-election-example.js.map +1 -0
  216. package/src/member.d.ts +4 -1
  217. package/src/member.d.ts.map +1 -1
  218. package/src/member.js +40 -16
  219. package/src/member.js.map +1 -1
  220. package/src/secure-buffer.d.ts +1 -2
  221. package/src/secure-buffer.d.ts.map +1 -1
  222. package/src/secure-buffer.js +3 -9
  223. package/src/secure-buffer.js.map +1 -1
  224. package/src/services/ecies/crypto-core.d.ts.map +1 -1
  225. package/src/services/ecies/crypto-core.js +24 -0
  226. package/src/services/ecies/crypto-core.js.map +1 -1
  227. package/src/services/ecies/multi-recipient.d.ts +9 -1
  228. package/src/services/ecies/multi-recipient.d.ts.map +1 -1
  229. package/src/services/ecies/multi-recipient.js +153 -21
  230. package/src/services/ecies/multi-recipient.js.map +1 -1
  231. package/src/services/ecies/service.d.ts +56 -15
  232. package/src/services/ecies/service.d.ts.map +1 -1
  233. package/src/services/ecies/service.js +196 -39
  234. package/src/services/ecies/service.js.map +1 -1
  235. package/src/services/ecies/single-recipient.d.ts.map +1 -1
  236. package/src/services/ecies/single-recipient.js +4 -2
  237. package/src/services/ecies/single-recipient.js.map +1 -1
  238. package/src/services/encryption-stream.d.ts +1 -1
  239. package/src/services/encryption-stream.d.ts.map +1 -1
  240. package/src/services/encryption-stream.js +4 -8
  241. package/src/services/encryption-stream.js.map +1 -1
  242. package/src/services/multi-recipient-processor.d.ts +5 -2
  243. package/src/services/multi-recipient-processor.d.ts.map +1 -1
  244. package/src/services/multi-recipient-processor.js +29 -14
  245. package/src/services/multi-recipient-processor.js.map +1 -1
  246. package/src/test-mocks/mock-backend-member.d.ts +22 -3
  247. package/src/test-mocks/mock-backend-member.d.ts.map +1 -1
  248. package/src/test-mocks/mock-backend-member.js +71 -0
  249. package/src/test-mocks/mock-backend-member.js.map +1 -1
  250. package/src/lib/voting/types.d.ts +0 -67
  251. package/src/lib/voting/types.d.ts.map +0 -1
  252. package/src/lib/voting/types.js +0 -29
  253. package/src/lib/voting/types.js.map +0 -1
@@ -1,87 +1,53 @@
1
- import type { PlatformID } from '../../interfaces';
1
+ /**
2
+ * Public Bulletin Board for Government-Grade Voting
3
+ * Node.js optimized - extends ecies-lib PublicBulletinBoard with Buffer support
4
+ * Implements requirement 1.2: Append-only, publicly verifiable vote publication
5
+ */
6
+ import { PublicBulletinBoard as BasePublicBulletinBoard } from '@digitaldefiance/ecies-lib';
2
7
  import type { IMember } from '../../interfaces/member';
3
- export interface BulletinBoardEntry<TID extends PlatformID = Buffer> {
4
- /** Sequence number (monotonically increasing) */
5
- readonly sequence: number;
6
- /** Microsecond-precision timestamp */
7
- readonly timestamp: number;
8
- /** Poll identifier */
9
- readonly pollId: TID;
10
- /** Encrypted vote data */
11
- readonly encryptedVote: bigint[];
12
- /** Hash of voter ID (anonymized) */
13
- readonly voterIdHash: Buffer;
14
- /** Merkle root of all entries up to this point */
15
- readonly merkleRoot: Buffer;
16
- /** Hash of this entry */
17
- readonly entryHash: Buffer;
18
- /** Authority signature */
19
- readonly signature: Buffer;
20
- }
21
- export interface TallyProof<TID extends PlatformID = Buffer> {
22
- /** Poll identifier */
23
- readonly pollId: TID;
24
- /** Final tallies */
25
- readonly tallies: bigint[];
26
- /** Choice names */
27
- readonly choices: string[];
28
- /** Timestamp of tally */
29
- readonly timestamp: number;
30
- /** Hash of all encrypted votes */
31
- readonly votesHash: Buffer;
32
- /** Cryptographic proof of correct decryption */
33
- readonly decryptionProof: Buffer;
34
- /** Authority signature */
35
- readonly signature: Buffer;
36
- }
37
- export interface BulletinBoard<TID extends PlatformID = Buffer> {
38
- /** Publish encrypted vote to bulletin board */
39
- publishVote(pollId: TID, encryptedVote: bigint[], voterIdHash: Buffer): BulletinBoardEntry<TID>;
40
- /** Publish tally with cryptographic proof */
41
- publishTally(pollId: TID, tallies: bigint[], choices: string[], encryptedVotes: bigint[][]): TallyProof<TID>;
42
- /** Get all entries for a poll */
43
- getEntries(pollId: TID): readonly BulletinBoardEntry<TID>[];
44
- /** Get all entries (entire bulletin board) */
45
- getAllEntries(): readonly BulletinBoardEntry<TID>[];
46
- /** Get tally proof for a poll */
47
- getTallyProof(pollId: TID): TallyProof<TID> | undefined;
48
- /** Verify entry signature and hash */
49
- verifyEntry(entry: BulletinBoardEntry): boolean;
50
- /** Verify tally proof */
51
- verifyTallyProof(proof: TallyProof<TID>): boolean;
52
- /** Verify Merkle tree integrity */
53
- verifyMerkleTree(): boolean;
54
- /** Export complete bulletin board for archival */
55
- export(): Buffer;
56
- }
8
+ import type { BulletinBoardEntry, TallyProof } from './interfaces';
9
+ export type { BulletinBoardEntry, TallyProof, BulletinBoard, } from './interfaces';
57
10
  /**
58
- * 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.
59
16
  */
60
- export declare class PublicBulletinBoard<TID extends PlatformID = Buffer> implements BulletinBoard<TID> {
61
- private readonly entries;
62
- private readonly tallyProofs;
63
- private readonly authority;
64
- private sequence;
65
- constructor(authority: IMember<TID>);
66
- publishVote(pollId: TID, encryptedVote: bigint[], voterIdHash: Buffer): BulletinBoardEntry<TID>;
67
- publishTally(pollId: TID, tallies: bigint[], choices: string[], encryptedVotes: bigint[][]): TallyProof<TID>;
68
- getEntries(pollId: TID): readonly BulletinBoardEntry<TID>[];
69
- getAllEntries(): readonly BulletinBoardEntry<TID>[];
70
- getTallyProof(pollId: TID): TallyProof<TID> | undefined;
71
- verifyEntry(entry: BulletinBoardEntry): boolean;
72
- verifyTallyProof(proof: TallyProof<TID>): boolean;
73
- verifyMerkleTree(): boolean;
17
+ export declare class PublicBulletinBoard extends BasePublicBulletinBoard {
18
+ constructor(authority: IMember<Buffer>);
19
+ /**
20
+ * Override publishVote to ensure Buffer types are returned
21
+ */
22
+ publishVote(pollId: Buffer, encryptedVote: bigint[], voterIdHash: Buffer): BulletinBoardEntry<Buffer>;
23
+ /**
24
+ * Override publishTally to ensure Buffer types are returned
25
+ */
26
+ publishTally(pollId: Buffer, tallies: bigint[], choices: string[], encryptedVotes: bigint[][]): TallyProof<Buffer>;
27
+ /**
28
+ * Override getEntries to ensure Buffer types are returned and array is immutable
29
+ */
30
+ getEntries(pollId: Buffer): readonly BulletinBoardEntry<Buffer>[];
31
+ /**
32
+ * Override getAllEntries to ensure Buffer types are returned and array is immutable
33
+ */
34
+ getAllEntries(): readonly BulletinBoardEntry<Buffer>[];
35
+ /**
36
+ * Override getTallyProof to ensure Buffer types are returned
37
+ */
38
+ getTallyProof(pollId: Buffer): TallyProof<Buffer> | undefined;
39
+ /**
40
+ * Override export method to return Buffer instead of Uint8Array
41
+ */
74
42
  export(): Buffer;
75
- private computeMerkleRoot;
76
- private hashEncryptedVotes;
77
- private generateDecryptionProof;
78
- private serializeEntryData;
79
- private serializeTallyProof;
80
- private serializeEntry;
81
- private serializeTallyProofFull;
82
- private getMicrosecondTimestamp;
83
- private sha256;
84
- private encodeNumber;
85
- private encodeBigInt;
43
+ /**
44
+ * Get all votes published to the bulletin board
45
+ * Returns the encrypted votes for verification
46
+ */
47
+ getVotes(): readonly {
48
+ pollId: Buffer;
49
+ encryptedVote: bigint[];
50
+ voterIdHash: Buffer;
51
+ }[];
86
52
  }
87
53
  //# sourceMappingURL=bulletin-board.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bulletin-board.d.ts","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.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/bulletin-board.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,mBAAmB,IAAI,uBAAuB,EAE/C,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGnE,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,uBAAuB;gBAClD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC;IAMtC;;OAEG;IACH,WAAW,CACT,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,EAAE,MAAM,GAClB,kBAAkB,CAAC,MAAM,CAAC;IAmB7B;;OAEG;IACH,YAAY,CACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,EAAE,MAAM,EAAE,EAAE,GACzB,UAAU,CAAC,MAAM,CAAC;IAmBrB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,kBAAkB,CAAC,MAAM,CAAC,EAAE;IAcjE;;OAEG;IACH,aAAa,IAAI,SAAS,kBAAkB,CAAC,MAAM,CAAC,EAAE;IAatD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS;IAc7D;;OAEG;IACH,MAAM,IAAI,MAAM;IAKhB;;;OAGG;IACH,QAAQ,IAAI,SAAS;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE;CAQJ"}
@@ -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"}