@interop/wallet-core 0.61.0 → 0.65.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 +41 -16
- package/dist/clientAnnex/credentialAnchoredGenesis.d.ts +46 -26
- package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
- package/dist/clientAnnex/credentialAnchoredGenesis.js +91 -39
- package/dist/clientAnnex/credentialAnchoredGenesis.js.map +1 -1
- package/dist/clientAnnex/establish.d.ts +55 -34
- package/dist/clientAnnex/establish.d.ts.map +1 -1
- package/dist/clientAnnex/establish.js +102 -56
- package/dist/clientAnnex/establish.js.map +1 -1
- package/dist/clientAnnex/forget.d.ts +16 -2
- package/dist/clientAnnex/forget.d.ts.map +1 -1
- package/dist/clientAnnex/forget.js +11 -9
- package/dist/clientAnnex/forget.js.map +1 -1
- package/dist/clientAnnex/forgetLast.d.ts +126 -35
- package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
- package/dist/clientAnnex/forgetLast.js +208 -60
- package/dist/clientAnnex/forgetLast.js.map +1 -1
- package/dist/clientAnnex/gc.d.ts +3 -2
- package/dist/clientAnnex/gc.d.ts.map +1 -1
- package/dist/clientAnnex/gc.js +7 -7
- package/dist/clientAnnex/gc.js.map +1 -1
- package/dist/clientAnnex/heal.d.ts +101 -33
- package/dist/clientAnnex/heal.d.ts.map +1 -1
- package/dist/clientAnnex/heal.js +559 -212
- package/dist/clientAnnex/heal.js.map +1 -1
- package/dist/clientAnnex/index.d.ts +21 -5
- package/dist/clientAnnex/index.d.ts.map +1 -1
- package/dist/clientAnnex/index.js +24 -5
- package/dist/clientAnnex/index.js.map +1 -1
- package/dist/clientAnnex/ladder.d.ts +304 -18
- package/dist/clientAnnex/ladder.d.ts.map +1 -1
- package/dist/clientAnnex/ladder.js +942 -64
- package/dist/clientAnnex/ladder.js.map +1 -1
- package/dist/clientAnnex/ladderAnchored.d.ts +261 -28
- package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
- package/dist/clientAnnex/ladderAnchored.js +521 -295
- package/dist/clientAnnex/ladderAnchored.js.map +1 -1
- package/dist/clientAnnex/log.d.ts +193 -38
- package/dist/clientAnnex/log.d.ts.map +1 -1
- package/dist/clientAnnex/log.js +445 -190
- package/dist/clientAnnex/log.js.map +1 -1
- package/dist/clientAnnex/mend.d.ts +12 -6
- package/dist/clientAnnex/mend.d.ts.map +1 -1
- package/dist/clientAnnex/mend.js +26 -12
- package/dist/clientAnnex/mend.js.map +1 -1
- package/dist/clientAnnex/recoveryLadderAnchored.d.ts +38 -11
- package/dist/clientAnnex/recoveryLadderAnchored.d.ts.map +1 -1
- package/dist/clientAnnex/recoveryLadderAnchored.js +177 -55
- package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
- package/dist/clientAnnex/spaceCapability.d.ts +123 -0
- package/dist/clientAnnex/spaceCapability.d.ts.map +1 -0
- package/dist/clientAnnex/spaceCapability.js +152 -0
- package/dist/clientAnnex/spaceCapability.js.map +1 -0
- package/dist/clientAnnex/stages.d.ts +63 -0
- package/dist/clientAnnex/stages.d.ts.map +1 -0
- package/dist/clientAnnex/stages.js +64 -0
- package/dist/clientAnnex/stages.js.map +1 -0
- package/dist/clientAnnex/zcap.d.ts +1 -1
- package/dist/clientAnnex/zcap.d.ts.map +1 -1
- package/dist/clientAnnex/zcap.js +42 -35
- package/dist/clientAnnex/zcap.js.map +1 -1
- package/dist/clients/policy.d.ts +15 -1
- package/dist/clients/policy.d.ts.map +1 -1
- package/dist/clients/policy.js +12 -6
- package/dist/clients/policy.js.map +1 -1
- package/dist/clients/revocation.d.ts +18 -10
- package/dist/clients/revocation.d.ts.map +1 -1
- package/dist/clients/revocation.js +13 -5
- package/dist/clients/revocation.js.map +1 -1
- package/dist/clients/rosterPolicy.d.ts +10 -2
- package/dist/clients/rosterPolicy.d.ts.map +1 -1
- package/dist/clients/rosterPolicy.js +41 -24
- package/dist/clients/rosterPolicy.js.map +1 -1
- package/dist/descriptors/acquire.d.ts.map +1 -1
- package/dist/descriptors/acquire.js +6 -23
- package/dist/descriptors/acquire.js.map +1 -1
- package/dist/descriptors/cipher.d.ts.map +1 -1
- package/dist/descriptors/cipher.js +5 -0
- package/dist/descriptors/cipher.js.map +1 -1
- package/dist/descriptors/errors.d.ts +43 -0
- package/dist/descriptors/errors.d.ts.map +1 -0
- package/dist/descriptors/errors.js +45 -0
- package/dist/descriptors/errors.js.map +1 -0
- package/dist/descriptors/index.d.ts +5 -0
- package/dist/descriptors/index.d.ts.map +1 -1
- package/dist/descriptors/index.js +5 -0
- package/dist/descriptors/index.js.map +1 -1
- package/dist/enrollment/enrollment.d.ts +37 -10
- package/dist/enrollment/enrollment.d.ts.map +1 -1
- package/dist/enrollment/enrollment.js +52 -15
- package/dist/enrollment/enrollment.js.map +1 -1
- package/dist/genesis/accountGenesis.d.ts +42 -11
- package/dist/genesis/accountGenesis.d.ts.map +1 -1
- package/dist/genesis/accountGenesis.js +80 -22
- package/dist/genesis/accountGenesis.js.map +1 -1
- package/dist/genesis/index.d.ts +3 -1
- package/dist/genesis/index.d.ts.map +1 -1
- package/dist/genesis/index.js +3 -1
- package/dist/genesis/index.js.map +1 -1
- package/dist/identity/agents.d.ts +17 -1
- package/dist/identity/agents.d.ts.map +1 -1
- package/dist/identity/agents.js +24 -8
- package/dist/identity/agents.js.map +1 -1
- package/dist/identity/index.d.ts +3 -1
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +3 -1
- package/dist/identity/index.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/keyring/index.d.ts +2 -1
- package/dist/keyring/index.d.ts.map +1 -1
- package/dist/keyring/index.js +2 -1
- package/dist/keyring/index.js.map +1 -1
- package/dist/keyring/record.d.ts.map +1 -1
- package/dist/keyring/record.js +3 -6
- package/dist/keyring/record.js.map +1 -1
- package/dist/keyring/unlockSpace.d.ts +14 -5
- package/dist/keyring/unlockSpace.d.ts.map +1 -1
- package/dist/keyring/unlockSpace.js +31 -36
- package/dist/keyring/unlockSpace.js.map +1 -1
- package/dist/keys/index.d.ts +10 -6
- package/dist/keys/index.d.ts.map +1 -1
- package/dist/keys/index.js +9 -5
- package/dist/keys/index.js.map +1 -1
- package/dist/keys/rosterLogStore.d.ts +12 -11
- package/dist/keys/rosterLogStore.d.ts.map +1 -1
- package/dist/keys/rosterLogStore.js +15 -13
- package/dist/keys/rosterLogStore.js.map +1 -1
- package/dist/keys/rosterStore.d.ts +3 -6
- package/dist/keys/rosterStore.d.ts.map +1 -1
- package/dist/keys/rosterStore.js +10 -9
- package/dist/keys/rosterStore.js.map +1 -1
- package/dist/keys/spaceEpochs.d.ts.map +1 -1
- package/dist/keys/spaceEpochs.js +2 -3
- package/dist/keys/spaceEpochs.js.map +1 -1
- package/dist/keys/userKeyRoster.d.ts +89 -9
- package/dist/keys/userKeyRoster.d.ts.map +1 -1
- package/dist/keys/userKeyRoster.js +262 -19
- package/dist/keys/userKeyRoster.js.map +1 -1
- package/dist/keys/userKeyRosterCascade.d.ts +7 -6
- package/dist/keys/userKeyRosterCascade.d.ts.map +1 -1
- package/dist/keys/userKeyRosterCascade.js +7 -6
- package/dist/keys/userKeyRosterCascade.js.map +1 -1
- package/dist/keys/wasLabelsStore.d.ts +9 -2
- package/dist/keys/wasLabelsStore.d.ts.map +1 -1
- package/dist/keys/wasLabelsStore.js +14 -6
- package/dist/keys/wasLabelsStore.js.map +1 -1
- package/dist/log.d.ts +7 -2
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +6 -1
- package/dist/log.js.map +1 -1
- package/dist/recovery/index.d.ts +12 -8
- package/dist/recovery/index.d.ts.map +1 -1
- package/dist/recovery/index.js +11 -7
- package/dist/recovery/index.js.map +1 -1
- package/dist/recovery/recoveryCode.d.ts +27 -7
- package/dist/recovery/recoveryCode.d.ts.map +1 -1
- package/dist/recovery/recoveryCode.js +18 -6
- package/dist/recovery/recoveryCode.js.map +1 -1
- package/dist/recovery/recoveryDelegation.d.ts +4 -1
- package/dist/recovery/recoveryDelegation.d.ts.map +1 -1
- package/dist/recovery/recoveryDelegation.js +25 -36
- package/dist/recovery/recoveryDelegation.js.map +1 -1
- package/dist/recovery/recoveryWebvh.d.ts +117 -65
- package/dist/recovery/recoveryWebvh.d.ts.map +1 -1
- package/dist/recovery/recoveryWebvh.js +279 -126
- package/dist/recovery/recoveryWebvh.js.map +1 -1
- package/dist/request/classify.d.ts +32 -8
- package/dist/request/classify.d.ts.map +1 -1
- package/dist/request/classify.js +39 -14
- package/dist/request/classify.js.map +1 -1
- package/dist/request/ephemeralExchange.d.ts +1 -6
- package/dist/request/ephemeralExchange.d.ts.map +1 -1
- package/dist/request/ephemeralExchange.js.map +1 -1
- package/dist/request/onboarding.d.ts.map +1 -1
- package/dist/request/onboarding.js +2 -2
- package/dist/request/onboarding.js.map +1 -1
- package/dist/request/parse.d.ts.map +1 -1
- package/dist/request/parse.js +2 -3
- package/dist/request/parse.js.map +1 -1
- package/dist/resourceLog/controller.d.ts +34 -12
- package/dist/resourceLog/controller.d.ts.map +1 -1
- package/dist/resourceLog/controller.js +79 -86
- package/dist/resourceLog/controller.js.map +1 -1
- package/dist/resourceLog/document.d.ts +182 -0
- package/dist/resourceLog/document.d.ts.map +1 -0
- package/dist/resourceLog/document.js +159 -0
- package/dist/resourceLog/document.js.map +1 -0
- package/dist/resourceLog/errors.d.ts +47 -8
- package/dist/resourceLog/errors.d.ts.map +1 -1
- package/dist/resourceLog/errors.js +54 -8
- package/dist/resourceLog/errors.js.map +1 -1
- package/dist/resourceLog/index.d.ts +7 -3
- package/dist/resourceLog/index.d.ts.map +1 -1
- package/dist/resourceLog/index.js +7 -3
- package/dist/resourceLog/index.js.map +1 -1
- package/dist/resourceLog/ladderRungs.d.ts +35 -0
- package/dist/resourceLog/ladderRungs.d.ts.map +1 -0
- package/dist/resourceLog/ladderRungs.js +352 -0
- package/dist/resourceLog/ladderRungs.js.map +1 -0
- package/dist/resourceLog/license.d.ts +42 -17
- package/dist/resourceLog/license.d.ts.map +1 -1
- package/dist/resourceLog/license.js +38 -24
- package/dist/resourceLog/license.js.map +1 -1
- package/dist/space/activity.d.ts +15 -15
- package/dist/space/activity.d.ts.map +1 -1
- package/dist/space/activity.js +15 -15
- package/dist/space/activity.js.map +1 -1
- package/dist/space/collections.d.ts +11 -0
- package/dist/space/collections.d.ts.map +1 -1
- package/dist/space/collections.js +13 -0
- package/dist/space/collections.js.map +1 -1
- package/dist/space/deleteSpace.d.ts +28 -0
- package/dist/space/deleteSpace.d.ts.map +1 -0
- package/dist/space/deleteSpace.js +44 -0
- package/dist/space/deleteSpace.js.map +1 -0
- package/dist/space/errors.d.ts.map +1 -1
- package/dist/space/errors.js +0 -1
- package/dist/space/errors.js.map +1 -1
- package/dist/space/index.d.ts +6 -0
- package/dist/space/index.d.ts.map +1 -1
- package/dist/space/index.js +6 -0
- package/dist/space/index.js.map +1 -1
- package/dist/space/plaintextCollection.d.ts +43 -0
- package/dist/space/plaintextCollection.d.ts.map +1 -0
- package/dist/space/plaintextCollection.js +17 -0
- package/dist/space/plaintextCollection.js.map +1 -0
- package/dist/stages.d.ts +23 -0
- package/dist/stages.d.ts.map +1 -0
- package/dist/stages.js +23 -0
- package/dist/stages.js.map +1 -0
- package/dist/sync/index.d.ts +7 -0
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +7 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/push.js +4 -4
- package/dist/sync/push.js.map +1 -1
- package/dist/sync/remint.js +2 -2
- package/dist/sync/remint.js.map +1 -1
- package/dist/sync/types.d.ts +41 -1
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/sync/types.js +47 -1
- package/dist/sync/types.js.map +1 -1
- package/dist/unlock/index.d.ts +6 -2
- package/dist/unlock/index.d.ts.map +1 -1
- package/dist/unlock/index.js +5 -1
- package/dist/unlock/index.js.map +1 -1
- package/dist/unlock/retire.d.ts +95 -14
- package/dist/unlock/retire.d.ts.map +1 -1
- package/dist/unlock/retire.js +102 -10
- package/dist/unlock/retire.js.map +1 -1
- package/dist/unlock/standingClient.d.ts.map +1 -1
- package/dist/unlock/standingClient.js +5 -1
- package/dist/unlock/standingClient.js.map +1 -1
- package/dist/unlock/standingWebvh.d.ts +341 -49
- package/dist/unlock/standingWebvh.d.ts.map +1 -1
- package/dist/unlock/standingWebvh.js +608 -164
- package/dist/unlock/standingWebvh.js.map +1 -1
- package/dist/webvh/accountEntry.d.ts +146 -0
- package/dist/webvh/accountEntry.d.ts.map +1 -0
- package/dist/webvh/accountEntry.js +239 -0
- package/dist/webvh/accountEntry.js.map +1 -0
- package/dist/webvh/didWeb.d.ts +12 -7
- package/dist/webvh/didWeb.d.ts.map +1 -1
- package/dist/webvh/didWeb.js +2 -2
- package/dist/webvh/didWeb.js.map +1 -1
- package/dist/webvh/didWebProjection.d.ts +164 -0
- package/dist/webvh/didWebProjection.d.ts.map +1 -0
- package/dist/webvh/didWebProjection.js +230 -0
- package/dist/webvh/didWebProjection.js.map +1 -0
- package/dist/webvh/didWebvh.d.ts +278 -138
- package/dist/webvh/didWebvh.d.ts.map +1 -1
- package/dist/webvh/didWebvh.js +314 -345
- package/dist/webvh/didWebvh.js.map +1 -1
- package/dist/webvh/enrollClient.d.ts +65 -0
- package/dist/webvh/enrollClient.d.ts.map +1 -0
- package/dist/webvh/enrollClient.js +172 -0
- package/dist/webvh/enrollClient.js.map +1 -0
- package/dist/webvh/index.d.ts +37 -12
- package/dist/webvh/index.d.ts.map +1 -1
- package/dist/webvh/index.js +33 -10
- package/dist/webvh/index.js.map +1 -1
- package/dist/webvh/listClients.d.ts +1 -33
- package/dist/webvh/listClients.d.ts.map +1 -1
- package/dist/webvh/listClients.js +2 -28
- package/dist/webvh/listClients.js.map +1 -1
- package/dist/webvh/revokeClient.d.ts +89 -11
- package/dist/webvh/revokeClient.d.ts.map +1 -1
- package/dist/webvh/revokeClient.js +182 -47
- package/dist/webvh/revokeClient.js.map +1 -1
- package/dist/webvh/standingZcap.d.ts +61 -14
- package/dist/webvh/standingZcap.d.ts.map +1 -1
- package/dist/webvh/standingZcap.js +91 -0
- package/dist/webvh/standingZcap.js.map +1 -1
- package/dist/webvh/verifyLog.d.ts +59 -5
- package/dist/webvh/verifyLog.d.ts.map +1 -1
- package/dist/webvh/verifyLog.js +76 -11
- package/dist/webvh/verifyLog.js.map +1 -1
- package/dist/webvh/wasIdStore.d.ts +8 -8
- package/dist/webvh/wasIdStore.d.ts.map +1 -1
- package/dist/webvh/wasIdStore.js +39 -14
- package/dist/webvh/wasIdStore.js.map +1 -1
- package/dist/webvh/zcap.d.ts +14 -1
- package/dist/webvh/zcap.d.ts.map +1 -1
- package/dist/webvh/zcap.js +3 -27
- package/dist/webvh/zcap.js.map +1 -1
- package/package.json +5 -5
- package/dist/webvh/keyAgreement.d.ts +0 -72
- package/dist/webvh/keyAgreement.d.ts.map +0 -1
- package/dist/webvh/keyAgreement.js +0 -47
- package/dist/webvh/keyAgreement.js.map +0 -1
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Copyright (c) 2026 Interop Alliance. All rights reserved.
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
|
-
* The LAST enrolled client's forget: the
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* The LAST enrolled client's forget: the transition ceremony that takes an
|
|
6
|
+
* account from one enrolled client to the client-less, ladder-anchored
|
|
7
|
+
* state -- the same state a credential-anchored signup and a
|
|
8
8
|
* transient recovery produce. Decision 0004's 2026-08-19 amendment fixes the
|
|
9
9
|
* entry order, and it is forced twice over: the server's revocation endpoint
|
|
10
10
|
* verifies a to-be-revoked capability's chain against the CURRENTLY resolved
|
|
@@ -13,11 +13,39 @@
|
|
|
13
13
|
* the client's verification method is gone, nothing can sign the revocation
|
|
14
14
|
* POST at all). So:
|
|
15
15
|
*
|
|
16
|
-
* 1. **The
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
16
|
+
* 1. **The strike-and-reinstall pair**
|
|
17
|
+
* ({@link strikeLadderVmWebvh}, then {@link installLadderVmWebvh}): this
|
|
18
|
+
* credential's own ladder VM leaves the document and returns in the next
|
|
19
|
+
* entry, the client's whole inventory standing throughout. A ladder VM's
|
|
20
|
+
* life is keyed to its credential rather than to the account's client
|
|
21
|
+
* census, so the VM already stands when the transition starts and a bare
|
|
22
|
+
* install would publish nothing; the reinstall is what carries the
|
|
23
|
+
* ceremony's inventory-changing document version under the ceremony-tail
|
|
24
|
+
* license. The strike reaches one credential's VM -- the id derives from
|
|
25
|
+
* the ladder seed -- so another standing credential's VM is untouched.
|
|
26
|
+
* The pair republishes the identical key under the identical id and
|
|
27
|
+
* revokes nothing, so the revocation stage below is undisturbed by it and
|
|
28
|
+
* every unexpired ladder-signed delegation keeps verifying. Its costs are
|
|
29
|
+
* stated rather than hidden: the reinstall reveals a rung that stands in
|
|
30
|
+
* `updateKeys`, as the single install already did, now over two entries;
|
|
31
|
+
* and a run torn between the two leaves the account with no ladder VM
|
|
32
|
+
* while the client still stands, which a re-run mends (the strike no-ops,
|
|
33
|
+
* the install reinstalls). The pair runs only when the rotation is still
|
|
34
|
+
* owed or the VM is missing, so a resumed run past the rotation publishes
|
|
35
|
+
* neither entry.
|
|
36
|
+
*
|
|
37
|
+
* Both entries publish through `clientLogStore`, the store invoked under
|
|
38
|
+
* the ENROLLED client's root authority, and not through the credential's
|
|
39
|
+
* bridge delegation. The bridge is often signed by the very VM the strike
|
|
40
|
+
* removes -- the readiness stage's renewal mints it as the ladder, and
|
|
41
|
+
* stage 6 re-signs it as the ladder again -- so a bridge-invoked reinstall
|
|
42
|
+
* would be authorized against the post-strike document under the
|
|
43
|
+
* current-key-set rule and refused, leaving the account VM-less with every
|
|
44
|
+
* ladder-signed delegation rotted and a re-run failing identically. The
|
|
45
|
+
* client stands until stage 7 and holds root authority on the Space, so
|
|
46
|
+
* its store is the one that carries the pair. Only the HTTP invocation
|
|
47
|
+
* changes: both entries stay ladder-SIGNED.
|
|
48
|
+
* 2. **The roster rotation**, ladder-signed, anchored at the reinstall entry,
|
|
21
49
|
* HTTP-invoked under the still-standing client: the user key rotates off
|
|
22
50
|
* this client's wrap in ONE append (the license's one-shot shape), read
|
|
23
51
|
* back through the credential's standing wrap. Because the append's
|
|
@@ -27,15 +55,19 @@
|
|
|
27
55
|
* 3. **The collection fan-out**, still under this client's invocation
|
|
28
56
|
* authority: every encrypted collection re-epochs onto the fresh key.
|
|
29
57
|
* 4. **The generation-delegation replacement and revocations**: a fresh
|
|
30
|
-
* ladder-signed generation delegation replaces the embedded one
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
58
|
+
* ladder-signed generation delegation replaces the embedded one when the
|
|
59
|
+
* house staleness policy, read against a projected post-edit document,
|
|
60
|
+
* says it is owed -- this credential's ladder VM and the forgotten client
|
|
61
|
+
* are both named retiring, which is every key this ceremony ends. Then
|
|
62
|
+
* EVERY still-unexpired delegation the annex log's history ever embedded
|
|
63
|
+
* that this credential's ladder VM signed is revoked at the server (a
|
|
64
|
+
* renewal inside the 30-day window can leave two) -- closing the
|
|
65
|
+
* resurrection window a reinstalled derived-key VM would otherwise
|
|
66
|
+
* reopen. The replacement is what keeps the account
|
|
67
|
+
* transient-login-reachable after the transition; replace-before-revoke
|
|
68
|
+
* is what keeps a torn run from stranding the generation delegation-less.
|
|
69
|
+
* A delegation a surviving sibling credential's ladder signed is left
|
|
70
|
+
* standing, since the revocation loop never reaches it either.
|
|
39
71
|
* 5. **The other unlock methods' record re-mint** (`unlockMethods`): every
|
|
40
72
|
* other standing credential's and recovery code's bridge (and
|
|
41
73
|
* `delegatedClients` sibling, where the record carries one) is re-signed
|
|
@@ -69,19 +101,34 @@
|
|
|
69
101
|
* client -- an account nothing can write to -- which is why a call that
|
|
70
102
|
* omits the seam is refused before any read.
|
|
71
103
|
* 7. **The removal entry** ({@link forgetLastWebvhClient}): the client's
|
|
72
|
-
* whole document inventory out while the
|
|
73
|
-
* account anchored. The
|
|
74
|
-
*
|
|
104
|
+
* whole document inventory out while the reinstalled ladder VM keeps the
|
|
105
|
+
* account anchored. The post-removal `did:web` projection is PUT through
|
|
106
|
+
* `clientLogStore` immediately BEFORE that entry, since the entry itself
|
|
107
|
+
* is ladder-signed and writes `did.jsonl` alone while the client's root
|
|
108
|
+
* authority ends at it -- without that the account would land client-less
|
|
109
|
+
* with `did.json` still publishing the forgotten client's keys and nothing
|
|
110
|
+
* left able to rewrite it. A run torn between the PUT and the entry leaves
|
|
111
|
+
* `did.json` omitting a client the log still lists, which is fail-closed
|
|
112
|
+
* for a `did:web` verifier and re-PUT by the re-run. The app's local wipe
|
|
113
|
+
* runs after this ceremony returns.
|
|
75
114
|
*
|
|
76
115
|
* Torn-state map: every stage detects completion from durable state, so a
|
|
77
116
|
* run torn anywhere before the removal entry reads as "not forgotten" and a
|
|
78
|
-
* re-run converges
|
|
117
|
+
* re-run converges. A tear BETWEEN the pair's two entries is the one worth
|
|
118
|
+
* stating in full: it leaves the account with no ladder VM while the client
|
|
119
|
+
* still stands, and the re-run's reinstall converges because it rides the
|
|
120
|
+
* client's root authority rather than the credential's bridge -- the bridge
|
|
121
|
+
* the strike may itself have rotted cannot authorize that write, and nothing
|
|
122
|
+
* else on a one-client account could. Both entries of the pair are
|
|
123
|
+
* idempotent and the pair is
|
|
124
|
+
* skipped once the rotation has landed, an already-rotated
|
|
79
125
|
* roster skips the append (no second ladder-signed append is ever
|
|
80
126
|
* attempted), the fan-out is staleness-driven, a re-POSTed revocation's 400
|
|
81
127
|
* already-revoked answer reads as success (decision 0006's resume contract),
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* nothing
|
|
128
|
+
* the generation stage re-asks the same staleness policy (a prior run's own
|
|
129
|
+
* fresh delegation reads as retiring, so a re-run churns one delegation and
|
|
130
|
+
* strands nothing, while a sibling-signed one churns none), and the record
|
|
131
|
+
* re-mint re-checks staleness per entry (a record
|
|
85
132
|
* already ladder-signed reads as current, one whose re-mint failed is still
|
|
86
133
|
* rotted and is re-minted). Torn after the removal entry is the
|
|
87
134
|
* finish-the-wipe state the app's next login maps.
|
|
@@ -90,11 +137,12 @@
|
|
|
90
137
|
* browser already fetched stays forensically recoverable from its storage,
|
|
91
138
|
* and old epochs stay open to keys it already held.
|
|
92
139
|
*/
|
|
93
|
-
import type { DIDLog } from '@interop/did-method-webvh';
|
|
140
|
+
import type { DIDDoc, DIDLog } from '@interop/did-method-webvh';
|
|
94
141
|
import type { IKeyAgreementKey, IZcap } from '@interop/data-integrity-core';
|
|
95
142
|
import type { ZcapClient } from '@interop/ezcap';
|
|
96
143
|
import type { CollectionEncryption, IDelegatedZcap } from '@interop/was-client';
|
|
97
144
|
import type { EncryptionDescriptorStore } from '@interop/was-client/edv';
|
|
145
|
+
import type { WebvhIdStore } from '../webvh/didWebvh.js';
|
|
98
146
|
import { type RevokedClientKeys } from '../webvh/revokeClient.js';
|
|
99
147
|
import type { ResourceLogPinStore } from '@interop/vh-resource-log';
|
|
100
148
|
import { type CascadeCollections, type UserKey, type UserKeyCascadeResult } from '../keys/index.js';
|
|
@@ -104,7 +152,9 @@ import { type RecordRemintOutcome, type RecoveryDelegationEntry } from '../recov
|
|
|
104
152
|
import { type ClientAnnexWriteStore } from './log.js';
|
|
105
153
|
/**
|
|
106
154
|
* What the ceremony's generation stage did: the revoked delegation ids, and
|
|
107
|
-
* whether
|
|
155
|
+
* whether it wrote a replacement -- `false` with no `skipped` reason means
|
|
156
|
+
* nothing was owed, the standing delegation being one a surviving sibling
|
|
157
|
+
* credential's ladder signed. A `skipped` reason names the stage
|
|
108
158
|
* that could not run -- `no-pointer` (the account points at no generation:
|
|
109
159
|
* nothing to revoke or replace), `log-unreadable` (the pointed generation's
|
|
110
160
|
* `did.jsonl` is gone; the delegation bytes are unrecoverable, decision
|
|
@@ -140,8 +190,10 @@ export interface UnlockMethodsRemintReach<Entry extends RecoveryDelegationEntry
|
|
|
140
190
|
}) => Promise<void>;
|
|
141
191
|
}
|
|
142
192
|
/**
|
|
143
|
-
* What a completed last-client forget reports: whether the
|
|
144
|
-
* on this call (`false` on a resumed run
|
|
193
|
+
* What a completed last-client forget reports: whether the reinstall half of
|
|
194
|
+
* the strike-and-reinstall pair ran on this call (`false` on a resumed run
|
|
195
|
+
* that owed no rotation, so neither entry was published), whether the
|
|
196
|
+
* roster's wrap for the
|
|
145
197
|
* forgotten client was retired on this run, the per-collection fan-out
|
|
146
198
|
* result, the generation stage's report, the other unlock methods' record
|
|
147
199
|
* re-mint report (present when the caller supplied the reach: the counts and
|
|
@@ -151,7 +203,7 @@ export interface UnlockMethodsRemintReach<Entry extends RecoveryDelegationEntry
|
|
|
151
203
|
* the roster descriptor it was read from.
|
|
152
204
|
*/
|
|
153
205
|
export interface LastEnrolledClientForgetResult {
|
|
154
|
-
|
|
206
|
+
reinstalled: boolean;
|
|
155
207
|
rotated: boolean;
|
|
156
208
|
collections: UserKeyCascadeResult;
|
|
157
209
|
generation: GenerationDelegationRetirement;
|
|
@@ -199,10 +251,20 @@ export declare class RecordRemintFailedError extends Error {
|
|
|
199
251
|
* @param options {object}
|
|
200
252
|
* @param options.logStore {UnlockLogStore} the credential's delegated
|
|
201
253
|
* `did.jsonl` bridge store; also serves the ceremony's public reads
|
|
254
|
+
* @param options.clientLogStore {UnlockLogStore} the account-log store
|
|
255
|
+
* invoked under the STILL-STANDING enrolled client's root authority (an
|
|
256
|
+
* app's `wasWebvhIdStore` satisfies the narrower shape). The
|
|
257
|
+
* strike-and-reinstall pair publishes through it, because the bridge
|
|
258
|
+
* `logStore` is often signed by the ladder VM the strike removes and the
|
|
259
|
+
* reinstall would then be refused under the current-key-set rule. Both
|
|
260
|
+
* entries stay ladder-signed; only the HTTP invocation differs. It also
|
|
261
|
+
* carries the removal entry's pre-entry `did:web` projection PUT (stage 7),
|
|
262
|
+
* the one write the bridge store cannot make. Required: a call without it
|
|
263
|
+
* throws a `TypeError` before any read
|
|
202
264
|
* @param [options.pinStore] {ResourceLogPinStore} this client's chain-head
|
|
203
265
|
* pins, the account log's slot derived from `annex.accountSpaceId`. Every
|
|
204
|
-
* account-log read the ceremony makes -- the
|
|
205
|
-
*
|
|
266
|
+
* account-log read the ceremony makes -- the opening read, and the strike,
|
|
267
|
+
* reinstall, and removal entries' own reads inside their conflict-retry
|
|
206
268
|
* loops -- is checked against the pinned head, so a served truncated
|
|
207
269
|
* prefix is refused (`ResourceLogContinuityError`, `rollback`) before any
|
|
208
270
|
* roster append or log publish, and each entry advances the pin to the
|
|
@@ -221,8 +283,9 @@ export declare class RecordRemintFailedError extends Error {
|
|
|
221
283
|
* @param options.rosterStoreFor {Function} `({ did, log }) => store` --
|
|
222
284
|
* builds the `key-map/user-key.jsonl` roster store whose appends are
|
|
223
285
|
* SIGNED BY THE LADDER VM and whose controller view resolves from the
|
|
224
|
-
* supplied
|
|
225
|
-
*
|
|
286
|
+
* supplied log -- the pre-transition head for the opening read, the
|
|
287
|
+
* post-reinstall head for the rotation (the inventory-changing anchor the
|
|
288
|
+
* ceremony-tail license admits), while its HTTP requests invoke under the still-standing
|
|
226
289
|
* client
|
|
227
290
|
* @param options.credentialKeyAgreementKey {IKeyAgreementKey} the standing
|
|
228
291
|
* credential's key-agreement key -- the recipient whose wrap survives the
|
|
@@ -261,7 +324,7 @@ export declare class RecordRemintFailedError extends Error {
|
|
|
261
324
|
* @param options.onBeforeRemoval {Function}
|
|
262
325
|
* `({ did, doc, log }) => Promise<void>` -- the record re-bind seam: runs
|
|
263
326
|
* after the record re-mint stage, immediately before the removal entry,
|
|
264
|
-
* with the post-
|
|
327
|
+
* with the post-reinstall published state. The caller re-signs the login
|
|
265
328
|
* credential's bridge and `delegatedClients` sibling with the ladder VM
|
|
266
329
|
* and re-seals its unlock record here -- the only stage that reaches the
|
|
267
330
|
* login credential's record, which the `unlockMethods` pass skips. Must
|
|
@@ -270,8 +333,9 @@ export declare class RecordRemintFailedError extends Error {
|
|
|
270
333
|
* @param [options.now] {number} epoch milliseconds, for tests
|
|
271
334
|
* @returns {Promise<LastEnrolledClientForgetResult>}
|
|
272
335
|
*/
|
|
273
|
-
export declare function forgetLastEnrolledClient({ logStore, pinStore, ladderSeed, forgottenClient, forgottenKeyAgreementKeyMultibase, knownLatentHashes, expectedDid, rosterStoreFor, credentialKeyAgreementKey, userKey, pinnedEpochId, onUserKeyAdopted, collections, annex, unlockMethods, onBeforeRemoval, now }: {
|
|
336
|
+
export declare function forgetLastEnrolledClient({ logStore, clientLogStore, pinStore, ladderSeed, forgottenClient, forgottenKeyAgreementKeyMultibase, knownLatentHashes, expectedDid, rosterStoreFor, credentialKeyAgreementKey, userKey, pinnedEpochId, onUserKeyAdopted, collections, annex, unlockMethods, onBeforeRemoval, now }: {
|
|
274
337
|
logStore: UnlockLogStore;
|
|
338
|
+
clientLogStore: UnlockLogStore;
|
|
275
339
|
pinStore?: ResourceLogPinStore;
|
|
276
340
|
ladderSeed: Uint8Array;
|
|
277
341
|
forgottenClient: RevokedClientKeys;
|
|
@@ -309,4 +373,31 @@ export declare function forgetLastEnrolledClient({ logStore, pinStore, ladderSee
|
|
|
309
373
|
}) => Promise<void>;
|
|
310
374
|
now?: number;
|
|
311
375
|
}): Promise<LastEnrolledClientForgetResult>;
|
|
376
|
+
/**
|
|
377
|
+
* THE LAST-CLIENT REMOVAL ENTRY (stage 7, the transition's own removal): the
|
|
378
|
+
* plain forget's removal shape (`clientForgetEntryOnce`) with this ceremony's
|
|
379
|
+
* removability invariant injected instead of the plain forget's last-client
|
|
380
|
+
* refusal -- the forgotten client IS the last enrolled client, and the
|
|
381
|
+
* account stays invocable because the ladder VM the reinstall entry published
|
|
382
|
+
* remains in the document. Run only from {@link forgetLastEnrolledClient},
|
|
383
|
+
* which sequences the strike-and-reinstall pair, the rotation, and the
|
|
384
|
+
* revocations before it.
|
|
385
|
+
*
|
|
386
|
+
* @param options {object} see `forgetWebvhClient` in `ladderAnchored.ts`
|
|
387
|
+
* @returns {Promise<{ did: string, doc: DIDDoc, log: DIDLog }>}
|
|
388
|
+
*/
|
|
389
|
+
export declare function forgetLastWebvhClient(options: {
|
|
390
|
+
store: UnlockLogStore;
|
|
391
|
+
projectionStore?: Pick<WebvhIdStore, 'getIdResourceRaw' | 'putIdResource'>;
|
|
392
|
+
ladderSeed: Uint8Array;
|
|
393
|
+
forgottenClient: RevokedClientKeys;
|
|
394
|
+
knownLatentHashes?: string[];
|
|
395
|
+
expectedDid?: string;
|
|
396
|
+
pinStore?: ResourceLogPinStore;
|
|
397
|
+
logId?: string;
|
|
398
|
+
}): Promise<{
|
|
399
|
+
did: string;
|
|
400
|
+
doc: DIDDoc;
|
|
401
|
+
log: DIDLog;
|
|
402
|
+
}>;
|
|
312
403
|
//# sourceMappingURL=forgetLast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forgetLast.d.ts","sourceRoot":"","sources":["../../src/clientAnnex/forgetLast.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"forgetLast.d.ts","sourceRoot":"","sources":["../../src/clientAnnex/forgetLast.ts"],"names":[],"mappings":"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"}
|