@interop/wallet-core 0.45.0 → 0.47.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/dist/keyring/record.d.ts +4 -3
- package/dist/keyring/record.d.ts.map +1 -1
- package/dist/keyring/record.js.map +1 -1
- package/dist/keys/rosterLogStore.d.ts.map +1 -1
- package/dist/keys/rosterLogStore.js +18 -1
- package/dist/keys/rosterLogStore.js.map +1 -1
- package/dist/keys/rosterStore.d.ts +25 -1
- package/dist/keys/rosterStore.d.ts.map +1 -1
- package/dist/keys/rosterStore.js +6 -2
- package/dist/keys/rosterStore.js.map +1 -1
- package/dist/recovery/index.d.ts +1 -1
- package/dist/recovery/index.d.ts.map +1 -1
- package/dist/recovery/index.js +1 -1
- package/dist/recovery/index.js.map +1 -1
- package/dist/recovery/recoveryDelegation.d.ts +27 -40
- package/dist/recovery/recoveryDelegation.d.ts.map +1 -1
- package/dist/recovery/recoveryDelegation.js +119 -53
- package/dist/recovery/recoveryDelegation.js.map +1 -1
- package/dist/resourceLog/controller.d.ts +38 -3
- package/dist/resourceLog/controller.d.ts.map +1 -1
- package/dist/resourceLog/controller.js +106 -10
- package/dist/resourceLog/controller.js.map +1 -1
- package/dist/resourceLog/errors.d.ts +22 -1
- package/dist/resourceLog/errors.d.ts.map +1 -1
- package/dist/resourceLog/errors.js +23 -1
- package/dist/resourceLog/errors.js.map +1 -1
- package/dist/resourceLog/index.d.ts +8 -6
- package/dist/resourceLog/index.d.ts.map +1 -1
- package/dist/resourceLog/index.js +7 -5
- package/dist/resourceLog/index.js.map +1 -1
- package/dist/resourceLog/license.d.ts +44 -0
- package/dist/resourceLog/license.d.ts.map +1 -0
- package/dist/resourceLog/license.js +63 -0
- package/dist/resourceLog/license.js.map +1 -0
- package/dist/resourceLog/verify.d.ts +3 -2
- package/dist/resourceLog/verify.d.ts.map +1 -1
- package/dist/resourceLog/verify.js +30 -8
- package/dist/resourceLog/verify.js.map +1 -1
- package/dist/unlock/index.d.ts +17 -8
- package/dist/unlock/index.d.ts.map +1 -1
- package/dist/unlock/index.js +17 -8
- package/dist/unlock/index.js.map +1 -1
- package/dist/unlock/ladder.d.ts +76 -0
- package/dist/unlock/ladder.d.ts.map +1 -1
- package/dist/unlock/ladder.js +111 -1
- package/dist/unlock/ladder.js.map +1 -1
- package/dist/unlock/standingWebvh.d.ts +39 -0
- package/dist/unlock/standingWebvh.d.ts.map +1 -1
- package/dist/unlock/standingWebvh.js +69 -4
- package/dist/unlock/standingWebvh.js.map +1 -1
- package/dist/unlock/unlockRecord.d.ts +28 -8
- package/dist/unlock/unlockRecord.d.ts.map +1 -1
- package/dist/unlock/unlockRecord.js +93 -13
- package/dist/unlock/unlockRecord.js.map +1 -1
- package/dist/webvh/companion.d.ts +681 -0
- package/dist/webvh/companion.d.ts.map +1 -0
- package/dist/webvh/companion.js +1151 -0
- package/dist/webvh/companion.js.map +1 -0
- package/dist/webvh/delegatedLogStore.d.ts +67 -0
- package/dist/webvh/delegatedLogStore.d.ts.map +1 -0
- package/dist/webvh/delegatedLogStore.js +104 -0
- package/dist/webvh/delegatedLogStore.js.map +1 -0
- package/dist/webvh/didWebvh.d.ts +109 -5
- package/dist/webvh/didWebvh.d.ts.map +1 -1
- package/dist/webvh/didWebvh.js +186 -21
- package/dist/webvh/didWebvh.js.map +1 -1
- package/dist/webvh/index.d.ts +34 -5
- package/dist/webvh/index.d.ts.map +1 -1
- package/dist/webvh/index.js +31 -5
- package/dist/webvh/index.js.map +1 -1
- package/dist/webvh/listClients.d.ts +33 -0
- package/dist/webvh/listClients.d.ts.map +1 -1
- package/dist/webvh/listClients.js +27 -0
- package/dist/webvh/listClients.js.map +1 -1
- package/dist/webvh/standingZcap.d.ts +48 -0
- package/dist/webvh/standingZcap.d.ts.map +1 -0
- package/dist/webvh/standingZcap.js +54 -0
- package/dist/webvh/standingZcap.js.map +1 -0
- package/dist/webvh/wasIdStore.d.ts +36 -6
- package/dist/webvh/wasIdStore.d.ts.map +1 -1
- package/dist/webvh/wasIdStore.js +32 -13
- package/dist/webvh/wasIdStore.js.map +1 -1
- package/dist/webvh/zcap.d.ts +24 -0
- package/dist/webvh/zcap.d.ts.map +1 -1
- package/dist/webvh/zcap.js +42 -0
- package/dist/webvh/zcap.js.map +1 -1
- package/package.json +9 -9
package/dist/unlock/ladder.js
CHANGED
|
@@ -42,6 +42,24 @@ export const LADDER_SEED_BYTES = 32;
|
|
|
42
42
|
*/
|
|
43
43
|
const LADDER_SALT = 'freewallet/unlock/update-ladder/v1';
|
|
44
44
|
const LADDER_RUNG_INFO_PREFIX = 'rung/';
|
|
45
|
+
/**
|
|
46
|
+
* The info label of the ladder VM -- the stable sibling key published in the
|
|
47
|
+
* account document while the account has no enrolled durable client. One salt
|
|
48
|
+
* for everything ladder-seed-derived, with the info namespace doing the
|
|
49
|
+
* separation: `vm` can never collide with a `rung/<n>` label. Permanent.
|
|
50
|
+
*/
|
|
51
|
+
const LADDER_VM_INFO = 'vm';
|
|
52
|
+
/**
|
|
53
|
+
* The info-label suffix of a companion rung: the label is
|
|
54
|
+
* `<segment>/rung/<k>` where `<segment>` is the generation collection's name
|
|
55
|
+
* (`gen-<random>`) and `k` is pinned at 0 -- the companion log's update
|
|
56
|
+
* authority is each standing credential's STATIC rung 0 (chain length one,
|
|
57
|
+
* never advanced), so only `/rung/0` is ever derived. The three families
|
|
58
|
+
* under the one salt stay disjoint: `rung/<n>` labels carry exactly one
|
|
59
|
+
* slash followed by a decimal index, `vm` carries none, and a companion
|
|
60
|
+
* label always carries two slashes behind its `gen-` segment. Permanent.
|
|
61
|
+
*/
|
|
62
|
+
const COMPANION_RUNG_INFO_SUFFIX = '/rung/0';
|
|
45
63
|
/**
|
|
46
64
|
* How many rungs {@link attributeLadderRung} derives before concluding the
|
|
47
65
|
* log commits none of them. Generous: one rung is consumed per
|
|
@@ -70,6 +88,20 @@ export class LadderAttributionError extends Error {
|
|
|
70
88
|
export function generateLadderSeed() {
|
|
71
89
|
return crypto.getRandomValues(new Uint8Array(LADDER_SEED_BYTES));
|
|
72
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* The one HKDF invocation of the ladder derivation family. Every
|
|
93
|
+
* ladder-seed-derived key (rungs, the ladder VM) comes through here, so the
|
|
94
|
+
* permanent wire-level triple -- SHA-256, {@link LADDER_SALT}, 32 bytes --
|
|
95
|
+
* lives in exactly one place and only the info label varies.
|
|
96
|
+
*
|
|
97
|
+
* @param options {object}
|
|
98
|
+
* @param options.ladderSeed {Uint8Array}
|
|
99
|
+
* @param options.info {string}
|
|
100
|
+
* @returns {Uint8Array}
|
|
101
|
+
*/
|
|
102
|
+
function ladderDerive({ ladderSeed, info }) {
|
|
103
|
+
return hkdf(sha256, ladderSeed, new TextEncoder().encode(LADDER_SALT), new TextEncoder().encode(info), 32);
|
|
104
|
+
}
|
|
73
105
|
/**
|
|
74
106
|
* Derives the 32-byte update-key seed of rung `index`.
|
|
75
107
|
*
|
|
@@ -82,7 +114,10 @@ export function ladderRungSeed({ ladderSeed, index }) {
|
|
|
82
114
|
if (!Number.isInteger(index) || index < 0) {
|
|
83
115
|
throw new Error(`Invalid ladder rung index "${String(index)}".`);
|
|
84
116
|
}
|
|
85
|
-
return
|
|
117
|
+
return ladderDerive({
|
|
118
|
+
ladderSeed,
|
|
119
|
+
info: `${LADDER_RUNG_INFO_PREFIX}${index}`
|
|
120
|
+
});
|
|
86
121
|
}
|
|
87
122
|
/**
|
|
88
123
|
* Derives rung `index` in full: seed and public multibase.
|
|
@@ -96,6 +131,81 @@ export async function ladderRung({ ladderSeed, index }) {
|
|
|
96
131
|
const seed = ladderRungSeed({ ladderSeed, index });
|
|
97
132
|
return { index, seed, keyMultibase: await updateKeyMultibase({ seed }) };
|
|
98
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Derives the 32-byte Ed25519 seed of the ladder VM -- the STABLE SIBLING: a
|
|
136
|
+
* dedicated key derived once from the ladder seed, distinct from every rung,
|
|
137
|
+
* published verbatim in the account document (the seed is random, so the
|
|
138
|
+
* hash-commitment rule permits it) and stable across rung spends, so a
|
|
139
|
+
* delegation it signed survives every ladder advance. It carries the
|
|
140
|
+
* client-less window's document-visible authority (`assertionMethod` and
|
|
141
|
+
* `capabilityDelegation`), while update authority stays on the rungs -- the
|
|
142
|
+
* two roles never share a key.
|
|
143
|
+
*
|
|
144
|
+
* Because the key is derived, removing its verification method is never the
|
|
145
|
+
* terminal remedy: a later reinstall republishes the same key under the same
|
|
146
|
+
* id, and any still-unexpired delegation it signed resumes verifying the
|
|
147
|
+
* moment the method returns. Revoking the delegations themselves (and,
|
|
148
|
+
* ultimately, rotating the credential) is what actually ends its authority.
|
|
149
|
+
*
|
|
150
|
+
* @param options {object}
|
|
151
|
+
* @param options.ladderSeed {Uint8Array}
|
|
152
|
+
* @returns {Uint8Array}
|
|
153
|
+
*/
|
|
154
|
+
export function ladderVmSeed({ ladderSeed }) {
|
|
155
|
+
return ladderDerive({ ladderSeed, info: LADDER_VM_INFO });
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* The ladder VM's public key multibase, as the document publishes it (see
|
|
159
|
+
* {@link ladderVmSeed} for what the key is).
|
|
160
|
+
*
|
|
161
|
+
* @param options {object}
|
|
162
|
+
* @param options.ladderSeed {Uint8Array}
|
|
163
|
+
* @returns {Promise<string>}
|
|
164
|
+
*/
|
|
165
|
+
export async function ladderVmKeyMultibase({ ladderSeed }) {
|
|
166
|
+
return updateKeyMultibase({ seed: ladderVmSeed({ ladderSeed }) });
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Derives the 32-byte update-key seed of a companion generation's rung 0 --
|
|
170
|
+
* the credential's STATIC update key on that generation's companion log. The
|
|
171
|
+
* sequence is domain-separated per generation by the collection segment
|
|
172
|
+
* (`<segment>/rung/0` under the one {@link LADDER_SALT}): one shared sequence
|
|
173
|
+
* would hand the storage host, a legitimate reader of the private companion,
|
|
174
|
+
* a revealed key matching the ACCOUNT log's standing commitment, and a fresh
|
|
175
|
+
* per-generation sequence is what makes GC replacement self-healing (no rung
|
|
176
|
+
* index survives the deleted log, and none is needed).
|
|
177
|
+
*
|
|
178
|
+
* The segment is trusted here rather than re-validated -- the companion
|
|
179
|
+
* ceremonies assert the `gen-<random>` shape (`assertGenerationSegment`)
|
|
180
|
+
* before any derivation, and the label families stay disjoint for any
|
|
181
|
+
* segment regardless (an account-rung label carries exactly one slash).
|
|
182
|
+
*
|
|
183
|
+
* @param options {object}
|
|
184
|
+
* @param options.ladderSeed {Uint8Array}
|
|
185
|
+
* @param options.segment {string} the generation collection's name
|
|
186
|
+
* @returns {Uint8Array}
|
|
187
|
+
*/
|
|
188
|
+
export function companionRungSeed({ ladderSeed, segment }) {
|
|
189
|
+
return ladderDerive({
|
|
190
|
+
ladderSeed,
|
|
191
|
+
info: `${segment}${COMPANION_RUNG_INFO_SUFFIX}`
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Derives a companion generation's rung 0 in full: seed and public multibase.
|
|
196
|
+
* Deliberately index-free -- the companion chain has length one, so there is
|
|
197
|
+
* no rung to advance to and no attribution scan to run (see
|
|
198
|
+
* {@link companionRungSeed}).
|
|
199
|
+
*
|
|
200
|
+
* @param options {object}
|
|
201
|
+
* @param options.ladderSeed {Uint8Array}
|
|
202
|
+
* @param options.segment {string} the generation collection's name
|
|
203
|
+
* @returns {Promise<{ seed: Uint8Array, keyMultibase: string }>}
|
|
204
|
+
*/
|
|
205
|
+
export async function companionRung({ ladderSeed, segment }) {
|
|
206
|
+
const seed = companionRungSeed({ ladderSeed, segment });
|
|
207
|
+
return { seed, keyMultibase: await updateKeyMultibase({ seed }) };
|
|
208
|
+
}
|
|
99
209
|
/**
|
|
100
210
|
* Recovers the ladder's current rung from the published log's standing
|
|
101
211
|
* parameters -- the counter recovery that replaces any stored counter. Scans
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ladder.js","sourceRoot":"","sources":["../../src/unlock/ladder.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAEnC;;;;GAIG;AACH,MAAM,WAAW,GAAG,oCAAoC,CAAA;AACxD,MAAM,uBAAuB,GAAG,OAAO,CAAA;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;AAElC;;;;;;GAMG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACtC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAClE,CAAC;AAYD;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,UAAU,EACV,KAAK,EAIN;IACC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"ladder.js","sourceRoot":"","sources":["../../src/unlock/ladder.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,45 @@ export declare function unlockKeyVerificationMethod({ did, keyAgreement }: {
|
|
|
62
62
|
did: string;
|
|
63
63
|
keyAgreement: UnlockKeyAgreementPublication;
|
|
64
64
|
}): VerificationMethod;
|
|
65
|
+
/**
|
|
66
|
+
* CLIENT-LESS GENESIS: assembles the one-entry did:webvh log of an account
|
|
67
|
+
* with zero enrolled durable clients, anchored on the minting credential's
|
|
68
|
+
* ladder alone. Everything derives from the ladder seed: rung 0 is the sole
|
|
69
|
+
* `updateKeys` member and signs the entry, `nextKeyHashes` commits rung 0's
|
|
70
|
+
* own carry-over hash plus rung 1 (the staged rung) -- the carry-over hash is
|
|
71
|
+
* what the first durable self-enrollment's reveal-and-commit entry,
|
|
72
|
+
* re-stating `updateKeys` containing rung 0, requires --
|
|
73
|
+
* and the ladder VM (the stable sibling) is published under `assertionMethod`
|
|
74
|
+
* and `capabilityDelegation` only. The credential's `keyAgreement` posture
|
|
75
|
+
* entry is FOLDED INTO GENESIS -- no enrolled client exists to run the
|
|
76
|
+
* separate bind entry ({@link publishUnlockKey}) -- so the genesis
|
|
77
|
+
* `keyAgreement` array holds only the credential's entry.
|
|
78
|
+
*
|
|
79
|
+
* The client-less window this opens is closed by the credential's first
|
|
80
|
+
* durable self-enrollment ({@link selfEnrollWebvhClient}), whose add entry
|
|
81
|
+
* atomically publishes the client, retires rung 0, and removes the ladder VM.
|
|
82
|
+
*
|
|
83
|
+
* The caller owns publication (conditional, create-only) and the pointer
|
|
84
|
+
* write that follows; this assembles and signs the log only.
|
|
85
|
+
*
|
|
86
|
+
* @param options {object}
|
|
87
|
+
* @param options.wasServerUrl {string}
|
|
88
|
+
* @param options.spaceId {string}
|
|
89
|
+
* @param options.ladderSeed {Uint8Array} the credential's ladder seed
|
|
90
|
+
* @param options.keyAgreement {UnlockKeyAgreementPublication} the
|
|
91
|
+
* credential's key-agreement publication (commitment or verbatim)
|
|
92
|
+
* @returns {Promise<{ log: DIDLog, webDoc: object, did: string }>}
|
|
93
|
+
*/
|
|
94
|
+
export declare function createClientlessAccountLog({ wasServerUrl, spaceId, ladderSeed, keyAgreement }: {
|
|
95
|
+
wasServerUrl: string;
|
|
96
|
+
spaceId: string;
|
|
97
|
+
ladderSeed: Uint8Array;
|
|
98
|
+
keyAgreement: UnlockKeyAgreementPublication;
|
|
99
|
+
}): Promise<{
|
|
100
|
+
log: DIDLog;
|
|
101
|
+
webDoc: object;
|
|
102
|
+
did: string;
|
|
103
|
+
}>;
|
|
65
104
|
/**
|
|
66
105
|
* BIND (run by an enrolled client, root authority): publishes a standing
|
|
67
106
|
* credential's split posture into the document -- one entry adding the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standingWebvh.d.ts","sourceRoot":"","sources":["../../src/unlock/standingWebvh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"standingWebvh.d.ts","sourceRoot":"","sources":["../../src/unlock/standingWebvh.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,10 @@
|
|
|
34
34
|
* hash. The credential's own posture -- its `keyAgreement` entry and the
|
|
35
35
|
* freshly committed `hash(rung i + 1)` -- stands untouched, ready for the
|
|
36
36
|
* next self-enrollment. Nothing is spent, and no replacement exists.
|
|
37
|
+
* When the account was CLIENT-LESS ({@link createClientlessAccountLog}),
|
|
38
|
+
* the same atomic entry removes the ladder VM from the document and its
|
|
39
|
+
* relations -- the transitional key exists only while no durable client
|
|
40
|
+
* does, and folding the removal in leaves no window with neither.
|
|
37
41
|
*
|
|
38
42
|
* Which rung is current is recovered from the log itself
|
|
39
43
|
* (`attributeLadderRung`, fail-closed); a lost compare-and-swap race re-runs,
|
|
@@ -42,8 +46,9 @@
|
|
|
42
46
|
* from durable state alone, on the recovery continuation's pattern.
|
|
43
47
|
*/
|
|
44
48
|
import { deriveNextKeyHash, updateDID } from '@interop/did-method-webvh';
|
|
45
|
-
import { assertCarryOverCommitments, BYOE_CONTEXT_URL, markedVerificationMethodPair, MULTIKEY_COMMITMENT_VM_TYPE, MULTIKEY_VM_TYPE, publishUpdatedLog, putLogResource, readPublishedLog, relationIds, updateKeyMultibase, updateKeySigner, withLogConflictRetry } from '../webvh/didWebvh.js';
|
|
46
|
-
import {
|
|
49
|
+
import { assertCarryOverCommitments, BYOE_CONTEXT_URL, createClientlessWebvhLog, didWebvhControllerTemplate, genesisNextKeyHashes, markedVerificationMethodPair, MULTIKEY_COMMITMENT_VM_TYPE, MULTIKEY_VM_TYPE, publishUpdatedLog, putLogResource, readPublishedLog, relationIds, updateKeyMultibase, updateKeySigner, withLogConflictRetry } from '../webvh/didWebvh.js';
|
|
50
|
+
import { ladderVmIds } from '../webvh/listClients.js';
|
|
51
|
+
import { attributeLadderRung, ladderRung, ladderVmKeyMultibase } from './ladder.js';
|
|
47
52
|
/**
|
|
48
53
|
* The verification-method id a credential's key-agreement entry publishes
|
|
49
54
|
* under: `<did>#<multibase>` for a verbatim key (indistinguishable by id from
|
|
@@ -94,6 +99,58 @@ export function unlockKeyVerificationMethod({ did, keyAgreement }) {
|
|
|
94
99
|
publicKeyCommitment: keyAgreement.commitment
|
|
95
100
|
};
|
|
96
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* CLIENT-LESS GENESIS: assembles the one-entry did:webvh log of an account
|
|
104
|
+
* with zero enrolled durable clients, anchored on the minting credential's
|
|
105
|
+
* ladder alone. Everything derives from the ladder seed: rung 0 is the sole
|
|
106
|
+
* `updateKeys` member and signs the entry, `nextKeyHashes` commits rung 0's
|
|
107
|
+
* own carry-over hash plus rung 1 (the staged rung) -- the carry-over hash is
|
|
108
|
+
* what the first durable self-enrollment's reveal-and-commit entry,
|
|
109
|
+
* re-stating `updateKeys` containing rung 0, requires --
|
|
110
|
+
* and the ladder VM (the stable sibling) is published under `assertionMethod`
|
|
111
|
+
* and `capabilityDelegation` only. The credential's `keyAgreement` posture
|
|
112
|
+
* entry is FOLDED INTO GENESIS -- no enrolled client exists to run the
|
|
113
|
+
* separate bind entry ({@link publishUnlockKey}) -- so the genesis
|
|
114
|
+
* `keyAgreement` array holds only the credential's entry.
|
|
115
|
+
*
|
|
116
|
+
* The client-less window this opens is closed by the credential's first
|
|
117
|
+
* durable self-enrollment ({@link selfEnrollWebvhClient}), whose add entry
|
|
118
|
+
* atomically publishes the client, retires rung 0, and removes the ladder VM.
|
|
119
|
+
*
|
|
120
|
+
* The caller owns publication (conditional, create-only) and the pointer
|
|
121
|
+
* write that follows; this assembles and signs the log only.
|
|
122
|
+
*
|
|
123
|
+
* @param options {object}
|
|
124
|
+
* @param options.wasServerUrl {string}
|
|
125
|
+
* @param options.spaceId {string}
|
|
126
|
+
* @param options.ladderSeed {Uint8Array} the credential's ladder seed
|
|
127
|
+
* @param options.keyAgreement {UnlockKeyAgreementPublication} the
|
|
128
|
+
* credential's key-agreement publication (commitment or verbatim)
|
|
129
|
+
* @returns {Promise<{ log: DIDLog, webDoc: object, did: string }>}
|
|
130
|
+
*/
|
|
131
|
+
export async function createClientlessAccountLog({ wasServerUrl, spaceId, ladderSeed, keyAgreement }) {
|
|
132
|
+
const rung0 = await ladderRung({ ladderSeed, index: 0 });
|
|
133
|
+
const rung1 = await ladderRung({ ladderSeed, index: 1 });
|
|
134
|
+
const controllerTemplate = didWebvhControllerTemplate({
|
|
135
|
+
wasServerUrl,
|
|
136
|
+
spaceId
|
|
137
|
+
});
|
|
138
|
+
return createClientlessWebvhLog({
|
|
139
|
+
wasServerUrl,
|
|
140
|
+
spaceId,
|
|
141
|
+
ladderVmKeyMultibase: await ladderVmKeyMultibase({ ladderSeed }),
|
|
142
|
+
credentialKeyAgreementMethod: unlockKeyVerificationMethod({
|
|
143
|
+
did: controllerTemplate,
|
|
144
|
+
keyAgreement
|
|
145
|
+
}),
|
|
146
|
+
updateKeyPublicKeyMultibase: rung0.keyMultibase,
|
|
147
|
+
nextKeyHashes: await genesisNextKeyHashes({
|
|
148
|
+
activeKeyMultibase: rung0.keyMultibase,
|
|
149
|
+
stagedKeyMultibase: rung1.keyMultibase
|
|
150
|
+
}),
|
|
151
|
+
signer: await updateKeySigner({ seed: rung0.seed })
|
|
152
|
+
});
|
|
153
|
+
}
|
|
97
154
|
/**
|
|
98
155
|
* Reads and resolves the published log through the narrow store seam.
|
|
99
156
|
*
|
|
@@ -333,6 +390,13 @@ async function selfEnrollWebvhClientOnce({ store, ladderSeed, newClientKeys, new
|
|
|
333
390
|
// client's update key, whose hash the commit entry just committed.
|
|
334
391
|
const { did, doc } = published;
|
|
335
392
|
const vmId = (publicKeyMultibase) => `${did}#${publicKeyMultibase}`;
|
|
393
|
+
// When this is the FIRST durable enrollment of a client-less account, the
|
|
394
|
+
// same atomic entry ends the client-less window: every ladder VM (the
|
|
395
|
+
// relation-asymmetry recognition) leaves the document and its relations
|
|
396
|
+
// here, so no window exists where the account has neither a durable client
|
|
397
|
+
// nor the ladder VM. On an account with enrolled clients the recognition
|
|
398
|
+
// finds none and the filters are no-ops.
|
|
399
|
+
const ladderVms = ladderVmIds({ doc });
|
|
336
400
|
const addedMethods = markedVerificationMethodPair({
|
|
337
401
|
controller: did,
|
|
338
402
|
signingKeyMultibase: newClientKeys.signingKeyMultibase,
|
|
@@ -340,10 +404,11 @@ async function selfEnrollWebvhClientOnce({ store, ladderSeed, newClientKeys, new
|
|
|
340
404
|
});
|
|
341
405
|
const existingMethods = (doc.verificationMethod ?? []);
|
|
342
406
|
const verificationMethods = [
|
|
343
|
-
...existingMethods.filter(method => !addedMethods.some(added => added.id === method.id)
|
|
407
|
+
...existingMethods.filter(method => !addedMethods.some(added => added.id === method.id) &&
|
|
408
|
+
(method.id === undefined || !ladderVms.includes(method.id))),
|
|
344
409
|
...addedMethods
|
|
345
410
|
];
|
|
346
|
-
const withReference = (relation, id) => [...new Set([...relationIds(relation), id])];
|
|
411
|
+
const withReference = (relation, id) => [...new Set([...relationIds(relation), id])].filter(referencedId => !ladderVms.includes(referencedId));
|
|
347
412
|
const signingVmId = vmId(newClientKeys.signingKeyMultibase);
|
|
348
413
|
const signer = await updateKeySigner({
|
|
349
414
|
seed: newClientUpdateSeeds.updateSeed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standingWebvh.js","sourceRoot":"","sources":["../../src/unlock/standingWebvh.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"standingWebvh.js","sourceRoot":"","sources":["../../src/unlock/standingWebvh.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,15 +26,18 @@ export interface SealedRecordMember {
|
|
|
26
26
|
/**
|
|
27
27
|
* The unwrapped contents of an unlock record: the credential-authenticated
|
|
28
28
|
* account core (controller + pointer, plus the ladder seed where the
|
|
29
|
-
* credential is a standing method), the bridge delegation, the optional
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* credential is a standing method), the bridge delegation, the optional
|
|
30
|
+
* companion-Space delegation (`delegatedClients` -- a standing credential's
|
|
31
|
+
* pre-minted GET+PUT over the auxiliary companion Space's items subtree),
|
|
32
|
+
* the optional bind email, and the bind timestamp. `pointer` is required --
|
|
33
|
+
* the record exists only on WAS deployments.
|
|
32
34
|
*/
|
|
33
35
|
export interface UnlockRecordContents {
|
|
34
36
|
controller: string;
|
|
35
37
|
email?: string;
|
|
36
38
|
pointer: AccountPointer;
|
|
37
39
|
delegation: IZcap;
|
|
40
|
+
delegatedClients?: IZcap;
|
|
38
41
|
ladderSeed?: Uint8Array;
|
|
39
42
|
createdAt: string;
|
|
40
43
|
}
|
|
@@ -45,6 +48,7 @@ export interface UnlockRecordContents {
|
|
|
45
48
|
export interface SignedUnlockRecord extends SignedRecord {
|
|
46
49
|
binding: string;
|
|
47
50
|
bridge: SealedRecordMember;
|
|
51
|
+
delegatedClients?: SealedRecordMember;
|
|
48
52
|
ladder?: SealedRecordMember;
|
|
49
53
|
}
|
|
50
54
|
/**
|
|
@@ -110,6 +114,9 @@ export declare function unlockRecordBinding({ record }: {
|
|
|
110
114
|
* @param options.pointer {AccountPointer} the account pointer
|
|
111
115
|
* @param options.delegation {IZcap} the PUT-on-`did.jsonl` delegation to
|
|
112
116
|
* the credential-derived signing DID
|
|
117
|
+
* @param [options.delegatedClients] {IZcap} the companion-Space delegation
|
|
118
|
+
* (GET+PUT over the auxiliary Space's items subtree), for a standing
|
|
119
|
+
* credential (a recovery code carries none)
|
|
113
120
|
* @param [options.ladderSeed] {Uint8Array} the update-key ladder seed, for
|
|
114
121
|
* a standing credential (a recovery code carries none)
|
|
115
122
|
* @param options.keyAgreementKey {IKeyAgreementKey} the credential's unlock
|
|
@@ -122,11 +129,12 @@ export declare function unlockRecordBinding({ record }: {
|
|
|
122
129
|
* freshness.
|
|
123
130
|
* @returns {Promise<SignedUnlockRecord>}
|
|
124
131
|
*/
|
|
125
|
-
export declare function wrapUnlockRecord({ controller, email, pointer, delegation, ladderSeed, keyAgreementKey, signer, bindingMacKey, createdAt }: {
|
|
132
|
+
export declare function wrapUnlockRecord({ controller, email, pointer, delegation, delegatedClients, ladderSeed, keyAgreementKey, signer, bindingMacKey, createdAt }: {
|
|
126
133
|
controller: string;
|
|
127
134
|
email?: string;
|
|
128
135
|
pointer: AccountPointer;
|
|
129
136
|
delegation: IZcap;
|
|
137
|
+
delegatedClients?: IZcap;
|
|
130
138
|
ladderSeed?: Uint8Array;
|
|
131
139
|
keyAgreementKey: IKeyAgreementKey;
|
|
132
140
|
signer: RecordSigner;
|
|
@@ -177,15 +185,23 @@ export declare function unwrapUnlockRecord({ record, keyAgreementKey, keyResolve
|
|
|
177
185
|
proofState: UnlockRecordProofState;
|
|
178
186
|
}>;
|
|
179
187
|
/**
|
|
180
|
-
* Re-mints an unlock record's
|
|
181
|
-
* replaces a rotted or expiring
|
|
188
|
+
* Re-mints an unlock record's pre-minted delegations: the revocation-cascade
|
|
189
|
+
* path that replaces a rotted or expiring bridge (and, where the record
|
|
190
|
+
* carries one, its companion-Space sibling) while touching nothing else. The
|
|
182
191
|
* shell, the ladder member, and the binding are carried VERBATIM (the re-mint
|
|
183
192
|
* cannot decrypt any of them and does not need to -- each is self-contained
|
|
184
|
-
* and the binding covers the core),
|
|
193
|
+
* and the binding covers the core), the fresh delegations are sealed to the
|
|
185
194
|
* credential's unlock KAK public half, and the frame is re-signed by the
|
|
186
195
|
* acting client's account key -- the mixed-signer case the reader settles
|
|
187
196
|
* against the verified document.
|
|
188
197
|
*
|
|
198
|
+
* The two members rot on one axis (same signer, same current-key-set rule,
|
|
199
|
+
* same renewal window), so a re-mint pass reseals both atomically; a
|
|
200
|
+
* `delegatedClients` member the caller supplies no fresh delegation for is
|
|
201
|
+
* carried verbatim, sealed as it stands (self-contained, like the ladder) --
|
|
202
|
+
* the fallback for a pass that cannot rebuild the companion target, never
|
|
203
|
+
* the intended steady state.
|
|
204
|
+
*
|
|
189
205
|
* A record with no binding cannot be re-minted ({@link UnlockBindingError});
|
|
190
206
|
* its credential must be rebound.
|
|
191
207
|
*
|
|
@@ -193,14 +209,18 @@ export declare function unwrapUnlockRecord({ record, keyAgreementKey, keyResolve
|
|
|
193
209
|
* @param options.record {unknown} the standing stored record
|
|
194
210
|
* @param options.delegation {IZcap} the freshly minted `did.jsonl`
|
|
195
211
|
* delegation
|
|
212
|
+
* @param [options.delegatedClients] {IZcap} the freshly minted
|
|
213
|
+
* companion-Space delegation; when absent, an existing `delegatedClients`
|
|
214
|
+
* member travels verbatim
|
|
196
215
|
* @param options.keyAgreementKey {IKeyAgreementKey} the credential's unlock
|
|
197
216
|
* KAK, public half only
|
|
198
217
|
* @param options.signer {RecordSigner} the acting client's account key
|
|
199
218
|
* @returns {Promise<SignedUnlockRecord>}
|
|
200
219
|
*/
|
|
201
|
-
export declare function
|
|
220
|
+
export declare function remintUnlockRecordDelegations({ record, delegation, delegatedClients, keyAgreementKey, signer }: {
|
|
202
221
|
record: unknown;
|
|
203
222
|
delegation: IZcap;
|
|
223
|
+
delegatedClients?: IZcap;
|
|
204
224
|
keyAgreementKey: IKeyAgreementKey;
|
|
205
225
|
signer: RecordSigner;
|
|
206
226
|
}): Promise<SignedUnlockRecord>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unlockRecord.d.ts","sourceRoot":"","sources":["../../src/unlock/unlockRecord.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unlockRecord.d.ts","sourceRoot":"","sources":["../../src/unlock/unlockRecord.ts"],"names":[],"mappings":"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"}
|