@seams/wallet-server 0.10.1 → 0.10.2
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/artifact-manifest.json +11 -11
- package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
- package/dist/esm/cloud-host.js +2 -2
- package/dist/esm/hosted-wallet-gateway.js +18 -1
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +10 -1
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +4 -4
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +28 -18
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationRead.js +12 -5
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +42 -11
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +1 -1
- package/dist/esm/router/cloudflare.js +18 -6
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +5 -1
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +15 -3
- package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +1 -1
- package/dist/esm/router/express.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js +19 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts +2 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +7 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts +5 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +6 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +10 -1
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +3 -1
- package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.d.ts +6 -0
- package/package.json +1 -1
package/artifact-manifest.json
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
"schemaVersion": "seams_wallet_server_artifact_manifest_v1",
|
|
3
3
|
"package": {
|
|
4
4
|
"name": "@seams/wallet-server",
|
|
5
|
-
"version": "0.10.
|
|
5
|
+
"version": "0.10.2"
|
|
6
6
|
},
|
|
7
7
|
"workers": {
|
|
8
8
|
"router": {
|
|
9
9
|
"entry": "cloudflare-router-ab/build/router/worker/shim.mjs",
|
|
10
|
-
"fingerprint": "
|
|
10
|
+
"fingerprint": "989063cee259faabe08200e0bf5f76d35a71c34daf29ea1a6a6ca192ef939cd2",
|
|
11
11
|
"files": [
|
|
12
12
|
{
|
|
13
13
|
"path": "cloudflare-router-ab/build/router/build-stamp.json",
|
|
14
14
|
"bytes": 119,
|
|
15
|
-
"sha256": "
|
|
15
|
+
"sha256": "d15f86ee176768903392a2c8376d89a608822049829358d14c776a1cf4683c25"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"path": "cloudflare-router-ab/build/router/index.js",
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
},
|
|
39
39
|
"deriver-a": {
|
|
40
40
|
"entry": "cloudflare-router-ab/build/deriver-a/worker/shim.mjs",
|
|
41
|
-
"fingerprint": "
|
|
41
|
+
"fingerprint": "76bf099ffbf26c88a2751c8699976c7b3164aef3fa08051c18d1b100a6bf65f5",
|
|
42
42
|
"files": [
|
|
43
43
|
{
|
|
44
44
|
"path": "cloudflare-router-ab/build/deriver-a/build-stamp.json",
|
|
45
45
|
"bytes": 122,
|
|
46
|
-
"sha256": "
|
|
46
|
+
"sha256": "c10b587d92e396f13efeff774ec1f80089a9d6d199d269a8feca5aee6463afff"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"path": "cloudflare-router-ab/build/deriver-a/index.js",
|
|
@@ -69,12 +69,12 @@
|
|
|
69
69
|
},
|
|
70
70
|
"deriver-b": {
|
|
71
71
|
"entry": "cloudflare-router-ab/build/deriver-b/worker/shim.mjs",
|
|
72
|
-
"fingerprint": "
|
|
72
|
+
"fingerprint": "b3d8248972d3b050cc01413a04295cc4547f68574a9379bfa84896e5dd9ccff6",
|
|
73
73
|
"files": [
|
|
74
74
|
{
|
|
75
75
|
"path": "cloudflare-router-ab/build/deriver-b/build-stamp.json",
|
|
76
76
|
"bytes": 122,
|
|
77
|
-
"sha256": "
|
|
77
|
+
"sha256": "50b14a68d07e464ebef4fb2b6fac8859923c12a2e2bbb8f354b4266c2920665f"
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
"path": "cloudflare-router-ab/build/deriver-b/index.js",
|
|
@@ -100,12 +100,12 @@
|
|
|
100
100
|
},
|
|
101
101
|
"signing-worker": {
|
|
102
102
|
"entry": "cloudflare-router-ab/build/signing-worker/worker/shim.mjs",
|
|
103
|
-
"fingerprint": "
|
|
103
|
+
"fingerprint": "b5630eef3471bdd71dd875f3789a5b5c33e97e12f1092e4c1ed6bf0042bf14bd",
|
|
104
104
|
"files": [
|
|
105
105
|
{
|
|
106
106
|
"path": "cloudflare-router-ab/build/signing-worker/build-stamp.json",
|
|
107
107
|
"bytes": 127,
|
|
108
|
-
"sha256": "
|
|
108
|
+
"sha256": "edbefd37808ffbf912edb8207c8f3f8ec7da1a2bc3497fcf975df96e09de21b7"
|
|
109
109
|
},
|
|
110
110
|
{
|
|
111
111
|
"path": "cloudflare-router-ab/build/signing-worker/index.js",
|
|
@@ -131,12 +131,12 @@
|
|
|
131
131
|
},
|
|
132
132
|
"tenant-root-control-plane": {
|
|
133
133
|
"entry": "cloudflare-router-ab/build/tenant-root-control-plane/worker/shim.mjs",
|
|
134
|
-
"fingerprint": "
|
|
134
|
+
"fingerprint": "0a2430ee51235d20fe054f155fa263353f5b23d6bd2e085054dffe709484e6dc",
|
|
135
135
|
"files": [
|
|
136
136
|
{
|
|
137
137
|
"path": "cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json",
|
|
138
138
|
"bytes": 139,
|
|
139
|
-
"sha256": "
|
|
139
|
+
"sha256": "3aaf79915d746c2dbfe9f4e17df8c9bafac7cfb18be3c6de2e481b78bf2eb988"
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
142
|
"path": "cloudflare-router-ab/build/tenant-root-control-plane/index.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"profile":"release","wallet_objects":true,"features":"strict-worker-deriver-a-entrypoint","started_at_ms":
|
|
1
|
+
{"profile":"release","wallet_objects":true,"features":"strict-worker-deriver-a-entrypoint","started_at_ms":1791976433414}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"profile":"release","wallet_objects":true,"features":"strict-worker-deriver-b-entrypoint","started_at_ms":
|
|
1
|
+
{"profile":"release","wallet_objects":true,"features":"strict-worker-deriver-b-entrypoint","started_at_ms":1791976670146}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"profile":"release","wallet_objects":true,"features":"strict-worker-router-entrypoint","started_at_ms":
|
|
1
|
+
{"profile":"release","wallet_objects":true,"features":"strict-worker-router-entrypoint","started_at_ms":1791976887847}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"profile":"release","wallet_objects":true,"features":"strict-worker-signing-worker-entrypoint","started_at_ms":
|
|
1
|
+
{"profile":"release","wallet_objects":true,"features":"strict-worker-signing-worker-entrypoint","started_at_ms":1791976112394}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"profile":"release","wallet_objects":false,"features":"strict-worker-tenant-root-control-plane-entrypoint","started_at_ms":
|
|
1
|
+
{"profile":"release","wallet_objects":false,"features":"strict-worker-tenant-root-control-plane-entrypoint","started_at_ms":1791977099544}
|
package/dist/esm/cloud-host.js
CHANGED
|
@@ -89,7 +89,7 @@ import { CloudflareDurableObjectVersionedJsonRecordStore, CloudflareVersionedJso
|
|
|
89
89
|
import { CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, createCloudflareD1VersionedJsonRecordStore } from "./router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js";
|
|
90
90
|
import { createRouterAbEd25519YaoCeremonyStateStoreV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js";
|
|
91
91
|
import { mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, partitionRouterAbEd25519YaoProductRegistrationStateV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js";
|
|
92
|
-
import { ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js";
|
|
92
|
+
import { ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoRegistrationAdmissionReadV1, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js";
|
|
93
93
|
import { createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1 } from "./router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js";
|
|
94
94
|
import { runRouterAbEd25519YaoProductRegistrationRequestScopedV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRunner.js";
|
|
95
95
|
import { runRouterAbEd25519YaoRegistrationTwoPhaseV1 } from "./router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationTwoPhaseRunner.js";
|
|
@@ -131,4 +131,4 @@ import { handleRouterAbEd25519YaoRecoveryRequestScopedCloudflareV1 } from "./rou
|
|
|
131
131
|
import { RouterAbEd25519YaoRecoveryWalletSessionAuthorizationAdapter } from "./router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js";
|
|
132
132
|
import { keccak256Bytes } from "./shared-ts/src/utils/keccak.js";
|
|
133
133
|
import { decodeEvmBlockHeader, decodeEvmTransactionByHash, decodeEvmTransactionCall, decodeEvmTransactionReceipt, parseRpcHexQuantity } from "./shared-ts/src/utils/evmRpcResults.js";
|
|
134
|
-
export { API_CREDENTIAL_ROUTE_SCOPES, API_CREDENTIAL_TYPES, ActionType, 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, CloudflareD1GoogleEmailOtpRegistrationAttemptStore, CloudflareD1OidcJwksCache, CloudflareD1RouterAbEd25519YaoCapabilityPersistence, CloudflareD1RouterAbNormalSigningAdmissionStore, CloudflareD1VaultProxyStore, CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, CloudflareD1WebAuthnAuthService, CloudflareD1WebAuthnStore, CloudflareDurableObjectVersionedJsonRecordStore, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, CloudflareVersionedJsonRecordStoreError, CrossSiteSessionCookieAdapter, D1IdentityStore, D1LinkedDeviceAuthorityInstallServiceV1, D1LinkedDeviceEd25519ExportRootStoreV1, D1LinkedDeviceRequestProofNonceStoreV1, D1LinkedDeviceSessionStoreV1, D1LinkedDeviceSourceContributionPreparationPlannerV1, D1LinkedDeviceTargetAuthenticatorStoreV1, D1LinkedDeviceTargetCredentialProviderV1, D1LinkedDeviceTargetPlannerV1, D1WalletAuthMethodStore, D1WalletObjectAddresses, D1WalletStore, D1_BATCH_CAS_GUARD_SQL, DEFAULT_SESSION_COOKIE_NAME, DEFAULT_WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_V1, DEFAULT_WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_V1, DEFAULT_WALLET_SESSION_REMAINING_USES, DEFAULT_WALLET_SESSION_TTL_MS, ED25519_SIGNER_ACTIVATION_ID_PATH, InMemoryRouterAbEd25519YaoExportService, InMemoryRouterAbEd25519YaoExportStateV1, InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAdapter, InMemoryRouterAbEd25519YaoRegistrationService, InMemoryRouterAbNormalSigningAdmissionStore, LINKED_DEVICE_OWNER_AUTHORIZATION_PATH_V1, LinkedDeviceRetiredTargetRegistrationShapeErrorV1, LinkedDeviceSourceFamilyUnavailableErrorV1, LinkedDeviceWebAuthnRegistrationVerifierV1, MAX_WALLET_SESSION_REMAINING_USES, MAX_WALLET_SESSION_TTL_MS, PUBLIC_PROOF_TYPES, ROUTER_AB_ECDSA_DERIVATION_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_YAO_CAPABILITY_REPLACEMENT_TABLE_V1, ROUTER_AB_ED25519_YAO_EXPORT_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_EXPORT_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ACTIVATE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_STATUS_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, ROUTER_AB_ED25519_YAO_WARM_RECOVERY_BOOTSTRAP_PATH_V1, ROUTER_AB_MPC_ROUTER_ORIGIN, ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, ROUTER_AB_SIGNING_WORKER_ORIGIN, ROUTER_AB_TRACE_ID_HEADER_V1, ROUTER_API_CREDENTIAL_SCOPES, ROUTE_SERVICE_KEYS, RouterAbEcdsaPresignRuntime, RouterAbEd25519YaoExportOwnerProofAuthorizationAdapter, RouterAbEd25519YaoHttpRegistrationBackend, RouterAbEd25519YaoRecoveryWalletSessionAuthorizationAdapter, SESSION_CAS_GUARD_SQL, SessionService, StaticCloudflareTenantStorageRouteResolver, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, WALLET_AUTH_METHOD_D1_STORE, WALLET_AUTH_METHOD_STORE_D1_SCHEMA_SQL, WALLET_AUTH_METHOD_STORE_D1_SCHEMA_V2_SQL, 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, WALLET_STORE_D1_SCHEMA_SQL, WalletHomeCustodyBinding, WalletLifecycleLocator, WalletObjectAddressSnapshot, WalletPlacementRoutes, abusePrincipalKey, addSecp256k1PublicKeys33, admitD1EstablishedWalletHome, admitRouterAbEcdsaReusableWalletSessionOperation, applyRouteMetering, assertUniqueRouterApiRouteDefinitions, authenticateDeviceLinkingOwnerWalletSessionRequestV1, authenticateRouterAbEcdsaOperationStepUp, authenticateRouterAbWalletOperationStepUp, authenticateRouterAbWalletOperationStepUpIdentity, authorizeRouterAbEcdsaDerivationNormalSigningRoute, authorizeRouterAbEd25519NormalSigningRoute, base64UrlDecode, base64UrlEncode, bindWalletAuthMethodIdentity, bindWalletAuthMethodIdentityV2, buildCorsOrigins, buildRouterAbEcdsaDerivationPrivateSigningWorkerBody, buildRouterAbEcdsaOwnerOperationStepUpPreparation, buildRouterAbEd25519OwnerOperationStepUpPreparation, buildRouterAbEd25519PrivateSigningWorkerBody, buildRouterAbEd25519YaoAddSignerAdmissionRequestV1, buildRouterAbEd25519YaoProductAdmissionRequestV1, buildTenantRootIdentityFromAuthenticatedDeploymentV1, buildVerifiedLinkInputV1, buildVerifiedTargetFactorV1, buildWalletEcdsaSignerRecord, claimRouterAbEcdsaOperationStepUp, coerceLogger, coerceRouterLogger, completeRouterAbEcdsaOperation, computeEip1559TxHash, computeLinkedDeviceSessionClaimDigestV1, computeRouterAbEd25519NormalSigningAdmissionMaterial, computeVerifiedTargetFactorVerificationDigestV1, createCloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1RouterApiAuthService, createCloudflareD1VersionedJsonRecordStore, createCloudflareDurableObjectVersionedJsonRecordStore, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createCloudflareRouter, createCloudflareTenantStorageRoute, createCloudflareWalletGatewayRouterV1, createD1LinkedDeviceOwnerAuthorizationMetadataSourceV1, createD1LinkedDeviceOwnerAuthorizationProviderV1, createD1LinkedDeviceOwnerSourceChildReaderV1, createD1LinkedDeviceRouteServiceV1, createD1LinkedDeviceSessionServiceV1, createD1LinkedDeviceSourceContributionPreparationPlannerV1, createD1LinkedDeviceVerifiedLinkSourceReaderV1, createDeviceLinkingOwnerRequestAuthenticatorV1, createEd25519SessionAdapter, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterApiRuntimeSnapshotConsumer, createRouterAbEcdsaEd25519CeremonyTokenIssuer, createRouterAbEcdsaStrictPostRegistrationPort, createRouterAbEcdsaStrictRegistrationPort, createRouterAbEd25519YaoCeremonyStateStoreV1, createRouterAbEd25519YaoExportModule, createRouterAbEd25519YaoHttpRegistrationBackendFromEnv, createRouterAbEd25519YaoMaterialActivationRefV1, createRouterAbEd25519YaoProductRegistrationCompositionFromPortsV1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1, createRouterAbEd25519YaoProductRegistrationRuntimeV1, createRouterAbEd25519YaoProductRegistrationStateFromPartsV1, createRouterAbEd25519YaoProductRegistrationStateV1, createRouterAbEd25519YaoRegistrationModule, createRouterAbNormalSigningAdmissionAdapter, createRouterAbServiceBindingFetch, createRouterApiModule, createRouterApiRouteDefinitions, createSelfHostedCloudflareSigningRouter, createSelfHostedCloudflareSigningWorker, createSignerD1DoStorageTarget, createSigningSessionSealOptions, createStaticCloudflareTenantStorageRouteResolver, createStaticCloudflareTenantStorageRouteResolverFromBindings, createStaticWalletConsoleBindingV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createWalletConsoleOpsClient, createWalletConsoleRelayProxyExtensionV1, createWalletControlClientBindings, createWalletRegistrationContextResolver, createWalletRuntimeOpsHandler, d1ChangedRows, d1Integer, d1Number, decideRouterAbEcdsaOwnerOperationAuthorization, decideRouterAbEd25519OwnerOperationAuthorization, decodeEvmBlockHeader, decodeEvmTransactionByHash, decodeEvmTransactionCall, decodeEvmTransactionReceipt, decodeJsonRpcEnvelope, decodeWalletConsoleTenantRootActiveLineageRequestV1, decodeWalletConsoleTenantRootActiveLineageResponseV1, defineRoute, defineRouteExtension, deriveJwtExpiresAtIso, deriveRecoveryCodeLocatorV1FromBytes, digestOpaqueValue, encodeEip1559SignedTxFromSignature65, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, encodeSessionJsonSegment, encodeTenantRootIdentityV1, enforceDelegatePolicy, enforceRoutePolicy, ensureEvmCryptoWasm, ensureLeadingSlash, ensureWalletAuthMethodStoreD1Schema, ensureWalletStoreD1Schema, evaluateRouterAbNormalSigningAdmission, executeRouterAbEd25519YaoAdmittedRegistrationV1, executeSignedDelegateWithRelayer, extractBearerCredential, extractRouterApiEnvironmentId, findRouteDefinitionById, findRouteDefinitionForRequest, formatD1ExecStatement, getRouterApiRouteExtensionDefinitions, getRouterApiRouteExtensionRoutes, getRouterApiRouteExtensionsForTransport, handleRouterAbEcdsaDerivationNormalSigningRouteCore, handleRouterAbEd25519YaoExportRequestScopedCloudflareV1, handleRouterAbEd25519YaoRecoveryRequestScopedCloudflareV1, handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1, handleStaticWalletConsoleRequestV1, handleWalletControlRequest, headersToRecord, isD1DatabaseLike, isObject, isPlainObject, json, jsonFailure, keccak256Bytes, linkedDeviceSignerManifestsEqualV1, linkedDeviceX25519RecipientPublicKeyB64uV1, loadCloudflareSignerWasmModule, matchesRouteDefinitionRequest, mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, mintRouterAbEd25519YaoRegistrationIdentityV1, normalizeBoundedPositiveInteger, normalizeCorsOrigin, normalizeD1RouterApiAuthOptions, normalizeHashToBytes, normalizeLinkedDevicePasskeyTargetConfigurationV1, normalizeLogger, normalizeLowercaseString, normalizeSessionString, normalizeSessionTtlSeconds, normalizeSourceIp, normalizeTrimmedString, normalizeWalletAuthMethod, normalizeWalletAuthMethodV2, parseBooleanFlag, parseBooleanJwtClaim, parseCacheControlMaxAgeSec, parseCsvList, parseD1JsonArrayColumn, parseD1JsonColumn, parseD1JsonObjectColumn, parseD1LinkedDeviceSessionRowV1, parseD1LinkedDeviceSessionTranscriptRowV1, parseGoogleEmailOtpRegistrationAttemptRecord, parseGoogleEmailOtpRegistrationOfferCandidates, parseGoogleJwks, parseGoogleLoginVerifyRequest, parseInstalledEcdsaCustodySnapshotV1, parseJwtAud, parseLinkedDeviceSessionRecordV1, parseOrgId, parseRecoveryCodeLocatorV1, parseRouterAbEcdsaEd25519PrivateJwk, parseRouterAbEcdsaPresignRuntimeConfig, parseRouterAbEcdsaStrictRegistrationTopology, parseRouterAbEd25519NormalSigningScopeV2, parseRouterAbEd25519OperationStepUpScope, parseRouterAbEd25519YaoActivationKeysetFromEnvV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoExportAdmissionEnvelopeV1, parseRouterAbEd25519YaoExportExecuteEnvelopeV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, parseRouterAbEd25519YaoProductRegistrationStateV1, parseRouterAbEd25519YaoRegistrationRouterAnswerV1, parseRouterAbEd25519YaoTenantRootWireV1, parseRouterAbOperationStepUpOperation, parseRouterAbPublicKeysetV2, parseRpcHexQuantity, parseRs256JwtForVerification, parseSessionJwt, parseSigningSessionSealRootConfig, parseStaticWalletConsoleBindingConfigV1, parseStoredRouterAbEcdsaPendingActivationV1, parseWalletEd25519SignerRecord, parseWalletId, parseWalletRecoveryOperationId, parseWalletRegistrationContextResponse, parseWalletRegistrationSetupRequest, parseWalletRegistrationSetupReservation, parseWalletRuntimeExecuteSignedDelegateRequest, parseWalletRuntimeExecuteSignedDelegateResponse, parseWalletRuntimeExecuteSignedDelegateResult, parseWalletRuntimeRelayerAccount, parseWalletRuntimeWalletIdentitiesResult, parseWalletRuntimeWalletIdentityRequest, parseWebAuthnRpId, parseWebAuthnSyncChallengeRecord, partitionRouterAbEd25519YaoProductRegistrationStateV1, postRouterAbSigningWorkerJson, prepareD1TenantStatement, prepareD1WalletAuthMethodInsertStatement, prepareD1WalletAuthMethodPutStatement, prepareD1WalletAuthMethodV2PutStatement, prepareD1WalletPutSignerStatement, prepareD1WalletPutSubjectStatement, prepareD1WebAuthnAuthenticatorInsertStatement, prepareD1WebAuthnAuthenticatorPutStatement, projectRouterAbEd25519YaoExactWalletSession, proposeWalletRegistrationSetup, publishableKeyRoutePrincipal, queryD1All, queryD1One, randomTenantRootCreationGrantBytesV1, readD1LinkedDeviceEcdsaSourceV1, readD1LinkedDeviceEd25519SourceV1, readEnvironmentCsv, readEnvironmentString, readJson, registrationPreparationIdFromString, requireD1RouterApiAuthScopeString, requireEnvironmentString, requireNormalizedSessionString, requireRuntimePolicyScope, resolveFreshRouterAbEcdsaMaterialActivation, resolvePublishableKeyApiCredentialAuth, resolveRequestOriginRateLimitKeyFromExpressRequest, resolveRequestOriginRateLimitKeyFromFetchHeaders, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1, resolveRuntimeTenantRootLineage, resolveSecretKeyApiCredentialAuth, resolveSourceIpFromExpressRequest, resolveSourceIpFromFetchHeaders, resolveWalletRegistrationContext, routeError, routeJson, routerAbEcdsaAtomicAuthorizationConfigured, routerAbEcdsaOperationInProgressResult, routerAbEcdsaOwnerOperationFailureResult, routerAbEcdsaRecordedResponse, routerAbEcdsaReplayHttpResponse, routerAbEcdsaReplayResult, routerAbEcdsaReplayUnavailableResult, routerAbEcdsaStrictRegistrationFactsBindingJson, routerAbEcdsaStrictRegistrationRequestBindingJson, routerAbEcdsaStrictRegistrationRequestMatchesFacts, routerAbEd25519OwnerOperationFailureResult, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, routerAbEd25519YaoPersistedCapabilityMatchesLookupV1, routerAbEd25519YaoRegistrationExecutionTimingEntriesV1, routerAbEd25519YaoRegistrationSigningRootIdV1, routerAbEd25519YaoTenantRootWireV1, runRouterAbEd25519YaoProductRegistrationRequestScopedV1, runRouterAbEd25519YaoRegistrationSideEffectV1, runRouterAbEd25519YaoRegistrationTwoPhaseV1, runRouterAbPrewarmScheduledV1, runtimePolicyScopeKey, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1, secp256k1PrivateKey32ToPublicKey33, secp256k1PublicKey33ToEthereumAddress, secureRandomBase36, secureRandomBase64Url, selectWalletEd25519Signer, sendExpressRouteResponse, sessionJwtTimeClaims, sha256Bytes, sha256BytesSync, signSecp256k1Recoverable, signTenantRootCreationGrantV1, tenantRootIdentityDigestB64uV1, tenantStorageRouteBackendFamily, tenantStorageRouteDiagnostic, toFetchRouteResponse, normalizeOptionalTrimmedString as toOptionalTrimmedString, toResponse, toSessionArrayBufferCopy, unavailableRegistrationContext, validateDelegateExpiryAndNonce, validateGoogleIdTokenClaims, validateRuntimeSnapshotExpectation, validateSecp256k1PublicKey33, verifyGoogleOidcToken, verifyRs256JwtSignature, verifySecp256k1Bip340SignatureAgainstPublicKey33, verifySecp256k1RecoverableSignatureAgainstPublicKey33, walletAuthMethodId, walletAuthMethodV2Id, walletConsoleApiWalletGetRouteDefinitionV1, walletConsoleApiWalletListRouteDefinitionV1, walletConsoleApiWalletSearchRouteDefinitionV1, walletConsoleRelayRouteDefinitionsV1, walletConsoleSignedDelegateRouteDefinitionV1, walletConsoleSponsoredEvmCallRouteDefinitionV1, walletObjectIdentity, walletRegistrationContext, walletRegistrationSetupRequestDigest, webAuthnCredentialIdB64uFromCredential, withCors };
|
|
134
|
+
export { API_CREDENTIAL_ROUTE_SCOPES, API_CREDENTIAL_TYPES, ActionType, 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, CloudflareD1GoogleEmailOtpRegistrationAttemptStore, CloudflareD1OidcJwksCache, CloudflareD1RouterAbEd25519YaoCapabilityPersistence, CloudflareD1RouterAbNormalSigningAdmissionStore, CloudflareD1VaultProxyStore, CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, CloudflareD1WebAuthnAuthService, CloudflareD1WebAuthnStore, CloudflareDurableObjectVersionedJsonRecordStore, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, CloudflareVersionedJsonRecordStoreError, CrossSiteSessionCookieAdapter, D1IdentityStore, D1LinkedDeviceAuthorityInstallServiceV1, D1LinkedDeviceEd25519ExportRootStoreV1, D1LinkedDeviceRequestProofNonceStoreV1, D1LinkedDeviceSessionStoreV1, D1LinkedDeviceSourceContributionPreparationPlannerV1, D1LinkedDeviceTargetAuthenticatorStoreV1, D1LinkedDeviceTargetCredentialProviderV1, D1LinkedDeviceTargetPlannerV1, D1WalletAuthMethodStore, D1WalletObjectAddresses, D1WalletStore, D1_BATCH_CAS_GUARD_SQL, DEFAULT_SESSION_COOKIE_NAME, DEFAULT_WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_V1, DEFAULT_WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_V1, DEFAULT_WALLET_SESSION_REMAINING_USES, DEFAULT_WALLET_SESSION_TTL_MS, ED25519_SIGNER_ACTIVATION_ID_PATH, InMemoryRouterAbEd25519YaoExportService, InMemoryRouterAbEd25519YaoExportStateV1, InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAdapter, InMemoryRouterAbEd25519YaoRegistrationService, InMemoryRouterAbNormalSigningAdmissionStore, LINKED_DEVICE_OWNER_AUTHORIZATION_PATH_V1, LinkedDeviceRetiredTargetRegistrationShapeErrorV1, LinkedDeviceSourceFamilyUnavailableErrorV1, LinkedDeviceWebAuthnRegistrationVerifierV1, MAX_WALLET_SESSION_REMAINING_USES, MAX_WALLET_SESSION_TTL_MS, PUBLIC_PROOF_TYPES, ROUTER_AB_ECDSA_DERIVATION_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_YAO_CAPABILITY_REPLACEMENT_TABLE_V1, ROUTER_AB_ED25519_YAO_EXPORT_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_EXPORT_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ACTIVATE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_STATUS_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, ROUTER_AB_ED25519_YAO_WARM_RECOVERY_BOOTSTRAP_PATH_V1, ROUTER_AB_MPC_ROUTER_ORIGIN, ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, ROUTER_AB_SIGNING_WORKER_ORIGIN, ROUTER_AB_TRACE_ID_HEADER_V1, ROUTER_API_CREDENTIAL_SCOPES, ROUTE_SERVICE_KEYS, RouterAbEcdsaPresignRuntime, RouterAbEd25519YaoExportOwnerProofAuthorizationAdapter, RouterAbEd25519YaoHttpRegistrationBackend, RouterAbEd25519YaoRecoveryWalletSessionAuthorizationAdapter, SESSION_CAS_GUARD_SQL, SessionService, StaticCloudflareTenantStorageRouteResolver, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, WALLET_AUTH_METHOD_D1_STORE, WALLET_AUTH_METHOD_STORE_D1_SCHEMA_SQL, WALLET_AUTH_METHOD_STORE_D1_SCHEMA_V2_SQL, 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, WALLET_STORE_D1_SCHEMA_SQL, WalletHomeCustodyBinding, WalletLifecycleLocator, WalletObjectAddressSnapshot, WalletPlacementRoutes, abusePrincipalKey, addSecp256k1PublicKeys33, admitD1EstablishedWalletHome, admitRouterAbEcdsaReusableWalletSessionOperation, applyRouteMetering, assertUniqueRouterApiRouteDefinitions, authenticateDeviceLinkingOwnerWalletSessionRequestV1, authenticateRouterAbEcdsaOperationStepUp, authenticateRouterAbWalletOperationStepUp, authenticateRouterAbWalletOperationStepUpIdentity, authorizeRouterAbEcdsaDerivationNormalSigningRoute, authorizeRouterAbEd25519NormalSigningRoute, base64UrlDecode, base64UrlEncode, bindWalletAuthMethodIdentity, bindWalletAuthMethodIdentityV2, buildCorsOrigins, buildRouterAbEcdsaDerivationPrivateSigningWorkerBody, buildRouterAbEcdsaOwnerOperationStepUpPreparation, buildRouterAbEd25519OwnerOperationStepUpPreparation, buildRouterAbEd25519PrivateSigningWorkerBody, buildRouterAbEd25519YaoAddSignerAdmissionRequestV1, buildRouterAbEd25519YaoProductAdmissionRequestV1, buildTenantRootIdentityFromAuthenticatedDeploymentV1, buildVerifiedLinkInputV1, buildVerifiedTargetFactorV1, buildWalletEcdsaSignerRecord, claimRouterAbEcdsaOperationStepUp, coerceLogger, coerceRouterLogger, completeRouterAbEcdsaOperation, computeEip1559TxHash, computeLinkedDeviceSessionClaimDigestV1, computeRouterAbEd25519NormalSigningAdmissionMaterial, computeVerifiedTargetFactorVerificationDigestV1, createCloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1RouterApiAuthService, createCloudflareD1VersionedJsonRecordStore, createCloudflareDurableObjectVersionedJsonRecordStore, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createCloudflareRouter, createCloudflareTenantStorageRoute, createCloudflareWalletGatewayRouterV1, createD1LinkedDeviceOwnerAuthorizationMetadataSourceV1, createD1LinkedDeviceOwnerAuthorizationProviderV1, createD1LinkedDeviceOwnerSourceChildReaderV1, createD1LinkedDeviceRouteServiceV1, createD1LinkedDeviceSessionServiceV1, createD1LinkedDeviceSourceContributionPreparationPlannerV1, createD1LinkedDeviceVerifiedLinkSourceReaderV1, createDeviceLinkingOwnerRequestAuthenticatorV1, createEd25519SessionAdapter, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterApiRuntimeSnapshotConsumer, createRouterAbEcdsaEd25519CeremonyTokenIssuer, createRouterAbEcdsaStrictPostRegistrationPort, createRouterAbEcdsaStrictRegistrationPort, createRouterAbEd25519YaoCeremonyStateStoreV1, createRouterAbEd25519YaoExportModule, createRouterAbEd25519YaoHttpRegistrationBackendFromEnv, createRouterAbEd25519YaoMaterialActivationRefV1, createRouterAbEd25519YaoProductRegistrationCompositionFromPortsV1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1, createRouterAbEd25519YaoProductRegistrationRuntimeV1, createRouterAbEd25519YaoProductRegistrationStateFromPartsV1, createRouterAbEd25519YaoProductRegistrationStateV1, createRouterAbEd25519YaoRegistrationModule, createRouterAbNormalSigningAdmissionAdapter, createRouterAbServiceBindingFetch, createRouterApiModule, createRouterApiRouteDefinitions, createSelfHostedCloudflareSigningRouter, createSelfHostedCloudflareSigningWorker, createSignerD1DoStorageTarget, createSigningSessionSealOptions, createStaticCloudflareTenantStorageRouteResolver, createStaticCloudflareTenantStorageRouteResolverFromBindings, createStaticWalletConsoleBindingV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createWalletConsoleOpsClient, createWalletConsoleRelayProxyExtensionV1, createWalletControlClientBindings, createWalletRegistrationContextResolver, createWalletRuntimeOpsHandler, d1ChangedRows, d1Integer, d1Number, decideRouterAbEcdsaOwnerOperationAuthorization, decideRouterAbEd25519OwnerOperationAuthorization, decodeEvmBlockHeader, decodeEvmTransactionByHash, decodeEvmTransactionCall, decodeEvmTransactionReceipt, decodeJsonRpcEnvelope, decodeWalletConsoleTenantRootActiveLineageRequestV1, decodeWalletConsoleTenantRootActiveLineageResponseV1, defineRoute, defineRouteExtension, deriveJwtExpiresAtIso, deriveRecoveryCodeLocatorV1FromBytes, digestOpaqueValue, encodeEip1559SignedTxFromSignature65, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, encodeSessionJsonSegment, encodeTenantRootIdentityV1, enforceDelegatePolicy, enforceRoutePolicy, ensureEvmCryptoWasm, ensureLeadingSlash, ensureWalletAuthMethodStoreD1Schema, ensureWalletStoreD1Schema, evaluateRouterAbNormalSigningAdmission, executeRouterAbEd25519YaoAdmittedRegistrationV1, executeSignedDelegateWithRelayer, extractBearerCredential, extractRouterApiEnvironmentId, findRouteDefinitionById, findRouteDefinitionForRequest, formatD1ExecStatement, getRouterApiRouteExtensionDefinitions, getRouterApiRouteExtensionRoutes, getRouterApiRouteExtensionsForTransport, handleRouterAbEcdsaDerivationNormalSigningRouteCore, handleRouterAbEd25519YaoExportRequestScopedCloudflareV1, handleRouterAbEd25519YaoRecoveryRequestScopedCloudflareV1, handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1, handleStaticWalletConsoleRequestV1, handleWalletControlRequest, headersToRecord, isD1DatabaseLike, isObject, isPlainObject, json, jsonFailure, keccak256Bytes, linkedDeviceSignerManifestsEqualV1, linkedDeviceX25519RecipientPublicKeyB64uV1, loadCloudflareSignerWasmModule, matchesRouteDefinitionRequest, mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, mintRouterAbEd25519YaoRegistrationIdentityV1, normalizeBoundedPositiveInteger, normalizeCorsOrigin, normalizeD1RouterApiAuthOptions, normalizeHashToBytes, normalizeLinkedDevicePasskeyTargetConfigurationV1, normalizeLogger, normalizeLowercaseString, normalizeSessionString, normalizeSessionTtlSeconds, normalizeSourceIp, normalizeTrimmedString, normalizeWalletAuthMethod, normalizeWalletAuthMethodV2, parseBooleanFlag, parseBooleanJwtClaim, parseCacheControlMaxAgeSec, parseCsvList, parseD1JsonArrayColumn, parseD1JsonColumn, parseD1JsonObjectColumn, parseD1LinkedDeviceSessionRowV1, parseD1LinkedDeviceSessionTranscriptRowV1, parseGoogleEmailOtpRegistrationAttemptRecord, parseGoogleEmailOtpRegistrationOfferCandidates, parseGoogleJwks, parseGoogleLoginVerifyRequest, parseInstalledEcdsaCustodySnapshotV1, parseJwtAud, parseLinkedDeviceSessionRecordV1, parseOrgId, parseRecoveryCodeLocatorV1, parseRouterAbEcdsaEd25519PrivateJwk, parseRouterAbEcdsaPresignRuntimeConfig, parseRouterAbEcdsaStrictRegistrationTopology, parseRouterAbEd25519NormalSigningScopeV2, parseRouterAbEd25519OperationStepUpScope, parseRouterAbEd25519YaoActivationKeysetFromEnvV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoExportAdmissionEnvelopeV1, parseRouterAbEd25519YaoExportExecuteEnvelopeV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, parseRouterAbEd25519YaoProductRegistrationStateV1, parseRouterAbEd25519YaoRegistrationAdmissionReadV1, parseRouterAbEd25519YaoRegistrationRouterAnswerV1, parseRouterAbEd25519YaoTenantRootWireV1, parseRouterAbOperationStepUpOperation, parseRouterAbPublicKeysetV2, parseRpcHexQuantity, parseRs256JwtForVerification, parseSessionJwt, parseSigningSessionSealRootConfig, parseStaticWalletConsoleBindingConfigV1, parseStoredRouterAbEcdsaPendingActivationV1, parseWalletEd25519SignerRecord, parseWalletId, parseWalletRecoveryOperationId, parseWalletRegistrationContextResponse, parseWalletRegistrationSetupRequest, parseWalletRegistrationSetupReservation, parseWalletRuntimeExecuteSignedDelegateRequest, parseWalletRuntimeExecuteSignedDelegateResponse, parseWalletRuntimeExecuteSignedDelegateResult, parseWalletRuntimeRelayerAccount, parseWalletRuntimeWalletIdentitiesResult, parseWalletRuntimeWalletIdentityRequest, parseWebAuthnRpId, parseWebAuthnSyncChallengeRecord, partitionRouterAbEd25519YaoProductRegistrationStateV1, postRouterAbSigningWorkerJson, prepareD1TenantStatement, prepareD1WalletAuthMethodInsertStatement, prepareD1WalletAuthMethodPutStatement, prepareD1WalletAuthMethodV2PutStatement, prepareD1WalletPutSignerStatement, prepareD1WalletPutSubjectStatement, prepareD1WebAuthnAuthenticatorInsertStatement, prepareD1WebAuthnAuthenticatorPutStatement, projectRouterAbEd25519YaoExactWalletSession, proposeWalletRegistrationSetup, publishableKeyRoutePrincipal, queryD1All, queryD1One, randomTenantRootCreationGrantBytesV1, readD1LinkedDeviceEcdsaSourceV1, readD1LinkedDeviceEd25519SourceV1, readEnvironmentCsv, readEnvironmentString, readJson, registrationPreparationIdFromString, requireD1RouterApiAuthScopeString, requireEnvironmentString, requireNormalizedSessionString, requireRuntimePolicyScope, resolveFreshRouterAbEcdsaMaterialActivation, resolvePublishableKeyApiCredentialAuth, resolveRequestOriginRateLimitKeyFromExpressRequest, resolveRequestOriginRateLimitKeyFromFetchHeaders, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1, resolveRuntimeTenantRootLineage, resolveSecretKeyApiCredentialAuth, resolveSourceIpFromExpressRequest, resolveSourceIpFromFetchHeaders, resolveWalletRegistrationContext, routeError, routeJson, routerAbEcdsaAtomicAuthorizationConfigured, routerAbEcdsaOperationInProgressResult, routerAbEcdsaOwnerOperationFailureResult, routerAbEcdsaRecordedResponse, routerAbEcdsaReplayHttpResponse, routerAbEcdsaReplayResult, routerAbEcdsaReplayUnavailableResult, routerAbEcdsaStrictRegistrationFactsBindingJson, routerAbEcdsaStrictRegistrationRequestBindingJson, routerAbEcdsaStrictRegistrationRequestMatchesFacts, routerAbEd25519OwnerOperationFailureResult, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, routerAbEd25519YaoPersistedCapabilityMatchesLookupV1, routerAbEd25519YaoRegistrationExecutionTimingEntriesV1, routerAbEd25519YaoRegistrationSigningRootIdV1, routerAbEd25519YaoTenantRootWireV1, runRouterAbEd25519YaoProductRegistrationRequestScopedV1, runRouterAbEd25519YaoRegistrationSideEffectV1, runRouterAbEd25519YaoRegistrationTwoPhaseV1, runRouterAbPrewarmScheduledV1, runtimePolicyScopeKey, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1, secp256k1PrivateKey32ToPublicKey33, secp256k1PublicKey33ToEthereumAddress, secureRandomBase36, secureRandomBase64Url, selectWalletEd25519Signer, sendExpressRouteResponse, sessionJwtTimeClaims, sha256Bytes, sha256BytesSync, signSecp256k1Recoverable, signTenantRootCreationGrantV1, tenantRootIdentityDigestB64uV1, tenantStorageRouteBackendFamily, tenantStorageRouteDiagnostic, toFetchRouteResponse, normalizeOptionalTrimmedString as toOptionalTrimmedString, toResponse, toSessionArrayBufferCopy, unavailableRegistrationContext, validateDelegateExpiryAndNonce, validateGoogleIdTokenClaims, validateRuntimeSnapshotExpectation, validateSecp256k1PublicKey33, verifyGoogleOidcToken, verifyRs256JwtSignature, verifySecp256k1Bip340SignatureAgainstPublicKey33, verifySecp256k1RecoverableSignatureAgainstPublicKey33, walletAuthMethodId, walletAuthMethodV2Id, walletConsoleApiWalletGetRouteDefinitionV1, walletConsoleApiWalletListRouteDefinitionV1, walletConsoleApiWalletSearchRouteDefinitionV1, walletConsoleRelayRouteDefinitionsV1, walletConsoleSignedDelegateRouteDefinitionV1, walletConsoleSponsoredEvmCallRouteDefinitionV1, walletObjectIdentity, walletRegistrationContext, walletRegistrationSetupRequestDigest, webAuthnCredentialIdB64uFromCredential, withCors };
|
|
@@ -30,6 +30,7 @@ import { handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1 } from ".
|
|
|
30
30
|
import { createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js";
|
|
31
31
|
import { createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1 } from "./router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js";
|
|
32
32
|
import { CloudflareD1RouterAbEd25519YaoCapabilityPersistence } from "./router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js";
|
|
33
|
+
import { warmSigningSessionSealRuntime } from "./threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js";
|
|
33
34
|
import { createSigningSessionSealOptions } from "./threshold/session/signingSessionSeal/options.js";
|
|
34
35
|
import { createRouterAbEcdsaEd25519CeremonyTokenIssuer, createRouterAbEcdsaStrictPostRegistrationPort, createRouterAbEcdsaStrictRegistrationPort, parseRouterAbEcdsaEd25519PrivateJwk, parseRouterAbEcdsaStrictRegistrationTopology } from "./router/domains/ecdsa/routerAbEcdsaStrictRegistration.js";
|
|
35
36
|
import { D1LinkedDeviceTargetCredentialProviderV1 } from "./router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js";
|
|
@@ -512,9 +513,25 @@ async function handleSplitGatewayRequest(request, env, ctx, dependencies = {}) {
|
|
|
512
513
|
if (operation !== null) {
|
|
513
514
|
const response = await handlePartitionedD1Operation(env, request, operation, createStagingTenantRootCustodyLineage(createWalletConsoleOpsClient(env.WALLET_CONSOLE)), dependencies);
|
|
514
515
|
withCors(response.headers, { corsOrigins: readEnvironmentCsv(env.RELAY_CORS_ORIGINS) }, request);
|
|
516
|
+
warmSigningSessionSealAfterReply(env, ctx);
|
|
515
517
|
return response;
|
|
516
518
|
}
|
|
517
|
-
|
|
519
|
+
const response = await (await createSplitGatewayRouterHandler(env, dependencies, ctx))(request, env, ctx);
|
|
520
|
+
warmSigningSessionSealAfterReply(env, ctx);
|
|
521
|
+
return response;
|
|
522
|
+
}
|
|
523
|
+
let signingSessionSealWarmUp = null;
|
|
524
|
+
/**
|
|
525
|
+
* Once per isolate, after its first reply. A finalization seldom reaches the
|
|
526
|
+
* isolate that served an earlier request of the same registration, so the
|
|
527
|
+
* warm-up runs after whichever request reaches an isolate first.
|
|
528
|
+
*/
|
|
529
|
+
function warmSigningSessionSealAfterReply(env, ctx) {
|
|
530
|
+
if (signingSessionSealWarmUp || !stagingSigningSessionSealOptions(env)) return;
|
|
531
|
+
signingSessionSealWarmUp = warmSigningSessionSealRuntime().catch((error) => {
|
|
532
|
+
console.warn("[signing-session-seal] warm-up failed", error);
|
|
533
|
+
});
|
|
534
|
+
ctx.waitUntil(signingSessionSealWarmUp);
|
|
518
535
|
}
|
|
519
536
|
function requireStagingRouterAbPublicKeyset(env) {
|
|
520
537
|
const parsed = parseJsonValue(requireEnvironmentString(env, "ROUTER_AB_PUBLIC_KEYSET_JSON"));
|
|
@@ -15,6 +15,7 @@ import { sha256BytesPortable, toRecordValue } from "./d1RouterApiAuthBoundary.js
|
|
|
15
15
|
import { verifyD1LinkedDeviceFreshRevokeProofV1 } from "../wallet/d1WalletAuthMethodBoundary.js";
|
|
16
16
|
import { D1LinkedDeviceAuthorityInstallServiceV1 } from "../deviceLinking/d1LinkedDeviceAuthorityInstallService.js";
|
|
17
17
|
import { D1WalletAuthorityStore } from "../wallet/d1WalletAuthorityStore.js";
|
|
18
|
+
import { createD1Ed25519YaoLifecycleRecords } from "../ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js";
|
|
18
19
|
import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV2 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
|
|
19
20
|
import { createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1 } from "../../signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js";
|
|
20
21
|
import { normalizeD1RouterApiAuthOptions } from "./d1RouterApiAuthConfig.js";
|
|
@@ -846,7 +847,15 @@ function createCloudflareD1RouterApiAuthAssembly(input) {
|
|
|
846
847
|
tenantRootCustodyLineage: options.tenantRootCustodyLineage,
|
|
847
848
|
getWalletStore,
|
|
848
849
|
activateSideEffects: walletRegistrationActivateSideEffectStore(options),
|
|
849
|
-
registrationRead: new D1WalletRegistrationRead(options.database, options.registrationAuthority ?? null, walletRegistrationNearProvisioningSideEffectStore(options), getRegistrationCeremonyIntentStore, yaoLifecycleDecisions,
|
|
850
|
+
registrationRead: new D1WalletRegistrationRead(options.database, options.registrationAuthority ?? null, walletRegistrationNearProvisioningSideEffectStore(options), getRegistrationCeremonyIntentStore, yaoLifecycleDecisions, createD1Ed25519YaoLifecycleRecords({
|
|
851
|
+
database: options.database,
|
|
852
|
+
scope: {
|
|
853
|
+
namespace: options.namespace,
|
|
854
|
+
orgId: options.orgId,
|
|
855
|
+
projectId: options.projectId,
|
|
856
|
+
envId: options.envId
|
|
857
|
+
}
|
|
858
|
+
}), walletRegistrationCommitStore),
|
|
850
859
|
walletRegistrationCommitStore,
|
|
851
860
|
walletCustodyCommitStore,
|
|
852
861
|
walletAuthMethods,
|
|
@@ -4,7 +4,7 @@ import { D1WalletCeremonyActivity, ceremonySettled } from "./d1WalletCeremonyAct
|
|
|
4
4
|
import { collectChangedStateWallets, lifecycleWriteFenceStatements } from "./d1Ed25519YaoStateWriteFence.js";
|
|
5
5
|
//#region src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.ts
|
|
6
6
|
function createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1(options) {
|
|
7
|
-
return createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1(new D1LifecycleRecords(options,
|
|
7
|
+
return createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1(new D1LifecycleRecords(options, createD1Ed25519YaoLifecycleRecords(options)));
|
|
8
8
|
}
|
|
9
9
|
var D1LifecycleRecords = class {
|
|
10
10
|
constructor(options, records) {
|
|
@@ -64,7 +64,7 @@ function readPartition(value) {
|
|
|
64
64
|
return record;
|
|
65
65
|
}
|
|
66
66
|
async function evictWalletEd25519CapabilityCache(options, walletId) {
|
|
67
|
-
const records =
|
|
67
|
+
const records = createD1Ed25519YaoLifecycleRecords(options);
|
|
68
68
|
const key = ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1;
|
|
69
69
|
const current = await records.read(key);
|
|
70
70
|
if (current.kind !== "present") return;
|
|
@@ -98,7 +98,7 @@ async function evictWalletEd25519CapabilityCache(options, walletId) {
|
|
|
98
98
|
expectedVersion: current.version
|
|
99
99
|
}])).kind !== "stored") throw new Error("Capability cache changed during cleanup");
|
|
100
100
|
}
|
|
101
|
-
function
|
|
101
|
+
function createD1Ed25519YaoLifecycleRecords(options) {
|
|
102
102
|
return createCloudflareD1VersionedJsonRecordStore({
|
|
103
103
|
...options,
|
|
104
104
|
encode: identityVersionedJsonObject,
|
|
@@ -106,6 +106,6 @@ function createLifecycleRecords(options) {
|
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
108
|
//#endregion
|
|
109
|
-
export { createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, evictWalletEd25519CapabilityCache };
|
|
109
|
+
export { createD1Ed25519YaoLifecycleRecords, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, evictWalletEd25519CapabilityCache };
|
|
110
110
|
|
|
111
111
|
//# sourceMappingURL=d1Ed25519YaoProductRegistrationPartitionedStateStore.js.map
|
|
@@ -123,32 +123,41 @@ 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
|
-
async function
|
|
127
|
-
|
|
128
|
-
const foundingAuthMethod = requireFoundingAuthMethod(input.foundingAuthMethod);
|
|
129
|
-
const authorityRead = input.database.prepare(`SELECT record_json
|
|
126
|
+
async function readStoredFoundingRecords(database, scope, ids) {
|
|
127
|
+
const authorityRead = database.prepare(`SELECT record_json
|
|
130
128
|
FROM wallet_authorities
|
|
131
129
|
WHERE namespace = ?
|
|
132
130
|
AND org_id = ?
|
|
133
131
|
AND project_id = ?
|
|
134
132
|
AND env_id = ?
|
|
135
133
|
AND authority_id = ?
|
|
136
|
-
LIMIT 1`).bind(
|
|
137
|
-
const authMethodRead =
|
|
134
|
+
LIMIT 1`).bind(scope.namespace, scope.orgId, scope.projectId, scope.envId, String(ids.walletAuthorityId));
|
|
135
|
+
const authMethodRead = database.prepare(`SELECT record_json
|
|
138
136
|
FROM wallet_auth_methods
|
|
139
137
|
WHERE namespace = ?
|
|
140
138
|
AND org_id = ?
|
|
141
139
|
AND project_id = ?
|
|
142
140
|
AND env_id = ?
|
|
143
141
|
AND wallet_auth_method_id = ?
|
|
144
|
-
LIMIT 1`).bind(
|
|
145
|
-
const results = await
|
|
142
|
+
LIMIT 1`).bind(scope.namespace, scope.orgId, scope.projectId, scope.envId, String(ids.walletAuthMethodId));
|
|
143
|
+
const results = await database.batch([authorityRead, authMethodRead]);
|
|
146
144
|
assertBatchSucceeded({
|
|
147
145
|
expectedStatementCount: 2,
|
|
148
146
|
results
|
|
149
147
|
});
|
|
150
|
-
|
|
151
|
-
|
|
148
|
+
return {
|
|
149
|
+
walletAuthorityId: ids.walletAuthorityId,
|
|
150
|
+
walletAuthMethodId: ids.walletAuthMethodId,
|
|
151
|
+
authorityRow: results[0]?.results?.[0] ?? null,
|
|
152
|
+
authMethodRow: results[1]?.results?.[0] ?? null
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function prepareFoundingStatements(input) {
|
|
156
|
+
if (!input.foundingAuthority) return [];
|
|
157
|
+
const foundingAuthMethod = requireFoundingAuthMethod(input.foundingAuthMethod);
|
|
158
|
+
const { stored } = input;
|
|
159
|
+
if (!stored || String(stored.walletAuthorityId) !== String(input.foundingAuthority.authorityId) || String(stored.walletAuthMethodId) !== String(foundingAuthMethod.walletAuthMethodId)) throw new Error("A founding commit requires the records that its reservation read");
|
|
160
|
+
const { authorityRow, authMethodRow } = stored;
|
|
152
161
|
let persistedAuthority = null;
|
|
153
162
|
if (authorityRow) {
|
|
154
163
|
const parsedAuthority = parseWalletAuthorityV1(parseD1JsonColumn(authorityRow.record_json));
|
|
@@ -210,13 +219,13 @@ var CloudflareD1WalletRegistrationCommitStore = class {
|
|
|
210
219
|
this.database = input.database;
|
|
211
220
|
this.scope = normalizeScope(input);
|
|
212
221
|
}
|
|
213
|
-
async reserveAuthority(authority, held
|
|
214
|
-
|
|
222
|
+
async reserveAuthority(authority, held, founding) {
|
|
223
|
+
const [, stored] = await Promise.all([authority.kind === "passkey" && !heldClaimCovers(held, authority) ? reservePasskeyCredential(this.credentialClaims, {
|
|
215
224
|
walletId: authority.walletId,
|
|
216
225
|
rpId: authority.rpId,
|
|
217
226
|
credentialIdB64u: authority.credentialIdB64u
|
|
218
|
-
});
|
|
219
|
-
return this.commit.bind(this, authority);
|
|
227
|
+
}) : void 0, founding ? readStoredFoundingRecords(this.database, this.scope, founding) : null]);
|
|
228
|
+
return this.commit.bind(this, authority, stored);
|
|
220
229
|
}
|
|
221
230
|
async claimPasskeyAhead(input) {
|
|
222
231
|
const { authority } = input;
|
|
@@ -259,7 +268,7 @@ var CloudflareD1WalletRegistrationCommitStore = class {
|
|
|
259
268
|
AND env_id = ?4
|
|
260
269
|
AND registration_ceremony_id = ?5`).bind(this.scope.namespace, this.scope.orgId, this.scope.projectId, this.scope.envId, registrationCeremonyId).run();
|
|
261
270
|
}
|
|
262
|
-
async commit(authority, input, executeBatch) {
|
|
271
|
+
async commit(authority, stored, input, executeBatch) {
|
|
263
272
|
assertCommitWalletIdentity(input, authority);
|
|
264
273
|
const fenced = [];
|
|
265
274
|
const ed25519Signer = input.walletSigners.find(isEd25519Signer);
|
|
@@ -283,7 +292,7 @@ var CloudflareD1WalletRegistrationCommitStore = class {
|
|
|
283
292
|
scope: this.scope
|
|
284
293
|
}, new Set([capabilityWallet.value, input.wallet.walletId])));
|
|
285
294
|
}
|
|
286
|
-
const prepared =
|
|
295
|
+
const prepared = prepareWalletWrite(this.database, this.scope, authority, input, stored);
|
|
287
296
|
const statements = [...fenced, ...prepared.statements];
|
|
288
297
|
const results = executeBatch ? await executeBatch(statements) : await this.database.batch(statements);
|
|
289
298
|
assertBatchSucceeded({
|
|
@@ -292,12 +301,13 @@ var CloudflareD1WalletRegistrationCommitStore = class {
|
|
|
292
301
|
});
|
|
293
302
|
}
|
|
294
303
|
};
|
|
295
|
-
|
|
296
|
-
const foundingStatements =
|
|
304
|
+
function prepareWalletWrite(database, scope, authority, input, stored) {
|
|
305
|
+
const foundingStatements = prepareFoundingStatements({
|
|
297
306
|
database,
|
|
298
307
|
scope,
|
|
299
308
|
foundingAuthority: input.foundingAuthority,
|
|
300
309
|
foundingAuthMethod: input.foundingAuthMethod,
|
|
310
|
+
stored,
|
|
301
311
|
now: input.now
|
|
302
312
|
});
|
|
303
313
|
const statements = [prepareD1WalletPutSubjectStatement({
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
import { parseRouterAbEd25519YaoRegistrationAdmissionReadV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js";
|
|
1
2
|
//#region src/router/cloudflare/d1/registration/d1WalletRegistrationRead.ts
|
|
2
3
|
/** Read admission and immutable finalization state from one D1 snapshot. */
|
|
3
4
|
var D1WalletRegistrationRead = class {
|
|
4
|
-
constructor(database, authority, operations, getCeremonies, decisions, passkeyClaims) {
|
|
5
|
+
constructor(database, authority, operations, getCeremonies, decisions, yaoRecords, passkeyClaims) {
|
|
5
6
|
this.database = database;
|
|
6
7
|
this.authority = authority;
|
|
7
8
|
this.operations = operations;
|
|
8
9
|
this.getCeremonies = getCeremonies;
|
|
9
10
|
this.decisions = decisions;
|
|
11
|
+
this.yaoRecords = yaoRecords;
|
|
10
12
|
this.passkeyClaims = passkeyClaims;
|
|
11
13
|
}
|
|
12
14
|
async readRespond(home) {
|
|
@@ -39,10 +41,11 @@ var D1WalletRegistrationRead = class {
|
|
|
39
41
|
this.operations.prepareRead(operationKey),
|
|
40
42
|
ceremonies.prepareCeremonyRead(home.ceremonyId),
|
|
41
43
|
this.decisions.prepareRead(home.ceremonyId),
|
|
42
|
-
this.passkeyClaims.prepareHeldPasskeyClaimRead(home.ceremonyId)
|
|
44
|
+
this.passkeyClaims.prepareHeldPasskeyClaimRead(home.ceremonyId),
|
|
45
|
+
this.yaoRecords.prepareRead(home.ceremonyId)
|
|
43
46
|
]);
|
|
44
|
-
const [homeRead, operationRead, ceremonyRead, decisionRead, passkeyClaimRead] = results;
|
|
45
|
-
if (results.length !==
|
|
47
|
+
const [homeRead, operationRead, ceremonyRead, decisionRead, passkeyClaimRead, yaoRead] = results;
|
|
48
|
+
if (results.length !== 6 || !homeRead || !operationRead || !ceremonyRead || !decisionRead || !passkeyClaimRead || !yaoRead) throw new Error("Registration finalization D1 batch returned incomplete results");
|
|
46
49
|
const admission = await this.authority.admitHomeRead(home, homeRead);
|
|
47
50
|
if (!admission.ok) return admission;
|
|
48
51
|
if (!ceremonyRead.success) throw new Error("Registration ceremony D1 read failed");
|
|
@@ -51,9 +54,13 @@ var D1WalletRegistrationRead = class {
|
|
|
51
54
|
operation: this.operations.parseReadResult(operationRead),
|
|
52
55
|
decision: this.decisions.parseRead(home.ceremonyId, decisionRead),
|
|
53
56
|
heldPasskeyClaim: this.passkeyClaims.parseHeldPasskeyClaimRead(passkeyClaimRead),
|
|
54
|
-
readCeremony: ceremonies.parseCeremonyRead.bind(ceremonies, home.ceremonyId, ceremonyRead)
|
|
57
|
+
readCeremony: ceremonies.parseCeremonyRead.bind(ceremonies, home.ceremonyId, ceremonyRead),
|
|
58
|
+
readYaoAdmission: this.parseYaoAdmission.bind(this, home.ceremonyId, yaoRead)
|
|
55
59
|
};
|
|
56
60
|
}
|
|
61
|
+
parseYaoAdmission(ceremonyId, result) {
|
|
62
|
+
return parseRouterAbEd25519YaoRegistrationAdmissionReadV1(ceremonyId, this.yaoRecords.parseReadResult(result));
|
|
63
|
+
}
|
|
57
64
|
};
|
|
58
65
|
//#endregion
|
|
59
66
|
export { D1WalletRegistrationRead };
|
|
@@ -39,6 +39,7 @@ import { buildStoredWalletRegistrationEvmFamilyEcdsaFinalizedBranch, buildStored
|
|
|
39
39
|
import { routerAbEcdsaStrictRegistrationRequestBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
|
|
40
40
|
import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, buildD1WalletRecord, parseWalletIdForIntent, thresholdEcdsaChainTargetsEqual } from "./d1RegistrationCeremonyRecords.js";
|
|
41
41
|
import { deriveThresholdEcdsaKeyHandle } from "../../../../shared-ts/src/utils/thresholdEcdsaKeyHandle.js";
|
|
42
|
+
import { isTransientD1Error, retryTransientD1 } from "../../../../storage/d1Retry.js";
|
|
42
43
|
import { admitRegistrationReservationHome, cancelRegistrationHome } from "../../../domains/walletRegistration/walletRegistrationReservation.js";
|
|
43
44
|
import { listThresholdEcdsaKeyIdentityTargetsForUser } from "../../../../core/authService/thresholdEcdsaKeyInventory.js";
|
|
44
45
|
import { routerAbEd25519YaoLifecycleDecisionLookupV1, routerAbEd25519YaoLifecycleDecisionV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.js";
|
|
@@ -1646,7 +1647,24 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
1646
1647
|
};
|
|
1647
1648
|
}
|
|
1648
1649
|
}
|
|
1650
|
+
/**
|
|
1651
|
+
* Respond replays exactly, so a transient D1 fault runs it again, as a client
|
|
1652
|
+
* retry would. A fault that outlasts the retries reports `storage_unavailable`
|
|
1653
|
+
* without the driver's text.
|
|
1654
|
+
*/
|
|
1649
1655
|
async respondWalletRegistration(input, traceContext, timingSink, waitUntil) {
|
|
1656
|
+
try {
|
|
1657
|
+
return await retryTransientD1(() => this.respondWalletRegistrationAttempt(input, traceContext, timingSink, waitUntil));
|
|
1658
|
+
} catch (error) {
|
|
1659
|
+
if (!isTransientD1Error(error)) throw error;
|
|
1660
|
+
return {
|
|
1661
|
+
ok: false,
|
|
1662
|
+
code: "storage_unavailable",
|
|
1663
|
+
message: "Wallet registration storage is unavailable"
|
|
1664
|
+
};
|
|
1665
|
+
}
|
|
1666
|
+
}
|
|
1667
|
+
async respondWalletRegistrationAttempt(input, traceContext, timingSink, waitUntil) {
|
|
1650
1668
|
const serverTiming = timingSink ?? [];
|
|
1651
1669
|
const totalStartedAtMs = Date.now();
|
|
1652
1670
|
const mark = (name, startedAtMs) => {
|
|
@@ -1948,6 +1966,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
1948
1966
|
ed25519: ed25519Admission.deferred
|
|
1949
1967
|
});
|
|
1950
1968
|
} catch (error) {
|
|
1969
|
+
if (isTransientD1Error(error)) throw error;
|
|
1951
1970
|
return {
|
|
1952
1971
|
ok: false,
|
|
1953
1972
|
code: "internal",
|
|
@@ -2132,7 +2151,10 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2132
2151
|
ed25519: args.input.ed25519,
|
|
2133
2152
|
emailOtpEnrollment: args.input.emailOtpEnrollment,
|
|
2134
2153
|
walletCustodyCommit: args.input.walletCustodyCommit
|
|
2135
|
-
}, effectivePrepared, source, args.serverTiming, initialSessionPlan, args.lifecycleDecision, args.heldPasskeyClaim
|
|
2154
|
+
}, effectivePrepared, source, args.serverTiming, initialSessionPlan, args.lifecycleDecision, args.heldPasskeyClaim, {
|
|
2155
|
+
kind: "snapshot",
|
|
2156
|
+
authority: args.readYaoAdmission()
|
|
2157
|
+
});
|
|
2136
2158
|
if (!execution.ok) return unissuedRegistrationCommit(throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1(execution));
|
|
2137
2159
|
const finalized = execution.finalized;
|
|
2138
2160
|
if (finalized.kind !== "near_ed25519") {
|
|
@@ -2380,7 +2402,8 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2380
2402
|
authoritySource: verified.source,
|
|
2381
2403
|
preparedCeremony: () => preparedCeremony,
|
|
2382
2404
|
lifecycleDecision: initial.decision,
|
|
2383
|
-
heldPasskeyClaim: initial.heldPasskeyClaim
|
|
2405
|
+
heldPasskeyClaim: initial.heldPasskeyClaim,
|
|
2406
|
+
readYaoAdmission: initial.readYaoAdmission
|
|
2384
2407
|
}),
|
|
2385
2408
|
projectReceipt: (execution) => projectWalletRegistrationSessionCommitReceiptV2({
|
|
2386
2409
|
operation: "near_provisioning",
|
|
@@ -2613,10 +2636,18 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2613
2636
|
code: admitted.code,
|
|
2614
2637
|
message: admitted.message
|
|
2615
2638
|
};
|
|
2616
|
-
if (!stored && admitted.companionWrite === "not_committed")
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2639
|
+
if (!stored && admitted.companionWrite === "not_committed") {
|
|
2640
|
+
const next = authorizedCeremony(admitted.admissionRequest);
|
|
2641
|
+
try {
|
|
2642
|
+
await ceremonyStore.commitEcdsaClaim({
|
|
2643
|
+
expected: input.snapshot,
|
|
2644
|
+
next
|
|
2645
|
+
});
|
|
2646
|
+
} catch (error) {
|
|
2647
|
+
const committed = await ceremonyStore.getCeremony(ceremony.registrationCeremonyId);
|
|
2648
|
+
if (!committed || alphabetizeStringify(committed) !== alphabetizeStringify(next)) throw error;
|
|
2649
|
+
}
|
|
2650
|
+
}
|
|
2620
2651
|
if (!stored && input.waitUntil && verifiedAuthority.kind === "passkey") input.waitUntil(this.walletRegistrationCommitStore.claimPasskeyAhead({
|
|
2621
2652
|
registrationCeremonyId: ceremony.registrationCeremonyId,
|
|
2622
2653
|
authority: verifiedAuthority,
|
|
@@ -2870,7 +2901,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
2870
2901
|
}, prepared, {
|
|
2871
2902
|
kind: "stored_ceremony",
|
|
2872
2903
|
ceremony: activatedCeremony
|
|
2873
|
-
}, [], { kind: "separate" }, null);
|
|
2904
|
+
}, [], { kind: "separate" }, null, null, { kind: "stored" });
|
|
2874
2905
|
if (!execution.ok) return unissuedRegistrationCommit(throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1(execution));
|
|
2875
2906
|
const commit = execution.finalized;
|
|
2876
2907
|
if (commit.kind !== "evm_family_ecdsa") {
|
|
@@ -3206,7 +3237,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
3206
3237
|
};
|
|
3207
3238
|
}
|
|
3208
3239
|
}
|
|
3209
|
-
async executeWalletRegistrationFinalize(request, prepared, source, serverTiming, initialSessionPlan, lifecycleDecision, heldPasskeyClaim
|
|
3240
|
+
async executeWalletRegistrationFinalize(request, prepared, source, serverTiming, initialSessionPlan, lifecycleDecision, heldPasskeyClaim, yaoAdmission) {
|
|
3210
3241
|
const finalizeTiming = createD1RegistrationRouteTimingRecorder("wallets_register_finalize");
|
|
3211
3242
|
const totalTiming = startD1RegistrationRouteTiming("registerFinalizeTotalMs");
|
|
3212
3243
|
let startedCustody = null;
|
|
@@ -3440,12 +3471,12 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
3440
3471
|
sessionId: activationReference.session_id
|
|
3441
3472
|
},
|
|
3442
3473
|
consumerBinding: requestFingerprint
|
|
3443
|
-
})
|
|
3474
|
+
}, yaoAdmission)
|
|
3444
3475
|
}), recordRegistrationPromiseTiming({
|
|
3445
3476
|
sink: serverTiming,
|
|
3446
3477
|
name: "near_finalize_authority_reserve",
|
|
3447
3478
|
startedAtMs: Date.now(),
|
|
3448
|
-
promise: this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, heldPasskeyClaim)
|
|
3479
|
+
promise: this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, heldPasskeyClaim, prepared)
|
|
3449
3480
|
})]);
|
|
3450
3481
|
if (activationConsumption.status === "rejected") throw activationConsumption.reason;
|
|
3451
3482
|
if (authorityReservation.status === "rejected") throw authorityReservation.reason;
|
|
@@ -3574,7 +3605,7 @@ var CloudflareD1WalletRegistrationService = class {
|
|
|
3574
3605
|
} else {
|
|
3575
3606
|
custodyReservation = reserveCustody();
|
|
3576
3607
|
startedCustody = custodyReservation;
|
|
3577
|
-
commitWallet = await this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority);
|
|
3608
|
+
commitWallet = await this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, null, prepared);
|
|
3578
3609
|
}
|
|
3579
3610
|
if (yaoDecisionFound?.kind === "decided_otherwise") return {
|
|
3580
3611
|
ok: false,
|
|
@@ -1255,7 +1255,7 @@ var CloudflareD1WalletAddSignerService = class {
|
|
|
1255
1255
|
const consumed = await yaoRuntime.consumeActivated({
|
|
1256
1256
|
reference: requestedActivationReference,
|
|
1257
1257
|
consumerBinding: input.consumerBinding
|
|
1258
|
-
});
|
|
1258
|
+
}, { kind: "stored" });
|
|
1259
1259
|
if (!consumed.ok) return consumed;
|
|
1260
1260
|
if (!sameRouterAbEd25519YaoRegistrationAdmissionRequestV1(consumed.activation.admissionRequest, currentState.admissionRequest)) return {
|
|
1261
1261
|
ok: false,
|
|
@@ -14013,7 +14013,7 @@ async function handleRouterApiWalletRegistrationRespond(input) {
|
|
|
14013
14013
|
verifier: session,
|
|
14014
14014
|
...registrationUserAgentFromHeaders(input.headers) ? { userAgent: registrationUserAgentFromHeaders(input.headers) } : {}
|
|
14015
14015
|
}, traceContext.value ?? void 0, serverTiming, input.waitUntil);
|
|
14016
|
-
return routeJson(result.ok ? 200 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
|
|
14016
|
+
return routeJson(result.ok ? 200 : result.code === "storage_unavailable" ? 503 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
|
|
14017
14017
|
}
|
|
14018
14018
|
async function handleRouterApiWalletRegistrationNearAdmission(input) {
|
|
14019
14019
|
const traceContext = parseRegistrationTraceContext(input.headers);
|
|
@@ -41109,7 +41109,7 @@ function lifecycleWriteFenceStatements(options, wallets) {
|
|
|
41109
41109
|
//#endregion
|
|
41110
41110
|
//#region src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.ts
|
|
41111
41111
|
function createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1(options) {
|
|
41112
|
-
return createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1(new D1LifecycleRecords(options,
|
|
41112
|
+
return createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1(new D1LifecycleRecords(options, createD1Ed25519YaoLifecycleRecords(options)));
|
|
41113
41113
|
}
|
|
41114
41114
|
var D1LifecycleRecords = class {
|
|
41115
41115
|
constructor(options, records) {
|
|
@@ -41168,7 +41168,7 @@ function readPartition(value) {
|
|
|
41168
41168
|
if (!record) throw new Error("Lifecycle mutation contains an invalid partition record");
|
|
41169
41169
|
return record;
|
|
41170
41170
|
}
|
|
41171
|
-
function
|
|
41171
|
+
function createD1Ed25519YaoLifecycleRecords(options) {
|
|
41172
41172
|
return createCloudflareD1VersionedJsonRecordStore({
|
|
41173
41173
|
...options,
|
|
41174
41174
|
encode: identityVersionedJsonObject,
|
|
@@ -41811,10 +41811,19 @@ var RouterAbEd25519YaoProductRegistrationRequestScopedRuntime = class {
|
|
|
41811
41811
|
* Gateway's ceremony record, and the result is derived from the Router's
|
|
41812
41812
|
* recorded answer: no active-root lookup is needed.
|
|
41813
41813
|
*/
|
|
41814
|
-
async consumeActivated(input) {
|
|
41814
|
+
async consumeActivated(input, admission) {
|
|
41815
41815
|
const lifecycleId = input.reference.lifecycleId;
|
|
41816
|
-
|
|
41817
|
-
|
|
41816
|
+
let authority;
|
|
41817
|
+
switch (admission.kind) {
|
|
41818
|
+
case "stored":
|
|
41819
|
+
authority = routerAbEd25519YaoAdmittedRegistrationAuthorityV1((await this.input.store.loadRegistration(lifecycleId)).state, lifecycleId);
|
|
41820
|
+
break;
|
|
41821
|
+
case "snapshot":
|
|
41822
|
+
authority = admission.authority;
|
|
41823
|
+
break;
|
|
41824
|
+
default: return assertNeverConsumptionAdmission(admission);
|
|
41825
|
+
}
|
|
41826
|
+
if (!authority || authority.admissionRequest.scope.lifecycle_id !== lifecycleId) return {
|
|
41818
41827
|
ok: false,
|
|
41819
41828
|
code: "unknown_registration",
|
|
41820
41829
|
message: "registration lifecycle was not found"
|
|
@@ -41963,6 +41972,9 @@ async function bindAndAdmitVerifiedRegistration(input) {
|
|
|
41963
41972
|
};
|
|
41964
41973
|
}
|
|
41965
41974
|
function ignoreUnobservedDispatchRoot() {}
|
|
41975
|
+
function assertNeverConsumptionAdmission(admission) {
|
|
41976
|
+
throw new Error(`Unknown registration admission source: ${String(admission)}`);
|
|
41977
|
+
}
|
|
41966
41978
|
//#endregion
|
|
41967
41979
|
//#region src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.ts
|
|
41968
41980
|
const SIDE_EFFECT_CLAIM_FIELDS = [
|
|
@@ -38,6 +38,10 @@ function routerAbEd25519YaoAdmittedRegistrationAuthorityV1(state, lifecycleId) {
|
|
|
38
38
|
dispatchRoot: state.registration.dispatchRoots.get(lifecycleId)
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
+
/** Parse an exact ceremony read for consumption; the Router owns its mutable claim. */
|
|
42
|
+
function parseRouterAbEd25519YaoRegistrationAdmissionReadV1(lifecycleId, result) {
|
|
43
|
+
return routerAbEd25519YaoAdmittedRegistrationAuthorityV1(readCeremonyRecord(decodePartitionReadResult(result), requireLifecycleId(lifecycleId)).value, lifecycleId);
|
|
44
|
+
}
|
|
41
45
|
function encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1(record) {
|
|
42
46
|
const lifecycleId = record.kind === SHARED_RECORD_KIND ? "shared" : record.lifecycleId;
|
|
43
47
|
const state = createRouterAbEd25519YaoProductRegistrationStateV1();
|
|
@@ -344,6 +348,6 @@ function isVersionedJsonValue(input) {
|
|
|
344
348
|
return isVersionedJsonObject(input);
|
|
345
349
|
}
|
|
346
350
|
//#endregion
|
|
347
|
-
export { ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1 };
|
|
351
|
+
export { ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoRegistrationAdmissionReadV1, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1 };
|
|
348
352
|
|
|
349
353
|
//# sourceMappingURL=routerAbEd25519YaoProductRegistrationPartitionedStateStore.js.map
|
|
@@ -78,10 +78,19 @@ var RouterAbEd25519YaoProductRegistrationRequestScopedRuntime = class {
|
|
|
78
78
|
* Gateway's ceremony record, and the result is derived from the Router's
|
|
79
79
|
* recorded answer: no active-root lookup is needed.
|
|
80
80
|
*/
|
|
81
|
-
async consumeActivated(input) {
|
|
81
|
+
async consumeActivated(input, admission) {
|
|
82
82
|
const lifecycleId = input.reference.lifecycleId;
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
let authority;
|
|
84
|
+
switch (admission.kind) {
|
|
85
|
+
case "stored":
|
|
86
|
+
authority = routerAbEd25519YaoAdmittedRegistrationAuthorityV1((await this.input.store.loadRegistration(lifecycleId)).state, lifecycleId);
|
|
87
|
+
break;
|
|
88
|
+
case "snapshot":
|
|
89
|
+
authority = admission.authority;
|
|
90
|
+
break;
|
|
91
|
+
default: return assertNeverConsumptionAdmission(admission);
|
|
92
|
+
}
|
|
93
|
+
if (!authority || authority.admissionRequest.scope.lifecycle_id !== lifecycleId) return {
|
|
85
94
|
ok: false,
|
|
86
95
|
code: "unknown_registration",
|
|
87
96
|
message: "registration lifecycle was not found"
|
|
@@ -230,6 +239,9 @@ async function bindAndAdmitVerifiedRegistration(input) {
|
|
|
230
239
|
};
|
|
231
240
|
}
|
|
232
241
|
function ignoreUnobservedDispatchRoot() {}
|
|
242
|
+
function assertNeverConsumptionAdmission(admission) {
|
|
243
|
+
throw new Error(`Unknown registration admission source: ${String(admission)}`);
|
|
244
|
+
}
|
|
233
245
|
//#endregion
|
|
234
246
|
export { createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1 };
|
|
235
247
|
|
|
@@ -1659,7 +1659,7 @@ async function handleRouterApiWalletRegistrationRespond(input) {
|
|
|
1659
1659
|
verifier: session,
|
|
1660
1660
|
...registrationUserAgentFromHeaders(input.headers) ? { userAgent: registrationUserAgentFromHeaders(input.headers) } : {}
|
|
1661
1661
|
}, traceContext.value ?? void 0, serverTiming, input.waitUntil);
|
|
1662
|
-
return routeJson(result.ok ? 200 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
|
|
1662
|
+
return routeJson(result.ok ? 200 : result.code === "storage_unavailable" ? 503 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
|
|
1663
1663
|
}
|
|
1664
1664
|
async function handleRouterApiWalletRegistrationNearAdmission(input) {
|
|
1665
1665
|
const traceContext = parseRegistrationTraceContext(input.headers);
|
|
@@ -9331,7 +9331,7 @@ async function handleRouterApiWalletRegistrationRespond(input) {
|
|
|
9331
9331
|
verifier: session,
|
|
9332
9332
|
...registrationUserAgentFromHeaders(input.headers) ? { userAgent: registrationUserAgentFromHeaders(input.headers) } : {}
|
|
9333
9333
|
}, traceContext.value ?? void 0, serverTiming, input.waitUntil);
|
|
9334
|
-
return routeJson(result.ok ? 200 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
|
|
9334
|
+
return routeJson(result.ok ? 200 : result.code === "storage_unavailable" ? 503 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
|
|
9335
9335
|
}
|
|
9336
9336
|
async function handleRouterApiWalletRegistrationNearAdmission(input) {
|
|
9337
9337
|
const traceContext = parseRegistrationTraceContext(input.headers);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SIGNING_SESSION_SEAL_GROUP_ID } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
|
|
1
2
|
import { __wbg_init, init_shamir3pass_runtime, shamir3pass_add_lock, shamir3pass_derive_lock_key_handle, shamir3pass_destroy_lock_key_handle, shamir3pass_remove_lock } from "../../../../wasm/shamir3pass_runtime/pkg/shamir3pass_runtime.js";
|
|
2
3
|
//#region src/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.ts
|
|
3
4
|
const SHAMIR3PASS_WASM_PATH_CANDIDATES = [
|
|
@@ -59,6 +60,23 @@ async function ensureSigningSessionSealShamir3PassWasm() {
|
|
|
59
60
|
if (!initialization) initialization = isNodeEnvironment() ? initializeNodeRuntime() : initializeWorkerRuntime();
|
|
60
61
|
await initialization;
|
|
61
62
|
}
|
|
63
|
+
/** The group element 2, the smallest value the lock operations accept. */
|
|
64
|
+
const WARM_UP_ELEMENT_B64U = "Ag";
|
|
65
|
+
const WARM_UP_CONTEXT = new TextEncoder().encode("seams/signing-session-seal/warm-up/v1");
|
|
66
|
+
/**
|
|
67
|
+
* Starts the module and runs one lock round under a key derived from zero
|
|
68
|
+
* bytes, so the first seal in this isolate runs warm code. It uses no secret,
|
|
69
|
+
* and its result is discarded.
|
|
70
|
+
*/
|
|
71
|
+
async function warmSigningSessionSealRuntime() {
|
|
72
|
+
await ensureSigningSessionSealShamir3PassWasm();
|
|
73
|
+
const handle = shamir3pass_derive_lock_key_handle(SIGNING_SESSION_SEAL_GROUP_ID, new Uint8Array(32), WARM_UP_CONTEXT.slice());
|
|
74
|
+
try {
|
|
75
|
+
shamir3pass_remove_lock(handle, shamir3pass_add_lock(handle, WARM_UP_ELEMENT_B64U));
|
|
76
|
+
} finally {
|
|
77
|
+
shamir3pass_destroy_lock_key_handle(handle);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
62
80
|
async function deriveSigningSessionSealLockKeyHandle(input) {
|
|
63
81
|
await ensureSigningSessionSealShamir3PassWasm();
|
|
64
82
|
const rootSecret32 = input.rootSecret32.slice();
|
|
@@ -82,6 +100,6 @@ function destroySigningSessionSealLockKeyHandle(handle) {
|
|
|
82
100
|
return shamir3pass_destroy_lock_key_handle(handle);
|
|
83
101
|
}
|
|
84
102
|
//#endregion
|
|
85
|
-
export { addSigningSessionSealLock, deriveSigningSessionSealLockKeyHandle, destroySigningSessionSealLockKeyHandle, removeSigningSessionSealLock };
|
|
103
|
+
export { addSigningSessionSealLock, deriveSigningSessionSealLockKeyHandle, destroySigningSessionSealLockKeyHandle, removeSigningSessionSealLock, warmSigningSessionSealRuntime };
|
|
86
104
|
|
|
87
105
|
//# sourceMappingURL=shamir3PassWasm.js.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { type CloudflareD1VersionedJsonRecordStoreOptions } from '../versionedJson/d1VersionedJsonRecordStore';
|
|
1
|
+
import { type CloudflareD1VersionedJsonRecordStore, type CloudflareD1VersionedJsonRecordStoreOptions } from '../versionedJson/d1VersionedJsonRecordStore';
|
|
2
2
|
import type { VersionedJsonObject } from '../../../framework/versionedJsonRecordStore';
|
|
3
3
|
import { type RouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1 } from '../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore';
|
|
4
4
|
export type RouterAbEd25519YaoProductRegistrationPartitionedStateD1OptionsV1 = Omit<CloudflareD1VersionedJsonRecordStoreOptions<VersionedJsonObject>, 'encode' | 'parse'>;
|
|
5
5
|
export declare function createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1(options: RouterAbEd25519YaoProductRegistrationPartitionedStateD1OptionsV1): RouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1;
|
|
6
6
|
export declare function evictWalletEd25519CapabilityCache(options: RouterAbEd25519YaoProductRegistrationPartitionedStateD1OptionsV1, walletId: string): Promise<void>;
|
|
7
|
+
export declare function createD1Ed25519YaoLifecycleRecords(options: RouterAbEd25519YaoProductRegistrationPartitionedStateD1OptionsV1): CloudflareD1VersionedJsonRecordStore<VersionedJsonObject>;
|
|
7
8
|
//# sourceMappingURL=d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts.map
|
|
@@ -5,6 +5,7 @@ import { type RegistrationAuthority } from '../../../../../../shared-ts/src/util
|
|
|
5
5
|
import type { WalletRecord, WalletSignerRecord } from '../../../../core/WalletStore';
|
|
6
6
|
import type { D1DatabaseLike, D1PreparedStatementLike, D1ResultLike } from '../../../../storage/tenantRoute';
|
|
7
7
|
import type { D1EmailOtpRegistrationCommitPlan } from '../emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer';
|
|
8
|
+
import type { D1WalletRegistrationOperationPreparedV1 } from './d1WalletRegistrationPreparation';
|
|
8
9
|
export type D1RegistrationCommitBatch = (statements: readonly D1PreparedStatementLike[]) => Promise<readonly D1ResultLike[]>;
|
|
9
10
|
type ReservedWalletRegistrationCommit = (input: D1WalletRegistrationCommitInput, executeBatch?: D1RegistrationCommitBatch) => Promise<void>;
|
|
10
11
|
type D1WalletRegistrationCommitBase = {
|
|
@@ -40,9 +41,11 @@ export type HeldRegistrationPasskeyClaim = {
|
|
|
40
41
|
export interface D1WalletRegistrationCommitStore {
|
|
41
42
|
/**
|
|
42
43
|
* Claims the authority's passkey through shared authority, unless `held`
|
|
43
|
-
* records that the same claim was already granted for this ceremony.
|
|
44
|
+
* records that the same claim was already granted for this ceremony. With
|
|
45
|
+
* `founding`, it also reads that authority and auth method as stored, beside
|
|
46
|
+
* the claim, so the commit writes them without a read of its own.
|
|
44
47
|
*/
|
|
45
|
-
reserveAuthority(authority: RegistrationAuthority, held
|
|
48
|
+
reserveAuthority(authority: RegistrationAuthority, held: HeldRegistrationPasskeyClaim | null, founding: FoundingRecordIds | null): Promise<ReservedWalletRegistrationCommit>;
|
|
46
49
|
/**
|
|
47
50
|
* Claims a verified passkey before finalization and records a granted
|
|
48
51
|
* claim. A refusal records nothing, so finalization claims again and
|
|
@@ -58,6 +61,7 @@ export interface D1WalletRegistrationCommitStore {
|
|
|
58
61
|
/** Removes the record of a finalized ceremony. Shared authority keeps the claim. */
|
|
59
62
|
deleteHeldPasskeyClaim(registrationCeremonyId: string): Promise<void>;
|
|
60
63
|
}
|
|
64
|
+
type FoundingRecordIds = Pick<D1WalletRegistrationOperationPreparedV1, 'walletAuthorityId' | 'walletAuthMethodId'>;
|
|
61
65
|
export declare class CloudflareD1WalletRegistrationCommitStore implements D1WalletRegistrationCommitStore {
|
|
62
66
|
private readonly database;
|
|
63
67
|
private readonly scope;
|
|
@@ -70,7 +74,7 @@ export declare class CloudflareD1WalletRegistrationCommitStore implements D1Wall
|
|
|
70
74
|
readonly projectId: string;
|
|
71
75
|
readonly envId: string;
|
|
72
76
|
});
|
|
73
|
-
reserveAuthority(authority: RegistrationAuthority, held
|
|
77
|
+
reserveAuthority(authority: RegistrationAuthority, held: HeldRegistrationPasskeyClaim | null, founding: FoundingRecordIds | null): Promise<ReservedWalletRegistrationCommit>;
|
|
74
78
|
claimPasskeyAhead(input: {
|
|
75
79
|
readonly registrationCeremonyId: string;
|
|
76
80
|
readonly authority: RegistrationAuthority;
|
package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { createD1Ed25519YaoLifecycleRecords } from '../ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore';
|
|
1
2
|
import type { D1DatabaseLike } from '../../../../storage/tenantRoute';
|
|
2
3
|
import type { WalletRegistrationHomeAuthority } from '../../../domains/walletRegistration/walletRegistrationReservation';
|
|
3
4
|
import type { CloudflareD1RegistrationCeremonyIntentStore } from './d1RegistrationCeremonyStore';
|
|
@@ -13,8 +14,9 @@ export declare class D1WalletRegistrationRead {
|
|
|
13
14
|
readonly operations: D1WalletOperationStore<D1WalletRegistrationNearProvisioningSideEffectRecord>;
|
|
14
15
|
private readonly getCeremonies;
|
|
15
16
|
private readonly decisions;
|
|
17
|
+
private readonly yaoRecords;
|
|
16
18
|
private readonly passkeyClaims;
|
|
17
|
-
constructor(database: D1DatabaseLike, authority: D1WalletExecutionAuthority | null, operations: D1WalletOperationStore<D1WalletRegistrationNearProvisioningSideEffectRecord>, getCeremonies: () => CloudflareD1RegistrationCeremonyIntentStore, decisions: CloudflareD1Ed25519YaoLifecycleDecisionStoreV1, passkeyClaims: Pick<D1WalletRegistrationCommitStore, 'prepareHeldPasskeyClaimRead' | 'parseHeldPasskeyClaimRead'>);
|
|
19
|
+
constructor(database: D1DatabaseLike, authority: D1WalletExecutionAuthority | null, operations: D1WalletOperationStore<D1WalletRegistrationNearProvisioningSideEffectRecord>, getCeremonies: () => CloudflareD1RegistrationCeremonyIntentStore, decisions: CloudflareD1Ed25519YaoLifecycleDecisionStoreV1, yaoRecords: ReturnType<typeof createD1Ed25519YaoLifecycleRecords>, passkeyClaims: Pick<D1WalletRegistrationCommitStore, 'prepareHeldPasskeyClaimRead' | 'parseHeldPasskeyClaimRead'>);
|
|
18
20
|
readRespond(home: Parameters<WalletRegistrationHomeAuthority['admitHome']>[0]): Promise<{
|
|
19
21
|
readonly ok: false;
|
|
20
22
|
readonly code: string;
|
|
@@ -41,6 +43,8 @@ export declare class D1WalletRegistrationRead {
|
|
|
41
43
|
decision: import("../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision").RouterAbEd25519YaoLifecycleDecisionV1 | null;
|
|
42
44
|
heldPasskeyClaim: import("./d1WalletRegistrationCommitStore").HeldRegistrationPasskeyClaim | null;
|
|
43
45
|
readCeremony: () => Promise<import("../../../../core/RegistrationCeremonyStore").StoredWalletRegistrationCeremony | null>;
|
|
46
|
+
readYaoAdmission: () => import("../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord").RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
|
|
44
47
|
}>;
|
|
48
|
+
private parseYaoAdmission;
|
|
45
49
|
}
|
|
46
50
|
//# sourceMappingURL=d1WalletRegistrationRead.d.ts.map
|
|
@@ -260,7 +260,13 @@ export declare class CloudflareD1WalletRegistrationService {
|
|
|
260
260
|
provisionEd25519YaoWalletSession(request: RouterAbEd25519YaoVerifiedWalletUnlockRequestV1): Promise<RouterAbEd25519YaoVerifiedWalletUnlockResponseV1>;
|
|
261
261
|
setupWalletRegistration(input: WalletRegistrationSetupInput): Promise<WalletRegistrationSetupResponseV2>;
|
|
262
262
|
authorizeWalletRegistrationNearAdmission(input: WalletRegistrationNearAdmissionInput): Promise<WalletRegistrationNearAdmissionResponseV2>;
|
|
263
|
+
/**
|
|
264
|
+
* Respond replays exactly, so a transient D1 fault runs it again, as a client
|
|
265
|
+
* retry would. A fault that outlasts the retries reports `storage_unavailable`
|
|
266
|
+
* without the driver's text.
|
|
267
|
+
*/
|
|
263
268
|
respondWalletRegistration(input: WalletRegistrationRespondInput, traceContext?: RouterAbTraceContextV1, timingSink?: Array<readonly [string, number]>, waitUntil?: (promise: Promise<unknown>) => void): Promise<WalletRegistrationRespondResponseV2>;
|
|
269
|
+
private respondWalletRegistrationAttempt;
|
|
264
270
|
/** For callers that must read the context before finalize tombstones it. */
|
|
265
271
|
private registrationOwnerProofWithContext;
|
|
266
272
|
authorizeNearRegistrationContinuation(input: {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RouterAbEd25519YaoRegistrationExecutionAuthorityV1 } from '../registration/routerAbEd25519YaoRegistrationExecutionRecord';
|
|
1
2
|
import { type AddSignerIntentV1, type WalletId } from '../../../../../../shared-ts/src/utils/registrationIntent';
|
|
2
3
|
import { type RegistrationEd25519AuthorityScope } from '../../../../../../shared-ts/src/utils/registrationIds';
|
|
3
4
|
import { type RegistrationNearEd25519SignerPlan } from '../../../../../../shared-ts/src/utils/registrationSignerPlan';
|
|
@@ -58,6 +59,14 @@ export type RouterAbEd25519YaoWalletSessionMintInputV1 = (RouterAbEd25519YaoWall
|
|
|
58
59
|
readonly expiresAtMs: number;
|
|
59
60
|
readonly remainingUses: number;
|
|
60
61
|
});
|
|
62
|
+
/** Admission is immutable. A finalization batch may supply it before consumption. */
|
|
63
|
+
export type RouterAbEd25519YaoConsumptionAdmissionV1 = {
|
|
64
|
+
readonly kind: 'stored';
|
|
65
|
+
readonly authority?: never;
|
|
66
|
+
} | {
|
|
67
|
+
readonly kind: 'snapshot';
|
|
68
|
+
readonly authority: RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
|
|
69
|
+
};
|
|
61
70
|
export type RouterAbEd25519YaoProductRegistrationRuntimeV1 = RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1 & RouterAbEd25519YaoActiveCapabilityResolverV1 & RouterAbEd25519YaoActiveCapabilityRehydratorV1 & {
|
|
62
71
|
readonly kind: 'router_ab_ed25519_yao_product_registration_runtime_v1';
|
|
63
72
|
readonly signingWorkerId: string;
|
|
@@ -87,7 +96,7 @@ export type RouterAbEd25519YaoProductRegistrationRuntimeV1 = RouterAbEd25519YaoP
|
|
|
87
96
|
readonly trace: RouterAbTraceContextV1;
|
|
88
97
|
}): Promise<RouterAbEd25519YaoTimedRegistrationExecutionResultV1>;
|
|
89
98
|
bindVerifiedIntent(input: RouterAbEd25519YaoVerifiedActivationIntentV1): Promise<RouterAbEd25519YaoRegistrationIntentBindingResult>;
|
|
90
|
-
consumeActivated(request: RouterAbEd25519YaoActivationConsumptionRequestV1): Promise<RouterAbEd25519YaoActivationConsumptionResultV1>;
|
|
99
|
+
consumeActivated(request: RouterAbEd25519YaoActivationConsumptionRequestV1, admission: RouterAbEd25519YaoConsumptionAdmissionV1): Promise<RouterAbEd25519YaoActivationConsumptionResultV1>;
|
|
91
100
|
};
|
|
92
101
|
/** A tenant-root read in flight, with the signing root ID that it was started for. */
|
|
93
102
|
export type RouterAbEd25519YaoStartedDispatchRootV1 = {
|
|
@@ -118,7 +118,9 @@ export declare function createRouterAbEd25519YaoProductRegistrationPartitionedSt
|
|
|
118
118
|
* The admitted authority a registration execute is checked against, from a
|
|
119
119
|
* loaded ceremony state, or `null` when the lifecycle is not admitted.
|
|
120
120
|
*/
|
|
121
|
-
export declare function routerAbEd25519YaoAdmittedRegistrationAuthorityV1(state:
|
|
121
|
+
export declare function routerAbEd25519YaoAdmittedRegistrationAuthorityV1(state: Pick<RouterAbEd25519YaoProductRegistrationCeremonyStateV1, 'registration' | 'authorization'>, lifecycleId: string): RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
|
|
122
|
+
/** Parse an exact ceremony read for consumption; the Router owns its mutable claim. */
|
|
123
|
+
export declare function parseRouterAbEd25519YaoRegistrationAdmissionReadV1(lifecycleId: string, result: VersionedJsonRecordReadResult<VersionedJsonObject>): RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
|
|
122
124
|
export declare function encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1(record: RouterAbEd25519YaoProductRegistrationPartitionRecordV1): VersionedJsonObject;
|
|
123
125
|
export declare function sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1(left: RouterAbEd25519YaoSharedStateCanonicalEncodingV1, right: RouterAbEd25519YaoSharedStateCanonicalEncodingV1): boolean;
|
|
124
126
|
export declare function parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1(input: unknown): RouterAbEd25519YaoProductRegistrationPartitionRecordV1 | null;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Starts the module and runs one lock round under a key derived from zero
|
|
3
|
+
* bytes, so the first seal in this isolate runs warm code. It uses no secret,
|
|
4
|
+
* and its result is discarded.
|
|
5
|
+
*/
|
|
6
|
+
export declare function warmSigningSessionSealRuntime(): Promise<void>;
|
|
1
7
|
export declare function deriveSigningSessionSealLockKeyHandle(input: {
|
|
2
8
|
readonly groupId: string;
|
|
3
9
|
readonly rootSecret32: Uint8Array;
|