@openvtc/trust-tasks 0.26.27 → 0.26.29
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/CHANGELOG.md +49 -0
- package/dist/_shared/components.d.ts +25 -1
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/voting/_shared/0.1/voting.d.ts +1 -1
- package/dist/voting/_shared/0.1/voting.d.ts.map +1 -1
- package/dist/voting/board/read/0.1/payload.d.ts +98 -2
- package/dist/voting/board/read/0.1/payload.d.ts.map +1 -1
- package/dist/voting/board/read/0.1/payload.js +64 -8
- package/dist/voting/board/read/0.1/payload.js.map +1 -1
- package/dist/vta/pcs/trustee/decrypt/0.1/payload.d.ts +3 -3
- package/dist/vta/pcs/trustee/decrypt/0.1/payload.js +1 -1
- package/dist/vta/pcs/trustee/decrypt/0.1/payload.js.map +1 -1
- package/dist/vta/pcs/trustee/read/0.1/payload.d.ts +526 -0
- package/dist/vta/pcs/trustee/read/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/trustee/read/0.1/payload.js +290 -0
- package/dist/vta/pcs/trustee/read/0.1/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_shared/components.ts +25 -1
- package/src/index.ts +1 -0
- package/src/voting/_shared/0.1/voting.ts +1 -1
- package/src/voting/board/read/0.1/payload.ts +66 -10
- package/src/vta/pcs/trustee/decrypt/0.1/payload.ts +2 -2
- package/src/vta/pcs/trustee/read/0.1/payload.ts +369 -0
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,55 @@ The package versions over **its own API** — what a consumer compiles against
|
|
|
11
11
|
not over `SPEC.md`. Below 1.0 a breaking change bumps the leading non-zero
|
|
12
12
|
component.
|
|
13
13
|
|
|
14
|
+
## 0.26.29 — 2026-10-21
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **voting**: Vta/pcs/trustee/read, and trustees read voting/election/show on any board (#855)
|
|
20
|
+
|
|
21
|
+
A trustee could not run its part of a sealed or tallied-encrypted election on a private board
|
|
22
|
+
from a client: the trustee tasks take the manifest, which voting/election/show answers only to
|
|
23
|
+
the community and the auditors there; and a trustee's client, which holds no trustee key, had no
|
|
24
|
+
way to sign the reads a private board answers only to a trustee.
|
|
25
|
+
|
|
26
|
+
- vta/pcs/trustee/read/0.1 (new): the VTA signs voting/trustees/status or voting/election/show
|
|
27
|
+
as the trustee, addressed to the ballot box — the trustee's counterpart of vta/pcs/voter/read.
|
|
28
|
+
Its payload is fixed to { community, electionId }; `read` is closed. Gated on pcsTrustee.
|
|
29
|
+
- voting/election/show answers every trustee the manifest names on any board (CONVENTIONS §4
|
|
30
|
+
gains its own row; §9.6's "Who reads the ceremony" names both reads).
|
|
31
|
+
- vta/pcs/trustee/decrypt: `closedAt` is the board's close entry, or for a client that cannot
|
|
32
|
+
read the board any time at or after the close and not in the future — the election's summary,
|
|
33
|
+
which the field used to point at, carries no close time.
|
|
34
|
+
|
|
35
|
+
## 0.26.28 — 2026-10-21
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- **voting**: Each trustee step on the board is the trustee's signed request (#853)
|
|
41
|
+
|
|
42
|
+
The board recorded each step of the trustees' ceremony as its payload alone, so nothing on it
|
|
43
|
+
showed who took a step. A ballot box could enrol or deal in a trustee's name — a polynomial of its
|
|
44
|
+
own choosing, with matching shares sealed to that trustee's transport key — and every check the
|
|
45
|
+
community, the trustees and certification run would pass while the ballot box held the election
|
|
46
|
+
key, able to open sealed ballots before close. The defence was only that the ballot box runs
|
|
47
|
+
honestly, which VTI-VOT-062 does not let a deployment assume.
|
|
48
|
+
|
|
49
|
+
- A new board entry, `trusteeStep` (appended), carries the trustee's `voting/trustees/enrol`,
|
|
50
|
+
`deal`, `confirm` or `justify` request exactly as the ballot box received it, proof included.
|
|
51
|
+
The `transportKey`, `dealing`, `confirmation` and `justification` kinds are no longer appended,
|
|
52
|
+
and a consumer refuses a board holding one.
|
|
53
|
+
- CONVENTIONS §9.6: whoever replays the ceremony takes a step only when its type, community and
|
|
54
|
+
election are right, its issuer is the trustee the manifest names at the payload's index, and
|
|
55
|
+
its proof is the issuer's. A `partials` entry needs no signature: its Chaum–Pedersen proofs
|
|
56
|
+
already tie it to the trustee's share. `voting/trustees/status` is never evidence of who took a
|
|
57
|
+
step.
|
|
58
|
+
- `vtc/elections/show` item 6: the community forms the key itself by replaying the ceremony from
|
|
59
|
+
the board (open to it on any board), never from `voting/trustees/status`.
|
|
60
|
+
- `vtc/elections/certify` item 8 states the encrypted levels' recount: ceremony, casts and
|
|
61
|
+
partials, from the board alone.
|
|
62
|
+
|
|
14
63
|
## 0.26.27 — 2026-10-21
|
|
15
64
|
|
|
16
65
|
|
|
@@ -388,7 +388,7 @@ export type BlobRef = DigestMultibase;
|
|
|
388
388
|
/**
|
|
389
389
|
* One leaf of a board. A leaf's hash is the RFC 9162 leaf hash of the JCS canonicalization of this object. Entries carry no time of arrival: the order is the board's, and a timestamp would hand anyone who reads the board the timing the registrar's log would need to pair a ticket with its cast.
|
|
390
390
|
*/
|
|
391
|
-
export type BoardEntry = CastEntry | ReplacementEntry | LifecycleEntry | ResultEntry | EncryptedCastEntry | TransportKeyEntry | DealingEntry | ConfirmationEntry | JustificationEntry | ElectionKeyEntry | PartialDecryptionsEntry | UnsealedEntry | SpoiledEntry;
|
|
391
|
+
export type BoardEntry = CastEntry | ReplacementEntry | LifecycleEntry | ResultEntry | EncryptedCastEntry | TransportKeyEntry | DealingEntry | ConfirmationEntry | JustificationEntry | ElectionKeyEntry | PartialDecryptionsEntry | UnsealedEntry | SpoiledEntry | TrusteeStepEntry;
|
|
392
392
|
/**
|
|
393
393
|
* `public`: anyone reads the board. `private`: the community, the auditors the manifest names and, for one cast's inclusion, the holder of its receipt (VTI-VOT-052).
|
|
394
394
|
*/
|
|
@@ -4574,14 +4574,23 @@ export interface EncryptedCastEntry {
|
|
|
4574
4574
|
kind: "encryptedCast";
|
|
4575
4575
|
cast: EncryptedCast;
|
|
4576
4576
|
}
|
|
4577
|
+
/**
|
|
4578
|
+
* Not appended: each enrolment, dealing, confirmation and justification is a `trusteeStep` entry carrying the trustee's signed request (CONVENTIONS §9.6). A consumer MUST refuse a board holding this kind.
|
|
4579
|
+
*/
|
|
4577
4580
|
export interface TransportKeyEntry {
|
|
4578
4581
|
kind: "transportKey";
|
|
4579
4582
|
transportKey: TransportKey;
|
|
4580
4583
|
}
|
|
4584
|
+
/**
|
|
4585
|
+
* Not appended: each enrolment, dealing, confirmation and justification is a `trusteeStep` entry carrying the trustee's signed request (CONVENTIONS §9.6). A consumer MUST refuse a board holding this kind.
|
|
4586
|
+
*/
|
|
4581
4587
|
export interface DealingEntry {
|
|
4582
4588
|
kind: "dealing";
|
|
4583
4589
|
dealing: Dealing;
|
|
4584
4590
|
}
|
|
4591
|
+
/**
|
|
4592
|
+
* Not appended: each enrolment, dealing, confirmation and justification is a `trusteeStep` entry carrying the trustee's signed request (CONVENTIONS §9.6). A consumer MUST refuse a board holding this kind.
|
|
4593
|
+
*/
|
|
4585
4594
|
export interface ConfirmationEntry {
|
|
4586
4595
|
kind: "confirmation";
|
|
4587
4596
|
trustee: TrusteeIndex;
|
|
@@ -4590,6 +4599,9 @@ export interface ConfirmationEntry {
|
|
|
4590
4599
|
*/
|
|
4591
4600
|
complaints: TrusteeIndex[];
|
|
4592
4601
|
}
|
|
4602
|
+
/**
|
|
4603
|
+
* Not appended: each enrolment, dealing, confirmation and justification is a `trusteeStep` entry carrying the trustee's signed request (CONVENTIONS §9.6). A consumer MUST refuse a board holding this kind.
|
|
4604
|
+
*/
|
|
4593
4605
|
export interface JustificationEntry {
|
|
4594
4606
|
kind: "justification";
|
|
4595
4607
|
dealer: TrusteeIndex;
|
|
@@ -4621,6 +4633,13 @@ export interface SpoiledEntry {
|
|
|
4621
4633
|
kind: "spoiled";
|
|
4622
4634
|
leafIndex: number;
|
|
4623
4635
|
}
|
|
4636
|
+
/**
|
|
4637
|
+
* One step of the trustees' ceremony — an enrolment, a dealing, a confirmation or a justification — as the trustee's own signed request, so that anyone reading the board can tell who took it (CONVENTIONS §9.6).
|
|
4638
|
+
*/
|
|
4639
|
+
export interface TrusteeStepEntry {
|
|
4640
|
+
kind: "trusteeStep";
|
|
4641
|
+
request: SignedRequest;
|
|
4642
|
+
}
|
|
4624
4643
|
/**
|
|
4625
4644
|
* A board's tree head (RFC 9162 §2.1). A head is signed by being carried in a document the ballot box signs; whoever keeps a head keeps that whole document.
|
|
4626
4645
|
*/
|
|
@@ -9998,6 +10017,11 @@ export interface SigmaProof {
|
|
|
9998
10017
|
c: GroupScalar;
|
|
9999
10018
|
z: GroupScalar;
|
|
10000
10019
|
}
|
|
10020
|
+
/**
|
|
10021
|
+
* A whole Trust Task request document — `id`, `type`, `issuer`, `payload` and every other member, `proof` included — exactly as the ballot box received it, never re-serialised: its proof is taken over its members, and a re-serialised copy does not reliably reproduce them. Typed as an open object so every member survives; CONVENTIONS §9.6 gives the checks that make it a trustee's step.
|
|
10022
|
+
*/
|
|
10023
|
+
export interface SignedRequest {
|
|
10024
|
+
}
|
|
10001
10025
|
/**
|
|
10002
10026
|
* One signing-key delegation, as its holder sees it. A delegation confers nothing of its own: it names an identity that already holds whatever standing it holds, and a document signed by the key is authorized by that identity's standing read at execution time.
|
|
10003
10027
|
*/
|