@digitaldefiance/ecies-lib 4.8.7 → 4.9.1

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 (296) hide show
  1. package/package.json +8 -8
  2. package/src/builders/member-builder.d.ts +1 -2
  3. package/src/builders/member-builder.d.ts.map +1 -1
  4. package/src/builders/member-builder.js.map +1 -1
  5. package/src/constants.d.ts +1 -1
  6. package/src/constants.d.ts.map +1 -1
  7. package/src/constants.js +2 -0
  8. package/src/constants.js.map +1 -1
  9. package/src/interfaces/constants.d.ts +1 -1
  10. package/src/interfaces/constants.d.ts.map +1 -1
  11. package/src/interfaces/ecies-consts.d.ts +1 -0
  12. package/src/interfaces/ecies-consts.d.ts.map +1 -1
  13. package/src/interfaces/index.d.ts +2 -4
  14. package/src/interfaces/index.d.ts.map +1 -1
  15. package/src/interfaces/index.js +2 -5
  16. package/src/interfaces/index.js.map +1 -1
  17. package/src/interfaces/isolated-private-key-async.d.ts +13 -0
  18. package/src/interfaces/isolated-private-key-async.d.ts.map +1 -0
  19. package/src/interfaces/isolated-private-key-async.js +3 -0
  20. package/src/interfaces/isolated-private-key-async.js.map +1 -0
  21. package/src/interfaces/isolated-public-key-async.d.ts +17 -0
  22. package/src/interfaces/isolated-public-key-async.d.ts.map +1 -0
  23. package/src/interfaces/isolated-public-key-async.js +3 -0
  24. package/src/interfaces/isolated-public-key-async.js.map +1 -0
  25. package/src/interfaces/platform-buffer.d.ts +5 -5
  26. package/src/interfaces/platform-buffer.d.ts.map +1 -1
  27. package/src/interfaces/voting-service.d.ts +0 -111
  28. package/src/interfaces/voting-service.d.ts.map +1 -1
  29. package/src/interfaces/voting-service.js +0 -7
  30. package/src/interfaces/voting-service.js.map +1 -1
  31. package/src/lib/id-providers/index.d.ts +1 -0
  32. package/src/lib/id-providers/index.d.ts.map +1 -1
  33. package/src/lib/id-providers/index.js +3 -1
  34. package/src/lib/id-providers/index.js.map +1 -1
  35. package/src/lib/id-providers/uint8array-provider.d.ts +54 -0
  36. package/src/lib/id-providers/uint8array-provider.d.ts.map +1 -0
  37. package/src/lib/id-providers/uint8array-provider.js +97 -0
  38. package/src/lib/id-providers/uint8array-provider.js.map +1 -0
  39. package/src/lib/voting/audit.d.ts +4 -38
  40. package/src/lib/voting/audit.d.ts.map +1 -1
  41. package/src/lib/voting/audit.js +8 -10
  42. package/src/lib/voting/audit.js.map +1 -1
  43. package/src/lib/voting/bulletin-board.d.ts +4 -56
  44. package/src/lib/voting/bulletin-board.d.ts.map +1 -1
  45. package/src/lib/voting/bulletin-board.js.map +1 -1
  46. package/src/lib/voting/encoder.d.ts +2 -1
  47. package/src/lib/voting/encoder.d.ts.map +1 -1
  48. package/src/lib/voting/encoder.js +9 -9
  49. package/src/lib/voting/encoder.js.map +1 -1
  50. package/src/lib/voting/enumerations/audit-event-type.d.ts +6 -0
  51. package/src/lib/voting/enumerations/audit-event-type.d.ts.map +1 -0
  52. package/src/lib/voting/enumerations/audit-event-type.js +10 -0
  53. package/src/lib/voting/enumerations/audit-event-type.js.map +1 -0
  54. package/src/lib/voting/enumerations/event-type.d.ts +9 -0
  55. package/src/lib/voting/enumerations/event-type.d.ts.map +1 -0
  56. package/src/lib/voting/enumerations/event-type.js +13 -0
  57. package/src/lib/voting/enumerations/event-type.js.map +1 -0
  58. package/src/lib/voting/enumerations/index.d.ts +6 -0
  59. package/src/lib/voting/enumerations/index.d.ts.map +1 -0
  60. package/src/lib/voting/enumerations/index.js +9 -0
  61. package/src/lib/voting/enumerations/index.js.map +1 -0
  62. package/src/lib/voting/enumerations/jurisdictional-level.d.ts +7 -0
  63. package/src/lib/voting/enumerations/jurisdictional-level.d.ts.map +1 -0
  64. package/src/lib/voting/enumerations/jurisdictional-level.js +11 -0
  65. package/src/lib/voting/enumerations/jurisdictional-level.js.map +1 -0
  66. package/src/lib/voting/enumerations/security-level.d.ts +6 -0
  67. package/src/lib/voting/enumerations/security-level.d.ts.map +1 -0
  68. package/src/lib/voting/enumerations/security-level.js +10 -0
  69. package/src/lib/voting/enumerations/security-level.js.map +1 -0
  70. package/src/lib/voting/enumerations/voting-method.d.ts +41 -0
  71. package/src/lib/voting/enumerations/voting-method.d.ts.map +1 -0
  72. package/src/lib/voting/{types.js → enumerations/voting-method.js} +1 -1
  73. package/src/lib/voting/enumerations/voting-method.js.map +1 -0
  74. package/src/lib/voting/event-logger.d.ts +14 -65
  75. package/src/lib/voting/event-logger.d.ts.map +1 -1
  76. package/src/lib/voting/event-logger.js +32 -19
  77. package/src/lib/voting/event-logger.js.map +1 -1
  78. package/src/lib/voting/factory.d.ts +2 -2
  79. package/src/lib/voting/factory.d.ts.map +1 -1
  80. package/src/lib/voting/factory.js +6 -6
  81. package/src/lib/voting/factory.js.map +1 -1
  82. package/src/lib/voting/hierarchical-aggregator.d.ts +72 -0
  83. package/src/lib/voting/hierarchical-aggregator.d.ts.map +1 -0
  84. package/src/lib/voting/hierarchical-aggregator.js +234 -0
  85. package/src/lib/voting/hierarchical-aggregator.js.map +1 -0
  86. package/src/lib/voting/index.d.ts +8 -5
  87. package/src/lib/voting/index.d.ts.map +1 -1
  88. package/src/lib/voting/index.js +12 -7
  89. package/src/lib/voting/index.js.map +1 -1
  90. package/src/lib/voting/interfaces/aggregated-tally.d.ts +11 -0
  91. package/src/lib/voting/interfaces/aggregated-tally.d.ts.map +1 -0
  92. package/src/{interfaces/member-with-mnemonic.js → lib/voting/interfaces/aggregated-tally.js} +1 -1
  93. package/src/lib/voting/interfaces/aggregated-tally.js.map +1 -0
  94. package/src/lib/voting/interfaces/audit-entry.d.ts +25 -0
  95. package/src/lib/voting/interfaces/audit-entry.d.ts.map +1 -0
  96. package/src/lib/voting/interfaces/audit-entry.js +3 -0
  97. package/src/lib/voting/interfaces/audit-entry.js.map +1 -0
  98. package/src/lib/voting/interfaces/audit-log.d.ts +13 -0
  99. package/src/lib/voting/interfaces/audit-log.d.ts.map +1 -0
  100. package/src/lib/voting/interfaces/audit-log.js +3 -0
  101. package/src/lib/voting/interfaces/audit-log.js.map +1 -0
  102. package/src/lib/voting/interfaces/bulletin-board-entry.d.ts +20 -0
  103. package/src/lib/voting/interfaces/bulletin-board-entry.d.ts.map +1 -0
  104. package/src/lib/voting/interfaces/bulletin-board-entry.js +3 -0
  105. package/src/lib/voting/interfaces/bulletin-board-entry.js.map +1 -0
  106. package/src/lib/voting/interfaces/bulletin-board.d.ts +24 -0
  107. package/src/lib/voting/interfaces/bulletin-board.d.ts.map +1 -0
  108. package/src/lib/voting/interfaces/bulletin-board.js +3 -0
  109. package/src/lib/voting/interfaces/bulletin-board.js.map +1 -0
  110. package/src/lib/voting/interfaces/checkpoint-manager-extended.d.ts +14 -0
  111. package/src/lib/voting/interfaces/checkpoint-manager-extended.d.ts.map +1 -0
  112. package/src/lib/voting/interfaces/checkpoint-manager-extended.js +3 -0
  113. package/src/lib/voting/interfaces/checkpoint-manager-extended.js.map +1 -0
  114. package/src/lib/voting/interfaces/checkpoint-manager.d.ts +8 -0
  115. package/src/lib/voting/interfaces/checkpoint-manager.d.ts.map +1 -0
  116. package/src/lib/voting/interfaces/checkpoint-manager.js +3 -0
  117. package/src/lib/voting/interfaces/checkpoint-manager.js.map +1 -0
  118. package/src/lib/voting/interfaces/checkpoint-metadata.d.ts +9 -0
  119. package/src/lib/voting/interfaces/checkpoint-metadata.d.ts.map +1 -0
  120. package/src/lib/voting/interfaces/checkpoint-metadata.js +3 -0
  121. package/src/lib/voting/interfaces/checkpoint-metadata.js.map +1 -0
  122. package/src/lib/voting/interfaces/ecies-service-with-voting.d.ts +55 -0
  123. package/src/lib/voting/interfaces/ecies-service-with-voting.d.ts.map +1 -0
  124. package/src/lib/voting/interfaces/ecies-service-with-voting.js +3 -0
  125. package/src/lib/voting/interfaces/ecies-service-with-voting.js.map +1 -0
  126. package/src/lib/voting/interfaces/encrypted-vote.d.ts +23 -0
  127. package/src/lib/voting/interfaces/encrypted-vote.d.ts.map +1 -0
  128. package/src/lib/voting/interfaces/encrypted-vote.js +3 -0
  129. package/src/lib/voting/interfaces/encrypted-vote.js.map +1 -0
  130. package/src/lib/voting/interfaces/event-log-entry.d.ts +24 -0
  131. package/src/lib/voting/interfaces/event-log-entry.d.ts.map +1 -0
  132. package/src/lib/voting/interfaces/event-log-entry.js +3 -0
  133. package/src/lib/voting/interfaces/event-log-entry.js.map +1 -0
  134. package/src/lib/voting/interfaces/event-logger.d.ts +25 -0
  135. package/src/lib/voting/interfaces/event-logger.d.ts.map +1 -0
  136. package/src/lib/voting/interfaces/event-logger.js +3 -0
  137. package/src/lib/voting/interfaces/event-logger.js.map +1 -0
  138. package/src/lib/voting/interfaces/index.d.ts +31 -0
  139. package/src/lib/voting/interfaces/index.d.ts.map +1 -0
  140. package/src/lib/voting/interfaces/index.js +5 -0
  141. package/src/lib/voting/interfaces/index.js.map +1 -0
  142. package/src/lib/voting/interfaces/jurisdiction-config.d.ts +9 -0
  143. package/src/lib/voting/interfaces/jurisdiction-config.d.ts.map +1 -0
  144. package/src/lib/voting/interfaces/jurisdiction-config.js +3 -0
  145. package/src/lib/voting/interfaces/jurisdiction-config.js.map +1 -0
  146. package/src/lib/voting/interfaces/plaintext-vote.d.ts +18 -0
  147. package/src/lib/voting/interfaces/plaintext-vote.d.ts.map +1 -0
  148. package/src/lib/voting/interfaces/plaintext-vote.js +3 -0
  149. package/src/lib/voting/interfaces/plaintext-vote.js.map +1 -0
  150. package/src/lib/voting/interfaces/poll-configuration.d.ts +10 -0
  151. package/src/lib/voting/interfaces/poll-configuration.d.ts.map +1 -0
  152. package/src/lib/voting/interfaces/poll-configuration.js +3 -0
  153. package/src/lib/voting/interfaces/poll-configuration.js.map +1 -0
  154. package/src/lib/voting/interfaces/poll-results.d.ts +25 -0
  155. package/src/lib/voting/interfaces/poll-results.d.ts.map +1 -0
  156. package/src/lib/voting/interfaces/poll-results.js +3 -0
  157. package/src/lib/voting/interfaces/poll-results.js.map +1 -0
  158. package/src/lib/voting/interfaces/poll-tallier.d.ts +18 -0
  159. package/src/lib/voting/interfaces/poll-tallier.d.ts.map +1 -0
  160. package/src/lib/voting/interfaces/poll-tallier.js +3 -0
  161. package/src/lib/voting/interfaces/poll-tallier.js.map +1 -0
  162. package/src/lib/voting/interfaces/poll.d.ts +41 -0
  163. package/src/lib/voting/interfaces/poll.d.ts.map +1 -0
  164. package/src/lib/voting/interfaces/poll.js +3 -0
  165. package/src/lib/voting/interfaces/poll.js.map +1 -0
  166. package/src/lib/voting/interfaces/round-result.d.ts +15 -0
  167. package/src/lib/voting/interfaces/round-result.d.ts.map +1 -0
  168. package/src/lib/voting/interfaces/round-result.js +3 -0
  169. package/src/lib/voting/interfaces/round-result.js.map +1 -0
  170. package/src/lib/voting/interfaces/state-snapshot.d.ts +9 -0
  171. package/src/lib/voting/interfaces/state-snapshot.d.ts.map +1 -0
  172. package/src/lib/voting/interfaces/state-snapshot.js +3 -0
  173. package/src/lib/voting/interfaces/state-snapshot.js.map +1 -0
  174. package/src/lib/voting/interfaces/supermajority-config.d.ts +11 -0
  175. package/src/lib/voting/interfaces/supermajority-config.d.ts.map +1 -0
  176. package/src/lib/voting/interfaces/supermajority-config.js +3 -0
  177. package/src/lib/voting/interfaces/supermajority-config.js.map +1 -0
  178. package/src/lib/voting/interfaces/tally-proof.d.ts +18 -0
  179. package/src/lib/voting/interfaces/tally-proof.d.ts.map +1 -0
  180. package/src/lib/voting/interfaces/tally-proof.js +3 -0
  181. package/src/lib/voting/interfaces/tally-proof.js.map +1 -0
  182. package/src/lib/voting/interfaces/vote-encoder.d.ts +59 -0
  183. package/src/lib/voting/interfaces/vote-encoder.d.ts.map +1 -0
  184. package/src/lib/voting/interfaces/vote-encoder.js +3 -0
  185. package/src/lib/voting/interfaces/vote-encoder.js.map +1 -0
  186. package/src/lib/voting/interfaces/vote-logger-extended.d.ts +15 -0
  187. package/src/lib/voting/interfaces/vote-logger-extended.d.ts.map +1 -0
  188. package/src/lib/voting/interfaces/vote-logger-extended.js +3 -0
  189. package/src/lib/voting/interfaces/vote-logger-extended.js.map +1 -0
  190. package/src/lib/voting/interfaces/vote-logger.d.ts +11 -0
  191. package/src/lib/voting/interfaces/vote-logger.d.ts.map +1 -0
  192. package/src/lib/voting/interfaces/vote-logger.js +3 -0
  193. package/src/lib/voting/interfaces/vote-logger.js.map +1 -0
  194. package/src/lib/voting/interfaces/voting-consts.d.ts.map +1 -0
  195. package/src/lib/voting/interfaces/voting-consts.js.map +1 -0
  196. package/src/lib/voting/interfaces/voting-key-derivation-options.d.ts +26 -0
  197. package/src/lib/voting/interfaces/voting-key-derivation-options.d.ts.map +1 -0
  198. package/src/lib/voting/interfaces/voting-key-derivation-options.js +3 -0
  199. package/src/lib/voting/interfaces/voting-key-derivation-options.js.map +1 -0
  200. package/src/lib/voting/interfaces/voting-poll-results.d.ts +20 -0
  201. package/src/lib/voting/interfaces/voting-poll-results.d.ts.map +1 -0
  202. package/src/lib/voting/interfaces/voting-poll-results.js +3 -0
  203. package/src/lib/voting/interfaces/voting-poll-results.js.map +1 -0
  204. package/src/lib/voting/interfaces/voting-receipt.d.ts +18 -0
  205. package/src/lib/voting/interfaces/voting-receipt.d.ts.map +1 -0
  206. package/src/lib/voting/interfaces/voting-receipt.js +3 -0
  207. package/src/lib/voting/interfaces/voting-receipt.js.map +1 -0
  208. package/src/lib/voting/interfaces/voting-security-validator.d.ts +37 -0
  209. package/src/lib/voting/interfaces/voting-security-validator.d.ts.map +1 -0
  210. package/src/lib/voting/interfaces/voting-security-validator.js +3 -0
  211. package/src/lib/voting/interfaces/voting-security-validator.js.map +1 -0
  212. package/src/lib/voting/persistent-state.d.ts +21 -0
  213. package/src/lib/voting/persistent-state.d.ts.map +1 -0
  214. package/src/lib/voting/persistent-state.js +32 -0
  215. package/src/lib/voting/persistent-state.js.map +1 -0
  216. package/src/lib/voting/poll-core.d.ts +3 -3
  217. package/src/lib/voting/poll-core.d.ts.map +1 -1
  218. package/src/lib/voting/poll-core.js +6 -7
  219. package/src/lib/voting/poll-core.js.map +1 -1
  220. package/src/lib/voting/security.d.ts +2 -6
  221. package/src/lib/voting/security.d.ts.map +1 -1
  222. package/src/lib/voting/security.js +25 -28
  223. package/src/lib/voting/security.js.map +1 -1
  224. package/src/lib/voting/tallier.d.ts +5 -5
  225. package/src/lib/voting/tallier.d.ts.map +1 -1
  226. package/src/lib/voting/tallier.js +26 -26
  227. package/src/lib/voting/tallier.js.map +1 -1
  228. package/src/lib/voting/test-voter-pool.d.ts +16 -0
  229. package/src/lib/voting/test-voter-pool.d.ts.map +1 -0
  230. package/src/lib/voting/test-voter-pool.js +65 -0
  231. package/src/lib/voting/test-voter-pool.js.map +1 -0
  232. package/src/member.d.ts +8 -1
  233. package/src/member.d.ts.map +1 -1
  234. package/src/member.js +6 -6
  235. package/src/member.js.map +1 -1
  236. package/src/services/ecies/interfaces/decryption-result.d.ts +5 -0
  237. package/src/services/ecies/interfaces/decryption-result.d.ts.map +1 -0
  238. package/src/services/ecies/interfaces/decryption-result.js +3 -0
  239. package/src/services/ecies/interfaces/decryption-result.js.map +1 -0
  240. package/src/services/ecies/interfaces/encryption-result.d.ts +7 -0
  241. package/src/services/ecies/interfaces/encryption-result.d.ts.map +1 -0
  242. package/src/services/ecies/interfaces/encryption-result.js +3 -0
  243. package/src/services/ecies/interfaces/encryption-result.js.map +1 -0
  244. package/src/services/ecies/interfaces/index.d.ts +9 -0
  245. package/src/services/ecies/interfaces/index.d.ts.map +1 -0
  246. package/src/services/ecies/interfaces/index.js +3 -0
  247. package/src/services/ecies/interfaces/index.js.map +1 -0
  248. package/src/services/ecies/interfaces/multi-encrypted-message.d.ts +11 -0
  249. package/src/services/ecies/interfaces/multi-encrypted-message.d.ts.map +1 -0
  250. package/src/services/ecies/interfaces/multi-encrypted-message.js +3 -0
  251. package/src/services/ecies/interfaces/multi-encrypted-message.js.map +1 -0
  252. package/src/services/ecies/interfaces/multi-encrypted-parsed-header.d.ts +10 -0
  253. package/src/services/ecies/interfaces/multi-encrypted-parsed-header.d.ts.map +1 -0
  254. package/src/services/ecies/interfaces/multi-encrypted-parsed-header.js +3 -0
  255. package/src/services/ecies/interfaces/multi-encrypted-parsed-header.js.map +1 -0
  256. package/src/services/ecies/interfaces/multi-recipient.d.ts +6 -0
  257. package/src/services/ecies/interfaces/multi-recipient.d.ts.map +1 -0
  258. package/src/services/ecies/interfaces/multi-recipient.js +3 -0
  259. package/src/services/ecies/interfaces/multi-recipient.js.map +1 -0
  260. package/src/services/ecies/interfaces/simple-keypair.d.ts +5 -0
  261. package/src/services/ecies/interfaces/simple-keypair.d.ts.map +1 -0
  262. package/src/services/ecies/interfaces/simple-keypair.js +3 -0
  263. package/src/services/ecies/interfaces/simple-keypair.js.map +1 -0
  264. package/src/services/ecies/interfaces/single-encrypted-parsed-header.d.ts +11 -0
  265. package/src/services/ecies/interfaces/single-encrypted-parsed-header.d.ts.map +1 -0
  266. package/src/services/ecies/interfaces/single-encrypted-parsed-header.js +3 -0
  267. package/src/services/ecies/interfaces/single-encrypted-parsed-header.js.map +1 -0
  268. package/src/services/ecies/interfaces/wallet-seed.d.ts +6 -0
  269. package/src/services/ecies/interfaces/wallet-seed.d.ts.map +1 -0
  270. package/src/services/ecies/interfaces/wallet-seed.js +3 -0
  271. package/src/services/ecies/interfaces/wallet-seed.js.map +1 -0
  272. package/src/services/ecies/multi-recipient.d.ts.map +1 -1
  273. package/src/services/ecies/multi-recipient.js +14 -5
  274. package/src/services/ecies/multi-recipient.js.map +1 -1
  275. package/src/interfaces/member-with-mnemonic.d.ts +0 -8
  276. package/src/interfaces/member-with-mnemonic.d.ts.map +0 -1
  277. package/src/interfaces/member-with-mnemonic.js.map +0 -1
  278. package/src/interfaces/voting-consts.d.ts.map +0 -1
  279. package/src/interfaces/voting-consts.js.map +0 -1
  280. package/src/interfaces/voting-poll.d.ts +0 -455
  281. package/src/interfaces/voting-poll.d.ts.map +0 -1
  282. package/src/interfaces/voting-poll.js +0 -54
  283. package/src/interfaces/voting-poll.js.map +0 -1
  284. package/src/lib/voting/poll.d.ts +0 -125
  285. package/src/lib/voting/poll.d.ts.map +0 -1
  286. package/src/lib/voting/poll.js +0 -323
  287. package/src/lib/voting/poll.js.map +0 -1
  288. package/src/lib/voting/types.d.ts +0 -146
  289. package/src/lib/voting/types.d.ts.map +0 -1
  290. package/src/lib/voting/types.js.map +0 -1
  291. package/src/services/ecies/interfaces.d.ts +0 -55
  292. package/src/services/ecies/interfaces.d.ts.map +0 -1
  293. package/src/services/ecies/interfaces.js +0 -6
  294. package/src/services/ecies/interfaces.js.map +0 -1
  295. /package/src/{interfaces → lib/voting/interfaces}/voting-consts.d.ts +0 -0
  296. /package/src/{interfaces → lib/voting/interfaces}/voting-consts.js +0 -0
@@ -1,323 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VotingPoll = void 0;
4
- const sha256_1 = require("@noble/hashes/sha256");
5
- const utils_1 = require("@noble/hashes/utils");
6
- const constants_1 = require("../../constants");
7
- /**
8
- * VotingPoll provides a high-level interface for conducting secure, verifiable polls
9
- * using Paillier homomorphic encryption.
10
- *
11
- * Features:
12
- * - Privacy-preserving vote aggregation (votes remain encrypted until tally)
13
- * - Verifiable receipts for each voter
14
- * - Multiple tallying and analysis methods
15
- * - Ranked choice voting support
16
- * - Weighted voting support
17
- */
18
- class VotingPoll {
19
- choices;
20
- votes;
21
- paillierKeyPair;
22
- ecKeyPair;
23
- eciesService;
24
- receipts = new Map();
25
- createdAt;
26
- closedAt;
27
- constructor(eciesService, choices, paillierKeyPair, ecKeyPair, votes) {
28
- this.eciesService = eciesService;
29
- if (choices.length === 0) {
30
- throw new Error('Poll must have at least one choice');
31
- }
32
- if (choices.length !== votes.length) {
33
- throw new Error('Number of choices must match number of vote tallies');
34
- }
35
- this.choices = choices;
36
- this.paillierKeyPair = paillierKeyPair;
37
- this.ecKeyPair = ecKeyPair;
38
- this.votes = votes;
39
- this.createdAt = new Date();
40
- }
41
- async generateEncryptedReceipt(member) {
42
- const randomNonce = Buffer.from((0, utils_1.randomBytes)(16)).toString(constants_1.VOTING.KEY_FORMAT);
43
- const memberId = constants_1.Constants.idProvider.serialize(member.idBytes);
44
- const hashInput = `${Date.now()}-${randomNonce}-${memberId}`;
45
- const hash = (0, sha256_1.sha256)(new TextEncoder().encode(hashInput));
46
- const signature = this.eciesService.signMessage(this.ecKeyPair.privateKey, hash);
47
- const receipt = new Uint8Array(hash.length + signature.length);
48
- receipt.set(hash, 0);
49
- receipt.set(signature, hash.length);
50
- // Encrypt to the poll's public key so the poll can decrypt and verify later
51
- const encryptedReceipt = await this.eciesService.encryptSimpleOrSingle(false, this.ecKeyPair.publicKey, receipt);
52
- this.receipts.set(memberId, encryptedReceipt);
53
- return encryptedReceipt;
54
- }
55
- memberVoted(member) {
56
- const memberId = constants_1.Constants.idProvider.serialize(member.idBytes);
57
- return this.receipts.has(memberId);
58
- }
59
- async verifyReceipt(member, encryptedReceipt) {
60
- const memberId = constants_1.Constants.idProvider.serialize(member.idBytes);
61
- const foundReceipt = this.receipts.get(memberId);
62
- if (!foundReceipt) {
63
- return false;
64
- }
65
- if (foundReceipt.length !== encryptedReceipt.length ||
66
- !foundReceipt.every((v, i) => v === encryptedReceipt[i])) {
67
- return false;
68
- }
69
- const decryptedReceipt = await this.eciesService.decryptSimpleOrSingleWithHeader(false, this.ecKeyPair.privateKey, encryptedReceipt);
70
- const hash = decryptedReceipt.subarray(0, 32);
71
- const signature = decryptedReceipt.subarray(32);
72
- return this.eciesService.verifyMessage(this.ecKeyPair.publicKey, hash, signature);
73
- }
74
- async vote(choiceIndex, member) {
75
- if (this.isClosed) {
76
- throw new Error('Poll is closed');
77
- }
78
- if (this.memberVoted(member)) {
79
- throw new Error('Member has already voted');
80
- }
81
- if (choiceIndex < 0 || choiceIndex >= this.choices.length) {
82
- throw new Error(`Invalid option index ${choiceIndex}`);
83
- }
84
- // vote a 1 for the selected candidate and a 0 for all others
85
- for (let i = 0; i < this.choices.length; i++) {
86
- if (i == choiceIndex) {
87
- this.votes[i] = this.paillierKeyPair.publicKey.addition(this.votes[i], this.paillierKeyPair.publicKey.encrypt(1n));
88
- }
89
- else {
90
- this.votes[i] = this.paillierKeyPair.publicKey.addition(this.votes[i], this.paillierKeyPair.publicKey.encrypt(0n));
91
- }
92
- }
93
- return await this.generateEncryptedReceipt(member);
94
- }
95
- async voteWeighted(choiceIndex, weight, member) {
96
- if (this.isClosed) {
97
- throw new Error('Poll is closed');
98
- }
99
- if (this.memberVoted(member)) {
100
- throw new Error('Member has already voted');
101
- }
102
- if (choiceIndex < 0 || choiceIndex >= this.choices.length) {
103
- throw new Error(`Invalid option index ${choiceIndex}`);
104
- }
105
- if (weight <= 0n) {
106
- throw new Error('Vote weight must be positive');
107
- }
108
- // Add weighted vote to selected choice
109
- this.votes[choiceIndex] = this.paillierKeyPair.publicKey.addition(this.votes[choiceIndex], this.paillierKeyPair.publicKey.encrypt(weight));
110
- return await this.generateEncryptedReceipt(member);
111
- }
112
- async voteRanked(rankedChoices, member) {
113
- if (this.isClosed) {
114
- throw new Error('Poll is closed');
115
- }
116
- if (this.memberVoted(member)) {
117
- throw new Error('Member has already voted');
118
- }
119
- if (rankedChoices.length === 0) {
120
- throw new Error('Must provide at least one ranked choice');
121
- }
122
- // Validate all choices are valid and unique
123
- const seen = new Set();
124
- for (const choiceIndex of rankedChoices) {
125
- if (choiceIndex < 0 || choiceIndex >= this.choices.length) {
126
- throw new Error(`Invalid choice index ${choiceIndex}`);
127
- }
128
- if (seen.has(choiceIndex)) {
129
- throw new Error(`Duplicate choice index ${choiceIndex}`);
130
- }
131
- seen.add(choiceIndex);
132
- }
133
- // Award points based on ranking (first choice gets highest points)
134
- const maxPoints = BigInt(rankedChoices.length);
135
- for (let i = 0; i < rankedChoices.length; i++) {
136
- const choiceIndex = rankedChoices[i];
137
- const points = maxPoints - BigInt(i); // First choice gets n points, second gets n-1, etc.
138
- this.votes[choiceIndex] = this.paillierKeyPair.publicKey.addition(this.votes[choiceIndex], this.paillierKeyPair.publicKey.encrypt(points));
139
- }
140
- return await this.generateEncryptedReceipt(member);
141
- }
142
- async voteApproval(approvedChoices, member) {
143
- if (this.isClosed) {
144
- throw new Error('Poll is closed');
145
- }
146
- if (this.memberVoted(member)) {
147
- throw new Error('Member has already voted');
148
- }
149
- if (approvedChoices.length === 0) {
150
- throw new Error('Must approve at least one choice');
151
- }
152
- // Validate all choices and check for duplicates
153
- const seen = new Set();
154
- for (const choiceIndex of approvedChoices) {
155
- if (choiceIndex < 0 || choiceIndex >= this.choices.length) {
156
- throw new Error(`Invalid choice index ${choiceIndex}`);
157
- }
158
- if (seen.has(choiceIndex)) {
159
- throw new Error(`Duplicate choice index ${choiceIndex}`);
160
- }
161
- seen.add(choiceIndex);
162
- }
163
- // Add 1 vote to each approved choice
164
- for (const choiceIndex of approvedChoices) {
165
- this.votes[choiceIndex] = this.paillierKeyPair.publicKey.addition(this.votes[choiceIndex], this.paillierKeyPair.publicKey.encrypt(1n));
166
- }
167
- return await this.generateEncryptedReceipt(member);
168
- }
169
- get tallies() {
170
- return this.votes.map((encryptedVote) => this.paillierKeyPair.privateKey.decrypt(encryptedVote));
171
- }
172
- getTally(choiceIndex) {
173
- return this.paillierKeyPair.privateKey.decrypt(this.votes[choiceIndex]);
174
- }
175
- get leadingChoice() {
176
- const tallies = this.tallies;
177
- let leadingOptionIndex = 0;
178
- for (let i = 1; i < tallies.length; i++) {
179
- if (tallies[i] > tallies[leadingOptionIndex]) {
180
- leadingOptionIndex = i;
181
- }
182
- }
183
- return this.choices[leadingOptionIndex];
184
- }
185
- /**
186
- * Get the index of the leading choice
187
- */
188
- get leadingChoiceIndex() {
189
- const tallies = this.tallies;
190
- let leadingOptionIndex = 0;
191
- for (let i = 1; i < tallies.length; i++) {
192
- if (tallies[i] > tallies[leadingOptionIndex]) {
193
- leadingOptionIndex = i;
194
- }
195
- }
196
- return leadingOptionIndex;
197
- }
198
- /**
199
- * Get complete poll results with percentages and winner
200
- */
201
- getResults() {
202
- const tallies = this.tallies;
203
- const totalVotes = tallies.reduce((sum, tally) => sum + tally, 0n);
204
- const percentages = tallies.map((tally) => totalVotes > 0n ? Number((tally * 10000n) / totalVotes) / 100 : 0);
205
- return {
206
- totalVotes,
207
- tallies,
208
- choices: [...this.choices],
209
- percentages,
210
- winnerIndex: this.leadingChoiceIndex,
211
- winnerName: this.leadingChoice,
212
- voterCount: this.receipts.size,
213
- };
214
- }
215
- /**
216
- * Get sorted results (descending by vote count)
217
- */
218
- getSortedResults() {
219
- const results = this.getResults();
220
- return this.choices
221
- .map((choice, index) => ({
222
- choice,
223
- index,
224
- tally: results.tallies[index],
225
- percentage: results.percentages[index],
226
- }))
227
- .sort((a, b) => (b.tally > a.tally ? 1 : b.tally < a.tally ? -1 : 0));
228
- }
229
- /**
230
- * Check if there is a tie for first place
231
- */
232
- get hasTie() {
233
- const tallies = this.tallies;
234
- const maxTally = tallies.reduce((max, tally) => (tally > max ? tally : max), 0n);
235
- return tallies.filter((tally) => tally === maxTally).length > 1;
236
- }
237
- /**
238
- * Get all choices tied for first place
239
- */
240
- get tiedChoices() {
241
- if (!this.hasTie) {
242
- return [];
243
- }
244
- const tallies = this.tallies;
245
- const maxTally = tallies.reduce((max, tally) => (tally > max ? tally : max), 0n);
246
- return this.choices.filter((_, index) => tallies[index] === maxTally);
247
- }
248
- /**
249
- * Get total number of unique voters
250
- */
251
- get voterCount() {
252
- return this.receipts.size;
253
- }
254
- /**
255
- * Get total encrypted votes (sum of all choice tallies)
256
- * Note: This returns encrypted sum - decrypt with getTotalVotes()
257
- */
258
- get encryptedTotalVotes() {
259
- return this.votes.reduce((sum, vote) => this.paillierKeyPair.publicKey.addition(sum, vote), this.paillierKeyPair.publicKey.encrypt(0n));
260
- }
261
- /**
262
- * Get total decrypted vote count
263
- */
264
- getTotalVotes() {
265
- return this.paillierKeyPair.privateKey.decrypt(this.encryptedTotalVotes);
266
- }
267
- /**
268
- * Close the poll (no more votes can be cast)
269
- */
270
- close() {
271
- if (this.isClosed) {
272
- throw new Error('Poll is already closed');
273
- }
274
- this.closedAt = new Date();
275
- }
276
- /**
277
- * Check if poll is closed
278
- */
279
- get isClosed() {
280
- return this.closedAt !== undefined;
281
- }
282
- /**
283
- * Get poll creation timestamp
284
- */
285
- get createdAtTimestamp() {
286
- return new Date(this.createdAt);
287
- }
288
- /**
289
- * Get poll closed timestamp (undefined if not closed)
290
- */
291
- get closedAtTimestamp() {
292
- return this.closedAt ? new Date(this.closedAt) : undefined;
293
- }
294
- /**
295
- * Get poll duration in milliseconds (undefined if not closed)
296
- */
297
- get durationMs() {
298
- if (!this.closedAt) {
299
- return undefined;
300
- }
301
- return this.closedAt.getTime() - this.createdAt.getTime();
302
- }
303
- static newPoll(eciesService, choices, paillierKeyPair, ecKeyPair) {
304
- const votes = new Array(choices.length);
305
- for (let i = 0; i < choices.length; i++) {
306
- votes[i] = paillierKeyPair.publicKey.encrypt(0n);
307
- }
308
- return new VotingPoll(eciesService, choices, paillierKeyPair, ecKeyPair, votes);
309
- }
310
- static async newPollWithKeys(eciesService, votingService, choices) {
311
- const mnemonic = eciesService.generateNewMnemonic();
312
- const keyPair = eciesService.mnemonicToSimpleKeyPair(mnemonic);
313
- const ecKeyPair = {
314
- privateKey: keyPair.privateKey,
315
- publicKey: keyPair.publicKey,
316
- };
317
- const paillierKeyPair = await votingService.deriveVotingKeysFromECDH(ecKeyPair.privateKey, ecKeyPair.publicKey);
318
- const poll = VotingPoll.newPoll(eciesService, choices, paillierKeyPair, ecKeyPair);
319
- return { poll, paillierKeyPair, ecKeyPair };
320
- }
321
- }
322
- exports.VotingPoll = VotingPoll;
323
- //# sourceMappingURL=poll.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"poll.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/poll.ts"],"names":[],"mappings":"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"}
@@ -1,146 +0,0 @@
1
- /**
2
- * Voting system types - browser compatible
3
- * Uses ecies-lib Member interface
4
- */
5
- import { PlatformID } from '../../interfaces';
6
- import type { IMember } from '../../interfaces/member';
7
- export type { IMember };
8
- /**
9
- * Voting methods supported by the poll system.
10
- *
11
- * Methods are classified by security level:
12
- * - Fully Homomorphic: Single-round, privacy-preserving (no intermediate decryption)
13
- * - Multi-Round: Requires decryption between rounds (less secure)
14
- * - Insecure: Cannot be made secure with Paillier encryption
15
- */
16
- export declare enum VotingMethod {
17
- /** First-past-the-post voting - most votes wins */
18
- Plurality = "plurality",
19
- /** Approval voting - vote for multiple candidates */
20
- Approval = "approval",
21
- /** Weighted voting - stakeholder voting with configurable weights */
22
- Weighted = "weighted",
23
- /** Borda count - ranked voting with point allocation */
24
- Borda = "borda",
25
- /** Score voting - rate candidates 0-10 */
26
- Score = "score",
27
- /** Yes/No referendum */
28
- YesNo = "yes-no",
29
- /** Yes/No/Abstain referendum with abstention option */
30
- YesNoAbstain = "yes-no-abstain",
31
- /** Supermajority - requires 2/3 or 3/4 threshold */
32
- Supermajority = "supermajority",
33
- /** Ranked choice voting (IRV) - instant runoff with elimination */
34
- RankedChoice = "ranked-choice",
35
- /** Two-round voting - top 2 runoff election */
36
- TwoRound = "two-round",
37
- /** STAR voting - Score Then Automatic Runoff */
38
- STAR = "star",
39
- /** Single Transferable Vote - proportional representation */
40
- STV = "stv",
41
- /** Quadratic voting - requires sqrt operation (not homomorphic) */
42
- Quadratic = "quadratic",
43
- /** Consensus voting - requires 95%+ agreement (no privacy) */
44
- Consensus = "consensus",
45
- /** Consent-based voting - sociocracy style (no privacy) */
46
- ConsentBased = "consent-based"
47
- }
48
- /**
49
- * Cryptographically signed receipt proving a vote was cast.
50
- * Can be used to verify participation without revealing vote content.
51
- */
52
- export interface VoteReceipt<TID extends PlatformID = Uint8Array> {
53
- /** Unique identifier of the voter */
54
- voterId: TID;
55
- /** Unique identifier of the poll */
56
- pollId: TID;
57
- /** Unix timestamp when vote was cast */
58
- timestamp: number;
59
- /** Cryptographic signature from poll authority */
60
- signature: Uint8Array;
61
- /** Random nonce for uniqueness */
62
- nonce: Uint8Array;
63
- }
64
- /**
65
- * Results of a completed poll after tallying.
66
- * Includes winner(s), tallies, and round-by-round data for multi-round methods.
67
- */
68
- export interface PollResults {
69
- /** Voting method used */
70
- method: VotingMethod;
71
- /** Array of choice names */
72
- choices: string[];
73
- /** Index of winning choice (undefined if tie) */
74
- winner?: number;
75
- /** Indices of tied winners (for ties or multi-winner methods) */
76
- winners?: number[];
77
- /** Indices of eliminated choices (for RCV) */
78
- eliminated?: number[];
79
- /** Round-by-round results (for multi-round methods) */
80
- rounds?: RoundResult[];
81
- /** Final vote tallies for each choice */
82
- tallies: bigint[];
83
- /** Total number of unique voters */
84
- voterCount: number;
85
- }
86
- /**
87
- * Results from a single round of multi-round voting.
88
- * Used in RCV, Two-Round, STAR, and STV methods.
89
- */
90
- export interface RoundResult {
91
- /** Round number (1-indexed) */
92
- round: number;
93
- /** Vote tallies for this round */
94
- tallies: bigint[];
95
- /** Index of choice eliminated this round (if any) */
96
- eliminated?: number;
97
- /** Index of winner determined this round (if any) */
98
- winner?: number;
99
- }
100
- /**
101
- * Encrypted vote data using Paillier homomorphic encryption.
102
- * Structure varies by voting method.
103
- */
104
- export interface EncryptedVote<TID extends PlatformID = Uint8Array> {
105
- /** Single choice index (for Plurality, Weighted, etc.) */
106
- choiceIndex?: number;
107
- /** Multiple choice indices (for Approval voting) */
108
- choices?: number[];
109
- /** Ranked choice indices in preference order (for RCV, Borda) */
110
- rankings?: number[];
111
- /** Vote weight (for Weighted voting) */
112
- weight?: bigint;
113
- /** Score value 0-10 (for Score voting) */
114
- score?: number;
115
- /** Array of encrypted vote values (one per choice) */
116
- encrypted: bigint[];
117
- /** Plaintext vote data (only for insecure methods) */
118
- plaintext?: PlaintextVote<TID>;
119
- }
120
- /**
121
- * Plaintext vote data for insecure voting methods.
122
- * WARNING: Only use for Quadratic, Consensus, or ConsentBased methods.
123
- */
124
- export interface PlaintextVote<TID extends PlatformID = Uint8Array> {
125
- /** Unique identifier of the voter */
126
- voterId: TID;
127
- /** Single choice index */
128
- choiceIndex?: number;
129
- /** Multiple choice indices */
130
- choices?: number[];
131
- /** Vote weight */
132
- weight?: bigint;
133
- /** Objection text (for consent-based voting) */
134
- objection?: string;
135
- }
136
- /**
137
- * Configuration for supermajority voting.
138
- * Defines the required threshold as a fraction (e.g., 2/3, 3/4).
139
- */
140
- export interface SupermajorityConfig {
141
- /** Numerator of the fraction (e.g., 2 for 2/3) */
142
- numerator: number;
143
- /** Denominator of the fraction (e.g., 3 for 2/3) */
144
- denominator: number;
145
- }
146
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD,YAAY,EAAE,OAAO,EAAE,CAAC;AAExB;;;;;;;GAOG;AACH,oBAAY,YAAY;IAEtB,mDAAmD;IACnD,SAAS,cAAc;IACvB,qDAAqD;IACrD,QAAQ,aAAa;IACrB,qEAAqE;IACrE,QAAQ,aAAa;IACrB,wDAAwD;IACxD,KAAK,UAAU;IACf,0CAA0C;IAC1C,KAAK,UAAU;IACf,wBAAwB;IACxB,KAAK,WAAW;IAChB,uDAAuD;IACvD,YAAY,mBAAmB;IAC/B,oDAAoD;IACpD,aAAa,kBAAkB;IAG/B,mEAAmE;IACnE,YAAY,kBAAkB;IAC9B,+CAA+C;IAC/C,QAAQ,cAAc;IACtB,gDAAgD;IAChD,IAAI,SAAS;IACb,6DAA6D;IAC7D,GAAG,QAAQ;IAGX,mEAAmE;IACnE,SAAS,cAAc;IACvB,8DAA8D;IAC9D,SAAS,cAAc;IACvB,2DAA2D;IAC3D,YAAY,kBAAkB;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IAC9D,qCAAqC;IACrC,OAAO,EAAE,GAAG,CAAC;IACb,oCAAoC;IACpC,MAAM,EAAE,GAAG,CAAC;IACZ,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,SAAS,EAAE,UAAU,CAAC;IACtB,kCAAkC;IAClC,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,uDAAuD;IACvD,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IAChE,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sDAAsD;IACtD,SAAS,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IAChE,qCAAqC;IACrC,OAAO,EAAE,GAAG,CAAC;IACb,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/types.ts"],"names":[],"mappings":";;;AAUA;;;;;;;GAOG;AACH,IAAY,YAoCX;AApCD,WAAY,YAAY;IACtB,yDAAyD;IACzD,mDAAmD;IACnD,uCAAuB,CAAA;IACvB,qDAAqD;IACrD,qCAAqB,CAAA;IACrB,qEAAqE;IACrE,qCAAqB,CAAA;IACrB,wDAAwD;IACxD,+BAAe,CAAA;IACf,0CAA0C;IAC1C,+BAAe,CAAA;IACf,wBAAwB;IACxB,gCAAgB,CAAA;IAChB,uDAAuD;IACvD,+CAA+B,CAAA;IAC/B,oDAAoD;IACpD,+CAA+B,CAAA;IAE/B,sDAAsD;IACtD,mEAAmE;IACnE,8CAA8B,CAAA;IAC9B,+CAA+C;IAC/C,sCAAsB,CAAA;IACtB,gDAAgD;IAChD,6BAAa,CAAA;IACb,6DAA6D;IAC7D,2BAAW,CAAA;IAEX,4EAA4E;IAC5E,mEAAmE;IACnE,uCAAuB,CAAA;IACvB,8DAA8D;IAC9D,uCAAuB,CAAA;IACvB,2DAA2D;IAC3D,8CAA8B,CAAA;AAChC,CAAC,EApCW,YAAY,4BAAZ,YAAY,QAoCvB"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Browser-compatible ECIES interfaces
3
- */
4
- import { Wallet } from '@ethereumjs/wallet';
5
- import { EciesEncryptionTypeEnum } from '../../enumerations/ecies-encryption-type';
6
- import type { PlatformID } from '../../interfaces';
7
- export interface ISimpleKeyPair {
8
- privateKey: Uint8Array;
9
- publicKey: Uint8Array;
10
- }
11
- export interface IWalletSeed {
12
- wallet: Wallet;
13
- seed: Uint8Array;
14
- }
15
- export interface ISingleEncryptedParsedHeader {
16
- preamble?: Uint8Array;
17
- encryptionType: EciesEncryptionTypeEnum;
18
- ephemeralPublicKey: Uint8Array;
19
- iv: Uint8Array;
20
- authTag: Uint8Array;
21
- dataLength: number;
22
- headerSize: number;
23
- }
24
- export interface IEncryptionResult<TID extends PlatformID = Uint8Array> {
25
- encryptedData: Uint8Array;
26
- ephemeralPublicKey: Uint8Array;
27
- iv: TID;
28
- authTag: Uint8Array;
29
- }
30
- export interface IDecryptionResult {
31
- decrypted: Uint8Array;
32
- consumedBytes: number;
33
- }
34
- export interface IMultiRecipient<TID extends PlatformID = Uint8Array> {
35
- id: TID;
36
- publicKey: Uint8Array;
37
- }
38
- export interface IMultiEncryptedMessage<TID extends PlatformID = Uint8Array> {
39
- dataLength: number;
40
- recipientCount: number;
41
- recipientIds: TID[];
42
- recipientKeys: Uint8Array[];
43
- encryptedMessage: Uint8Array;
44
- headerSize: number;
45
- ephemeralPublicKey?: Uint8Array;
46
- }
47
- export interface IMultiEncryptedParsedHeader<TID> {
48
- dataLength: number;
49
- recipientCount: number;
50
- recipientIds: TID[];
51
- recipientKeys: Uint8Array[];
52
- headerSize: number;
53
- ephemeralPublicKey?: Uint8Array;
54
- }
55
- //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/services/ecies/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,cAAc,EAAE,uBAAuB,CAAC;IACxC,kBAAkB,EAAE,UAAU,CAAC;IAC/B,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IACpE,aAAa,EAAE,UAAU,CAAC;IAC1B,kBAAkB,EAAE,UAAU,CAAC;IAC/B,EAAE,EAAE,GAAG,CAAC;IACR,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IAClE,EAAE,EAAE,GAAG,CAAC;IACR,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,gBAAgB,EAAE,UAAU,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,2BAA2B,CAAC,GAAG;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,UAAU,CAAC;CACjC"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- /**
3
- * Browser-compatible ECIES interfaces
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/services/ecies/interfaces.ts"],"names":[],"mappings":";AAAA;;GAEG"}