@openvtc/trust-tasks 0.26.29 → 0.27.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.
- package/CHANGELOG.md +64 -0
- package/dist/_shared/components.d.ts +15 -1
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/persona/contact/get/1.1/payload.d.ts +12 -5
- package/dist/persona/contact/get/1.1/payload.d.ts.map +1 -1
- package/dist/persona/contact/get/1.1/payload.js +4 -4
- package/dist/persona/contact/get/1.1/payload.js.map +1 -1
- package/dist/persona/contact/list/1.1/payload.d.ts +12 -5
- package/dist/persona/contact/list/1.1/payload.d.ts.map +1 -1
- package/dist/persona/contact/list/1.1/payload.js +4 -4
- package/dist/persona/contact/list/1.1/payload.js.map +1 -1
- package/dist/persona/contact/put/1.1/payload.d.ts +32 -6
- package/dist/persona/contact/put/1.1/payload.d.ts.map +1 -1
- package/dist/persona/contact/put/1.1/payload.js +32 -2
- package/dist/persona/contact/put/1.1/payload.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 +58 -2
- package/dist/voting/board/read/0.1/payload.d.ts.map +1 -1
- package/dist/voting/board/read/0.1/payload.js +36 -0
- package/dist/voting/board/read/0.1/payload.js.map +1 -1
- package/dist/voting/trustees/authorize/0.1/payload.d.ts +617 -0
- package/dist/voting/trustees/authorize/0.1/payload.d.ts.map +1 -0
- package/dist/voting/trustees/authorize/0.1/payload.js +386 -0
- package/dist/voting/trustees/authorize/0.1/payload.js.map +1 -0
- package/dist/voting/trustees/status/0.1/payload.d.ts +106 -2
- package/dist/voting/trustees/status/0.1/payload.d.ts.map +1 -1
- package/dist/voting/trustees/status/0.1/payload.js +48 -0
- package/dist/voting/trustees/status/0.1/payload.js.map +1 -1
- package/dist/vta/pcs/trustee/deal/0.2/payload.d.ts +1832 -0
- package/dist/vta/pcs/trustee/deal/0.2/payload.d.ts.map +1 -0
- package/dist/vta/pcs/trustee/deal/0.2/payload.js +1077 -0
- package/dist/vta/pcs/trustee/deal/0.2/payload.js.map +1 -0
- package/dist/vta/pcs/trustee/decrypt/0.2/payload.d.ts +758 -0
- package/dist/vta/pcs/trustee/decrypt/0.2/payload.d.ts.map +1 -0
- package/dist/vta/pcs/trustee/decrypt/0.2/payload.js +423 -0
- package/dist/vta/pcs/trustee/decrypt/0.2/payload.js.map +1 -0
- package/dist/vta/pcs/trustee/justify/0.2/payload.d.ts +1867 -0
- package/dist/vta/pcs/trustee/justify/0.2/payload.d.ts.map +1 -0
- package/dist/vta/pcs/trustee/justify/0.2/payload.js +1095 -0
- package/dist/vta/pcs/trustee/justify/0.2/payload.js.map +1 -0
- package/dist/vta/pcs/trustee/keys/0.2/payload.d.ts +1912 -0
- package/dist/vta/pcs/trustee/keys/0.2/payload.d.ts.map +1 -0
- package/dist/vta/pcs/trustee/keys/0.2/payload.js +1115 -0
- package/dist/vta/pcs/trustee/keys/0.2/payload.js.map +1 -0
- package/dist/vta/pcs/vote-encrypted/0.2/payload.d.ts +2228 -0
- package/dist/vta/pcs/vote-encrypted/0.2/payload.d.ts.map +1 -0
- package/dist/vta/pcs/vote-encrypted/0.2/payload.js +1300 -0
- package/dist/vta/pcs/vote-encrypted/0.2/payload.js.map +1 -0
- package/dist/vtc/elections/show/0.1/payload.d.ts +86 -2
- package/dist/vtc/elections/show/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/elections/show/0.1/payload.js +40 -0
- package/dist/vtc/elections/show/0.1/payload.js.map +1 -1
- package/package.json +1 -1
- package/src/_shared/components.ts +16 -1
- package/src/index.ts +6 -0
- package/src/persona/contact/get/1.1/payload.ts +8 -5
- package/src/persona/contact/list/1.1/payload.ts +8 -5
- package/src/persona/contact/put/1.1/payload.ts +34 -4
- package/src/voting/_shared/0.1/voting.ts +1 -1
- package/src/voting/board/read/0.1/payload.ts +38 -2
- package/src/voting/trustees/authorize/0.1/payload.ts +434 -0
- package/src/voting/trustees/status/0.1/payload.ts +58 -2
- package/src/vta/pcs/trustee/deal/0.2/payload.ts +1148 -0
- package/src/vta/pcs/trustee/decrypt/0.2/payload.ts +500 -0
- package/src/vta/pcs/trustee/justify/0.2/payload.ts +1167 -0
- package/src/vta/pcs/trustee/keys/0.2/payload.ts +1194 -0
- package/src/vta/pcs/vote-encrypted/0.2/payload.ts +1369 -0
- package/src/vtc/elections/show/0.1/payload.ts +46 -2
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,70 @@ 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.27.1 — 2026-10-21
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **voting**: Trustees and voters act only on signed evidence; the community authorizes decryption; the key needs t dealers; ballots bind their tag (#860)
|
|
20
|
+
|
|
21
|
+
* fix(voting): trustees and voters act only on signed evidence; the community authorizes what is decrypted; the key needs t dealers; ballots bind their tag; the board is in order
|
|
22
|
+
|
|
23
|
+
An adversarial review of community voting found that a dishonest ballot box could take the
|
|
24
|
+
trustees' place, and a single corrupt trustee could hold the election key.
|
|
25
|
+
|
|
26
|
+
- **The box could feed the trustees' VTAs.** They acted on values voting/trustees/status reported,
|
|
27
|
+
which carry no trustee's proof. The box could:
|
|
28
|
+
- substitute transport keys, and open the shares sealed to them;
|
|
29
|
+
- invent complaints, and collect the shares revealed in answer;
|
|
30
|
+
- replace dealings, and overwrite a key share;
|
|
31
|
+
- list one voter's ciphertexts as a "total", or a cast before the close, and collect honest
|
|
32
|
+
trustees' partials of it.
|
|
33
|
+
- **One trustee could hold the key.** The key formed from a single qualified dealer, so a corrupt
|
|
34
|
+
trustee complaining of every other dealer at the last moment was left holding it alone.
|
|
35
|
+
- **The voter's VTA took any key.** It encrypted under whatever key it was handed, so a community
|
|
36
|
+
could give one member a key it held.
|
|
37
|
+
- **Ballots could be copied.** Nothing bound a ballot to its cast: a voter could re-cast another's
|
|
38
|
+
encrypted ballot verbatim under their own tag (Cortier–Smyth).
|
|
39
|
+
- **Certification ignored the lifecycle.** It accepted casts after close, a result before it, and
|
|
40
|
+
an early close a manifest forbade.
|
|
41
|
+
|
|
42
|
+
The changes:
|
|
43
|
+
|
|
44
|
+
- **vta/pcs/trustee/{deal,keys,justify,decrypt}/0.2 and vta/pcs/vote-encrypted/0.2** (the 0.1
|
|
45
|
+
versions retire) take the ceremony as its signed steps, which status now carries as `steps`. The
|
|
46
|
+
VTA verifies each step itself (CONVENTIONS §9.6). In particular:
|
|
47
|
+
- deal pins the transport keys it dealt to;
|
|
48
|
+
- justify needs the complainant's own confirm;
|
|
49
|
+
- keys never replaces a held share;
|
|
50
|
+
- the voter's VTA forms the key itself;
|
|
51
|
+
- vtc/elections/show carries `ceremony` for it.
|
|
52
|
+
- **voting/trustees/authorize/0.1 (new).** After close the community computes the decryption
|
|
53
|
+
targets from the board it checked, and signs their digest under the closing head. The box
|
|
54
|
+
accepts it only if its own targets match, and appends a `decryptionAuthorized` entry. A
|
|
55
|
+
trustee's VTA decrypts only an authorized set, once (decrypt/0.2). The box refuses partials
|
|
56
|
+
before an authorization.
|
|
57
|
+
- **CONVENTIONS §9.6 item 5:** the key forms only from at least t qualified dealers, with at least
|
|
58
|
+
t confirmations.
|
|
59
|
+
- **§9.3/§9.4:** an encrypted form's proofs, and a sealed form's AAD, bind the cast's tag. The box
|
|
60
|
+
refuses a form whose ciphertexts are already on the board under another tag.
|
|
61
|
+
- **§3.9 (new):** the board's order — opened, casts, close, authorization, partials, one result
|
|
62
|
+
whose head is the board before it — enforced at certification (`orderInvalid`,
|
|
63
|
+
`ceremonyInvalid` appended to boardInconsistent's faults).
|
|
64
|
+
|
|
65
|
+
## 0.27.0 — 2026-10-21
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### Added
|
|
69
|
+
|
|
70
|
+
- **persona**: Star a directory member whose DID you have not been shown — persona/contact/put/1.1 linking form (#858)
|
|
71
|
+
|
|
72
|
+
A community directory shows members' DIDs to other members only where each member chooses to, so most entries a holder reads carry no DID to file a contact under, and persona/contact/put/1.1 required one (subjectDid) to keep a star, a petname or a list on anyone.
|
|
73
|
+
|
|
74
|
+
put/1.1 gains a third form, LINKING: directoryRef + knownByPersona, without contactId, subjectDid, document or credentialRefs. The agent finds the contact it keeps for that directory entry and persona, or makes one (rev 1, an empty document, no subjectDid), and appends no revision. A later filing naming the member's DID is a contact of its own and is not merged with the linked one (item 4, extended). Two invalid examples pin the form's edges.
|
|
75
|
+
|
|
76
|
+
get/1.1 and list/1.1 responses: subjectDid is no longer required — absent for a linked contact.
|
|
77
|
+
|
|
14
78
|
## 0.26.29 — 2026-10-21
|
|
15
79
|
|
|
16
80
|
|
|
@@ -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 | TrusteeStepEntry;
|
|
391
|
+
export type BoardEntry = CastEntry | ReplacementEntry | LifecycleEntry | ResultEntry | EncryptedCastEntry | TransportKeyEntry | DealingEntry | ConfirmationEntry | JustificationEntry | ElectionKeyEntry | PartialDecryptionsEntry | UnsealedEntry | SpoiledEntry | TrusteeStepEntry | DecryptionAuthorizedEntry;
|
|
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
|
*/
|
|
@@ -1572,6 +1572,13 @@ export type TransferId = string;
|
|
|
1572
1572
|
* How a blob's bytes move. `proxied`: through the host, as chunk documents (rooms/blobs/upload/chunk, rooms/blobs/chunk). `direct`: straight between the member and the storage the room is assigned to, over time-limited URLs the host issues for one object and one method each; the host authorizes every object and verifies every upload, and never carries a byte. Which mode applies is the host's answer, from what the producer accepts, what the room's storage can do, and the room's tier.
|
|
1573
1573
|
*/
|
|
1574
1574
|
export type TransferMode = "direct" | "proxied";
|
|
1575
|
+
/**
|
|
1576
|
+
* The trustees' ceremony as the board holds it: the `request` of every `trusteeStep` entry, in board order, each exactly as the ballot box received it (CONVENTIONS §9.6). Whoever acts on it verifies each step as its trustee's before taking it; nothing in it is believed for having been passed along.
|
|
1577
|
+
*
|
|
1578
|
+
* @minItems 1
|
|
1579
|
+
* @maxItems 4224
|
|
1580
|
+
*/
|
|
1581
|
+
export type TrusteeCeremony = [SignedRequest, ...SignedRequest[]];
|
|
1575
1582
|
/**
|
|
1576
1583
|
* A trustee's index: its position in the manifest's `trustees.dids`, counting from 1.
|
|
1577
1584
|
*/
|
|
@@ -4640,6 +4647,13 @@ export interface TrusteeStepEntry {
|
|
|
4640
4647
|
kind: "trusteeStep";
|
|
4641
4648
|
request: SignedRequest;
|
|
4642
4649
|
}
|
|
4650
|
+
/**
|
|
4651
|
+
* The community's voting/trustees/authorize request, exactly as the ballot box received it: the decryption targets of a closed election, pinned by digest to a head of the board (CONVENTIONS §9.7).
|
|
4652
|
+
*/
|
|
4653
|
+
export interface DecryptionAuthorizedEntry {
|
|
4654
|
+
kind: "decryptionAuthorized";
|
|
4655
|
+
request: SignedRequest;
|
|
4656
|
+
}
|
|
4643
4657
|
/**
|
|
4644
4658
|
* 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.
|
|
4645
4659
|
*/
|