@digitaldefiance/ecies-lib 4.7.12 → 4.8.0
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.
- package/README.md +1 -1
- package/package.json +2 -2
- package/src/builders/member-builder.d.ts +3 -2
- package/src/builders/member-builder.d.ts.map +1 -1
- package/src/builders/member-builder.js.map +1 -1
- package/src/constants.d.ts +10 -0
- package/src/constants.d.ts.map +1 -1
- package/src/constants.js +30 -4
- package/src/constants.js.map +1 -1
- package/src/interfaces/configuration-provenance.d.ts +2 -2
- package/src/interfaces/configuration-provenance.d.ts.map +1 -1
- package/src/interfaces/configuration-provenance.js +0 -5
- package/src/interfaces/configuration-provenance.js.map +1 -1
- package/src/interfaces/id-provider.d.ts +12 -0
- package/src/interfaces/id-provider.d.ts.map +1 -1
- package/src/interfaces/index.d.ts +1 -1
- package/src/interfaces/index.d.ts.map +1 -1
- package/src/interfaces/index.js +1 -1
- package/src/interfaces/index.js.map +1 -1
- package/src/interfaces/member-with-mnemonic.d.ts +3 -2
- package/src/interfaces/member-with-mnemonic.d.ts.map +1 -1
- package/src/interfaces/member.d.ts +19 -17
- package/src/interfaces/member.d.ts.map +1 -1
- package/src/interfaces/platform-id.d.ts +4 -0
- package/src/interfaces/platform-id.d.ts.map +1 -0
- package/src/interfaces/{frontend-member-operational.js → platform-id.js} +1 -1
- package/src/interfaces/platform-id.js.map +1 -0
- package/src/lib/base-id-provider.d.ts +10 -0
- package/src/lib/base-id-provider.d.ts.map +1 -1
- package/src/lib/base-id-provider.js +22 -0
- package/src/lib/base-id-provider.js.map +1 -1
- package/src/lib/configuration-provenance-utils.d.ts +2 -1
- package/src/lib/configuration-provenance-utils.d.ts.map +1 -1
- package/src/lib/configuration-provenance-utils.js.map +1 -1
- package/src/lib/crypto-container.d.ts.map +1 -1
- package/src/lib/crypto-container.js +7 -3
- package/src/lib/crypto-container.js.map +1 -1
- package/src/lib/id-providers/objectid-provider.d.ts +10 -1
- package/src/lib/id-providers/objectid-provider.d.ts.map +1 -1
- package/src/lib/id-providers/objectid-provider.js +16 -0
- package/src/lib/id-providers/objectid-provider.js.map +1 -1
- package/src/lib/voting/audit.d.ts +16 -19
- package/src/lib/voting/audit.d.ts.map +1 -1
- package/src/lib/voting/audit.js +9 -4
- package/src/lib/voting/audit.js.map +1 -1
- package/src/lib/voting/encoder.d.ts +8 -7
- package/src/lib/voting/encoder.d.ts.map +1 -1
- package/src/lib/voting/encoder.js.map +1 -1
- package/src/lib/voting/examples.d.ts +7 -6
- package/src/lib/voting/examples.d.ts.map +1 -1
- package/src/lib/voting/examples.js +50 -43
- package/src/lib/voting/examples.js.map +1 -1
- package/src/lib/voting/factory.d.ts +10 -12
- package/src/lib/voting/factory.d.ts.map +1 -1
- package/src/lib/voting/factory.js +2 -2
- package/src/lib/voting/factory.js.map +1 -1
- package/src/lib/voting/poll-core.d.ts +7 -6
- package/src/lib/voting/poll-core.d.ts.map +1 -1
- package/src/lib/voting/poll-core.js +6 -5
- package/src/lib/voting/poll-core.js.map +1 -1
- package/src/lib/voting/poll.d.ts +9 -8
- package/src/lib/voting/poll.d.ts.map +1 -1
- package/src/lib/voting/poll.js +3 -3
- package/src/lib/voting/poll.js.map +1 -1
- package/src/lib/voting/tallier.d.ts +4 -3
- package/src/lib/voting/tallier.d.ts.map +1 -1
- package/src/lib/voting/tallier.js.map +1 -1
- package/src/lib/voting/types.d.ts +8 -7
- package/src/lib/voting/types.d.ts.map +1 -1
- package/src/lib/voting/types.js.map +1 -1
- package/src/member.d.ts +10 -7
- package/src/member.d.ts.map +1 -1
- package/src/member.js +17 -4
- package/src/member.js.map +1 -1
- package/src/services/ecies/multi-recipient.d.ts +17 -0
- package/src/services/ecies/multi-recipient.d.ts.map +1 -1
- package/src/services/ecies/multi-recipient.js +19 -0
- package/src/services/ecies/multi-recipient.js.map +1 -1
- package/src/services/ecies/service.d.ts +26 -1
- package/src/services/ecies/service.d.ts.map +1 -1
- package/src/services/ecies/service.js +44 -0
- package/src/services/ecies/service.js.map +1 -1
- package/src/test-mocks/mock-frontend-member.d.ts +13 -4
- package/src/test-mocks/mock-frontend-member.d.ts.map +1 -1
- package/src/test-mocks/mock-frontend-member.js +27 -0
- package/src/test-mocks/mock-frontend-member.js.map +1 -1
- package/src/interfaces/frontend-member-operational.d.ts +0 -51
- package/src/interfaces/frontend-member-operational.d.ts.map +0 -1
- package/src/interfaces/frontend-member-operational.js.map +0 -1
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.CryptoContainer = exports.CryptoServiceKey = void 0;
|
|
7
|
-
const constants_1 = require("../constants");
|
|
8
7
|
const ecies_string_key_1 = require("../enumerations/ecies-string-key");
|
|
9
8
|
const i18n_setup_1 = require("../i18n-setup");
|
|
10
9
|
var CryptoServiceKey;
|
|
@@ -25,8 +24,13 @@ class CryptoContainer {
|
|
|
25
24
|
this.i18n = i18n;
|
|
26
25
|
this.initServices();
|
|
27
26
|
}
|
|
28
|
-
static create(config
|
|
29
|
-
|
|
27
|
+
static create(config, i18n) {
|
|
28
|
+
const finalConfig = config ?? (() => {
|
|
29
|
+
// Lazy import to avoid circular dependency
|
|
30
|
+
const { Constants } = require('../constants');
|
|
31
|
+
return Constants;
|
|
32
|
+
})();
|
|
33
|
+
return new CryptoContainer(finalConfig, i18n || (0, i18n_setup_1.getEciesI18nEngine)());
|
|
30
34
|
}
|
|
31
35
|
get(key) {
|
|
32
36
|
const service = this.services.get(key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-container.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/crypto-container.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,
|
|
1
|
+
{"version":3,"file":"crypto-container.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/crypto-container.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,uEAAkE;AAClE,8CAAqE;AAGrE,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;IACnB,qDAAiC,CAAA;IACjC,iCAAa,CAAA;IACb,+BAAW,CAAA;AACb,CAAC,EAPW,gBAAgB,gCAAhB,gBAAgB,QAO3B;AAED,MAAa,eAAe;IAClB,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;IAChD,MAAM,CAAa;IACnB,IAAI,CAAa;IAEzB,YAAoB,MAAkB,EAAE,IAAgB;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,MAAM,CACX,MAAmB,EACnB,IAAiB;QAEjB,MAAM,WAAW,GAAe,MAAM,IAAI,CAAC,GAAG,EAAE;YAC9C,2CAA2C;YAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;YAC9C,OAAO,SAAuB,CAAC;QACjC,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,IAAI,eAAe,CAAC,WAAW,EAAE,IAAI,IAAI,IAAA,+BAAkB,GAAE,CAAC,CAAC;IACxE,CAAC;IAED,GAAG,CAAI,GAAqB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,IAAI,CAAC,SAAS,CACjB,6BAAgB,EAChB,iCAAc,CAAC,uCAAuC,EACtD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CACF,CAAC;QACJ,CAAC;QACD,OAAO,OAAY,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,gEAAgE;QAChE,wDAAwD;IAC1D,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAjDD,0CAiDC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ObjectId } from 'bson';
|
|
1
2
|
import { BaseIdProvider } from '../base-id-provider';
|
|
2
3
|
/**
|
|
3
4
|
* ID provider for MongoDB/BSON ObjectIDs (12 bytes).
|
|
@@ -33,11 +34,19 @@ export declare class ObjectIdProvider extends BaseIdProvider {
|
|
|
33
34
|
* Convert an ID of unknown type to a string representation.
|
|
34
35
|
* Handles Uint8Array, ObjectId instances, and falls back to String().
|
|
35
36
|
*/
|
|
36
|
-
idToString(id:
|
|
37
|
+
idToString(id: ObjectId): string;
|
|
37
38
|
/**
|
|
38
39
|
* Convert a string representation of an ID back to an ID buffer.
|
|
39
40
|
* Delegates to deserialize.
|
|
40
41
|
*/
|
|
41
42
|
idFromString(str: string): Uint8Array;
|
|
43
|
+
/**
|
|
44
|
+
* Convert any ID representation to canonical Uint8Array format.
|
|
45
|
+
*/
|
|
46
|
+
toBytes(id: ObjectId): Uint8Array;
|
|
47
|
+
/**
|
|
48
|
+
* Convert Uint8Array to ObjectId bytes (stays as Uint8Array for consistency).
|
|
49
|
+
*/
|
|
50
|
+
fromBytes(bytes: Uint8Array): Uint8Array;
|
|
42
51
|
}
|
|
43
52
|
//# sourceMappingURL=objectid-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectid-provider.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/id-providers/objectid-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"objectid-provider.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/id-providers/objectid-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,QAAQ,CAAC,UAAU,MAAM;IACzB,QAAQ,CAAC,IAAI,cAAc;;IAM3B;;;OAGG;IACH,QAAQ,IAAI,UAAU;IAgBtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAiBjC;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM;IAQjC;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IA8BpC;;;OAGG;IACM,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM;IAOzC;;;OAGG;IACM,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAI9C;;OAEG;IACM,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,UAAU;IAO1C;;OAEG;IACM,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;CAIlD"}
|
|
@@ -103,6 +103,22 @@ class ObjectIdProvider extends base_id_provider_1.BaseIdProvider {
|
|
|
103
103
|
idFromString(str) {
|
|
104
104
|
return this.deserialize(str);
|
|
105
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Convert any ID representation to canonical Uint8Array format.
|
|
108
|
+
*/
|
|
109
|
+
toBytes(id) {
|
|
110
|
+
if (id instanceof bson_1.ObjectId) {
|
|
111
|
+
return new Uint8Array(id.id);
|
|
112
|
+
}
|
|
113
|
+
return super.toBytes(id);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Convert Uint8Array to ObjectId bytes (stays as Uint8Array for consistency).
|
|
117
|
+
*/
|
|
118
|
+
fromBytes(bytes) {
|
|
119
|
+
this.validateLength(bytes, 'ObjectIdProvider.fromBytes');
|
|
120
|
+
return this.clone(bytes);
|
|
121
|
+
}
|
|
106
122
|
}
|
|
107
123
|
exports.ObjectIdProvider = ObjectIdProvider;
|
|
108
124
|
//# sourceMappingURL=objectid-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectid-provider.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/id-providers/objectid-provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"objectid-provider.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/id-providers/objectid-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
* Immutable Audit Log for Government-Grade Voting
|
|
3
|
-
* Implements requirement 1.1: Cryptographically signed, hash-chained audit trail
|
|
4
|
-
*/
|
|
1
|
+
import { PlatformID } from '../../interfaces';
|
|
5
2
|
import type { IMember } from './types';
|
|
6
3
|
export declare enum AuditEventType {
|
|
7
4
|
PollCreated = "poll_created",
|
|
8
5
|
VoteCast = "vote_cast",
|
|
9
6
|
PollClosed = "poll_closed"
|
|
10
7
|
}
|
|
11
|
-
export interface AuditEntry {
|
|
8
|
+
export interface AuditEntry<TID extends PlatformID> {
|
|
12
9
|
/** Sequence number (monotonically increasing) */
|
|
13
10
|
readonly sequence: number;
|
|
14
11
|
/** Event type */
|
|
@@ -16,11 +13,11 @@ export interface AuditEntry {
|
|
|
16
13
|
/** Microsecond-precision timestamp */
|
|
17
14
|
readonly timestamp: number;
|
|
18
15
|
/** Poll identifier */
|
|
19
|
-
readonly pollId:
|
|
16
|
+
readonly pollId: TID;
|
|
20
17
|
/** Hash of voter ID (for vote events) */
|
|
21
18
|
readonly voterIdHash?: Uint8Array;
|
|
22
19
|
/** Authority/creator ID (for creation/closure events) */
|
|
23
|
-
readonly authorityId?:
|
|
20
|
+
readonly authorityId?: TID;
|
|
24
21
|
/** Hash of previous entry (chain integrity) */
|
|
25
22
|
readonly previousHash: Uint8Array;
|
|
26
23
|
/** Hash of this entry's data */
|
|
@@ -30,40 +27,40 @@ export interface AuditEntry {
|
|
|
30
27
|
/** Additional metadata */
|
|
31
28
|
readonly metadata?: Record<string, unknown>;
|
|
32
29
|
}
|
|
33
|
-
export interface AuditLog {
|
|
30
|
+
export interface AuditLog<TID extends PlatformID> {
|
|
34
31
|
/** Get all entries in chronological order */
|
|
35
|
-
getEntries(): readonly AuditEntry[];
|
|
32
|
+
getEntries(): readonly AuditEntry<TID>[];
|
|
36
33
|
/** Get entries for a specific poll */
|
|
37
|
-
getEntriesForPoll(pollId:
|
|
34
|
+
getEntriesForPoll(pollId: TID): readonly AuditEntry<TID>[];
|
|
38
35
|
/** Verify the entire chain integrity */
|
|
39
36
|
verifyChain(): boolean;
|
|
40
37
|
/** Verify a specific entry's signature */
|
|
41
|
-
verifyEntry(entry: AuditEntry): boolean;
|
|
38
|
+
verifyEntry(entry: AuditEntry<TID>): boolean;
|
|
42
39
|
}
|
|
43
40
|
/**
|
|
44
41
|
* Immutable audit log with cryptographic hash chain
|
|
45
42
|
*/
|
|
46
|
-
export declare class ImmutableAuditLog implements AuditLog {
|
|
43
|
+
export declare class ImmutableAuditLog<TID extends PlatformID> implements AuditLog<TID> {
|
|
47
44
|
private readonly entries;
|
|
48
45
|
private readonly authority;
|
|
49
46
|
private sequence;
|
|
50
|
-
constructor(authority: IMember);
|
|
47
|
+
constructor(authority: IMember<TID>);
|
|
51
48
|
/**
|
|
52
49
|
* Record poll creation event
|
|
53
50
|
*/
|
|
54
|
-
recordPollCreated(pollId:
|
|
51
|
+
recordPollCreated(pollId: TID, metadata?: Record<string, unknown>): AuditEntry<TID>;
|
|
55
52
|
/**
|
|
56
53
|
* Record vote cast event
|
|
57
54
|
*/
|
|
58
|
-
recordVoteCast(pollId:
|
|
55
|
+
recordVoteCast(pollId: TID, voterIdHash: Uint8Array, metadata?: Record<string, unknown>): AuditEntry<TID>;
|
|
59
56
|
/**
|
|
60
57
|
* Record poll closure event
|
|
61
58
|
*/
|
|
62
|
-
recordPollClosed(pollId:
|
|
63
|
-
getEntries(): readonly AuditEntry[];
|
|
64
|
-
getEntriesForPoll(pollId:
|
|
59
|
+
recordPollClosed(pollId: TID, metadata?: Record<string, unknown>): AuditEntry<TID>;
|
|
60
|
+
getEntries(): readonly AuditEntry<TID>[];
|
|
61
|
+
getEntriesForPoll(pollId: TID): readonly AuditEntry<TID>[];
|
|
65
62
|
verifyChain(): boolean;
|
|
66
|
-
verifyEntry(entry: AuditEntry): boolean;
|
|
63
|
+
verifyEntry(entry: AuditEntry<TID>): boolean;
|
|
67
64
|
private appendEntry;
|
|
68
65
|
private computeEntryHash;
|
|
69
66
|
private serializeEntryForHashing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/audit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/audit.ts"],"names":[],"mappings":"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"}
|
package/src/lib/voting/audit.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ImmutableAuditLog = exports.AuditEventType = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Immutable Audit Log for Government-Grade Voting
|
|
6
|
+
* Implements requirement 1.1: Cryptographically signed, hash-chained audit trail
|
|
7
|
+
*/
|
|
8
|
+
const constants_1 = require("../../constants");
|
|
4
9
|
var AuditEventType;
|
|
5
10
|
(function (AuditEventType) {
|
|
6
11
|
AuditEventType["PollCreated"] = "poll_created";
|
|
@@ -54,8 +59,8 @@ class ImmutableAuditLog {
|
|
|
54
59
|
return Object.freeze([...this.entries]);
|
|
55
60
|
}
|
|
56
61
|
getEntriesForPoll(pollId) {
|
|
57
|
-
const pollIdStr = this.toHex(pollId);
|
|
58
|
-
return Object.freeze(this.entries.filter((e) => this.toHex(e.pollId) === pollIdStr));
|
|
62
|
+
const pollIdStr = this.toHex(constants_1.Constants.idProvider.toBytes(pollId));
|
|
63
|
+
return Object.freeze(this.entries.filter((e) => this.toHex(constants_1.Constants.idProvider.toBytes(e.pollId)) === pollIdStr));
|
|
59
64
|
}
|
|
60
65
|
verifyChain() {
|
|
61
66
|
if (this.entries.length === 0)
|
|
@@ -115,13 +120,13 @@ class ImmutableAuditLog {
|
|
|
115
120
|
this.encodeNumber(entry.sequence),
|
|
116
121
|
this.encodeString(entry.eventType),
|
|
117
122
|
this.encodeNumber(entry.timestamp),
|
|
118
|
-
entry.pollId,
|
|
123
|
+
constants_1.Constants.idProvider.toBytes(entry.pollId),
|
|
119
124
|
entry.previousHash,
|
|
120
125
|
];
|
|
121
126
|
if (entry.voterIdHash)
|
|
122
127
|
parts.push(entry.voterIdHash);
|
|
123
128
|
if (entry.authorityId)
|
|
124
|
-
parts.push(entry.authorityId);
|
|
129
|
+
parts.push(constants_1.Constants.idProvider.toBytes(entry.authorityId));
|
|
125
130
|
if (entry.metadata)
|
|
126
131
|
parts.push(this.encodeString(JSON.stringify(entry.metadata)));
|
|
127
132
|
return this.concat(parts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/audit.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,31 +4,32 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { PublicKey } from 'paillier-bigint';
|
|
6
6
|
import { VotingMethod, type EncryptedVote } from './types';
|
|
7
|
-
|
|
7
|
+
import { PlatformID } from '../../interfaces';
|
|
8
|
+
export declare class VoteEncoder<TID extends PlatformID = Uint8Array> {
|
|
8
9
|
private readonly votingPublicKey;
|
|
9
10
|
constructor(votingPublicKey: PublicKey);
|
|
10
11
|
/**
|
|
11
12
|
* Encode a plurality vote (single choice)
|
|
12
13
|
*/
|
|
13
|
-
encodePlurality(choiceIndex: number, choiceCount: number): EncryptedVote
|
|
14
|
+
encodePlurality(choiceIndex: number, choiceCount: number): EncryptedVote<TID>;
|
|
14
15
|
/**
|
|
15
16
|
* Encode an approval vote (multiple choices)
|
|
16
17
|
*/
|
|
17
|
-
encodeApproval(choices: number[], choiceCount: number): EncryptedVote
|
|
18
|
+
encodeApproval(choices: number[], choiceCount: number): EncryptedVote<TID>;
|
|
18
19
|
/**
|
|
19
20
|
* Encode a weighted vote
|
|
20
21
|
*/
|
|
21
|
-
encodeWeighted(choiceIndex: number, weight: bigint, choiceCount: number): EncryptedVote
|
|
22
|
+
encodeWeighted(choiceIndex: number, weight: bigint, choiceCount: number): EncryptedVote<TID>;
|
|
22
23
|
/**
|
|
23
24
|
* Encode a Borda count vote (ranked with points)
|
|
24
25
|
* First choice gets N points, second gets N-1, etc.
|
|
25
26
|
*/
|
|
26
|
-
encodeBorda(rankings: number[], choiceCount: number): EncryptedVote
|
|
27
|
+
encodeBorda(rankings: number[], choiceCount: number): EncryptedVote<TID>;
|
|
27
28
|
/**
|
|
28
29
|
* Encode a ranked choice vote (for IRV/STV)
|
|
29
30
|
* Stores ranking order, not points
|
|
30
31
|
*/
|
|
31
|
-
encodeRankedChoice(rankings: number[], choiceCount: number): EncryptedVote
|
|
32
|
+
encodeRankedChoice(rankings: number[], choiceCount: number): EncryptedVote<TID>;
|
|
32
33
|
/**
|
|
33
34
|
* Encode vote based on method
|
|
34
35
|
*/
|
|
@@ -37,6 +38,6 @@ export declare class VoteEncoder {
|
|
|
37
38
|
choices?: number[];
|
|
38
39
|
rankings?: number[];
|
|
39
40
|
weight?: bigint;
|
|
40
|
-
}, choiceCount: number): EncryptedVote
|
|
41
|
+
}, choiceCount: number): EncryptedVote<TID>;
|
|
41
42
|
}
|
|
42
43
|
//# sourceMappingURL=encoder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/encoder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/encoder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,qBAAa,WAAW,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,SAAS;IAEvD;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC;IAkB7E;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC;IAkB1E;;OAEG;IACH,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,aAAa,CAAC,GAAG,CAAC;IAkBrB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC;IAwBxE;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC;IAsB/E;;OAEG;IACH,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;CAwDtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/encoder.ts"],"names":[],"mappings":";;;AAKA,mCAA2D;
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,29 +2,30 @@
|
|
|
2
2
|
* Voting System Usage Examples
|
|
3
3
|
* Shows how to use with ecies-lib Member class
|
|
4
4
|
*/
|
|
5
|
+
import { PlatformID } from '../../interfaces';
|
|
5
6
|
/**
|
|
6
7
|
* Example 1: Simple Plurality Vote
|
|
7
8
|
*/
|
|
8
|
-
declare function examplePlurality(): Promise<void>;
|
|
9
|
+
declare function examplePlurality<TID extends PlatformID>(): Promise<void>;
|
|
9
10
|
/**
|
|
10
11
|
* Example 2: Ranked Choice Voting (True IRV)
|
|
11
12
|
*/
|
|
12
|
-
declare function exampleRankedChoice(): Promise<void>;
|
|
13
|
+
declare function exampleRankedChoice<TID extends PlatformID>(): Promise<void>;
|
|
13
14
|
/**
|
|
14
15
|
* Example 3: Weighted Voting (Stakeholder)
|
|
15
16
|
*/
|
|
16
|
-
declare function exampleWeighted(): Promise<void>;
|
|
17
|
+
declare function exampleWeighted<TID extends PlatformID = Uint8Array>(): Promise<void>;
|
|
17
18
|
/**
|
|
18
19
|
* Example 4: Borda Count
|
|
19
20
|
*/
|
|
20
|
-
declare function exampleBorda(): Promise<void>;
|
|
21
|
+
declare function exampleBorda<TID extends PlatformID = Uint8Array>(): Promise<void>;
|
|
21
22
|
/**
|
|
22
23
|
* Example 5: Approval Voting
|
|
23
24
|
*/
|
|
24
|
-
declare function exampleApproval(): Promise<void>;
|
|
25
|
+
declare function exampleApproval<TID extends PlatformID = Uint8Array>(): Promise<void>;
|
|
25
26
|
/**
|
|
26
27
|
* Example 6: Receipt Verification
|
|
27
28
|
*/
|
|
28
|
-
declare function exampleReceipts(): Promise<void>;
|
|
29
|
+
declare function exampleReceipts<TID extends PlatformID>(): Promise<void>;
|
|
29
30
|
export { examplePlurality, exampleRankedChoice, exampleWeighted, exampleBorda, exampleApproval, exampleReceipts, };
|
|
30
31
|
//# sourceMappingURL=examples.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/examples.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/voting/examples.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAgC,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAW5E;;GAEG;AACH,iBAAe,gBAAgB,CAAC,GAAG,SAAS,UAAU,mBAiCrD;AAED;;GAEG;AACH,iBAAe,mBAAmB,CAAC,GAAG,SAAS,UAAU,mBAqCxD;AAED;;GAEG;AACH,iBAAe,eAAe,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,mBAgCjE;AAED;;GAEG;AACH,iBAAe,YAAY,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,mBA8B9D;AAED;;GAEG;AACH,iBAAe,eAAe,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,mBAgCjE;AAED;;GAEG;AACH,iBAAe,eAAe,CAAC,GAAG,SAAS,UAAU,mBAkBpD;AAcD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,CAAC"}
|
|
@@ -10,27 +10,32 @@ exports.exampleWeighted = exampleWeighted;
|
|
|
10
10
|
exports.exampleBorda = exampleBorda;
|
|
11
11
|
exports.exampleApproval = exampleApproval;
|
|
12
12
|
exports.exampleReceipts = exampleReceipts;
|
|
13
|
+
const constants_1 = require("../../constants");
|
|
14
|
+
const email_string_1 = require("../../email-string");
|
|
15
|
+
const enumerations_1 = require("../../enumerations");
|
|
16
|
+
const member_1 = require("../../member");
|
|
17
|
+
const services_1 = require("../../services");
|
|
13
18
|
const index_1 = require("./index");
|
|
14
19
|
/**
|
|
15
20
|
* Example 1: Simple Plurality Vote
|
|
16
21
|
*/
|
|
17
22
|
async function examplePlurality() {
|
|
18
23
|
// Create authority (poll creator)
|
|
19
|
-
const authority =
|
|
24
|
+
const authority = createMemberWithVotingKeys();
|
|
20
25
|
// Create poll
|
|
21
|
-
const poll = index_1.PollFactory.createPlurality(['Alice', 'Bob', 'Charlie'], authority);
|
|
26
|
+
const poll = index_1.PollFactory.createPlurality(['Alice', 'Bob', 'Charlie'], authority.member);
|
|
22
27
|
// Create voters
|
|
23
|
-
const voter1 =
|
|
24
|
-
const voter2 =
|
|
25
|
-
const voter3 =
|
|
28
|
+
const voter1 = createMemberWithVotingKeys();
|
|
29
|
+
const voter2 = createMemberWithVotingKeys();
|
|
30
|
+
const voter3 = createMemberWithVotingKeys();
|
|
26
31
|
// Cast votes
|
|
27
|
-
const encoder = new index_1.VoteEncoder(authority.votingPublicKey);
|
|
28
|
-
poll.vote(voter1, encoder.encodePlurality(0, 3)); // Alice
|
|
29
|
-
poll.vote(voter2, encoder.encodePlurality(0, 3)); // Alice
|
|
30
|
-
poll.vote(voter3, encoder.encodePlurality(1, 3)); // Bob
|
|
32
|
+
const encoder = new index_1.VoteEncoder(authority.member.votingPublicKey);
|
|
33
|
+
poll.vote(voter1.member, encoder.encodePlurality(0, 3)); // Alice
|
|
34
|
+
poll.vote(voter2.member, encoder.encodePlurality(0, 3)); // Alice
|
|
35
|
+
poll.vote(voter3.member, encoder.encodePlurality(1, 3)); // Bob
|
|
31
36
|
// Close and tally
|
|
32
37
|
poll.close();
|
|
33
|
-
const tallier = new index_1.PollTallier(authority, authority.votingPrivateKey, authority.votingPublicKey);
|
|
38
|
+
const tallier = new index_1.PollTallier(authority.member, authority.member.votingPrivateKey, authority.member.votingPublicKey);
|
|
34
39
|
const results = tallier.tally(poll);
|
|
35
40
|
console.log('Winner:', results.choices[results.winner]); // Alice
|
|
36
41
|
console.log('Tallies:', results.tallies); // [2n, 1n, 0n]
|
|
@@ -39,23 +44,23 @@ async function examplePlurality() {
|
|
|
39
44
|
* Example 2: Ranked Choice Voting (True IRV)
|
|
40
45
|
*/
|
|
41
46
|
async function exampleRankedChoice() {
|
|
42
|
-
const authority =
|
|
43
|
-
const poll = index_1.PollFactory.createRankedChoice(['Alice', 'Bob', 'Charlie', 'Diana'], authority);
|
|
44
|
-
const encoder = new index_1.VoteEncoder(authority.votingPublicKey);
|
|
47
|
+
const authority = createMemberWithVotingKeys();
|
|
48
|
+
const poll = index_1.PollFactory.createRankedChoice(['Alice', 'Bob', 'Charlie', 'Diana'], authority.member);
|
|
49
|
+
const encoder = new index_1.VoteEncoder(authority.member.votingPublicKey);
|
|
45
50
|
// Voter 1: Alice > Bob > Charlie
|
|
46
51
|
const voter1 = await createMemberWithVotingKeys();
|
|
47
|
-
poll.vote(voter1, encoder.encodeRankedChoice([0, 1, 2], 4));
|
|
52
|
+
poll.vote(voter1.member, encoder.encodeRankedChoice([0, 1, 2], 4));
|
|
48
53
|
// Voter 2: Bob > Alice > Diana
|
|
49
54
|
const voter2 = await createMemberWithVotingKeys();
|
|
50
|
-
poll.vote(voter2, encoder.encodeRankedChoice([1, 0, 3], 4));
|
|
55
|
+
poll.vote(voter2.member, encoder.encodeRankedChoice([1, 0, 3], 4));
|
|
51
56
|
// Voter 3: Charlie > Diana > Bob
|
|
52
57
|
const voter3 = await createMemberWithVotingKeys();
|
|
53
|
-
poll.vote(voter3, encoder.encodeRankedChoice([2, 3, 1], 4));
|
|
58
|
+
poll.vote(voter3.member, encoder.encodeRankedChoice([2, 3, 1], 4));
|
|
54
59
|
// Voter 4: Alice > Charlie
|
|
55
60
|
const voter4 = await createMemberWithVotingKeys();
|
|
56
|
-
poll.vote(voter4, encoder.encodeRankedChoice([0, 2], 4));
|
|
61
|
+
poll.vote(voter4.member, encoder.encodeRankedChoice([0, 2], 4));
|
|
57
62
|
poll.close();
|
|
58
|
-
const tallier = new index_1.PollTallier(authority, authority.votingPrivateKey, authority.votingPublicKey);
|
|
63
|
+
const tallier = new index_1.PollTallier(authority.member, authority.member.votingPrivateKey, authority.member.votingPublicKey);
|
|
59
64
|
const results = tallier.tally(poll);
|
|
60
65
|
console.log('Winner:', results.choices[results.winner]);
|
|
61
66
|
console.log('Rounds:', results.rounds);
|
|
@@ -66,19 +71,19 @@ async function exampleRankedChoice() {
|
|
|
66
71
|
*/
|
|
67
72
|
async function exampleWeighted() {
|
|
68
73
|
const authority = await createMemberWithVotingKeys();
|
|
69
|
-
const poll = index_1.PollFactory.createWeighted(['Proposal A', 'Proposal B'], authority, 1000n);
|
|
70
|
-
const encoder = new index_1.VoteEncoder(authority.votingPublicKey);
|
|
74
|
+
const poll = index_1.PollFactory.createWeighted(['Proposal A', 'Proposal B'], authority.member, 1000n);
|
|
75
|
+
const encoder = new index_1.VoteEncoder(authority.member.votingPublicKey);
|
|
71
76
|
// Large stakeholder
|
|
72
77
|
const whale = await createMemberWithVotingKeys();
|
|
73
|
-
poll.vote(whale, encoder.encodeWeighted(0, 500n, 2));
|
|
78
|
+
poll.vote(whale.member, encoder.encodeWeighted(0, 500n, 2));
|
|
74
79
|
// Medium stakeholder
|
|
75
80
|
const dolphin = await createMemberWithVotingKeys();
|
|
76
|
-
poll.vote(dolphin, encoder.encodeWeighted(1, 200n, 2));
|
|
81
|
+
poll.vote(dolphin.member, encoder.encodeWeighted(1, 200n, 2));
|
|
77
82
|
// Small stakeholder
|
|
78
83
|
const shrimp = await createMemberWithVotingKeys();
|
|
79
|
-
poll.vote(shrimp, encoder.encodeWeighted(1, 50n, 2));
|
|
84
|
+
poll.vote(shrimp.member, encoder.encodeWeighted(1, 50n, 2));
|
|
80
85
|
poll.close();
|
|
81
|
-
const tallier = new index_1.PollTallier(authority, authority.votingPrivateKey, authority.votingPublicKey);
|
|
86
|
+
const tallier = new index_1.PollTallier(authority.member, authority.member.votingPrivateKey, authority.member.votingPublicKey);
|
|
82
87
|
const results = tallier.tally(poll);
|
|
83
88
|
console.log('Results:', results.tallies); // [500n, 250n]
|
|
84
89
|
}
|
|
@@ -87,17 +92,17 @@ async function exampleWeighted() {
|
|
|
87
92
|
*/
|
|
88
93
|
async function exampleBorda() {
|
|
89
94
|
const authority = await createMemberWithVotingKeys();
|
|
90
|
-
const poll = index_1.PollFactory.createBorda(['Option A', 'Option B', 'Option C'], authority);
|
|
91
|
-
const encoder = new index_1.VoteEncoder(authority.votingPublicKey);
|
|
95
|
+
const poll = index_1.PollFactory.createBorda(['Option A', 'Option B', 'Option C'], authority.member);
|
|
96
|
+
const encoder = new index_1.VoteEncoder(authority.member.votingPublicKey);
|
|
92
97
|
// Each voter ranks all options
|
|
93
98
|
const voter1 = await createMemberWithVotingKeys();
|
|
94
|
-
poll.vote(voter1, encoder.encodeBorda([0, 1, 2], 3)); // A=3, B=2, C=1
|
|
99
|
+
poll.vote(voter1.member, encoder.encodeBorda([0, 1, 2], 3)); // A=3, B=2, C=1
|
|
95
100
|
const voter2 = await createMemberWithVotingKeys();
|
|
96
|
-
poll.vote(voter2, encoder.encodeBorda([1, 0, 2], 3)); // B=3, A=2, C=1
|
|
101
|
+
poll.vote(voter2.member, encoder.encodeBorda([1, 0, 2], 3)); // B=3, A=2, C=1
|
|
97
102
|
const voter3 = await createMemberWithVotingKeys();
|
|
98
|
-
poll.vote(voter3, encoder.encodeBorda([0, 2, 1], 3)); // A=3, C=2, B=1
|
|
103
|
+
poll.vote(voter3.member, encoder.encodeBorda([0, 2, 1], 3)); // A=3, C=2, B=1
|
|
99
104
|
poll.close();
|
|
100
|
-
const tallier = new index_1.PollTallier(authority, authority.votingPrivateKey, authority.votingPublicKey);
|
|
105
|
+
const tallier = new index_1.PollTallier(authority.member, authority.member.votingPrivateKey, authority.member.votingPublicKey);
|
|
101
106
|
const results = tallier.tally(poll);
|
|
102
107
|
console.log('Points:', results.tallies); // [8n, 6n, 4n]
|
|
103
108
|
console.log('Winner:', results.choices[results.winner]); // Option A
|
|
@@ -107,19 +112,19 @@ async function exampleBorda() {
|
|
|
107
112
|
*/
|
|
108
113
|
async function exampleApproval() {
|
|
109
114
|
const authority = await createMemberWithVotingKeys();
|
|
110
|
-
const poll = index_1.PollFactory.createApproval(['Red', 'Green', 'Blue', 'Yellow'], authority);
|
|
111
|
-
const encoder = new index_1.VoteEncoder(authority.votingPublicKey);
|
|
115
|
+
const poll = index_1.PollFactory.createApproval(['Red', 'Green', 'Blue', 'Yellow'], authority.member);
|
|
116
|
+
const encoder = new index_1.VoteEncoder(authority.member.votingPublicKey);
|
|
112
117
|
// Voter 1 approves Red and Blue
|
|
113
118
|
const voter1 = await createMemberWithVotingKeys();
|
|
114
|
-
poll.vote(voter1, encoder.encodeApproval([0, 2], 4));
|
|
119
|
+
poll.vote(voter1.member, encoder.encodeApproval([0, 2], 4));
|
|
115
120
|
// Voter 2 approves Green and Blue
|
|
116
121
|
const voter2 = await createMemberWithVotingKeys();
|
|
117
|
-
poll.vote(voter2, encoder.encodeApproval([1, 2], 4));
|
|
122
|
+
poll.vote(voter2.member, encoder.encodeApproval([1, 2], 4));
|
|
118
123
|
// Voter 3 approves only Blue
|
|
119
124
|
const voter3 = await createMemberWithVotingKeys();
|
|
120
|
-
poll.vote(voter3, encoder.encodeApproval([2], 4));
|
|
125
|
+
poll.vote(voter3.member, encoder.encodeApproval([2], 4));
|
|
121
126
|
poll.close();
|
|
122
|
-
const tallier = new index_1.PollTallier(authority, authority.votingPrivateKey, authority.votingPublicKey);
|
|
127
|
+
const tallier = new index_1.PollTallier(authority.member, authority.member.votingPrivateKey, authority.member.votingPublicKey);
|
|
123
128
|
const results = tallier.tally(poll);
|
|
124
129
|
console.log('Approvals:', results.tallies); // [1n, 1n, 3n, 0n]
|
|
125
130
|
console.log('Winner:', results.choices[results.winner]); // Blue
|
|
@@ -129,25 +134,27 @@ async function exampleApproval() {
|
|
|
129
134
|
*/
|
|
130
135
|
async function exampleReceipts() {
|
|
131
136
|
const authority = await createMemberWithVotingKeys();
|
|
132
|
-
const poll = index_1.PollFactory.createPlurality(['Yes', 'No'], authority);
|
|
137
|
+
const poll = index_1.PollFactory.createPlurality(['Yes', 'No'], authority.member);
|
|
133
138
|
const voter = await createMemberWithVotingKeys();
|
|
134
|
-
const encoder = new index_1.VoteEncoder(authority.votingPublicKey);
|
|
139
|
+
const encoder = new index_1.VoteEncoder(authority.member.votingPublicKey);
|
|
135
140
|
// Cast vote and get receipt
|
|
136
|
-
const receipt = poll.vote(voter, encoder.encodePlurality(0, 2));
|
|
141
|
+
const receipt = poll.vote(voter.member, encoder.encodePlurality(0, 2));
|
|
137
142
|
// Verify receipt
|
|
138
|
-
const isValid = poll.verifyReceipt(voter, receipt);
|
|
143
|
+
const isValid = poll.verifyReceipt(voter.member, receipt);
|
|
139
144
|
console.log('Receipt valid:', isValid); // true
|
|
140
145
|
// Try to verify with wrong voter
|
|
141
146
|
const otherVoter = await createMemberWithVotingKeys();
|
|
142
|
-
const isInvalid = poll.verifyReceipt(otherVoter, receipt);
|
|
147
|
+
const isInvalid = poll.verifyReceipt(otherVoter.member, receipt);
|
|
143
148
|
console.log('Wrong voter:', isInvalid); // false
|
|
144
149
|
}
|
|
145
150
|
/**
|
|
146
151
|
* Helper: Create member with voting keys derived from ECDH
|
|
147
152
|
*/
|
|
148
|
-
|
|
153
|
+
function createMemberWithVotingKeys(name = 'Voter', email = 'voter@example.com', memberType = enumerations_1.MemberType.Anonymous) {
|
|
149
154
|
// This would use ecies-lib's Member.newMember() and deriveVotingKeys()
|
|
150
155
|
// Placeholder for example purposes
|
|
151
|
-
|
|
156
|
+
const eciesService = new services_1.ECIESService((0, constants_1.getRuntimeConfiguration)());
|
|
157
|
+
const memberWithMnemonic = member_1.Member.newMember(eciesService, memberType, name, new email_string_1.EmailString(email));
|
|
158
|
+
return { member: memberWithMnemonic.member };
|
|
152
159
|
}
|
|
153
160
|
//# sourceMappingURL=examples.js.map
|