@interop/wallet-core 0.69.0 → 0.70.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 +17 -28
- package/dist/clientAnnex/ladder.d.ts +103 -57
- package/dist/clientAnnex/ladder.d.ts.map +1 -1
- package/dist/clientAnnex/ladder.js +254 -335
- package/dist/clientAnnex/ladder.js.map +1 -1
- package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
- package/dist/clientAnnex/ladderAnchored.js +10 -5
- package/dist/clientAnnex/ladderAnchored.js.map +1 -1
- package/dist/clientAnnex/recoveryLadderAnchored.d.ts +3 -15
- package/dist/clientAnnex/recoveryLadderAnchored.d.ts.map +1 -1
- package/dist/clientAnnex/recoveryLadderAnchored.js +22 -3
- package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
- package/dist/clients/grantState.d.ts +67 -0
- package/dist/clients/grantState.d.ts.map +1 -0
- package/dist/clients/grantState.js +72 -0
- package/dist/clients/grantState.js.map +1 -0
- package/dist/clients/index.d.ts +7 -0
- package/dist/clients/index.d.ts.map +1 -1
- package/dist/clients/index.js +6 -0
- package/dist/clients/index.js.map +1 -1
- package/dist/enrollment/connectCode.d.ts +4 -3
- package/dist/enrollment/connectCode.d.ts.map +1 -1
- package/dist/enrollment/connectCode.js +4 -3
- package/dist/enrollment/connectCode.js.map +1 -1
- package/dist/enrollment/index.d.ts +2 -2
- package/dist/enrollment/index.js +2 -2
- package/dist/enrollment/onboardingInvite.d.ts +1 -1
- package/dist/enrollment/onboardingInvite.js +1 -1
- package/dist/enrollment/onboardingResponse.js +1 -1
- package/dist/identity/index.d.ts +1 -1
- package/dist/identity/index.js +1 -1
- package/dist/index.d.ts +4 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -8
- package/dist/index.js.map +1 -1
- package/dist/keyring/kdf.d.ts +33 -19
- package/dist/keyring/kdf.d.ts.map +1 -1
- package/dist/keyring/kdf.js +36 -25
- package/dist/keyring/kdf.js.map +1 -1
- package/dist/recovery/continuation.d.ts +5 -4
- package/dist/recovery/continuation.d.ts.map +1 -1
- package/dist/recovery/continuation.js +14 -13
- package/dist/recovery/continuation.js.map +1 -1
- package/dist/resourceLog/document.d.ts +10 -2
- package/dist/resourceLog/document.d.ts.map +1 -1
- package/dist/resourceLog/document.js +1 -2
- package/dist/resourceLog/document.js.map +1 -1
- package/dist/space/index.d.ts +4 -2
- package/dist/space/index.d.ts.map +1 -1
- package/dist/space/index.js +4 -2
- package/dist/space/index.js.map +1 -1
- package/dist/space/wasLink.d.ts +13 -2
- package/dist/space/wasLink.d.ts.map +1 -1
- package/dist/space/wasLink.js +28 -2
- package/dist/space/wasLink.js.map +1 -1
- package/dist/unlock/index.d.ts +1 -1
- package/dist/unlock/index.d.ts.map +1 -1
- package/dist/unlock/index.js.map +1 -1
- package/dist/unlock/standingWebvh.d.ts +81 -19
- package/dist/unlock/standingWebvh.d.ts.map +1 -1
- package/dist/unlock/standingWebvh.js +170 -30
- package/dist/unlock/standingWebvh.js.map +1 -1
- package/dist/webvh/did.d.ts +2 -4
- package/dist/webvh/did.d.ts.map +1 -1
- package/dist/webvh/did.js +2 -4
- package/dist/webvh/did.js.map +1 -1
- package/dist/webvh/didWebvh.d.ts +3 -2
- package/dist/webvh/didWebvh.d.ts.map +1 -1
- package/dist/webvh/didWebvh.js +2 -1
- package/dist/webvh/didWebvh.js.map +1 -1
- package/dist/webvh/revokeClient.d.ts +13 -7
- package/dist/webvh/revokeClient.d.ts.map +1 -1
- package/dist/webvh/revokeClient.js +14 -7
- package/dist/webvh/revokeClient.js.map +1 -1
- package/package.json +1 -16
- package/dist/request/appKey.d.ts +0 -295
- package/dist/request/appKey.d.ts.map +0 -1
- package/dist/request/appKey.js +0 -516
- package/dist/request/appKey.js.map +0 -1
- package/dist/request/capabilityRequest.d.ts +0 -41
- package/dist/request/capabilityRequest.d.ts.map +0 -1
- package/dist/request/capabilityRequest.js +0 -46
- package/dist/request/capabilityRequest.js.map +0 -1
- package/dist/request/classify.d.ts +0 -226
- package/dist/request/classify.d.ts.map +0 -1
- package/dist/request/classify.js +0 -416
- package/dist/request/classify.js.map +0 -1
- package/dist/request/composeVp.d.ts +0 -52
- package/dist/request/composeVp.d.ts.map +0 -1
- package/dist/request/composeVp.js +0 -176
- package/dist/request/composeVp.js.map +0 -1
- package/dist/request/ephemeralExchange.d.ts +0 -100
- package/dist/request/ephemeralExchange.d.ts.map +0 -1
- package/dist/request/ephemeralExchange.js +0 -230
- package/dist/request/ephemeralExchange.js.map +0 -1
- package/dist/request/exchangeClient.d.ts +0 -142
- package/dist/request/exchangeClient.d.ts.map +0 -1
- package/dist/request/exchangeClient.js +0 -241
- package/dist/request/exchangeClient.js.map +0 -1
- package/dist/request/index.d.ts +0 -59
- package/dist/request/index.d.ts.map +0 -1
- package/dist/request/index.js +0 -59
- package/dist/request/index.js.map +0 -1
- package/dist/request/interactionRequest.d.ts +0 -23
- package/dist/request/interactionRequest.d.ts.map +0 -1
- package/dist/request/interactionRequest.js +0 -46
- package/dist/request/interactionRequest.js.map +0 -1
- package/dist/request/interactionUrl.d.ts +0 -42
- package/dist/request/interactionUrl.d.ts.map +0 -1
- package/dist/request/interactionUrl.js +0 -104
- package/dist/request/interactionUrl.js.map +0 -1
- package/dist/request/matching.d.ts +0 -95
- package/dist/request/matching.d.ts.map +0 -1
- package/dist/request/matching.js +0 -205
- package/dist/request/matching.js.map +0 -1
- package/dist/request/onboarding.d.ts +0 -94
- package/dist/request/onboarding.d.ts.map +0 -1
- package/dist/request/onboarding.js +0 -167
- package/dist/request/onboarding.js.map +0 -1
- package/dist/request/parse.d.ts +0 -63
- package/dist/request/parse.d.ts.map +0 -1
- package/dist/request/parse.js +0 -153
- package/dist/request/parse.js.map +0 -1
- package/dist/request/presentationSuite.d.ts +0 -71
- package/dist/request/presentationSuite.d.ts.map +0 -1
- package/dist/request/presentationSuite.js +0 -143
- package/dist/request/presentationSuite.js.map +0 -1
- package/dist/request/processRequest.d.ts +0 -45
- package/dist/request/processRequest.d.ts.map +0 -1
- package/dist/request/processRequest.js +0 -147
- package/dist/request/processRequest.js.map +0 -1
- package/dist/request/queryPredicates.d.ts +0 -98
- package/dist/request/queryPredicates.d.ts.map +0 -1
- package/dist/request/queryPredicates.js +0 -107
- package/dist/request/queryPredicates.js.map +0 -1
- package/dist/request/types.d.ts +0 -257
- package/dist/request/types.d.ts.map +0 -1
- package/dist/request/types.js +0 -2
- package/dist/request/types.js.map +0 -1
- package/dist/request/walletInput.d.ts +0 -93
- package/dist/request/walletInput.d.ts.map +0 -1
- package/dist/request/walletInput.js +0 -179
- package/dist/request/walletInput.js.map +0 -1
package/README.md
CHANGED
|
@@ -38,9 +38,10 @@ The subpaths:
|
|
|
38
38
|
shared collection ids and descriptive specs (`private-credentials`,
|
|
39
39
|
`public-credentials`, `wallet-activity`, `app-connections`), the
|
|
40
40
|
`wallet-activity` wire shape with its pure `addHistory*` payload builders, the
|
|
41
|
-
`publicCredentialUrl` derivation, and the `was-link` QR hand-off contract
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
`publicCredentialUrl` derivation, and the `was-link` QR hand-off contract
|
|
42
|
+
(`buildWasLinkPayload` / `parseWasLinkPayload` / `encodeWasLinkSecret`) with
|
|
43
|
+
its structural recognizer, `isWasLinkPayload`. Contacts collection specs live
|
|
44
|
+
in [`@interop/social-core`](https://npm.im/@interop/social-core).
|
|
44
45
|
|
|
45
46
|
- **`@interop/wallet-core/identity`** -- the WAS identity derivation both wallet
|
|
46
47
|
apps must perform byte-for-byte identically: `agentsFromSecret` /
|
|
@@ -50,22 +51,6 @@ The subpaths:
|
|
|
50
51
|
(the same assembly from a `CapabilityAgent` an app derived itself), and
|
|
51
52
|
`singleKeyResolver`.
|
|
52
53
|
|
|
53
|
-
- **`@interop/wallet-core/request`** -- wallet-request / exchange protocol
|
|
54
|
-
handling: request classification and parsing (CHAPI get/store events,
|
|
55
|
-
wallet-api messages and URLs), QueryByExample matching, cryptosuite
|
|
56
|
-
negotiation, `composeVp` (signer and holder injected), the pure
|
|
57
|
-
`processRequest` (consent runs in the caller; zcap / App Connect processing
|
|
58
|
-
injected), the App Connect app-key credential module (query validation,
|
|
59
|
-
matching, minting, store-time refusal, legacy re-issue), the
|
|
60
|
-
`WalletOnboardingQuery` transport vocabulary (compose and classification), the
|
|
61
|
-
VC-API exchange client, VCALM `interaction:` URL handling, the requester's
|
|
62
|
-
half of a server's ephemeral exchange (`createEphemeralExchange` /
|
|
63
|
-
`pollEphemeralExchange`, the poll bounded by a caller signal or its own
|
|
64
|
-
deadline), and `composeCapabilityRequest`, the zcap-only VPR a requester
|
|
65
|
-
stores on such an exchange. The VPR type vocabulary lives in
|
|
66
|
-
[`@interop/data-integrity-core`](https://npm.im/@interop/data-integrity-core)
|
|
67
|
-
and is re-exported here.
|
|
68
|
-
|
|
69
54
|
- **`@interop/wallet-core/webvh`** -- the account's did:webvh identity: the
|
|
70
55
|
hosted DID log, its per-client update-key rotation, the client enrollment
|
|
71
56
|
entries, the one-entry client-revocation edit (verification methods, update
|
|
@@ -161,8 +146,9 @@ The subpaths:
|
|
|
161
146
|
record codec (shell / bridge delegation / ladder members under a
|
|
162
147
|
credential-authenticated binding, with the bridge-only re-mint), the merged
|
|
163
148
|
document-inventory edit (a verbatim `keyAgreement` entry or a
|
|
164
|
-
`publicKeyCommitment` entry for a low-entropy-derived key
|
|
165
|
-
|
|
149
|
+
`publicKeyCommitment` entry for a low-entropy-derived key, either naming its
|
|
150
|
+
ladder's rung-0 hash as `ladderCommitment`), and the self-enrolling
|
|
151
|
+
continuation with its composed completion.
|
|
166
152
|
|
|
167
153
|
- **`@interop/wallet-core/recovery`** -- recovery codes on the roster identity
|
|
168
154
|
model, over the `unlock` machinery: a code as a minimal always-enrolled wallet
|
|
@@ -183,6 +169,10 @@ The subpaths:
|
|
|
183
169
|
per-visit readiness ensure, and the transient-recovery continuation. It sits
|
|
184
170
|
on top of the other subpaths and none of them import from it.
|
|
185
171
|
|
|
172
|
+
The request pipeline (input classification, VPR parsing, cryptosuite
|
|
173
|
+
negotiation, VP composition, the App Connect app-key credential) now lives in
|
|
174
|
+
[`@interop/wallet-request`](https://npm.im/@interop/wallet-request).
|
|
175
|
+
|
|
186
176
|
## Install
|
|
187
177
|
|
|
188
178
|
- Node.js 24+ is recommended.
|
|
@@ -213,15 +203,14 @@ import {
|
|
|
213
203
|
```
|
|
214
204
|
|
|
215
205
|
The `sync` and `space` subpaths are re-exported from the package root as well.
|
|
216
|
-
Every other subpath (`identity`, `
|
|
217
|
-
`
|
|
218
|
-
`
|
|
219
|
-
|
|
206
|
+
Every other subpath (`identity`, `webvh`, `resourceLog`, `keys`, `clients`,
|
|
207
|
+
`descriptors`, `keyring`, `enrollment`, `genesis`, `unlock`, `recovery`,
|
|
208
|
+
`clientAnnex`) is import-directly-only, so consumers of the root never pull the
|
|
209
|
+
signing / KMS / document-loader dependency graph.
|
|
220
210
|
|
|
221
|
-
|
|
211
|
+
One further export is a leaf of that same isolation, carved out to stay
|
|
222
212
|
dependency-light: `keys/clientKeyRecord` is the client-key record codec alone,
|
|
223
|
-
so a wallet's storage tests load without the crypto graph
|
|
224
|
-
`request/matching` is the QueryByExample matchers alone.
|
|
213
|
+
so a wallet's storage tests load without the crypto graph.
|
|
225
214
|
|
|
226
215
|
## Contribute
|
|
227
216
|
|
|
@@ -216,56 +216,97 @@ export declare function assertNextKeyHashesRemain({ nextKeyHashes, ceremony }: {
|
|
|
216
216
|
}): string[];
|
|
217
217
|
/**
|
|
218
218
|
* The anchor a credential's ladder walk starts from when the caller holds no
|
|
219
|
-
* recorded update key -- the log-only anchoring a cold browser needs.
|
|
220
|
-
* credential
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
*
|
|
239
|
-
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
245
|
-
*
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
253
|
-
*
|
|
219
|
+
* recorded update key -- the log-only anchoring a cold browser needs. Every
|
|
220
|
+
* credential-class `keyAgreement` member names its own ladder's rung-0
|
|
221
|
+
* commitment (`ladderCommitment`, written by every bind site through
|
|
222
|
+
* `unlockKeyVerificationMethod`), so the anchor is read off the member
|
|
223
|
+
* itself rather than inferred from the shape of the entry that introduced
|
|
224
|
+
* it. The value is `hash(rung 0)` in the form `nextKeyHashes` carries, the
|
|
225
|
+
* same commitment the bind puts there.
|
|
226
|
+
*
|
|
227
|
+
* The value is taken from the entry that INTRODUCED the member, and only
|
|
228
|
+
* from an account-controlled member (an enrolled client's marked twin is
|
|
229
|
+
* never a credential). A member is introduced each time it appears after
|
|
230
|
+
* not standing, so a member re-bound after a retirement (the same passphrase
|
|
231
|
+
* added again) anchors on the fresh ladder's commitment, and a log read
|
|
232
|
+
* before the retirement entry that struck it still names it. What a later
|
|
233
|
+
* entry says about a member that already stood is checked, not adopted: the
|
|
234
|
+
* property is a document member any update-key holder can restate, and a
|
|
235
|
+
* value that changes while the member stands continuously is a retargeting
|
|
236
|
+
* no bind performs. Such a member names no anchor for the rest of that
|
|
237
|
+
* standing run, so the retargeting is reported as unclaimed rather than
|
|
238
|
+
* quietly walked from the substituted hash. The write side carries the same
|
|
239
|
+
* rule: `publishUnlockKey`, the one path in this library that rewrites a
|
|
240
|
+
* standing member, refuses a bind whose rung-0 hash differs from the value
|
|
241
|
+
* the member already names, so a retargeting in a served log is a foreign
|
|
242
|
+
* writer's and never a torn re-run's. The guard covers only a
|
|
243
|
+
* continuous run: the same update-key holder can strike the member in one
|
|
244
|
+
* entry and re-add it under a fresh commitment in the next, which reads as a
|
|
245
|
+
* legitimate re-bind and is not distinguishable from one seedlessly. That
|
|
246
|
+
* shape rests on the log's loudness and on `survivingClientKeyProtection`
|
|
247
|
+
* instead. A member without the property, or one nowhere in the log, names
|
|
248
|
+
* no anchor either.
|
|
249
|
+
*
|
|
250
|
+
* The named hash must also be one the log COMMITTED FOR THE MEMBER: newly
|
|
251
|
+
* added to `nextKeyHashes` by the introducing entry (the merged bind, the
|
|
252
|
+
* ladder-anchored genesis), by a later entry of the same standing run (the
|
|
253
|
+
* split bind's authority entry, two versions after its key entry), or by an
|
|
254
|
+
* earlier entry whose signer the introducing entry retires (the recovery
|
|
255
|
+
* continuations' reveal-and-commit entry, signed by the spent code's rung,
|
|
256
|
+
* which the add-and-retire entry introducing the replacement's member and
|
|
257
|
+
* the fresh credential's strikes -- every reveal entry of a torn and resumed
|
|
258
|
+
* continuation is that shape). A member naming a hash that stood in
|
|
259
|
+
* `nextKeyHashes` already, committed by some other entry for something else
|
|
260
|
+
* -- an enrolled client's staged hash, say, which any update-key holder can
|
|
261
|
+
* read off the log and restate as a commitment -- names no anchor. Without
|
|
262
|
+
* the check the walk would claim that hash for the credential, and a
|
|
263
|
+
* retirement that honored the claim would strike a surviving client's
|
|
264
|
+
* staged commitment. The check is necessary rather than sufficient: an
|
|
265
|
+
* approver can name a hash BEFORE the enrollment it approves commits it, and
|
|
266
|
+
* that is the shape `survivingClientKeyProtection`'s positional exemption
|
|
267
|
+
* closes. Every refusal returns `undefined`, which the callers report as
|
|
268
|
+
* unclaimed rather than acting on.
|
|
254
269
|
*
|
|
255
270
|
* @param options {object}
|
|
256
271
|
* @param options.log {DIDLog} a resolved, caller-verified log
|
|
257
272
|
* @param options.credentialVmId {string} the credential's `keyAgreement`
|
|
258
273
|
* verification-method id
|
|
259
|
-
* @returns {
|
|
260
|
-
* undefined>}
|
|
274
|
+
* @returns {{ anchorHash: string } | undefined}
|
|
261
275
|
*/
|
|
262
276
|
export declare function credentialLadderAnchor({ log, credentialVmId }: {
|
|
263
277
|
log: DIDLog;
|
|
264
278
|
credentialVmId: string;
|
|
265
|
-
}):
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
279
|
+
}): {
|
|
280
|
+
anchorHash: string;
|
|
281
|
+
} | undefined;
|
|
282
|
+
/**
|
|
283
|
+
* What the log says about a credential member's `ladderCommitment`, before
|
|
284
|
+
* {@link credentialLadderAnchor} decides whether it is an anchor: the value
|
|
285
|
+
* the entry introducing the member's latest standing run named (`named`),
|
|
286
|
+
* whether the member stands in the head document (`stands`), whether a later
|
|
287
|
+
* entry of that run restated the value (`retargeted`), and whether the log
|
|
288
|
+
* committed the named hash for the member (`committed`). The anchor reader
|
|
289
|
+
* is the refusing composition of these; the bind's write-side check reads
|
|
290
|
+
* them apart, since a split bind's authority entry meets a member that names
|
|
291
|
+
* its hash while the log has not committed it yet.
|
|
292
|
+
*
|
|
293
|
+
* @param options {object}
|
|
294
|
+
* @param options.log {DIDLog} a resolved, caller-verified log
|
|
295
|
+
* @param options.credentialVmId {string} the credential's `keyAgreement`
|
|
296
|
+
* verification-method id
|
|
297
|
+
* @returns {{ named?: string, stands: boolean, retargeted: boolean,
|
|
298
|
+
* committed: boolean } | undefined} `undefined` for a member the log
|
|
299
|
+
* never introduced
|
|
300
|
+
*/
|
|
301
|
+
export declare function credentialLadderCommitment({ log, credentialVmId }: {
|
|
302
|
+
log: DIDLog;
|
|
303
|
+
credentialVmId: string;
|
|
304
|
+
}): {
|
|
305
|
+
named?: string;
|
|
306
|
+
stands: boolean;
|
|
307
|
+
retargeted: boolean;
|
|
308
|
+
committed: boolean;
|
|
309
|
+
} | undefined;
|
|
269
310
|
/**
|
|
270
311
|
* The ladder VMs the log introduced ALONGSIDE something of this credential's
|
|
271
312
|
* -- the question a fail-closed retirement gate asks when its seedless walk
|
|
@@ -317,7 +358,7 @@ export declare function ladderVmIdsIntroducedWithCredential({ log, credentialVmI
|
|
|
317
358
|
* lists, read off the log alone -- the latent commitments a client removal
|
|
318
359
|
* must exclude before it attributes the removed client's staged hash. Each
|
|
319
360
|
* credential-class `keyAgreement` member (an unmarked method, verbatim key or
|
|
320
|
-
* commitment) is anchored from its
|
|
361
|
+
* commitment) is anchored from its member's `ladderCommitment` and walked
|
|
321
362
|
* ({@link attributeLadderInventory}); a credential whose anchor or walk
|
|
322
363
|
* refuses claims nothing and is named on `unclaimedCredentialVmIds`, so the
|
|
323
364
|
* caller can tell "no latent hashes stand" from "one credential's could not
|
|
@@ -407,9 +448,12 @@ export declare function retiredCredentialRungsBeforeKey({ log, authorizedKeyMult
|
|
|
407
448
|
* than a property of the walk, because a mis-anchored walk landing on a
|
|
408
449
|
* client's key would otherwise end that client's ability to extend the
|
|
409
450
|
* account log for good. The walks therefore run FIRST, and the hashes they
|
|
410
|
-
* claimed are passed to the protection as
|
|
451
|
+
* claimed are passed to the protection as walk-derived, so a retiring
|
|
411
452
|
* credential's own rung cannot make a client's staged attribution ambiguous
|
|
412
|
-
* and get itself protected as a candidate
|
|
453
|
+
* and get itself protected as a candidate. The protection never lets such
|
|
454
|
+
* a claim prune the hash the decision-0007 position names as a client's
|
|
455
|
+
* staged hash, so a walk anchored on a member that names that hash claims
|
|
456
|
+
* it and is withheld, rather than striking it;
|
|
413
457
|
* - a listed enrolled client whose ACTIVE update key the log cannot attribute
|
|
414
458
|
* withholds the WHOLE strike: nothing is struck and every credential is
|
|
415
459
|
* reported, since the structural guard cannot say what that client holds.
|
|
@@ -540,29 +584,31 @@ export declare function attributeRetiredCredentialRungs({ log, credentialVmIds,
|
|
|
540
584
|
* once matches no legitimate history and fails closed ({@link
|
|
541
585
|
* LadderAttributionError}).
|
|
542
586
|
*
|
|
543
|
-
* One shape is out of
|
|
544
|
-
*
|
|
545
|
-
*
|
|
546
|
-
*
|
|
547
|
-
*
|
|
587
|
+
* One shape is out of the backward walk's reach. The last-client transition
|
|
588
|
+
* strikes the ladder VM and reinstalls it in the same run
|
|
589
|
+
* (`forgetLastEnrolledClient` stage 1): same seed, the credential's member
|
|
590
|
+
* standing, the acting rung's hash still committed, and no hash added. A
|
|
591
|
+
* later self-enrollment then spends that already-revealed rung, so its
|
|
548
592
|
* reveal-and-commit entry authorizes no key while committing the next rung's
|
|
549
593
|
* hash, and the registry anchor advances to that next rung. The backward walk
|
|
550
594
|
* climbs from the anchor by asking which key the entry that committed its
|
|
551
595
|
* hash authorized; that entry authorized none, so the walk cannot name the
|
|
552
|
-
* rung that signed it, and
|
|
553
|
-
*
|
|
554
|
-
*
|
|
596
|
+
* rung that signed it, and a walk anchored on the registry key alone leaves
|
|
597
|
+
* the earlier rung and the reinstalled VM unrecovered. A walk anchored on the
|
|
598
|
+
* member's own rung-0 commitment reads that history forward with no climb,
|
|
599
|
+
* which is why the removal paths walk from both anchors
|
|
600
|
+
* (`attributeUnlockLadderInventory`) and act on the member's reading.
|
|
555
601
|
*
|
|
556
602
|
* The anchor comes in three forms, and the walk is the same afterwards. A
|
|
557
603
|
* recorded update-key multibase (`anchorKeyMultibase`) is what a caller
|
|
558
604
|
* holding a registry entry passes. A hash (`anchorHash`) is the same anchor
|
|
559
605
|
* with the key withheld: the rung is picked up when the log reveals it, since
|
|
560
606
|
* the reveal test already matches on the commitment. With neither, and a
|
|
561
|
-
* `credentialVmId` in hand, the anchor is read off the credential's
|
|
562
|
-
* ({@link credentialLadderAnchor}) -- the cold-browser
|
|
563
|
-
* is readable before the entry is written.
|
|
564
|
-
*
|
|
565
|
-
* walking from a guess.
|
|
607
|
+
* `credentialVmId` in hand, the anchor is read off the credential's own
|
|
608
|
+
* `keyAgreement` member ({@link credentialLadderAnchor}) -- the cold-browser
|
|
609
|
+
* mode, where no registry is readable before the entry is written. A member
|
|
610
|
+
* naming no ladder commitment refuses with {@link LadderAttributionError}
|
|
611
|
+
* rather than walking from a guess.
|
|
566
612
|
*
|
|
567
613
|
* @param options {object}
|
|
568
614
|
* @param options.log {DIDLog} a resolved, caller-verified log
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ladder.d.ts","sourceRoot":"","sources":["../../src/clientAnnex/ladder.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"ladder.d.ts","sourceRoot":"","sources":["../../src/clientAnnex/ladder.ts"],"names":[],"mappings":"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"}
|