@seams/wallet-server 0.10.2 → 0.11.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/THIRD_PARTY_NOTICES.md +33 -1812
- package/artifact-manifest.json +30 -30
- package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
- package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
- package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/router/index.js +2 -2
- package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
- package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
- package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
- package/dist/esm/cloud-host.js +7 -6
- package/dist/esm/hosted-wallet-gateway.js +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/localHostedWalletGatewayHandler.js +17 -11
- package/dist/esm/localIntendedYaoFault.js +34 -3
- package/dist/esm/localIntendedYaoRecoveryFault.js +19 -16
- package/dist/esm/localIntendedYaoSigningFault.js +31 -16
- package/dist/esm/router/auth/routerApiKeyAuth.js +1 -13
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +3 -3
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +19 -0
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +5 -5
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +5 -2
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +7 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +29 -4
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationRead.js +6 -3
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +51 -29
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +23 -7
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +1 -1
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +2 -2
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +3 -3
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +1 -1
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +1 -1
- package/dist/esm/router/cloudflare-adaptor.js +2 -2
- package/dist/esm/router/cloudflare.js +2477 -2438
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +1 -1
- package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +39 -32
- package/dist/esm/router/framework/registrationSetupDispatch.js +11 -3
- package/dist/esm/router/framework/routeResponses.js +1 -5
- package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +1 -1
- package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +2 -2
- package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +51 -24
- package/dist/esm/shared-ts/src/utils/validation.js +5 -1
- package/dist/esm/threshold/session/signingSessionSeal/index.js +1 -2
- package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
- package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/types/wallet-server/src/cloud-host.d.ts +1 -0
- package/dist/types/wallet-server/src/localHostedWalletGatewayHandler.d.ts +1 -1
- package/dist/types/wallet-server/src/localIntendedYaoFault.d.ts +13 -3
- package/dist/types/wallet-server/src/localIntendedYaoRecoveryFault.d.ts +4 -2
- package/dist/types/wallet-server/src/localIntendedYaoSigningFault.d.ts +4 -2
- package/dist/types/wallet-server/src/router/auth/routerApiKeyAuth.d.ts +0 -8
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +1 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +25 -5
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts +15 -0
- package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +1 -1
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +2 -0
- package/dist/types/wallet-server/src/router/framework/routeResponses.d.ts +0 -2
- package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/index.d.ts +1 -2
- package/package.json +2 -9
- package/src/README.md +5 -3
- package/dist/esm/router/express-adaptor.js +0 -84
- package/dist/esm/router/express.js +0 -26400
- package/dist/esm/router/node/nodeHostedWalletGateway.js +0 -64
- package/dist/esm/router/node/nodeHostedWalletGatewayCheck.js +0 -163
- package/dist/esm/router/node/nodeHostedWalletGatewayMain.js +0 -120
- package/dist/esm/router/node/nodeHttp.js +0 -79
- package/dist/esm/router/node/nodeSqlite.js +0 -43
- package/dist/esm/router/node/signerSqlMigrations.js +0 -48
- package/dist/esm/storage/syncSqlite.js +0 -79
- package/dist/esm/threshold/session/signingSessionSeal/transport/express.js +0 -75
- package/dist/types/wallet-server/src/router/express-adaptor.d.ts +0 -22
- package/dist/types/wallet-server/src/router/node/nodeHostedWalletGateway.d.ts +0 -34
- package/dist/types/wallet-server/src/router/node/nodeHostedWalletGatewayCheck.d.ts +0 -21
- package/dist/types/wallet-server/src/router/node/nodeHostedWalletGatewayMain.d.ts +0 -2
- package/dist/types/wallet-server/src/router/node/nodeHttp.d.ts +0 -13
- package/dist/types/wallet-server/src/router/node/nodeSqlite.d.ts +0 -22
- package/dist/types/wallet-server/src/router/node/signerSqlMigrations.d.ts +0 -20
- package/dist/types/wallet-server/src/storage/syncSqlite.d.ts +0 -28
- package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/express.d.ts +0 -12
|
@@ -40,6 +40,25 @@ var D1RegistrationCeremonyRecordStore = class {
|
|
|
40
40
|
prepareGet(scope, id) {
|
|
41
41
|
return this.prepareRead(this.normalizeKey(scope, id));
|
|
42
42
|
}
|
|
43
|
+
/** Load the ceremony's immutable founding identities and their current records together. */
|
|
44
|
+
prepareFoundingRecordsRead(id) {
|
|
45
|
+
const key = this.normalizeKey("ceremony", id);
|
|
46
|
+
return this.database.prepare(`
|
|
47
|
+
SELECT json_extract(ceremony.record_json, '$.foundingWalletAuthorityId') AS authority_id,
|
|
48
|
+
json_extract(ceremony.record_json, '$.foundingWalletAuthMethodId') AS auth_method_id,
|
|
49
|
+
(SELECT record_json FROM wallet_authorities
|
|
50
|
+
WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
|
|
51
|
+
AND authority_id = json_extract(ceremony.record_json, '$.foundingWalletAuthorityId'))
|
|
52
|
+
AS authority_json,
|
|
53
|
+
(SELECT record_json FROM wallet_auth_methods
|
|
54
|
+
WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
|
|
55
|
+
AND wallet_auth_method_id = json_extract(ceremony.record_json, '$.foundingWalletAuthMethodId'))
|
|
56
|
+
AS auth_method_json
|
|
57
|
+
FROM registration_ceremony_records AS ceremony
|
|
58
|
+
WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
|
|
59
|
+
AND record_scope = ?5 AND record_id = ?6
|
|
60
|
+
`).bind(...this.bindKey(key));
|
|
61
|
+
}
|
|
43
62
|
async parseGet(scope, id, row) {
|
|
44
63
|
if (!row) return null;
|
|
45
64
|
const parsed = parseStoredRow(row);
|
|
@@ -20,16 +20,16 @@ import { thresholdEcdsaChainTargetFromValue } from "../../../../core/thresholdEc
|
|
|
20
20
|
import { buildWalletEcdsaSignerRecord, parseWalletEd25519SignerRecord } from "../../../../core/d1WalletStore.js";
|
|
21
21
|
import { nearEd25519SigningKeyIdFromString, walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
|
|
22
22
|
import { registrationPreparationIdFromString } from "../../../../core/types.js";
|
|
23
|
-
import "../../../../shared-ts/src/signing-lanes/index.js";
|
|
24
|
-
import { parsePasskeyCustodyEnvelopeRecord } from "../../../../shared-ts/src/passkey-custody/custodyEnvelope.js";
|
|
25
|
-
import "../../../../shared-ts/src/passkey-custody/index.js";
|
|
26
23
|
import { parseImplicitNearAccountId, parseNamedNearAccountId } from "../../../../shared-ts/src/utils/near.js";
|
|
27
24
|
import { findRegistrationSignerPlanNearEd25519Branch, normalizeAddSignerSelection, normalizeRegistrationSignerPlan, registrationSignerBranchKeyFromString, registrationSignerSetSelectionFromPlan } from "../../../../shared-ts/src/utils/registrationSignerPlan.js";
|
|
25
|
+
import { parseStoredRegistrationSignerPlan, parseStoredWalletRegistrationPreparedContext, storedRegistrationSignerPlansMatch } from "../../../../core/RegistrationCeremonyStore.js";
|
|
26
|
+
import "../../../../shared-ts/src/signing-lanes/index.js";
|
|
28
27
|
import { addAuthMethodIntentGrantFromString, addSignerIntentGrantFromString, normalizeAddAuthMethodIntentCaller } from "../../../../shared-ts/src/utils/registrationIntent.js";
|
|
28
|
+
import { parsePasskeyCustodyEnvelopeRecord } from "../../../../shared-ts/src/passkey-custody/custodyEnvelope.js";
|
|
29
|
+
import "../../../../shared-ts/src/passkey-custody/index.js";
|
|
29
30
|
import { parseEcdsaDerivationPublicIdentity, parseThresholdEd25519AuthorityScope, thresholdEd25519AuthorityScopeFromWalletAuthAuthority, thresholdEd25519AuthorityScopesMatch } from "../../../../core/ThresholdService/validation.js";
|
|
30
|
-
import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
|
|
31
|
-
import { parseStoredRegistrationSignerPlan, parseStoredWalletRegistrationPreparedContext, storedRegistrationSignerPlansMatch } from "../../../../core/RegistrationCeremonyStore.js";
|
|
32
31
|
import { parseStoredRouterAbEcdsaPendingActivationV1 } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
|
|
32
|
+
import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
|
|
33
33
|
//#region src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.ts
|
|
34
34
|
function inferRuntimePolicyScopeFromSigningRoot(input) {
|
|
35
35
|
const signingRootId = normalizeOptionalTrimmedString(input.signingRootId);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
|
|
2
2
|
import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
|
|
3
|
-
import {
|
|
3
|
+
import { D1RegistrationCeremonyRecordStore } from "./d1RegistrationCeremonyRecordStore.js";
|
|
4
4
|
import { parseD1StoredAddAuthMethodIntent, parseD1StoredAddSignerIntent, parseD1StoredWalletAddAuthMethodCeremony, parseD1StoredWalletAddAuthMethodFinalizeReplay, parseD1StoredWalletAddSignerCeremony, parseD1StoredWalletAddSignerFinalizeReplay, parseD1StoredWalletRegistrationCeremony } from "./d1RegistrationCeremonyRecords.js";
|
|
5
|
+
import { prepareD1RegistrationHomeReservation } from "./d1WalletExecutionAuthority.js";
|
|
5
6
|
import { retryTransientD1 } from "../../../../storage/d1Retry.js";
|
|
6
|
-
import { D1RegistrationCeremonyRecordStore } from "./d1RegistrationCeremonyRecordStore.js";
|
|
7
7
|
//#region src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.ts
|
|
8
8
|
var CloudflareD1RegistrationCeremonyIntentStore = class {
|
|
9
9
|
constructor(input) {
|
|
@@ -47,6 +47,9 @@ var CloudflareD1RegistrationCeremonyIntentStore = class {
|
|
|
47
47
|
prepareCeremonyRead(registrationCeremonyId) {
|
|
48
48
|
return this.storage.prepareGet("ceremony", registrationCeremonyId);
|
|
49
49
|
}
|
|
50
|
+
prepareFoundingRecordsRead(registrationCeremonyId) {
|
|
51
|
+
return this.storage.prepareFoundingRecordsRead(registrationCeremonyId);
|
|
52
|
+
}
|
|
50
53
|
async parseCeremonyRead(registrationCeremonyId, result) {
|
|
51
54
|
return (await this.parseCeremonySnapshotRead(registrationCeremonyId, result))?.ceremony ?? null;
|
|
52
55
|
}
|
|
@@ -71,6 +71,12 @@ function registrationSignerBranchesFromPlan(plan) {
|
|
|
71
71
|
function recordRegistrationServerTiming(sink, name, startedAtMs) {
|
|
72
72
|
sink.push([name, Math.max(0, Date.now() - startedAtMs)]);
|
|
73
73
|
}
|
|
74
|
+
/** The `Server-Timing` header of a registration route's recorded waits. */
|
|
75
|
+
function registrationServerTimingHeaders(serverTiming) {
|
|
76
|
+
if (serverTiming.length === 0) return void 0;
|
|
77
|
+
const header = serverTiming.map(([name, durationMs]) => `${name};dur=${Math.max(0, durationMs).toFixed(1)}`).join(", ");
|
|
78
|
+
return { "Server-Timing": header };
|
|
79
|
+
}
|
|
74
80
|
async function recordRegistrationPromiseTiming(args) {
|
|
75
81
|
try {
|
|
76
82
|
return await args.promise;
|
|
@@ -79,6 +85,6 @@ async function recordRegistrationPromiseTiming(args) {
|
|
|
79
85
|
}
|
|
80
86
|
}
|
|
81
87
|
//#endregion
|
|
82
|
-
export { createD1RegistrationRouteTimingRecorder, errorMessage, finishD1RegistrationRouteTiming, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationIntentSignerBranches, registrationPreparedContextEcdsaChainTargets, registrationSignerBranchesFromPlan, resolveRegistrationPreparedContextFromPlan, startD1RegistrationRouteTiming };
|
|
88
|
+
export { createD1RegistrationRouteTimingRecorder, errorMessage, finishD1RegistrationRouteTiming, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationIntentSignerBranches, registrationPreparedContextEcdsaChainTargets, registrationServerTimingHeaders, registrationSignerBranchesFromPlan, resolveRegistrationPreparedContextFromPlan, startD1RegistrationRouteTiming };
|
|
83
89
|
|
|
84
90
|
//# sourceMappingURL=d1RegistrationSetupSupport.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mpcMaterialActivationRefsEqual, parseWalletId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
1
|
+
import { mpcMaterialActivationRefsEqual, parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
2
|
import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
|
|
3
3
|
import { parseWalletAuthMethodRecordV2, sameWalletAuthMethodRecordV2 } from "../../../../shared-ts/src/utils/walletAuthMethodRecord.js";
|
|
4
4
|
import { parseWalletAuthorityV1 } from "../../../../shared-ts/src/authorization/walletAuthority.js";
|
|
@@ -123,6 +123,30 @@ function canExtendFoundingAuthorityWithEd25519(existing, next) {
|
|
|
123
123
|
const nextEcdsa = next.signerActivations.ecdsa;
|
|
124
124
|
return existing.signerActivations.keyFamilies.length === 1 && existing.signerActivations.keyFamilies[0] === "ecdsa_secp256k1" && next.signerActivations.keyFamilies.length === 2 && next.signerActivations.keyFamilies[0] === "ed25519" && next.signerActivations.keyFamilies[1] === "ecdsa_secp256k1" && existingEcdsa !== void 0 && nextEcdsa !== void 0 && sameWalletEcdsaSignerActivationV1(existingEcdsa, nextEcdsa) && foundingAuthorityIdentityMatches(existing, next) && next.updatedAtMs >= existing.updatedAtMs;
|
|
125
125
|
}
|
|
126
|
+
function parseRegistrationFoundingRead(result) {
|
|
127
|
+
if (!result.success) throw new Error("Registration founding records read failed");
|
|
128
|
+
const row = result.results?.[0];
|
|
129
|
+
if (!row) return null;
|
|
130
|
+
const authorityId = parseWalletAuthorityId(row.authority_id);
|
|
131
|
+
const authMethodId = parseWalletAuthMethodId(row.auth_method_id);
|
|
132
|
+
if (!authorityId.ok || !authMethodId.ok) throw new Error("Registration founding identity is invalid");
|
|
133
|
+
return {
|
|
134
|
+
kind: "snapshot",
|
|
135
|
+
records: {
|
|
136
|
+
walletAuthorityId: authorityId.value,
|
|
137
|
+
walletAuthMethodId: authMethodId.value,
|
|
138
|
+
authorityRow: row.authority_json === null ? null : { record_json: row.authority_json },
|
|
139
|
+
authMethodRow: row.auth_method_json === null ? null : { record_json: row.auth_method_json }
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function readFoundingRecords(database, scope, founding) {
|
|
144
|
+
if (founding === null) return Promise.resolve(null);
|
|
145
|
+
switch (founding.kind) {
|
|
146
|
+
case "read": return readStoredFoundingRecords(database, scope, founding.ids);
|
|
147
|
+
case "snapshot": return Promise.resolve(founding.records);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
126
150
|
async function readStoredFoundingRecords(database, scope, ids) {
|
|
127
151
|
const authorityRead = database.prepare(`SELECT record_json
|
|
128
152
|
FROM wallet_authorities
|
|
@@ -196,7 +220,8 @@ function prepareFoundingStatements(input) {
|
|
|
196
220
|
if (!authMethodRow) statements.push(prepareD1WalletAuthMethodV2PutStatement({
|
|
197
221
|
database: input.database,
|
|
198
222
|
scope: input.scope,
|
|
199
|
-
record: foundingAuthMethod
|
|
223
|
+
record: foundingAuthMethod,
|
|
224
|
+
insertOnly: true
|
|
200
225
|
}));
|
|
201
226
|
return statements;
|
|
202
227
|
}
|
|
@@ -224,7 +249,7 @@ var CloudflareD1WalletRegistrationCommitStore = class {
|
|
|
224
249
|
walletId: authority.walletId,
|
|
225
250
|
rpId: authority.rpId,
|
|
226
251
|
credentialIdB64u: authority.credentialIdB64u
|
|
227
|
-
}) : void 0,
|
|
252
|
+
}) : void 0, readFoundingRecords(this.database, this.scope, founding)]);
|
|
228
253
|
return this.commit.bind(this, authority, stored);
|
|
229
254
|
}
|
|
230
255
|
async claimPasskeyAhead(input) {
|
|
@@ -336,6 +361,6 @@ function isEd25519Signer(signer) {
|
|
|
336
361
|
return signer.version === "wallet_signer_ed25519_v1";
|
|
337
362
|
}
|
|
338
363
|
//#endregion
|
|
339
|
-
export { CloudflareD1WalletRegistrationCommitStore };
|
|
364
|
+
export { CloudflareD1WalletRegistrationCommitStore, parseRegistrationFoundingRead };
|
|
340
365
|
|
|
341
366
|
//# sourceMappingURL=d1WalletRegistrationCommitStore.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { parseRouterAbEd25519YaoRegistrationAdmissionReadV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js";
|
|
2
|
+
import { parseRegistrationFoundingRead } from "./d1WalletRegistrationCommitStore.js";
|
|
2
3
|
//#region src/router/cloudflare/d1/registration/d1WalletRegistrationRead.ts
|
|
3
4
|
/** Read admission and immutable finalization state from one D1 snapshot. */
|
|
4
5
|
var D1WalletRegistrationRead = class {
|
|
@@ -42,16 +43,18 @@ var D1WalletRegistrationRead = class {
|
|
|
42
43
|
ceremonies.prepareCeremonyRead(home.ceremonyId),
|
|
43
44
|
this.decisions.prepareRead(home.ceremonyId),
|
|
44
45
|
this.passkeyClaims.prepareHeldPasskeyClaimRead(home.ceremonyId),
|
|
45
|
-
this.yaoRecords.prepareRead(home.ceremonyId)
|
|
46
|
+
this.yaoRecords.prepareRead(home.ceremonyId),
|
|
47
|
+
ceremonies.prepareFoundingRecordsRead(home.ceremonyId)
|
|
46
48
|
]);
|
|
47
|
-
const [homeRead, operationRead, ceremonyRead, decisionRead, passkeyClaimRead, yaoRead] = results;
|
|
48
|
-
if (results.length !==
|
|
49
|
+
const [homeRead, operationRead, ceremonyRead, decisionRead, passkeyClaimRead, yaoRead, foundingRead] = results;
|
|
50
|
+
if (results.length !== 7 || !homeRead || !operationRead || !ceremonyRead || !decisionRead || !passkeyClaimRead || !yaoRead || !foundingRead) throw new Error("Registration finalization D1 batch returned incomplete results");
|
|
49
51
|
const admission = await this.authority.admitHomeRead(home, homeRead);
|
|
50
52
|
if (!admission.ok) return admission;
|
|
51
53
|
if (!ceremonyRead.success) throw new Error("Registration ceremony D1 read failed");
|
|
52
54
|
return {
|
|
53
55
|
ok: true,
|
|
54
56
|
operation: this.operations.parseReadResult(operationRead),
|
|
57
|
+
readFounding: parseRegistrationFoundingRead.bind(void 0, foundingRead),
|
|
55
58
|
decision: this.decisions.parseRead(home.ceremonyId, decisionRead),
|
|
56
59
|
heldPasskeyClaim: this.passkeyClaims.parseHeldPasskeyClaimRead(passkeyClaimRead),
|
|
57
60
|
readCeremony: ceremonies.parseCeremonyRead.bind(ceremonies, home.ceremonyId, ceremonyRead),
|
|
@@ -20,34 +20,34 @@ import { buildActiveWalletAuthorityV1, buildWalletSignerActivationSetV1, compute
|
|
|
20
20
|
import { ROUTER_AB_ED25519_NORMAL_SIGNING_STATE_KIND } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
|
|
21
21
|
import { normalizeThresholdEd25519ParticipantIds } from "../../../../shared-ts/src/threshold/participants.js";
|
|
22
22
|
import { nearEd25519SigningKeyIdFromString, registrationEd25519AuthorityScopeFromAuthority, walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
|
|
23
|
-
import {
|
|
24
|
-
import "../../../../shared-ts/src/passkey-custody/index.js";
|
|
23
|
+
import { admitRegistrationReservationHome, cancelRegistrationHome } from "../../../domains/walletRegistration/walletRegistrationReservation.js";
|
|
25
24
|
import { parseImplicitNearAccountId, parseNamedNearAccountId } from "../../../../shared-ts/src/utils/near.js";
|
|
26
25
|
import { registrationNearEd25519BranchKey } from "../../../../shared-ts/src/utils/registrationSignerPlan.js";
|
|
26
|
+
import { buildStoredWalletRegistrationEvmFamilyEcdsaFinalizedBranch, buildStoredWalletRegistrationNearEd25519YaoAuthorizedBranch, findStoredWalletRegistrationEvmFamilyEcdsaBranch, findStoredWalletRegistrationNearEd25519YaoBranch, replaceStoredWalletRegistrationSignerBranch, storedRegistrationAuthoritiesMatch, verifiedRegistrationCeremonyAuthority } from "../../../../core/RegistrationCeremonyStore.js";
|
|
27
27
|
import { registrationIntentGrantFromString } from "../../../../shared-ts/src/utils/registrationIntent.js";
|
|
28
|
+
import { walletCustodyCeremonyCommitPayloadFromWire } from "../../../../shared-ts/src/passkey-custody/ceremonyCommitPayload.js";
|
|
29
|
+
import "../../../../shared-ts/src/passkey-custody/index.js";
|
|
30
|
+
import { parseEcdsaDerivationPublicIdentity, thresholdEd25519AuthorityScopeFromWalletAuthAuthority } from "../../../../core/ThresholdService/validation.js";
|
|
28
31
|
import { createRouterAbTraceContextV1 } from "../../../../shared-ts/src/utils/routerAbTraceContext.js";
|
|
32
|
+
import { routerAbEcdsaStrictRegistrationRequestBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
|
|
33
|
+
import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, buildD1WalletRecord, parseWalletIdForIntent, thresholdEcdsaChainTargetsEqual } from "./d1RegistrationCeremonyRecords.js";
|
|
34
|
+
import { createD1RegistrationRouteTimingRecorder, errorMessage, finishD1RegistrationRouteTiming, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationSignerBranchesFromPlan, startD1RegistrationRouteTiming } from "./d1RegistrationSetupSupport.js";
|
|
29
35
|
import { buildTenantRootIdentityFromAuthenticatedDeploymentV1 } from "../../../../shared-ts/src/tenant-root/tenantRootIdentity.js";
|
|
30
36
|
import { DEFAULT_WALLET_SESSION_TTL_MS } from "../../../../shared-ts/src/threshold/sessionPolicy.js";
|
|
31
|
-
import { parseEcdsaDerivationPublicIdentity, thresholdEd25519AuthorityScopeFromWalletAuthAuthority } from "../../../../core/ThresholdService/validation.js";
|
|
32
37
|
import { walletAuthAuthorityFromRegistrationAuthority, walletRegistrationFinalizeAuthMethodFromAuthority } from "../wallet/d1WalletAuthMethodBoundary.js";
|
|
33
38
|
import { buildRouterAbEd25519YaoRegistrationCapabilityRecordV1 } from "../../../domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js";
|
|
34
39
|
import { buildRouterAbEd25519YaoProductAdmissionRequestV1, projectRouterAbEd25519YaoExactWalletSession } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
|
|
35
40
|
import { routerAbEd25519YaoRegistrationExecutionTimingEntriesV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js";
|
|
36
41
|
import { runRouterAbEd25519YaoRegistrationSideEffectV2, throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
|
|
37
42
|
import { buildYaoEd25519WalletSignerRecord, ed25519NearPublicKeyFromBytes, implicitNearAccountIdFromEd25519PublicKeyBytes } from "../ed25519Yao/d1Ed25519YaoWalletSigner.js";
|
|
38
|
-
import { buildStoredWalletRegistrationEvmFamilyEcdsaFinalizedBranch, buildStoredWalletRegistrationNearEd25519YaoAuthorizedBranch, findStoredWalletRegistrationEvmFamilyEcdsaBranch, findStoredWalletRegistrationNearEd25519YaoBranch, replaceStoredWalletRegistrationSignerBranch, storedRegistrationAuthoritiesMatch, verifiedRegistrationCeremonyAuthority } from "../../../../core/RegistrationCeremonyStore.js";
|
|
39
|
-
import { routerAbEcdsaStrictRegistrationRequestBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
|
|
40
|
-
import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, buildD1WalletRecord, parseWalletIdForIntent, thresholdEcdsaChainTargetsEqual } from "./d1RegistrationCeremonyRecords.js";
|
|
41
43
|
import { deriveThresholdEcdsaKeyHandle } from "../../../../shared-ts/src/utils/thresholdEcdsaKeyHandle.js";
|
|
42
44
|
import { isTransientD1Error, retryTransientD1 } from "../../../../storage/d1Retry.js";
|
|
43
|
-
import { admitRegistrationReservationHome, cancelRegistrationHome } from "../../../domains/walletRegistration/walletRegistrationReservation.js";
|
|
44
45
|
import { listThresholdEcdsaKeyIdentityTargetsForUser } from "../../../../core/authService/thresholdEcdsaKeyInventory.js";
|
|
45
46
|
import { routerAbEd25519YaoLifecycleDecisionLookupV1, routerAbEd25519YaoLifecycleDecisionV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.js";
|
|
46
47
|
import { reserveRegistrationCustody } from "../../../domains/passkeyCustody/registrationCustodyOutcome.js";
|
|
47
48
|
import { resolveTenantRootIdentityV1 } from "../../../domains/tenantRoot/tenantRootIdentityResolution.js";
|
|
48
49
|
import { walletRegistrationOperationPreparedFromCeremony } from "./d1WalletRegistrationPreparation.js";
|
|
49
50
|
import { computeWalletRegistrationSetupDigestB64u, parseWalletRegistrationSetupClaims, verifySignedWalletRegistrationSetup, verifyWalletRegistrationSetupClaims } from "../../../domains/walletRegistration/walletRegistrationSetupPayload.js";
|
|
50
|
-
import { createD1RegistrationRouteTimingRecorder, errorMessage, finishD1RegistrationRouteTiming, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationSignerBranchesFromPlan, startD1RegistrationRouteTiming } from "./d1RegistrationSetupSupport.js";
|
|
51
51
|
import { projectWalletRegistrationSessionCommitReceiptV2, registrationCommitActivation, registrationReplayAuthMethodFields, replayedRegistrationCommit, unissuedRegistrationCommit } from "./walletRegistrationSessionCommitReceipt.js";
|
|
52
52
|
import { assertDirectWalletSessionOwnerProof, buildRegistrationOwnerProof, issueDirectRegistrationEstablishedEcdsaSession, issueDirectRegistrationEstablishedEd25519Session, projectCurrentNearRegistrationSession, replayDirectRegistrationEstablishedEcdsaSession, replayDirectRegistrationEstablishedEd25519Session, walletSessionPrincipalId } from "./walletRegistrationEstablishedSessionIssuer.js";
|
|
53
53
|
import { commitWalletRegistration } from "./d1WalletRegistrationInitialSession.js";
|
|
@@ -2154,7 +2154,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2154
2154
|
}, effectivePrepared, source, args.serverTiming, initialSessionPlan, args.lifecycleDecision, args.heldPasskeyClaim, {
|
|
2155
2155
|
kind: "snapshot",
|
|
2156
2156
|
authority: args.readYaoAdmission()
|
|
2157
|
-
});
|
|
2157
|
+
}, args.readFounding());
|
|
2158
2158
|
if (!execution.ok) return unissuedRegistrationCommit(throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1(execution));
|
|
2159
2159
|
const finalized = execution.finalized;
|
|
2160
2160
|
if (finalized.kind !== "near_ed25519") {
|
|
@@ -2357,22 +2357,29 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2357
2357
|
};
|
|
2358
2358
|
const admissionStartedAtMs = Date.now();
|
|
2359
2359
|
const operationKey = `near-provisioning:${input.registrationCeremonyId}:${input.idempotencyKey}`;
|
|
2360
|
-
const initial = await
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2360
|
+
const [initial, requestFingerprintBytes] = await Promise.all([recordRegistrationPromiseTiming({
|
|
2361
|
+
sink: serverTiming,
|
|
2362
|
+
name: "near_finalize_initial_read",
|
|
2363
|
+
startedAtMs: admissionStartedAtMs,
|
|
2364
|
+
promise: this.registrationRead.readFinalization({
|
|
2365
|
+
ceremonyId: verified.claims.registrationCeremonyId,
|
|
2366
|
+
walletId: walletIdFromString(verified.claims.walletId)
|
|
2367
|
+
}, operationKey)
|
|
2368
|
+
}), recordRegistrationPromiseTiming({
|
|
2369
|
+
sink: serverTiming,
|
|
2370
|
+
name: "near_finalize_fingerprint",
|
|
2371
|
+
startedAtMs: Date.now(),
|
|
2372
|
+
promise: sha256BytesUtf8(alphabetizeStringify({
|
|
2373
|
+
version: "wallet_registration_near_provisioning_digest_v1",
|
|
2374
|
+
registrationCeremonyId: input.registrationCeremonyId,
|
|
2375
|
+
setupDigestB64u: verified.claims.setupDigestB64u,
|
|
2376
|
+
idempotencyKey: input.idempotencyKey,
|
|
2377
|
+
ed25519: input.ed25519,
|
|
2378
|
+
emailOtpEnrollment: input.emailOtpEnrollment
|
|
2379
|
+
}))
|
|
2380
|
+
})]);
|
|
2365
2381
|
if (!initial.ok) return initial;
|
|
2366
|
-
const
|
|
2367
|
-
const requestFingerprint = base64UrlEncode(await sha256BytesUtf8(alphabetizeStringify({
|
|
2368
|
-
version: "wallet_registration_near_provisioning_digest_v1",
|
|
2369
|
-
registrationCeremonyId: input.registrationCeremonyId,
|
|
2370
|
-
setupDigestB64u: verified.claims.setupDigestB64u,
|
|
2371
|
-
idempotencyKey: input.idempotencyKey,
|
|
2372
|
-
ed25519: input.ed25519,
|
|
2373
|
-
emailOtpEnrollment: input.emailOtpEnrollment
|
|
2374
|
-
})));
|
|
2375
|
-
recordRegistrationServerTiming(serverTiming, "near_finalize_fingerprint", fingerprintStartedAtMs);
|
|
2382
|
+
const requestFingerprint = base64UrlEncode(requestFingerprintBytes);
|
|
2376
2383
|
const sideEffectStartedAtMs = Date.now();
|
|
2377
2384
|
let preparedCeremony = null;
|
|
2378
2385
|
const run = await runRouterAbEd25519YaoRegistrationSideEffectV2(this.registrationRead.operations, {
|
|
@@ -2403,7 +2410,8 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2403
2410
|
preparedCeremony: () => preparedCeremony,
|
|
2404
2411
|
lifecycleDecision: initial.decision,
|
|
2405
2412
|
heldPasskeyClaim: initial.heldPasskeyClaim,
|
|
2406
|
-
readYaoAdmission: initial.readYaoAdmission
|
|
2413
|
+
readYaoAdmission: initial.readYaoAdmission,
|
|
2414
|
+
readFounding: initial.readFounding
|
|
2407
2415
|
}),
|
|
2408
2416
|
projectReceipt: (execution) => projectWalletRegistrationSessionCommitReceiptV2({
|
|
2409
2417
|
operation: "near_provisioning",
|
|
@@ -2553,6 +2561,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2553
2561
|
const ceremony = input.ceremony;
|
|
2554
2562
|
const stored = storedRespondEd25519DeferredWork(ceremony.signerState);
|
|
2555
2563
|
let authority;
|
|
2564
|
+
const authorityStartedAtMs = Date.now();
|
|
2556
2565
|
if (stored) {
|
|
2557
2566
|
const replayAuthority = await this.verifyRespondReplayAuthority({
|
|
2558
2567
|
ceremony,
|
|
@@ -2586,6 +2595,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2586
2595
|
};
|
|
2587
2596
|
authority = verified.authority;
|
|
2588
2597
|
}
|
|
2598
|
+
recordRegistrationServerTiming(input.serverTiming, "respond_authority_verify", authorityStartedAtMs);
|
|
2589
2599
|
if (authority.walletId !== ceremony.intent.walletId) return {
|
|
2590
2600
|
ok: false,
|
|
2591
2601
|
code: "scope_mismatch",
|
|
@@ -2597,12 +2607,14 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2597
2607
|
code: "not_configured",
|
|
2598
2608
|
message: "Ed25519 Yao registration is unavailable"
|
|
2599
2609
|
};
|
|
2610
|
+
const requestStartedAtMs = Date.now();
|
|
2600
2611
|
const admissionRequest = stored ? stored.admissionRequest : await buildRespondEd25519AdmissionRequest({
|
|
2601
2612
|
ceremony,
|
|
2602
2613
|
branch: input.branch,
|
|
2603
2614
|
authority,
|
|
2604
2615
|
signingWorkerId: runtime.signingWorkerId
|
|
2605
2616
|
});
|
|
2617
|
+
recordRegistrationServerTiming(input.serverTiming, "yao_admission_request", requestStartedAtMs);
|
|
2606
2618
|
const verifiedAuthority = authority;
|
|
2607
2619
|
const branchKey = input.branch.branchKey;
|
|
2608
2620
|
const ceremonyStore = this.getRegistrationCeremonyIntentStore();
|
|
@@ -2620,6 +2632,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2620
2632
|
})]
|
|
2621
2633
|
}
|
|
2622
2634
|
});
|
|
2635
|
+
const bindStartedAtMs = Date.now();
|
|
2623
2636
|
const admitted = await runtime.bindAndAdmitVerifiedRegistration({
|
|
2624
2637
|
kind: "verified_registration_intent",
|
|
2625
2638
|
ownershipGeneration: input.ownershipGeneration,
|
|
@@ -2631,6 +2644,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2631
2644
|
expected: input.snapshot,
|
|
2632
2645
|
next: authorizedCeremony(bound)
|
|
2633
2646
|
}), input.startedDispatchRoot, requireRegistrationEd25519YaoMint(ceremony).sessionId);
|
|
2647
|
+
recordRegistrationServerTiming(input.serverTiming, "yao_admission_bind", bindStartedAtMs);
|
|
2634
2648
|
if (!admitted.ok) return {
|
|
2635
2649
|
ok: false,
|
|
2636
2650
|
code: admitted.code,
|
|
@@ -2638,6 +2652,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2638
2652
|
};
|
|
2639
2653
|
if (!stored && admitted.companionWrite === "not_committed") {
|
|
2640
2654
|
const next = authorizedCeremony(admitted.admissionRequest);
|
|
2655
|
+
const commitStartedAtMs = Date.now();
|
|
2641
2656
|
try {
|
|
2642
2657
|
await ceremonyStore.commitEcdsaClaim({
|
|
2643
2658
|
expected: input.snapshot,
|
|
@@ -2647,6 +2662,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2647
2662
|
const committed = await ceremonyStore.getCeremony(ceremony.registrationCeremonyId);
|
|
2648
2663
|
if (!committed || alphabetizeStringify(committed) !== alphabetizeStringify(next)) throw error;
|
|
2649
2664
|
}
|
|
2665
|
+
recordRegistrationServerTiming(input.serverTiming, "respond_ceremony_commit", commitStartedAtMs);
|
|
2650
2666
|
}
|
|
2651
2667
|
if (!stored && input.waitUntil && verifiedAuthority.kind === "passkey") input.waitUntil(this.walletRegistrationCommitStore.claimPasskeyAhead({
|
|
2652
2668
|
registrationCeremonyId: ceremony.registrationCeremonyId,
|
|
@@ -2901,7 +2917,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2901
2917
|
}, prepared, {
|
|
2902
2918
|
kind: "stored_ceremony",
|
|
2903
2919
|
ceremony: activatedCeremony
|
|
2904
|
-
}, [], { kind: "separate" }, null, null, { kind: "stored" });
|
|
2920
|
+
}, [], { kind: "separate" }, null, null, { kind: "stored" }, null);
|
|
2905
2921
|
if (!execution.ok) return unissuedRegistrationCommit(throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1(execution));
|
|
2906
2922
|
const commit = execution.finalized;
|
|
2907
2923
|
if (commit.kind !== "evm_family_ecdsa") {
|
|
@@ -3237,7 +3253,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
3237
3253
|
};
|
|
3238
3254
|
}
|
|
3239
3255
|
}
|
|
3240
|
-
async executeWalletRegistrationFinalize(request, prepared, source, serverTiming, initialSessionPlan, lifecycleDecision, heldPasskeyClaim, yaoAdmission) {
|
|
3256
|
+
async executeWalletRegistrationFinalize(request, prepared, source, serverTiming, initialSessionPlan, lifecycleDecision, heldPasskeyClaim, yaoAdmission, founding) {
|
|
3241
3257
|
const finalizeTiming = createD1RegistrationRouteTimingRecorder("wallets_register_finalize");
|
|
3242
3258
|
const totalTiming = startD1RegistrationRouteTiming("registerFinalizeTotalMs");
|
|
3243
3259
|
let startedCustody = null;
|
|
@@ -3476,7 +3492,10 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
3476
3492
|
sink: serverTiming,
|
|
3477
3493
|
name: "near_finalize_authority_reserve",
|
|
3478
3494
|
startedAtMs: Date.now(),
|
|
3479
|
-
promise: this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, heldPasskeyClaim,
|
|
3495
|
+
promise: this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, heldPasskeyClaim, founding ?? {
|
|
3496
|
+
kind: "read",
|
|
3497
|
+
ids: prepared
|
|
3498
|
+
})
|
|
3480
3499
|
})]);
|
|
3481
3500
|
if (activationConsumption.status === "rejected") throw activationConsumption.reason;
|
|
3482
3501
|
if (authorityReservation.status === "rejected") throw authorityReservation.reason;
|
|
@@ -3605,7 +3624,10 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
3605
3624
|
} else {
|
|
3606
3625
|
custodyReservation = reserveCustody();
|
|
3607
3626
|
startedCustody = custodyReservation;
|
|
3608
|
-
commitWallet = await this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, null,
|
|
3627
|
+
commitWallet = await this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, null, {
|
|
3628
|
+
kind: "read",
|
|
3629
|
+
ids: prepared
|
|
3630
|
+
});
|
|
3609
3631
|
}
|
|
3610
3632
|
if (yaoDecisionFound?.kind === "decided_otherwise") return {
|
|
3611
3633
|
ok: false,
|
|
@@ -1,37 +1,53 @@
|
|
|
1
1
|
import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
|
|
2
2
|
import { deriveSigningRootId } from "../../../../shared-ts/src/threshold/signingRootScope.js";
|
|
3
3
|
import { registrationPreparationIdFromString } from "../../../../core/types.js";
|
|
4
|
-
import { buildRouterAbEd25519YaoProductAdmissionRequestV1, mintRouterAbEd25519YaoRegistrationIdentityV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
|
|
5
4
|
import { buildStoredWalletRegistrationEvmFamilyEcdsaPreparedBranch, findStoredWalletRegistrationEvmFamilyEcdsaBranch } from "../../../../core/RegistrationCeremonyStore.js";
|
|
6
5
|
import { routerAbEcdsaStrictRegistrationFactsBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
|
|
7
6
|
import { buildRegistrationIntent, inferRuntimePolicyScopeFromSigningRoot } from "./d1RegistrationCeremonyRecords.js";
|
|
7
|
+
import { errorMessage, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationIntentSignerBranches, registrationPreparedContextEcdsaChainTargets, registrationSignerBranchesFromPlan, resolveRegistrationPreparedContextFromPlan } from "./d1RegistrationSetupSupport.js";
|
|
8
|
+
import { buildRouterAbEd25519YaoProductAdmissionRequestV1, mintRouterAbEd25519YaoRegistrationIdentityV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
|
|
8
9
|
import { isTransientD1Error } from "../../../../storage/d1Retry.js";
|
|
9
|
-
import { errorMessage, registrationIntentSignerBranches, registrationPreparedContextEcdsaChainTargets, registrationSignerBranchesFromPlan, resolveRegistrationPreparedContextFromPlan } from "./d1RegistrationSetupSupport.js";
|
|
10
10
|
import { buildWalletRegistrationSetupSignature, normalizeWalletRegistrationSetupRequest, walletRegistrationSetupError, walletRegistrationSetupExpiresAtMs, walletRegistrationSetupIntentDigest } from "./d1WalletRegistrationSetup.js";
|
|
11
11
|
import { buildD1EvmFamilyEcdsaRegistrationPrepare } from "./d1EvmFamilyEcdsaRegistrationBranch.js";
|
|
12
12
|
//#region src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.ts
|
|
13
13
|
async function executeD1WalletRegistrationSetup(input, dependencies) {
|
|
14
|
+
const serverTiming = input.serverTiming ?? [];
|
|
14
15
|
try {
|
|
15
16
|
const normalized = normalizeWalletRegistrationSetupRequest(input.request);
|
|
16
17
|
if (!normalized.ok) return walletRegistrationSetupError(normalized.code, normalized.message);
|
|
17
18
|
if (!dependencies.reservation) return walletRegistrationSetupError("registration_authority_unavailable", "Registration reservation authority is required");
|
|
19
|
+
const reserveStartedAtMs = Date.now();
|
|
18
20
|
const admitted = await dependencies.reservation.reserve(input);
|
|
21
|
+
recordRegistrationServerTiming(serverTiming, "setup_reserve", reserveStartedAtMs);
|
|
19
22
|
if (!admitted.ok) return admitted;
|
|
20
23
|
const reservation = admitted.reservation;
|
|
21
24
|
const wallet = { walletId: reservation.walletId };
|
|
22
25
|
if (input.request.wallet?.kind === "provided" && input.request.wallet.walletId !== wallet.walletId) return walletRegistrationSetupError("reservation_conflict", "Registration reservation changed the requested wallet");
|
|
23
26
|
const expiresAtMs = walletRegistrationSetupExpiresAtMs(reservation.reservedAtMs);
|
|
24
27
|
if (Date.now() >= expiresAtMs) return walletRegistrationSetupError("registration_expired", "Registration setup has expired");
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
const parallelStartedAtMs = Date.now();
|
|
29
|
+
const [startup, setup] = await Promise.allSettled([recordRegistrationPromiseTiming({
|
|
30
|
+
sink: serverTiming,
|
|
31
|
+
name: "setup_wallet_objects",
|
|
32
|
+
startedAtMs: parallelStartedAtMs,
|
|
33
|
+
promise: dependencies.startRegistrationWallets?.({
|
|
34
|
+
kind: "objects",
|
|
35
|
+
walletId: wallet.walletId,
|
|
36
|
+
ownershipGeneration: admitted.ownershipGeneration
|
|
37
|
+
})
|
|
38
|
+
}), recordRegistrationPromiseTiming({
|
|
39
|
+
sink: serverTiming,
|
|
40
|
+
name: "setup_ceremony",
|
|
41
|
+
startedAtMs: parallelStartedAtMs,
|
|
42
|
+
promise: completeReservedRegistrationSetup(input, dependencies, admitted, normalized, expiresAtMs)
|
|
43
|
+
})]);
|
|
30
44
|
if (setup.status === "rejected") throw setup.reason;
|
|
31
45
|
if (!setup.value.ok) return setup.value;
|
|
32
46
|
if (startup.status === "rejected") throw startup.reason;
|
|
33
47
|
if (dependencies.startRegistrationWallets) try {
|
|
48
|
+
const pairStartedAtMs = Date.now();
|
|
34
49
|
const preparation = await describeCommittedSetupPair(setup.value, dependencies);
|
|
50
|
+
recordRegistrationServerTiming(serverTiming, "setup_pair_describe", pairStartedAtMs);
|
|
35
51
|
if (preparation.status === "described") await dependencies.startRegistrationWallets({
|
|
36
52
|
kind: "pair",
|
|
37
53
|
walletId: wallet.walletId,
|
|
@@ -2,8 +2,8 @@ import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
|
|
|
2
2
|
import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
|
|
3
3
|
import { alphabetizeStringify, sha256BytesUtf8 } from "../../../../shared-ts/src/utils/digests.js";
|
|
4
4
|
import "../../../../shared-ts/src/utils/encoders.js";
|
|
5
|
-
import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
|
|
6
5
|
import { parseD1WalletAddSignerFinalizeTerminalResponse, parseWalletIdForIntent } from "../registration/d1RegistrationCeremonyRecords.js";
|
|
6
|
+
import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
|
|
7
7
|
//#region src/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.ts
|
|
8
8
|
function parseWalletAddSignerFinalizePrepared(raw) {
|
|
9
9
|
if (!isPlainObject(raw)) return null;
|
|
@@ -13,14 +13,14 @@ import { buildRouterAbEcdsaDerivationPublicCapabilityV1, parseRouterAbEcdsaRegis
|
|
|
13
13
|
import { buildWalletEcdsaSignerActivationV1, extendEd25519WalletAuthorityWithEcdsa, isActiveEd25519WalletAuthorityV1 } from "../../../../shared-ts/src/authorization/walletAuthority.js";
|
|
14
14
|
import { registrationPreparationIdFromString } from "../../../../core/types.js";
|
|
15
15
|
import { addSignerIntentGrantFromString, computeAddSignerIntentDigestB64u, sameAddSignerIntentV1 } from "../../../../shared-ts/src/utils/registrationIntent.js";
|
|
16
|
+
import { routerAbEcdsaStrictRegistrationRequestMatchesFacts } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
|
|
17
|
+
import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, normalizeThresholdEcdsaChainTargets, parseD1AddSignerIntent, parseD1RuntimePolicyScope, parseD1StoredAddSignerAuth, parseD1StoredAddSignerIntent, parseD1StoredWalletAddSignerCeremony, parseWalletIdForIntent, positiveIntegerArraysEqual, runtimePolicyScopeMatches, thresholdEcdsaChainTargetsEqual } from "../registration/d1RegistrationCeremonyRecords.js";
|
|
16
18
|
import { buildTenantRootIdentityFromAuthenticatedDeploymentV1 } from "../../../../shared-ts/src/tenant-root/tenantRootIdentity.js";
|
|
17
19
|
import { WalletAuthorityCommitConflictError } from "./d1WalletAuthorityStore.js";
|
|
18
20
|
import { buildRouterAbEd25519YaoRegistrationCapabilityRecordV1 } from "../../../domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js";
|
|
19
21
|
import { buildRouterAbEd25519YaoAddSignerAdmissionRequestV1, createRouterAbEd25519YaoMaterialActivationRefV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
|
|
20
22
|
import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV1, runRouterAbEd25519YaoRegistrationSideEffectV1, throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
|
|
21
23
|
import { buildYaoEd25519WalletSignerRecord, ed25519NearPublicKeyFromBytes, implicitNearAccountIdFromEd25519PublicKeyBytes } from "../ed25519Yao/d1Ed25519YaoWalletSigner.js";
|
|
22
|
-
import { routerAbEcdsaStrictRegistrationRequestMatchesFacts } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
|
|
23
|
-
import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, normalizeThresholdEcdsaChainTargets, parseD1AddSignerIntent, parseD1RuntimePolicyScope, parseD1StoredAddSignerAuth, parseD1StoredAddSignerIntent, parseD1StoredWalletAddSignerCeremony, parseWalletIdForIntent, positiveIntegerArraysEqual, runtimePolicyScopeMatches, thresholdEcdsaChainTargetsEqual } from "../registration/d1RegistrationCeremonyRecords.js";
|
|
24
24
|
import { buildD1WalletAddSignerFinalizePrepared, fingerprintD1WalletAddSignerFinalizePrepared, rejectUnexpectedWalletAddSignerFinalizePreparation, returnD1WalletAddSignerFinalizePrepared } from "./d1WalletAddSignerFinalizeRecord.js";
|
|
25
25
|
import { routerAbEd25519YaoLifecycleDecisionLookupV1, routerAbEd25519YaoLifecycleDecisionV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.js";
|
|
26
26
|
import { buildD1EvmFamilyEcdsaRegistrationPrepare } from "../registration/d1EvmFamilyEcdsaRegistrationBranch.js";
|
|
@@ -13,15 +13,15 @@ import { deriveWebAuthnAuthenticatorDeviceInfo } from "../../../../shared-ts/src
|
|
|
13
13
|
import { parseSessionOrigin } from "../../../../authorization/domain.js";
|
|
14
14
|
import { secureRandomBase64Url } from "../../../../shared-ts/src/utils/secureRandomId.js";
|
|
15
15
|
import { PASSKEY_PRF_FIRST_SALT_V1, PASSKEY_PRF_SECOND_SALT_V1 } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
|
|
16
|
+
import { addAuthMethodIntentGrantFromString, computeAddAuthMethodIntentDigestB64u } from "../../../../shared-ts/src/utils/registrationIntent.js";
|
|
16
17
|
import { parsePasskeyCustodyEnvelopeRecord } from "../../../../shared-ts/src/passkey-custody/custodyEnvelope.js";
|
|
17
18
|
import "../../../../shared-ts/src/passkey-custody/index.js";
|
|
18
|
-
import {
|
|
19
|
+
import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
|
|
20
|
+
import { parseWalletIdForIntent } from "../registration/d1RegistrationCeremonyRecords.js";
|
|
19
21
|
import { parseWebAuthnClientDataJsonBase64url, webAuthnOriginHostnameOrEmpty } from "../../../auth/webAuthnCredentialCodecs.js";
|
|
20
22
|
import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_ACTIONS, WALLET_EMAIL_OTP_UNLOCK_OPERATION } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
|
|
21
23
|
import { resolveWalletAuthMethodIdForAuthority } from "../../../../core/signingLanes/WalletExecutionLaneProjection.js";
|
|
22
|
-
import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
|
|
23
24
|
import { d1HostIsWithinWebAuthnRpId, resolveD1AddAuthMethodExistingAuth, resolveD1AddSignerExistingAuth, verifyD1LinkedDeviceFreshRevokeProofV1, walletAuthAuthorityFromRegistrationAuthority } from "./d1WalletAuthMethodBoundary.js";
|
|
24
|
-
import { parseWalletIdForIntent } from "../registration/d1RegistrationCeremonyRecords.js";
|
|
25
25
|
import { runtimePolicyScopeKey } from "../../../../core/EmailOtpRecords.js";
|
|
26
26
|
import { expiredGoogleEmailOtpRegistrationAttemptRecord } from "../emailOtp/d1GoogleEmailOtpRegistrationRecords.js";
|
|
27
27
|
import { admitAddWalletAuthMethod } from "../../../../shared-ts/src/utils/addWalletAuthMethod.js";
|
|
@@ -4,8 +4,8 @@ import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimit
|
|
|
4
4
|
import { WalletLifecycleLocator } from "../../../../authorization/lifecycleRouting.js";
|
|
5
5
|
import { secureRandomBase64Url } from "../../../../shared-ts/src/utils/secureRandomId.js";
|
|
6
6
|
import { failedVerification, failure } from "../../../../shared-ts/src/utils/failure.js";
|
|
7
|
-
import { decodeWebAuthnBase64UrlOrBase64, parseWebAuthnAuthenticationCredential, parseWebAuthnClientDataJsonBase64url, webAuthnCredentialIdB64uFromCredential, webAuthnOriginHostnameOrEmpty } from "../../../auth/webAuthnCredentialCodecs.js";
|
|
8
7
|
import { nonNegativeSafeInteger, optionalNonNegativeInteger, parseD1BoundaryWalletId, parseD1BoundaryWalletIdResult, parseJsonObject } from "../auth/d1RouterApiAuthBoundary.js";
|
|
8
|
+
import { decodeWebAuthnBase64UrlOrBase64, parseWebAuthnAuthenticationCredential, parseWebAuthnClientDataJsonBase64url, webAuthnCredentialIdB64uFromCredential, webAuthnOriginHostnameOrEmpty } from "../../../auth/webAuthnCredentialCodecs.js";
|
|
9
9
|
import { parseWebAuthnAuthenticatorRowDeviceInfo, webAuthnSyncWalletBindingFromCredentialBinding } from "./d1WebAuthnRecords.js";
|
|
10
10
|
import { d1HostIsWithinWebAuthnRpId } from "../wallet/d1WalletAuthMethodBoundary.js";
|
|
11
11
|
import { webAuthnAuthenticationFailure, webAuthnLoginEd25519, webAuthnSyncCredentialBinding } from "../../../../core/authService/webauthnVerificationOutcomes.js";
|
|
@@ -8,8 +8,8 @@ import { parseWalletAuthorityV1 } from "../../../../shared-ts/src/authorization/
|
|
|
8
8
|
import { parseWebAuthnAuthenticatorDeviceInfoJson } from "../../../../shared-ts/src/utils/webauthnDeviceInfo.js";
|
|
9
9
|
import { hasExactKeys } from "../../../../shared-ts/src/utils/exactKeys.js";
|
|
10
10
|
import "../../../../shared-ts/src/passkey-custody/index.js";
|
|
11
|
-
import { parseRecoveryCodeReservationId } from "../../../../shared-ts/src/wallet-recovery/recoveryCodeReservation.js";
|
|
12
11
|
import { nonNegativeSafeInteger, optionalNonNegativeInteger, positiveInteger } from "../auth/d1RouterApiAuthBoundary.js";
|
|
12
|
+
import { parseRecoveryCodeReservationId } from "../../../../shared-ts/src/wallet-recovery/recoveryCodeReservation.js";
|
|
13
13
|
//#region src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.ts
|
|
14
14
|
function parseWebAuthnAuthenticatorRowDeviceInfo(raw) {
|
|
15
15
|
return parseWebAuthnAuthenticatorDeviceInfoJson(raw);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, parseRouterAbPublicKeysetV2 } from "../shared-ts/src/utils/routerAbPublicKeyset.js";
|
|
2
2
|
import { defineRoute, matchesRouteDefinitionRequest } from "./framework/routeDefinitions.js";
|
|
3
|
-
import { extractBearerCredential, extractRouterApiEnvironmentId,
|
|
3
|
+
import { extractBearerCredential, extractRouterApiEnvironmentId, resolveSourceIpFromFetchHeaders } from "./auth/routerApiKeyAuth.js";
|
|
4
4
|
import { InMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createRouterAbNormalSigningAdmissionAdapter } from "./domains/signingOperations/routerAbNormalSigningAdmissionCore.js";
|
|
5
5
|
import { CloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1RouterAbNormalSigningAdmissionStore } from "./cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js";
|
|
6
6
|
import { getRouterApiRouteExtensionRoutes } from "./framework/routeExtensions.js";
|
|
@@ -41,4 +41,4 @@ import { handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1 } from ".
|
|
|
41
41
|
import { createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1 } from "./domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js";
|
|
42
42
|
import { runRouterAbEd25519YaoRegistrationSideEffectV1 } from "./domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
|
|
43
43
|
import { CLOUDFLARE_ROUTER_ED25519_YAO_SOURCE_PRESERVING_EXECUTE_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_DEACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_RESERVE_INACTIVE_SOURCE_PRESERVING_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_DEACTIVATE_RESERVATION_PATH_V1, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1 } from "./cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js";
|
|
44
|
-
export { CLOUDFLARE_ROUTER_ED25519_YAO_SOURCE_PRESERVING_EXECUTE_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_DEACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_RESERVE_INACTIVE_SOURCE_PRESERVING_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_DEACTIVATE_RESERVATION_PATH_V1, CloudflareD1AuthorizationStore, CloudflareD1RouterAbNormalSigningAdmissionStore, CloudflareD1VaultProxyStore, CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, CloudflareD1WebAuthnAuthService, CloudflareD1WebAuthnStore, CloudflareDurableObjectVersionedJsonRecordStore, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, CloudflareVersionedJsonRecordStoreError, DEFAULT_WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_V1, DEFAULT_WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_V1, InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAdapter, InMemoryRouterAbEd25519YaoRegistrationService, InMemoryRouterAbNormalSigningAdmissionStore, ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, RouterAbEd25519YaoHttpRegistrationBackend, StaticCloudflareTenantStorageRouteResolver, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, WALLET_CONSOLE_API_WALLET_DETAIL_PREFIX_V1, WALLET_CONSOLE_OPS_BASE_PATH_V1, WALLET_CONSOLE_OP_PATHS_V1, WALLET_CONSOLE_SERVICE_ORIGIN_V1, WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_ID_V1, WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_ID_V1, WALLET_CONTROL_AUTH_MARKER_V1, WALLET_CONTROL_BASE_PATH_V1, WALLET_CONTROL_SERVICE_ORIGIN_V1, WALLET_RUNTIME_OPS_BASE_PATH_V1, WALLET_RUNTIME_OP_PATHS_V1, WALLET_RUNTIME_SERVICE_ORIGIN_V1, buildRouterAbEd25519YaoProductAdmissionRequestV1, coerceRouterLogger, createCloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1VersionedJsonRecordStore, createCloudflareDurableObjectVersionedJsonRecordStore, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createCloudflareRouter, createCloudflareTenantStorageRoute, createCloudflareWalletGatewayRouterV1, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterApiRuntimeSnapshotConsumer, createRouterAbEd25519YaoCeremonyStateStoreV1, createRouterAbEd25519YaoHttpRegistrationBackendFromEnv, createRouterAbEd25519YaoProductRegistrationCompositionFromPortsV1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1, createRouterAbEd25519YaoProductRegistrationRuntimeV1, createRouterAbEd25519YaoProductRegistrationStateV1, createRouterAbEd25519YaoRegistrationModule, createRouterAbNormalSigningAdmissionAdapter, createRouterApiModule, createSelfHostedCloudflareSigningRouter, createSelfHostedCloudflareSigningWorker, createSignerD1DoStorageTarget, createStaticCloudflareTenantStorageRouteResolver, createStaticCloudflareTenantStorageRouteResolverFromBindings, createStaticWalletConsoleBindingV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createWalletConsoleOpsClient, createWalletConsoleRelayProxyExtensionV1, createWalletControlClientBindings, createWalletRuntimeOpsHandler, decodeWalletConsoleTenantRootActiveLineageRequestV1, decodeWalletConsoleTenantRootActiveLineageResponseV1, defineRoute, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, extractBearerCredential, extractRouterApiEnvironmentId, getRouterApiRouteExtensionRoutes, handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1, handleStaticWalletConsoleRequestV1, handleWalletControlRequest, matchesRouteDefinitionRequest, mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, parseRouterAbPublicKeysetV2, parseStaticWalletConsoleBindingConfigV1, parseWalletRegistrationContextResponse, parseWalletRuntimeExecuteSignedDelegateRequest, parseWalletRuntimeExecuteSignedDelegateResponse, parseWalletRuntimeExecuteSignedDelegateResult, parseWalletRuntimeRelayerAccount, parseWalletRuntimeWalletIdentitiesResult, parseWalletRuntimeWalletIdentityRequest, partitionRouterAbEd25519YaoProductRegistrationStateV1, randomTenantRootCreationGrantBytesV1, readEnvironmentCsv, readEnvironmentString, requireEnvironmentString, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1, resolveRuntimeTenantRootLineage,
|
|
44
|
+
export { CLOUDFLARE_ROUTER_ED25519_YAO_SOURCE_PRESERVING_EXECUTE_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_DEACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_RESERVE_INACTIVE_SOURCE_PRESERVING_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_DEACTIVATE_RESERVATION_PATH_V1, CloudflareD1AuthorizationStore, CloudflareD1RouterAbNormalSigningAdmissionStore, CloudflareD1VaultProxyStore, CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, CloudflareD1WebAuthnAuthService, CloudflareD1WebAuthnStore, CloudflareDurableObjectVersionedJsonRecordStore, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, CloudflareVersionedJsonRecordStoreError, DEFAULT_WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_V1, DEFAULT_WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_V1, InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAdapter, InMemoryRouterAbEd25519YaoRegistrationService, InMemoryRouterAbNormalSigningAdmissionStore, ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, RouterAbEd25519YaoHttpRegistrationBackend, StaticCloudflareTenantStorageRouteResolver, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, WALLET_CONSOLE_API_WALLET_DETAIL_PREFIX_V1, WALLET_CONSOLE_OPS_BASE_PATH_V1, WALLET_CONSOLE_OP_PATHS_V1, WALLET_CONSOLE_SERVICE_ORIGIN_V1, WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_ID_V1, WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_ID_V1, WALLET_CONTROL_AUTH_MARKER_V1, WALLET_CONTROL_BASE_PATH_V1, WALLET_CONTROL_SERVICE_ORIGIN_V1, WALLET_RUNTIME_OPS_BASE_PATH_V1, WALLET_RUNTIME_OP_PATHS_V1, WALLET_RUNTIME_SERVICE_ORIGIN_V1, buildRouterAbEd25519YaoProductAdmissionRequestV1, coerceRouterLogger, createCloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1VersionedJsonRecordStore, createCloudflareDurableObjectVersionedJsonRecordStore, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createCloudflareRouter, createCloudflareTenantStorageRoute, createCloudflareWalletGatewayRouterV1, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterApiRuntimeSnapshotConsumer, createRouterAbEd25519YaoCeremonyStateStoreV1, createRouterAbEd25519YaoHttpRegistrationBackendFromEnv, createRouterAbEd25519YaoProductRegistrationCompositionFromPortsV1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1, createRouterAbEd25519YaoProductRegistrationRuntimeV1, createRouterAbEd25519YaoProductRegistrationStateV1, createRouterAbEd25519YaoRegistrationModule, createRouterAbNormalSigningAdmissionAdapter, createRouterApiModule, createSelfHostedCloudflareSigningRouter, createSelfHostedCloudflareSigningWorker, createSignerD1DoStorageTarget, createStaticCloudflareTenantStorageRouteResolver, createStaticCloudflareTenantStorageRouteResolverFromBindings, createStaticWalletConsoleBindingV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createWalletConsoleOpsClient, createWalletConsoleRelayProxyExtensionV1, createWalletControlClientBindings, createWalletRuntimeOpsHandler, decodeWalletConsoleTenantRootActiveLineageRequestV1, decodeWalletConsoleTenantRootActiveLineageResponseV1, defineRoute, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, extractBearerCredential, extractRouterApiEnvironmentId, getRouterApiRouteExtensionRoutes, handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1, handleStaticWalletConsoleRequestV1, handleWalletControlRequest, matchesRouteDefinitionRequest, mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, parseRouterAbPublicKeysetV2, parseStaticWalletConsoleBindingConfigV1, parseWalletRegistrationContextResponse, parseWalletRuntimeExecuteSignedDelegateRequest, parseWalletRuntimeExecuteSignedDelegateResponse, parseWalletRuntimeExecuteSignedDelegateResult, parseWalletRuntimeRelayerAccount, parseWalletRuntimeWalletIdentitiesResult, parseWalletRuntimeWalletIdentityRequest, partitionRouterAbEd25519YaoProductRegistrationStateV1, randomTenantRootCreationGrantBytesV1, readEnvironmentCsv, readEnvironmentString, requireEnvironmentString, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1, resolveRuntimeTenantRootLineage, resolveSourceIpFromFetchHeaders, runRouterAbEd25519YaoProductRegistrationRequestScopedV1, runRouterAbEd25519YaoRegistrationSideEffectV1, runRouterAbEd25519YaoRegistrationTwoPhaseV1, runRouterAbPrewarmScheduledV1, signTenantRootCreationGrantV1, tenantRootIdentityDigestB64uV1, validateRuntimeSnapshotExpectation, walletConsoleApiWalletGetRouteDefinitionV1, walletConsoleApiWalletListRouteDefinitionV1, walletConsoleApiWalletSearchRouteDefinitionV1, walletConsoleRelayRouteDefinitionsV1, walletConsoleSignedDelegateRouteDefinitionV1, walletConsoleSponsoredEvmCallRouteDefinitionV1 };
|