@interop/wallet-core 0.9.0 → 0.10.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.
Files changed (45) hide show
  1. package/README.md +8 -3
  2. package/dist/keyring/index.d.ts +1 -1
  3. package/dist/keyring/index.d.ts.map +1 -1
  4. package/dist/keyring/index.js +1 -1
  5. package/dist/keyring/index.js.map +1 -1
  6. package/dist/keyring/unlockSpace.d.ts +27 -0
  7. package/dist/keyring/unlockSpace.d.ts.map +1 -1
  8. package/dist/keyring/unlockSpace.js +31 -0
  9. package/dist/keyring/unlockSpace.js.map +1 -1
  10. package/dist/keys/index.d.ts +8 -1
  11. package/dist/keys/index.d.ts.map +1 -1
  12. package/dist/keys/index.js +7 -1
  13. package/dist/keys/index.js.map +1 -1
  14. package/dist/keys/pukCascade.d.ts +108 -0
  15. package/dist/keys/pukCascade.d.ts.map +1 -0
  16. package/dist/keys/pukCascade.js +182 -0
  17. package/dist/keys/pukCascade.js.map +1 -0
  18. package/dist/keys/pukRoster.d.ts +26 -0
  19. package/dist/keys/pukRoster.d.ts.map +1 -1
  20. package/dist/keys/pukRoster.js +30 -1
  21. package/dist/keys/pukRoster.js.map +1 -1
  22. package/dist/recovery/recoveryWebvh.d.ts.map +1 -1
  23. package/dist/recovery/recoveryWebvh.js +1 -20
  24. package/dist/recovery/recoveryWebvh.js.map +1 -1
  25. package/dist/space/activity.d.ts +30 -0
  26. package/dist/space/activity.d.ts.map +1 -1
  27. package/dist/space/activity.js +33 -0
  28. package/dist/space/activity.js.map +1 -1
  29. package/dist/space/index.d.ts +1 -1
  30. package/dist/space/index.d.ts.map +1 -1
  31. package/dist/space/index.js +1 -1
  32. package/dist/space/index.js.map +1 -1
  33. package/dist/webvh/didWebvh.d.ts +14 -0
  34. package/dist/webvh/didWebvh.d.ts.map +1 -1
  35. package/dist/webvh/didWebvh.js +20 -0
  36. package/dist/webvh/didWebvh.js.map +1 -1
  37. package/dist/webvh/index.d.ts +7 -4
  38. package/dist/webvh/index.d.ts.map +1 -1
  39. package/dist/webvh/index.js +6 -4
  40. package/dist/webvh/index.js.map +1 -1
  41. package/dist/webvh/revokeClient.d.ts +64 -0
  42. package/dist/webvh/revokeClient.d.ts.map +1 -0
  43. package/dist/webvh/revokeClient.js +241 -0
  44. package/dist/webvh/revokeClient.js.map +1 -0
  45. package/package.json +3 -3
@@ -0,0 +1,241 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * Client revocation, the did:webvh half: removing an enrolled wallet client
6
+ * from the document roster. Per the identity model this is a pure roster edit
7
+ * -- nothing shared rotates, because nothing was shared -- and, because a
8
+ * removal reveals no new key, it is a SINGLE log entry (unlike enrollment's
9
+ * two): the client's Ed25519 verification method leaves all four signing
10
+ * relationships, its X25519 twin leaves `keyAgreement`, its update key leaves
11
+ * `updateKeys`, and both of its standing commitments leave `nextKeyHashes` --
12
+ * the carry-over hash of its active update key, and the hash of its staged
13
+ * key.
14
+ *
15
+ * The staged-key hash is the subtle half, and removing it is load-bearing: a
16
+ * hash left committed in `nextKeyHashes` is a standing credential -- an entry
17
+ * verifies against its own re-stated `updateKeys`, each hashing into the
18
+ * previous entry's commitments, so a revoked client whose staged hash
19
+ * survived could author an entry revealing that key and re-seize update
20
+ * authority (the same reveal mechanism recovery uses legitimately). The hash
21
+ * itself is opaque (only the revoked client ever held the staged key), so it
22
+ * is recovered by **log attribution**: every staged commitment was added in
23
+ * the entry that revealed or committed its client's active key -- genesis,
24
+ * an enrollment commit, a rotation, a recovery reveal-and-commit -- and
25
+ * diffing that entry's `nextKeyHashes` against its predecessor isolates it.
26
+ * The one ambiguous shape is a recovery continuation, whose commit entry also
27
+ * carries the replacement code's latent hash; the caller disambiguates by
28
+ * supplying the standing recovery-code hashes it knows
29
+ * (`knownLatentHashes`, from its recovery registry), and a residue of more
30
+ * than one candidate refuses loudly rather than guessing
31
+ * ({@link StagedCommitmentAmbiguousError}) -- removing a wrong hash would
32
+ * either leave the revoked client re-enrollable or brick another party's
33
+ * standing commitment.
34
+ */
35
+ import { deriveNextKeyHash, updateDID } from '@interop/did-method-webvh';
36
+ import { assertCarryOverCommitments, publishWebvhLog, readPublishedLog, relationIds, updateKeyMultibase, updateKeySigner } from './didWebvh.js';
37
+ /**
38
+ * Thrown when the log attribution cannot isolate the revoked client's staged
39
+ * commitment to a single hash -- more than one candidate survives after the
40
+ * known latent (recovery-code) hashes are excluded. Refusing beats guessing:
41
+ * see the module doc. The fix is to pass the standing recovery codes' update-
42
+ * key hashes as `knownLatentHashes`.
43
+ */
44
+ export class StagedCommitmentAmbiguousError extends Error {
45
+ candidates;
46
+ constructor({ candidates }) {
47
+ super("did:webvh: the revoked client's staged-key commitment cannot be " +
48
+ 'isolated in nextKeyHashes (more than one candidate hash); pass the ' +
49
+ "standing recovery codes' update-key hashes as knownLatentHashes.");
50
+ this.name = 'StagedCommitmentAmbiguousError';
51
+ this.candidates = candidates;
52
+ }
53
+ }
54
+ /**
55
+ * The per-entry EFFECTIVE `updateKeys` / `nextKeyHashes` of a log, with
56
+ * did:webvh's carry-forward semantics applied (an entry that omits a
57
+ * parameter inherits the previous entry's value).
58
+ *
59
+ * @param log {DIDLog}
60
+ * @returns {Array<{ updateKeys: string[]; nextKeyHashes: string[] }>}
61
+ */
62
+ function effectiveParameters(log) {
63
+ const out = [];
64
+ let updateKeys = [];
65
+ let nextKeyHashes = [];
66
+ for (const entry of log) {
67
+ if (entry.parameters?.updateKeys) {
68
+ updateKeys = entry.parameters.updateKeys;
69
+ }
70
+ if (entry.parameters?.nextKeyHashes) {
71
+ nextKeyHashes = entry.parameters.nextKeyHashes;
72
+ }
73
+ out.push({ updateKeys, nextKeyHashes });
74
+ }
75
+ return out;
76
+ }
77
+ /**
78
+ * Recovers the revoked client's staged-key hash from the log (see the module
79
+ * doc for why attribution works and where it can be ambiguous). Resolves
80
+ * `undefined` when there is nothing to attribute -- the client's key never
81
+ * entered `updateKeys`, or its commitment event added no other hash (already
82
+ * cleaned up).
83
+ *
84
+ * @param options {object}
85
+ * @param options.log {DIDLog}
86
+ * @param options.revokedUpdateKey {string} the revoked client's active
87
+ * update-key multibase
88
+ * @param options.knownLatentHashes {string[]} standing latent commitments
89
+ * the caller can vouch for (recovery-code update-key hashes)
90
+ * @returns {Promise<string | undefined>}
91
+ */
92
+ async function attributeStagedHash({ log, revokedUpdateKey, knownLatentHashes }) {
93
+ const revokedHash = await deriveNextKeyHash(revokedUpdateKey);
94
+ const params = effectiveParameters(log);
95
+ const added = (index) => {
96
+ const previous = new Set(index > 0 ? params[index - 1].nextKeyHashes : []);
97
+ return new Set(params[index].nextKeyHashes.filter(hash => !previous.has(hash)));
98
+ };
99
+ const prune = (candidates) => {
100
+ candidates.delete(revokedHash);
101
+ for (const hash of knownLatentHashes) {
102
+ candidates.delete(hash);
103
+ }
104
+ return candidates;
105
+ };
106
+ // The entry where the revoked client's active key ENTERED updateKeys (the
107
+ // latest such, in case of anything odd).
108
+ let revealIndex = -1;
109
+ for (let index = params.length - 1; index >= 0; index--) {
110
+ const present = params[index].updateKeys.includes(revokedUpdateKey);
111
+ const before = index > 0 && params[index - 1].updateKeys.includes(revokedUpdateKey);
112
+ if (present && !before) {
113
+ revealIndex = index;
114
+ break;
115
+ }
116
+ }
117
+ if (revealIndex === -1) {
118
+ return undefined;
119
+ }
120
+ // A rotation entry commits the fresh staged hash in the same entry that
121
+ // reveals the new active key (genesis likewise commits both of its hashes
122
+ // in entry one), so the reveal entry's own additions are tried first. An
123
+ // enrollment add or a recovery add-and-retire adds no hash at the reveal.
124
+ const atReveal = prune(added(revealIndex));
125
+ if (atReveal.size === 1) {
126
+ return [...atReveal][0];
127
+ }
128
+ if (atReveal.size > 1) {
129
+ throw new StagedCommitmentAmbiguousError({ candidates: [...atReveal] });
130
+ }
131
+ // Fall back to the entry that COMMITTED the revoked key's own hash (an
132
+ // enrollment commit entry, or a recovery reveal-and-commit): the staged
133
+ // hash was added beside it.
134
+ let commitIndex = -1;
135
+ for (let index = revealIndex; index >= 0; index--) {
136
+ const present = params[index].nextKeyHashes.includes(revokedHash);
137
+ const before = index > 0 && params[index - 1].nextKeyHashes.includes(revokedHash);
138
+ if (present && !before) {
139
+ commitIndex = index;
140
+ break;
141
+ }
142
+ }
143
+ if (commitIndex === -1) {
144
+ return undefined;
145
+ }
146
+ const atCommit = prune(added(commitIndex));
147
+ if (atCommit.size > 1) {
148
+ throw new StagedCommitmentAmbiguousError({ candidates: [...atCommit] });
149
+ }
150
+ return atCommit.size === 1 ? [...atCommit][0] : undefined;
151
+ }
152
+ /**
153
+ * REVOCATION (run by another enrolled client, root authority): removes an
154
+ * enrolled wallet client from the published document -- its two verification
155
+ * methods out of the document and all five relationship arrays, its update
156
+ * key out of `updateKeys`, and its carry-over and staged hashes out of
157
+ * `nextKeyHashes` -- in one log entry (a removal reveals no key, so
158
+ * prerotation forces no commit entry). Under the current-key-set rule this
159
+ * single edit is also the revoked client's pull axis everywhere: its
160
+ * invocations and every delegation it signed stop verifying the moment its
161
+ * verification method leaves the document.
162
+ *
163
+ * Idempotent: a client with no remaining presence (verification methods,
164
+ * update key, commitments all gone) is a no-op, so a naive re-run after a
165
+ * mid-cascade crash converges without forking the log.
166
+ *
167
+ * Self-revocation is refused: the entry is signed by THIS client's active
168
+ * update key, and a client that removed its own key could not have signed
169
+ * the removal the resolver will verify (and would strand the cascade that
170
+ * follows the document edit). Revoking the last remaining client is refused
171
+ * by the same guard.
172
+ *
173
+ * @param options {object}
174
+ * @param options.idStore {WebvhIdStore}
175
+ * @param options.updateKeys {ClientWebvhUpdateKeys} the REVOKING client's
176
+ * own did:webvh update-key seeds
177
+ * @param options.revokedClient {RevokedClientKeys} the revoked client's
178
+ * public halves
179
+ * @param [options.knownLatentHashes] {string[]} standing latent commitments
180
+ * the caller vouches for (the recovery registry's update-key hashes),
181
+ * excluded from the staged-hash attribution
182
+ * @returns {Promise<{ did: string }>}
183
+ */
184
+ export async function revokeWebvhClient({ idStore, updateKeys, revokedClient, knownLatentHashes = [] }) {
185
+ const published = await readPublishedLog({ idStore });
186
+ if (!published) {
187
+ throw new Error('did:webvh: did.jsonl is missing; nothing to revoke from.');
188
+ }
189
+ const { did, doc } = published;
190
+ const activeKey = await updateKeyMultibase({ seed: updateKeys.updateSeed });
191
+ if (revokedClient.updateKeyMultibase === activeKey) {
192
+ throw new Error('did:webvh: a client cannot revoke itself; disconnect this client ' +
193
+ 'from another enrolled client instead.');
194
+ }
195
+ const signingVmId = `${did}#${revokedClient.signingKeyMultibase}`;
196
+ const keyAgreementVmId = `${did}#${revokedClient.keyAgreementKeyMultibase}`;
197
+ const revokedHash = await deriveNextKeyHash(revokedClient.updateKeyMultibase);
198
+ const existingMethods = (doc.verificationMethod ?? []);
199
+ const vmPresent = existingMethods.some(method => method.id === signingVmId || method.id === keyAgreementVmId);
200
+ const keyPresent = published.updateKeys.includes(revokedClient.updateKeyMultibase);
201
+ const hashPresent = published.nextKeyHashes.includes(revokedHash);
202
+ if (!vmPresent && !keyPresent && !hashPresent) {
203
+ return { did };
204
+ }
205
+ if (!published.updateKeys.includes(activeKey)) {
206
+ throw new Error("did:webvh: the published log does not authorize this client's active " +
207
+ 'update key; finalize the pending rotation before revoking a client.');
208
+ }
209
+ await assertCarryOverCommitments({ published });
210
+ // The revoked client's staged commitment, recovered from the log while the
211
+ // log still shows the enrollment (attribution needs the standing entries,
212
+ // so this runs before the removal entry is built).
213
+ const stagedHash = keyPresent
214
+ ? await attributeStagedHash({
215
+ log: published.log,
216
+ revokedUpdateKey: revokedClient.updateKeyMultibase,
217
+ knownLatentHashes
218
+ })
219
+ : undefined;
220
+ const removedHashes = new Set([revokedHash, stagedHash].filter((hash) => hash !== undefined));
221
+ const removedVmIds = new Set([signingVmId, keyAgreementVmId]);
222
+ const signer = await updateKeySigner({ seed: updateKeys.updateSeed });
223
+ const updated = await updateDID({
224
+ log: published.log,
225
+ signer,
226
+ updateKeys: published.updateKeys.filter(key => key !== revokedClient.updateKeyMultibase),
227
+ nextKeyHashes: published.nextKeyHashes.filter(hash => !removedHashes.has(hash)),
228
+ verificationMethods: existingMethods.filter(method => !method.id || !removedVmIds.has(method.id)),
229
+ authentication: relationIds(doc.authentication).filter(id => id !== signingVmId),
230
+ assertionMethod: relationIds(doc.assertionMethod).filter(id => id !== signingVmId),
231
+ keyAgreement: relationIds(doc.keyAgreement).filter(id => id !== keyAgreementVmId),
232
+ capabilityInvocation: relationIds(doc.capabilityInvocation).filter(id => id !== signingVmId),
233
+ capabilityDelegation: relationIds(doc.capabilityDelegation).filter(id => id !== signingVmId)
234
+ });
235
+ if (!updated.webDoc) {
236
+ throw new Error('did:webvh: updateDID returned no webDoc despite the did:web alsoKnownAs.');
237
+ }
238
+ await publishWebvhLog({ idStore, log: updated.log, webDoc: updated.webDoc });
239
+ return { did: updated.did };
240
+ }
241
+ //# sourceMappingURL=revokeClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revokeClient.js","sourceRoot":"","sources":["../../src/webvh/revokeClient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@interop/wallet-core",
3
3
  "description": "Shared wallet-domain logic (WAS sync engine core and wallet Space layout contracts) for Interop wallet apps.",
4
- "version": "0.9.0",
4
+ "version": "0.10.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "build": "pnpm run clear && tsc",
@@ -114,9 +114,9 @@
114
114
  "@interop/ed25519-signature": "^7.1.4",
115
115
  "@interop/ed25519-verification-key": "^8.0.3",
116
116
  "@interop/ezcap": "^7.4.1",
117
- "@interop/security-document-loader": "^9.5.0",
117
+ "@interop/security-document-loader": "^9.5.1",
118
118
  "@interop/vc": "^11.0.6",
119
- "@interop/was-client": "^0.23.0",
119
+ "@interop/was-client": "^0.24.0",
120
120
  "@interop/webkms-client": "^14.7.1",
121
121
  "@interop/x25519-key-agreement-key": "^5.2.1",
122
122
  "@noble/hashes": "^2.2.0",