@seams/wallet-server 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_NOTICES.md +7 -1
- package/artifact-manifest.json +196 -41
- package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
- package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
- package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/router/index.js +2 -2
- package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
- package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
- package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
- package/cloudflare-router-ab/migrations/deriver-a/0019_wallet_object_addresses.sql +10 -0
- package/cloudflare-router-ab/migrations/deriver-b/0019_wallet_object_addresses.sql +10 -0
- package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +3 -117
- package/cloudflare-router-ab/wrangler.deriver-a.toml +0 -8
- package/cloudflare-router-ab/wrangler.deriver-b.toml +24 -8
- package/cloudflare-router-ab/wrangler.router.toml +0 -2
- package/cloudflare-router-ab/wrangler.signing-worker.toml +29 -0
- package/dist/esm/authorization/domain.js +3 -2
- package/dist/esm/authorization/ed25519WalletSessionAdmission.js +0 -0
- package/dist/esm/authorization/service.js +64 -36
- package/dist/esm/cloud-host.js +24 -19
- package/dist/esm/core/EmailOtpRecords.js +29 -6
- package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +2 -0
- package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.js +10 -0
- package/dist/esm/core/ThresholdService/routerAb/internalServiceHttp.js +1 -0
- package/dist/esm/core/ThresholdService/validation.js +2 -2
- package/dist/esm/core/authService/nearPrivateKeySigning.js +1 -1
- package/dist/esm/core/authService/webauthn.js +1 -1
- package/dist/esm/core/d1Ed25519SignerRead.js +55 -0
- package/dist/esm/core/d1WalletStore.js +14 -11
- package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +2 -2
- package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +1 -1
- package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +2 -2
- package/dist/esm/core/emailOtpD1Statements.js +1 -0
- package/dist/esm/core/nearRelayerAccountProvisioning.js +1 -1
- package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +4 -0
- package/dist/esm/core/signingLanes/WalletExecutionLaneProjection.js +1 -1
- package/dist/esm/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.js +1 -0
- package/dist/esm/hosted-wallet-gateway.js +93 -10
- package/dist/esm/localHostedWalletGatewayHandler.js +12 -9
- package/dist/esm/localIntendedYaoSigningFault.js +2 -30
- package/dist/esm/localRegistrationSetupAuthority.js +8 -1
- package/dist/esm/router/auth/commonRouterUtils.js +17 -10
- package/dist/esm/router/auth/routerApiCredentialAuth.js +26 -7
- package/dist/esm/router/auth/walletRegistrationContext.js +49 -0
- package/dist/esm/router/auth/webAuthnCredentialCodecs.js +1 -1
- package/dist/esm/router/cloudflare/d1/auth/d1AuthorizationAssembly.js +4 -3
- package/dist/esm/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.js +2 -0
- package/dist/esm/router/cloudflare/d1/auth/d1EmailOtpRouteService.js +25 -0
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +14 -6
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +44 -40
- package/dist/esm/router/cloudflare/d1/auth/walletSessionCredentialReaders.js +17 -1
- package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +35 -5
- package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +258 -99
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +31 -4
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.js +1 -1
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.js +11 -2
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +100 -10
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoStateWriteFence.js +92 -0
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1WalletCeremonyActivity.js +77 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +14 -8
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +14 -8
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +3 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +58 -38
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +27 -20
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +1 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +1 -0
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +1 -1
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +18 -7
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +75 -14
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +49 -29
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSessionTransaction.js +28 -0
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +11 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletExecutionAuthority.js +168 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletOperationStore.js +53 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +83 -42
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationInitialSession.js +33 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationPreparation.js +16 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationRead.js +58 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +439 -500
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +104 -90
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +78 -44
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +11 -35
- package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +98 -39
- package/dist/esm/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js +12 -9
- package/dist/esm/router/cloudflare/d1/wallet/authorizationSnapshotLayout.js +168 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +1 -1
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +15 -6
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +3 -40
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +54 -1
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationCleanup.js +157 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationFreeze.js +56 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationHistory.js +238 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationIntake.js +287 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationSnapshot.js +295 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationApprovals.js +140 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationChallenges.js +170 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationEmailOtp.js +60 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationOwner.js +33 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationOwnerRequest.js +74 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationPasskey.js +77 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationReadAccess.js +37 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationSessions.js +97 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationWriteBlock.js +133 -0
- package/dist/esm/router/cloudflare/d1/walletObjectAddresses.js +47 -0
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +1 -1
- package/dist/esm/router/cloudflare/runtime/routerAbServiceBindings.js +32 -1
- package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +20 -8
- package/dist/esm/router/cloudflare/runtime/walletAuthorizationRelocationRoutes.js +488 -0
- package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +1 -1
- package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +26 -6
- package/dist/esm/router/cloudflare/runtime/walletControlOps.js +3 -0
- package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
- package/dist/esm/router/cloudflare/runtime/walletObjectAddresses.js +105 -0
- package/dist/esm/router/cloudflare/runtime/walletPlacementRoutes.js +339 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationDeriver.js +244 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationEcdsa.js +212 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationEd25519.js +172 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationOps.js +183 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationPresign.js +185 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationSource.js +221 -0
- package/dist/esm/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js +30 -8
- package/dist/esm/router/cloudflare-adaptor.js +8 -8
- package/dist/esm/router/cloudflare.js +34115 -32240
- package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +35 -9
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoCapabilityCommit.js +42 -0
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +32 -6
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +61 -1
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js +70 -3
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +59 -87
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +52 -22
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +10 -7
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +108 -78
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +19 -5
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +71 -22
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +37 -25
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +3 -3
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.js +2 -1
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +24 -3
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js +4 -3
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js +20 -7
- package/dist/esm/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.js +7 -1
- package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +2 -2
- package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +1 -1
- package/dist/esm/router/domains/passkeyCustody/registrationCustodyOutcome.js +34 -18
- package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.js +2 -2
- package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +16 -6
- package/dist/esm/router/domains/signingOperations/authorizedOperationWire.js +73 -0
- package/dist/esm/router/domains/signingOperations/ecdsaSigningResponse.js +31 -0
- package/dist/esm/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.js +1 -1
- package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js +2 -1
- package/dist/esm/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.js +31 -121
- package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmission.js +2 -93
- package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +1 -1
- package/dist/esm/router/domains/signingOperations/signingPrepareSession.js +33 -0
- package/dist/esm/router/domains/walletRegistration/registrationSessionSeal.js +121 -0
- package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +4 -4
- package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +46 -157
- package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +1 -1
- package/dist/esm/router/express.js +764 -894
- package/dist/esm/router/framework/http.js +2 -1
- package/dist/esm/router/transport/fetch/createFetchRouter.js +2 -2
- package/dist/esm/router/transport/fetch/routes/auth.js +1 -1
- package/dist/esm/router/transport/fetch/routes/deviceLinking.js +3 -3
- package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +2 -2
- package/dist/esm/router/transport/fetch/routes/ed25519AuthorizedOperationRevalidation.js +65 -0
- package/dist/esm/router/transport/fetch/routes/normalSigningRouterProxy.js +13 -3
- package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +3 -3
- package/dist/esm/router/transport/fetch/routes/sessions.js +3 -2
- package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +67 -130
- package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +76 -212
- package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +18 -41
- package/dist/esm/router/transport/fetch/routes/walletRegistration.js +6 -5
- package/dist/esm/router/transport/fetch/routes/webauthnAuthenticators.js +1 -1
- package/dist/esm/shared-ts/src/authorization/index.js +1 -1
- package/dist/esm/shared-ts/src/authorization/walletAuthority.js +2 -2
- package/dist/esm/shared-ts/src/device-linking/activeWalletSession.js +12 -2
- package/dist/esm/shared-ts/src/device-linking/digests.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/index.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/parsers.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/wireFields.js +1 -1
- package/dist/esm/shared-ts/src/near/nearClient.js +1 -1
- package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +2 -2
- package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +6 -1
- package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +4 -2
- package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -1
- package/dist/esm/shared-ts/src/utils/routerAbPublicKeyset.js +0 -27
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/options.js +1 -1
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
- package/dist/types/shared-ts/src/device-linking/activeWalletSession.d.ts +2 -1
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +10 -0
- package/dist/types/shared-ts/src/threshold/ed25519OperationFingerprint.d.ts +2 -1
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +3 -1
- package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +0 -9
- package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +1 -1
- package/dist/types/wallet-server/src/authorization/domain.d.ts +17 -1
- package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.d.ts +1 -0
- package/dist/types/wallet-server/src/authorization/ed25519WalletSessionAdmission.d.ts +35 -0
- package/dist/types/wallet-server/src/authorization/ed25519WalletSessionAdmission.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/authorization/service.d.ts +43 -5
- package/dist/types/wallet-server/src/authorization/sessionRouting.d.ts +2 -0
- package/dist/types/wallet-server/src/cloud-host.d.ts +7 -3
- package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +2 -1
- package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +19 -5
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +1 -0
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.d.ts +6 -0
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/internalServiceHttp.d.ts +1 -0
- package/dist/types/wallet-server/src/core/d1Ed25519SignerRead.d.ts +17 -0
- package/dist/types/wallet-server/src/core/d1WalletStore.d.ts +6 -0
- package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +1 -0
- package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +5 -1
- package/dist/types/wallet-server/src/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.d.ts +1 -0
- package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +14 -48
- package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +4 -3
- package/dist/types/wallet-server/src/localIntendedYaoSigningFault.d.ts +1 -16
- package/dist/types/wallet-server/src/localRegistrationSetupAuthority.d.ts +1 -1
- package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +7 -1
- package/dist/types/wallet-server/src/router/auth/routerApiCredentialAuth.d.ts +11 -3
- package/dist/types/wallet-server/src/router/auth/walletRegistrationContext.d.ts +8 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizationAssembly.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1EmailOtpRouteService.d.ts +16 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +7 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthService.d.ts +4 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/walletSessionCredentialReaders.d.ts +7 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +32 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.d.ts +3 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts +1 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoStateWriteFence.d.ts +8 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1WalletCeremonyActivity.d.ts +15 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.d.ts +6 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +1 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.d.ts +4 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpCounters.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +6 -29
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +21 -7
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +17 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +32 -7
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +16 -7
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSessionTransaction.d.ts +13 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +7 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletExecutionAuthority.d.ts +41 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletOperationStore.d.ts +28 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +6 -9
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationInitialSession.d.ts +17 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationPreparation.d.ts +12 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts +43 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +24 -45
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.d.ts +9 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.d.ts +42 -14
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.d.ts +5 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.d.ts +24 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.d.ts +10 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/authorizationSnapshotLayout.d.ts +21 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +3 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +3 -7
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +8 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationCleanup.d.ts +20 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationFreeze.d.ts +12 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationHistory.d.ts +20 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationIntake.d.ts +29 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationSnapshot.d.ts +31 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationApprovals.d.ts +49 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationChallenges.d.ts +47 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationEmailOtp.d.ts +25 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationOwner.d.ts +88 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationOwnerRequest.d.ts +37 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationPasskey.d.ts +12 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationReadAccess.d.ts +18 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationSessions.d.ts +23 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationWriteBlock.d.ts +16 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/walletObjectAddresses.d.ts +14 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/routerAbServiceBindings.d.ts +13 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletAuthorizationRelocationRoutes.d.ts +21 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +3 -3
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletControlOps.d.ts +2 -1
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +3 -1
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletObjectAddresses.d.ts +45 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletPlacementRoutes.d.ts +30 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationDeriver.d.ts +11 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationEcdsa.d.ts +7 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationEd25519.d.ts +7 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationOps.d.ts +11 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationPresign.d.ts +7 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationSource.d.ts +26 -0
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.d.ts +5 -0
- package/dist/types/wallet-server/src/router/domains/ecdsa/routerAbEcdsaStrictRegistration.d.ts +3 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoCapabilityCommit.d.ts +7 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +41 -7
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +33 -2
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +12 -6
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.d.ts +17 -9
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.d.ts +2 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.d.ts +13 -14
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.d.ts +7 -3
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.d.ts +1 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.d.ts +6 -1
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.d.ts +11 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.d.ts +12 -3
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/registrationCustodyOutcome.d.ts +10 -6
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.d.ts +10 -3
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +12 -5
- package/dist/types/wallet-server/src/router/domains/signingOperations/authorizedOperationWire.d.ts +97 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/ecdsaSigningResponse.d.ts +13 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmission.d.ts +9 -206
- package/dist/types/wallet-server/src/router/domains/signingOperations/signingPrepareSession.d.ts +23 -0
- package/dist/types/wallet-server/src/router/domains/walletRegistration/registrationSessionSeal.d.ts +36 -0
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +7 -7
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationReservation.d.ts +80 -6
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +15 -5
- package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +24 -0
- package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +21 -7
- package/dist/types/wallet-server/src/router/framework/routerApi.d.ts +3 -12
- package/dist/types/wallet-server/src/router/transport/fetch/routes/ed25519AuthorizedOperationRevalidation.d.ts +37 -0
- package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +1 -17
- package/dist/types/wallet-server/src/storage/tenantRoute.d.ts +1 -1
- package/migrations/d1-signer/0049_wallet_relocation_challenges.sql +16 -0
- package/migrations/d1-signer/0050_wallet_relocation_approvals.sql +14 -0
- package/migrations/d1-signer/0051_wallet_relocation_email_otp.sql +92 -0
- package/migrations/d1-signer/0052_wallet_relocation_session_fences.sql +91 -0
- package/migrations/d1-signer/0053_wallet_hosted_history_import.sql +164 -0
- package/migrations/d1-signer/0054_wallet_authorization_freeze.sql +318 -0
- package/migrations/d1-signer/0055_wallet_authorization_snapshot.sql +120 -0
- package/migrations/d1-signer/0056_wallet_authorization_history_import.sql +424 -0
- package/migrations/d1-signer/0057_wallet_authorization_intake.sql +44 -0
- package/migrations/d1-signer/0058_wallet_ceremony_activity.sql +59 -0
- package/migrations/d1-signer/0059_wallet_authorization_activation.sql +45 -0
- package/migrations/d1-signer/0060_wallet_authorization_cleanup.sql +153 -0
- package/migrations/d1-signer/0061_wallet_session_operation_settlement.sql +28 -0
- package/migrations/d1-signer/0062_wallet_step_up_operation_settlement.sql +204 -0
- package/migrations/d1-signer/0063_wallet_operation_history_transfer.sql +466 -0
- package/migrations/d1-signer/0064_wallet_execution_generations.sql +93 -0
- package/migrations/d1-signer/0065_wallet_operation_execution_generation.sql +37 -0
- package/migrations/d1-signer/0066_regional_deployment_admission.sql +59 -0
- package/migrations/d1-signer/0067_registration_completion_decision.sql +12 -0
- package/migrations/d1-signer/0068_registration_cancellation_write_fence.sql +24 -0
- package/migrations/d1-signer/0069_cancelled_registration_session_fence.sql +11 -0
- package/migrations/d1-signer/0070_wallet_passkey_relocation.sql +369 -0
- package/migrations/d1-signer/0071_regional_wallet_otp_counters.sql +98 -0
- package/migrations/d1-signer/0072_linked_device_relocation_history.sql +899 -0
- package/migrations/d1-signer/0073_wallet_recovery_relocation.sql +86 -0
- package/migrations/d1-signer/0074_email_otp_relocation.sql +158 -0
- package/migrations/d1-signer/0075_wallet_authorization_return.sql +107 -0
- package/migrations/d1-signer/0076_wallet_relocation_write_block.sql +406 -0
- package/migrations/d1-signer/0077_wallet_object_addresses.sql +24 -0
- package/package.json +1 -1
- package/src/README.md +23 -1
- package/cloudflare-router-ab/scripts/local-key-material.mjs +0 -29
|
@@ -8,7 +8,7 @@ function routeAuthNotConfigured(message) {
|
|
|
8
8
|
message
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
function parsePublishableKeyRequest(input) {
|
|
12
12
|
if (input.route.auth.plane !== "api_credentials") return routeAuthNotConfigured(input.routeAuthNotConfiguredMessage);
|
|
13
13
|
const publishableKey = extractBearerCredential(input.headers);
|
|
14
14
|
if (!publishableKey) return {
|
|
@@ -31,23 +31,42 @@ async function resolvePublishableKeyApiCredentialAuth(input) {
|
|
|
31
31
|
code: "forbidden",
|
|
32
32
|
message: `publishable_key_environment_mismatch: ${input.missingEnvironmentMessage}`
|
|
33
33
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
return {
|
|
35
|
+
ok: true,
|
|
36
|
+
request: {
|
|
37
|
+
secret: publishableKey,
|
|
38
|
+
origin,
|
|
39
|
+
environmentId
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async function resolveWalletRegistrationContext(input) {
|
|
44
|
+
const parsed = parsePublishableKeyRequest(input);
|
|
45
|
+
if (!parsed.ok) return parsed;
|
|
46
|
+
return input.registrationContext.resolve({
|
|
47
|
+
...parsed.request,
|
|
48
|
+
registration: input.registration
|
|
38
49
|
});
|
|
50
|
+
}
|
|
51
|
+
async function resolvePublishableKeyApiCredentialAuth(input) {
|
|
52
|
+
const parsed = parsePublishableKeyRequest(input);
|
|
53
|
+
if (!parsed.ok) return parsed;
|
|
54
|
+
const authResult = await input.publishableKeyAuth.authenticate(parsed.request);
|
|
39
55
|
if (!authResult.ok) return {
|
|
40
56
|
ok: false,
|
|
41
57
|
status: authResult.status,
|
|
42
58
|
code: authResult.status === 403 ? "forbidden" : "unauthorized",
|
|
43
59
|
message: `${authResult.code}: ${authResult.message}`
|
|
44
60
|
};
|
|
61
|
+
return publishableKeyRoutePrincipal(authResult.principal);
|
|
62
|
+
}
|
|
63
|
+
async function publishableKeyRoutePrincipal(principal) {
|
|
45
64
|
return {
|
|
46
65
|
ok: true,
|
|
47
66
|
principal: {
|
|
48
67
|
kind: "api_credentials",
|
|
49
68
|
credentialType: "publishable_key",
|
|
50
|
-
principal
|
|
69
|
+
principal
|
|
51
70
|
}
|
|
52
71
|
};
|
|
53
72
|
}
|
|
@@ -86,6 +105,6 @@ async function resolveSecretKeyApiCredentialAuth(input) {
|
|
|
86
105
|
};
|
|
87
106
|
}
|
|
88
107
|
//#endregion
|
|
89
|
-
export { resolvePublishableKeyApiCredentialAuth, resolveSecretKeyApiCredentialAuth };
|
|
108
|
+
export { publishableKeyRoutePrincipal, resolvePublishableKeyApiCredentialAuth, resolveSecretKeyApiCredentialAuth, resolveWalletRegistrationContext };
|
|
90
109
|
|
|
91
110
|
//# sourceMappingURL=routerApiCredentialAuth.js.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/router/auth/walletRegistrationContext.ts
|
|
2
|
+
function unavailableRegistrationContext() {
|
|
3
|
+
return {
|
|
4
|
+
ok: false,
|
|
5
|
+
status: 500,
|
|
6
|
+
code: "registration_environment_unavailable",
|
|
7
|
+
message: "Wallet registration requires the authenticated active environment"
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/** Join the authenticated credential to its exact active environment at the boundary. */
|
|
11
|
+
function walletRegistrationContext(input, principal, environment) {
|
|
12
|
+
if (principal.environmentId !== input.environmentId || environment.id !== principal.environmentId || environment.status !== "ACTIVE" || !environment.projectId || !environment.key || !environment.signingRootVersion || principal.projectId !== void 0 && principal.projectId !== environment.projectId || principal.envId !== void 0 && principal.envId !== environment.key) return unavailableRegistrationContext();
|
|
13
|
+
return {
|
|
14
|
+
ok: true,
|
|
15
|
+
principal,
|
|
16
|
+
environment: {
|
|
17
|
+
id: environment.id,
|
|
18
|
+
projectId: environment.projectId,
|
|
19
|
+
key: environment.key,
|
|
20
|
+
signingRootVersion: environment.signingRootVersion,
|
|
21
|
+
status: "ACTIVE"
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async function resolveRegistrationContext(auth, environments, input) {
|
|
26
|
+
try {
|
|
27
|
+
const result = await auth.authenticate(input);
|
|
28
|
+
if (!result.ok) return result;
|
|
29
|
+
const principal = result.principal;
|
|
30
|
+
const records = await environments.listEnvironments({
|
|
31
|
+
orgId: principal.orgId,
|
|
32
|
+
actorUserId: "runtime-scope-bootstrap",
|
|
33
|
+
roles: ["system"],
|
|
34
|
+
environmentId: principal.environmentId,
|
|
35
|
+
...principal.projectId ? { projectId: principal.projectId } : {}
|
|
36
|
+
}, { status: "ACTIVE" });
|
|
37
|
+
for (const environment of records) if (environment.id === principal.environmentId) return walletRegistrationContext(input, principal, environment);
|
|
38
|
+
return unavailableRegistrationContext();
|
|
39
|
+
} catch {
|
|
40
|
+
return unavailableRegistrationContext();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function createWalletRegistrationContextResolver(auth, environments) {
|
|
44
|
+
return { resolve: resolveRegistrationContext.bind(void 0, auth, environments) };
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { createWalletRegistrationContextResolver, unavailableRegistrationContext, walletRegistrationContext };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=walletRegistrationContext.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { normalizeOptionalTrimmedString } from "../../shared-ts/src/utils/normalize.js";
|
|
1
2
|
import { base64Decode, base64UrlDecode, base64UrlEncode } from "../../shared-ts/src/utils/base64.js";
|
|
2
3
|
import "../../shared-ts/src/utils/encoders.js";
|
|
3
|
-
import { normalizeOptionalTrimmedString } from "../../shared-ts/src/utils/normalize.js";
|
|
4
4
|
import { failure } from "../../shared-ts/src/utils/failure.js";
|
|
5
5
|
import { errorMessage } from "../../shared-ts/src/utils/errors.js";
|
|
6
6
|
//#region src/router/auth/webAuthnCredentialCodecs.ts
|
|
@@ -23,8 +23,9 @@ function createD1AuthorizationAssembly(options, sessionRouting) {
|
|
|
23
23
|
})
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
function createD1WalletCustodyStore(options) {
|
|
26
|
+
function createD1WalletCustodyStore(options, walletAuthMethodStore) {
|
|
27
27
|
return new CloudflareD1WalletCustodyCommitStore({
|
|
28
|
+
walletAuthMethodStore,
|
|
28
29
|
credentialClaims: options.credentialClaims,
|
|
29
30
|
database: options.database,
|
|
30
31
|
scope: {
|
|
@@ -77,8 +78,8 @@ function createD1GoogleRegistrationAttempts(options, prepare) {
|
|
|
77
78
|
function createD1EmailOtpRateLimits(options, prepare) {
|
|
78
79
|
return new CloudflareD1EmailOtpRateLimitStore({
|
|
79
80
|
prepare,
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
batch: options.database.batch.bind(options.database),
|
|
82
|
+
rateLimits: options.emailOtp.rateLimits
|
|
82
83
|
});
|
|
83
84
|
}
|
|
84
85
|
//#endregion
|
|
@@ -7,6 +7,8 @@ function createD1AuthorizedOperationRouteService(assembly) {
|
|
|
7
7
|
tenantId: tenantId.value,
|
|
8
8
|
resolveEcdsaWalletSessionOperation: assembly.authorizationStore.resolveEcdsaWalletSessionOperation.bind(assembly.authorizationStore),
|
|
9
9
|
admitEcdsaWalletSessionOperation: assembly.authorizationStore.admitEcdsaWalletSessionOperation.bind(assembly.authorizationStore),
|
|
10
|
+
admitEd25519WalletSessionOperation: assembly.authorizationStore.admitEd25519WalletSessionOperation.bind(assembly.authorizationStore),
|
|
11
|
+
resolveEd25519WalletSessionOperation: assembly.authorizationStore.resolveEd25519WalletSessionOperation.bind(assembly.authorizationStore),
|
|
10
12
|
readPinnedOwnerWalletScope: assembly.authorizationStore.readPinnedOwnerWalletScope.bind(assembly.authorizationStore),
|
|
11
13
|
buildVerifiedOwnerProof: assembly.authorizationService.buildVerifiedOwnerProof.bind(assembly.authorizationService),
|
|
12
14
|
recordVerifiedWalletOperationFactorEvidenceSet: assembly.authorizationService.recordVerifiedWalletOperationFactorEvidenceSet.bind(assembly.authorizationService),
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/router/cloudflare/d1/auth/d1EmailOtpRouteService.ts
|
|
2
|
+
function createD1EmailOtpRouteService(assembly) {
|
|
3
|
+
return {
|
|
4
|
+
applyEmailOtpServerSeal: assembly.emailOtpServerSeal.applyEmailOtpServerSeal.bind(assembly.emailOtpServerSeal),
|
|
5
|
+
cleanupGoogleEmailOtpDevRegistrationState: assembly.googleEmailOtpSessions.cleanupDevRegistrationState.bind(assembly.googleEmailOtpSessions),
|
|
6
|
+
consumeEmailOtpGrant: assembly.emailOtpRecoveryService.consumeEmailOtpGrant.bind(assembly.emailOtpRecoveryService),
|
|
7
|
+
createEmailOtpChallenge: assembly.emailOtpChallengeService.createEmailOtpChallenge.bind(assembly.emailOtpChallengeService),
|
|
8
|
+
createEmailOtpEnrollmentChallenge: assembly.emailOtpChallengeService.createEmailOtpEnrollmentChallenge.bind(assembly.emailOtpChallengeService),
|
|
9
|
+
isEmailOtpStrongAuthRequired: assembly.emailOtpRecoveryService.isEmailOtpStrongAuthRequired.bind(assembly.emailOtpRecoveryService),
|
|
10
|
+
markEmailOtpStrongAuthSatisfied: assembly.emailOtpRecoveryService.markEmailOtpStrongAuthSatisfied.bind(assembly.emailOtpRecoveryService),
|
|
11
|
+
readActiveEmailOtpEnrollment: assembly.emailOtpRecoveryService.readActiveEmailOtpEnrollment.bind(assembly.emailOtpRecoveryService),
|
|
12
|
+
readEmailOtpEnrollment: assembly.emailOtpRecoveryService.readEmailOtpEnrollment.bind(assembly.emailOtpRecoveryService),
|
|
13
|
+
readEmailOtpOutboxEntry: assembly.emailOtpChallengeService.readEmailOtpOutboxEntry.bind(assembly.emailOtpChallengeService),
|
|
14
|
+
removeEmailOtpServerSeal: assembly.emailOtpServerSeal.removeEmailOtpServerSeal.bind(assembly.emailOtpServerSeal),
|
|
15
|
+
validateGoogleEmailOtpRegistrationCandidateWallet: assembly.googleEmailOtpSessions.validateRegistrationCandidateWallet.bind(assembly.googleEmailOtpSessions),
|
|
16
|
+
verifyEmailOtpChallenge: assembly.emailOtpChallengeService.verifyEmailOtpChallenge.bind(assembly.emailOtpChallengeService),
|
|
17
|
+
verifyEmailOtpWalletRecoveryChallenge: assembly.emailOtpChallengeService.verifyEmailOtpWalletRecoveryChallenge.bind(assembly.emailOtpChallengeService),
|
|
18
|
+
verifyEmailOtpEnrollment: assembly.emailOtpChallengeService.verifyEmailOtpEnrollment.bind(assembly.emailOtpChallengeService),
|
|
19
|
+
verifyGoogleLogin: assembly.oidcVerification.verifyGoogleLogin.bind(assembly.oidcVerification)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { createD1EmailOtpRouteService };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=d1EmailOtpRouteService.js.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { parseWebAuthnRpId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
2
|
import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
|
|
3
3
|
import { normalizeCorsOrigin } from "../../../../core/SessionService.js";
|
|
4
|
+
import { D1WalletExecutionAuthority, admitD1EstablishedWalletHome } from "../registration/d1WalletExecutionAuthority.js";
|
|
4
5
|
import "../../../../core/authService/emailOtpConfig.js";
|
|
5
6
|
import { parseSigningSessionSealRootConfig } from "../../../../threshold/session/signingSessionSeal/options.js";
|
|
6
7
|
//#region src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.ts
|
|
@@ -38,6 +39,12 @@ function parseBooleanFlag(input, fallback, field) {
|
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
41
|
function normalizeD1RouterApiAuthOptions(input) {
|
|
42
|
+
const scope = {
|
|
43
|
+
namespace: requireD1RouterApiAuthScopeString(input.namespace, "namespace"),
|
|
44
|
+
orgId: requireD1RouterApiAuthScopeString(input.orgId, "orgId"),
|
|
45
|
+
projectId: requireD1RouterApiAuthScopeString(input.projectId, "projectId"),
|
|
46
|
+
envId: requireD1RouterApiAuthScopeString(input.envId, "envId")
|
|
47
|
+
};
|
|
41
48
|
const githubClientId = normalizeOptionalTrimmedString(input.githubOAuth?.clientId);
|
|
42
49
|
const githubClientSecret = normalizeOptionalTrimmedString(input.githubOAuth?.clientSecret);
|
|
43
50
|
const githubCallbackUrl = normalizeOptionalTrimmedString(input.githubOAuth?.callbackUrl);
|
|
@@ -49,8 +56,8 @@ function normalizeD1RouterApiAuthOptions(input) {
|
|
|
49
56
|
if (input.githubOAuth && !githubOAuth) throw new Error("githubOAuth requires clientId, clientSecret, and callbackUrl");
|
|
50
57
|
return {
|
|
51
58
|
database: input.database,
|
|
59
|
+
walletExecution: { admitEstablishedHome: admitD1EstablishedWalletHome.bind(void 0, input.database, scope) },
|
|
52
60
|
identityStore: input.identityStore,
|
|
53
|
-
emailOtpRateLimitCounter: input.emailOtpRateLimitCounter,
|
|
54
61
|
credentialClaims: input.credentialClaims,
|
|
55
62
|
syncChallenges: input.syncChallenges,
|
|
56
63
|
linkedDeviceProofNonces: input.linkedDeviceProofNonces,
|
|
@@ -59,12 +66,13 @@ function normalizeD1RouterApiAuthOptions(input) {
|
|
|
59
66
|
sessionRouting: input.sessionRouting,
|
|
60
67
|
recoveryRouting: input.recoveryRouting,
|
|
61
68
|
lifecycleRouting: input.lifecycleRouting,
|
|
62
|
-
registrationAuthority: input.registrationAuthority,
|
|
69
|
+
registrationAuthority: input.registrationAuthority ? new D1WalletExecutionAuthority(input.database, scope, input.registrationAuthority) : void 0,
|
|
63
70
|
registrationSetupDispatcher: input.registrationSetupDispatcher,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
71
|
+
startRegistrationWallets: input.startRegistrationWallets,
|
|
72
|
+
namespace: scope.namespace,
|
|
73
|
+
orgId: scope.orgId,
|
|
74
|
+
projectId: scope.projectId,
|
|
75
|
+
envId: scope.envId,
|
|
68
76
|
relayerAccount: normalizeOptionalTrimmedString(input.relayerAccount),
|
|
69
77
|
relayerPublicKey: normalizeOptionalTrimmedString(input.relayerPublicKey),
|
|
70
78
|
relayerPrivateKey: normalizeOptionalTrimmedString(input.relayerPrivateKey),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseWalletAuthMethodId, parseWalletAuthorityId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
1
|
+
import { parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
2
|
import { parseDeviceId, parsePrincipalId, parseTenantId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
3
3
|
import { sha256HexUtf8 } from "../../../../shared-ts/src/utils/digests.js";
|
|
4
4
|
import { parseRouterAbEcdsaRegistrationActivationReceiptV1 } from "../../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
|
|
@@ -15,10 +15,11 @@ 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 { createCloudflareD1VersionedJsonRecordStore } from "../versionedJson/d1VersionedJsonRecordStore.js";
|
|
19
18
|
import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV2 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
|
|
20
19
|
import { createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1 } from "../../signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js";
|
|
21
20
|
import { normalizeD1RouterApiAuthOptions } from "./d1RouterApiAuthConfig.js";
|
|
21
|
+
import { D1WalletOperationStore } from "../registration/d1WalletOperationStore.js";
|
|
22
|
+
import { createD1EmailOtpRouteService } from "./d1EmailOtpRouteService.js";
|
|
22
23
|
import { toPublicKeyStringFromSecretKey } from "../../../../core/nearKeys.js";
|
|
23
24
|
import { MinimalNearClient } from "../../../../core/rpcClients/near/NearClient.js";
|
|
24
25
|
import { fundImplicitNearAccountWithRelayer } from "../../../../core/nearRelayerAccountProvisioning.js";
|
|
@@ -26,7 +27,7 @@ import { createSponsoredNamedNearAccountForOptions } from "../near/d1SponsoredNe
|
|
|
26
27
|
import { parseD1EcdsaDerivationServerBootstrapResponse, parseD1WalletRegistrationCommittedInstallationProjection, parseD1WalletRegistrationFinalizeReplayResponse } from "../registration/d1RegistrationCeremonyRecords.js";
|
|
27
28
|
import { parseD1WalletAddSignerFinalizeSideEffectRecord } from "../wallet/d1WalletAddSignerFinalizeRecord.js";
|
|
28
29
|
import { dispatchWalletRegistrationSetup } from "../../../framework/registrationSetupDispatch.js";
|
|
29
|
-
import { readActiveWalletSessionCredential, readExhaustedWalletSessionCredential, readWalletSessionSigningCandidate } from "./walletSessionCredentialReaders.js";
|
|
30
|
+
import { readActiveWalletSessionCredential, readEd25519WalletSessionSigningRead, readExhaustedWalletSessionCredential, readWalletSessionSigningCandidate } from "./walletSessionCredentialReaders.js";
|
|
30
31
|
import { createD1AuthorizedOperationRouteService } from "./d1AuthorizedOperationRouteService.js";
|
|
31
32
|
import { parseRegistrationEstablishedSessionProjectionV2 } from "../../../../shared-ts/src/utils/registrationEstablishedSession.js";
|
|
32
33
|
import { signGasRelayerNearTransactionWithDeps } from "../../../../core/authService/nearTransactions.js";
|
|
@@ -51,6 +52,7 @@ import { D1WalletAuthMethodRevocationReplayStoreV1 } from "../wallet/d1WalletAut
|
|
|
51
52
|
import { CloudflareD1WalletAuthMethodService } from "../wallet/d1WalletAuthMethodService.js";
|
|
52
53
|
import { parseWalletRegistrationSessionCommitReceiptV2 } from "../registration/walletRegistrationSessionCommitReceipt.js";
|
|
53
54
|
import { CloudflareD1WalletRegistrationService } from "../registration/d1WalletRegistrationService.js";
|
|
55
|
+
import { D1WalletRegistrationRead } from "../registration/d1WalletRegistrationRead.js";
|
|
54
56
|
import { CloudflareD1WalletRegistrationCommitStore } from "../registration/d1WalletRegistrationCommitStore.js";
|
|
55
57
|
import { CloudflareD1Ed25519YaoLifecycleDecisionStoreV1 } from "../ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.js";
|
|
56
58
|
import { createD1PasskeyCustodyRouteService } from "../passkeyCustody/d1PasskeyCustodyRouteService.js";
|
|
@@ -434,17 +436,20 @@ function parseWalletRegistrationOperationPrepared(raw) {
|
|
|
434
436
|
if (Reflect.get(raw, "kind") !== "d1_wallet_registration_operation_prepared_v1") return null;
|
|
435
437
|
const keys = [
|
|
436
438
|
"kind",
|
|
439
|
+
"walletId",
|
|
437
440
|
"walletAuthorityId",
|
|
438
441
|
"deviceId",
|
|
439
442
|
"walletAuthMethodId"
|
|
440
443
|
];
|
|
441
444
|
if (Object.keys(raw).length !== keys.length || !hasOnlyKeys(raw, keys)) return null;
|
|
445
|
+
const walletId = parseWalletId(Reflect.get(raw, "walletId"));
|
|
442
446
|
const walletAuthorityId = parseWalletAuthorityId(Reflect.get(raw, "walletAuthorityId"));
|
|
443
447
|
const deviceId = parseDeviceId(Reflect.get(raw, "deviceId"));
|
|
444
448
|
const walletAuthMethodId = parseWalletAuthMethodId(Reflect.get(raw, "walletAuthMethodId"));
|
|
445
|
-
if (!walletAuthorityId.ok || !deviceId.ok || !walletAuthMethodId.ok) return null;
|
|
449
|
+
if (!walletId.ok || !walletAuthorityId.ok || !deviceId.ok || !walletAuthMethodId.ok) return null;
|
|
446
450
|
return {
|
|
447
451
|
kind: "d1_wallet_registration_operation_prepared_v1",
|
|
452
|
+
walletId: walletId.value,
|
|
448
453
|
walletAuthorityId: walletAuthorityId.value,
|
|
449
454
|
deviceId: deviceId.value,
|
|
450
455
|
walletAuthMethodId: walletAuthMethodId.value
|
|
@@ -617,15 +622,12 @@ function registrationReceiptMatchesJournal(record) {
|
|
|
617
622
|
if (receipt.operation !== record.operation || receipt.operationFingerprint !== record.requestFingerprint) return false;
|
|
618
623
|
if (receipt.committed.kind === "error") return true;
|
|
619
624
|
if (!("walletAuthMethodId" in receipt)) return false;
|
|
625
|
+
if (receipt.walletId !== record.prepared.walletId) return false;
|
|
620
626
|
if (receipt.walletAuthMethodId !== record.prepared.walletAuthMethodId) return false;
|
|
621
|
-
if (receipt.committed.kind === "near_pending") return true;
|
|
622
627
|
return "foundingAuthority" in receipt && receipt.foundingAuthority.authorityId === record.prepared.walletAuthorityId;
|
|
623
628
|
}
|
|
624
|
-
function resolveEd25519YaoProductRegistration(options) {
|
|
625
|
-
return options.ed25519YaoProductRegistration || null;
|
|
626
|
-
}
|
|
627
629
|
function walletRegistrationActivateSideEffectStore(options) {
|
|
628
|
-
return
|
|
630
|
+
return new D1WalletOperationStore({
|
|
629
631
|
database: options.database,
|
|
630
632
|
scope: {
|
|
631
633
|
namespace: options.namespace,
|
|
@@ -636,10 +638,10 @@ function walletRegistrationActivateSideEffectStore(options) {
|
|
|
636
638
|
keyPrefix: "wallet-registration-activate:",
|
|
637
639
|
encode: (value) => value,
|
|
638
640
|
parse: parseWalletRegistrationActivateSideEffectRecord
|
|
639
|
-
});
|
|
641
|
+
}, registrationOperationWallet);
|
|
640
642
|
}
|
|
641
643
|
function walletRegistrationNearProvisioningSideEffectStore(options) {
|
|
642
|
-
return
|
|
644
|
+
return new D1WalletOperationStore({
|
|
643
645
|
database: options.database,
|
|
644
646
|
scope: {
|
|
645
647
|
namespace: options.namespace,
|
|
@@ -650,10 +652,10 @@ function walletRegistrationNearProvisioningSideEffectStore(options) {
|
|
|
650
652
|
keyPrefix: "wallet-registration-near-provisioning:",
|
|
651
653
|
encode: (value) => value,
|
|
652
654
|
parse: parseWalletRegistrationNearProvisioningSideEffectRecord
|
|
653
|
-
});
|
|
655
|
+
}, registrationOperationWallet);
|
|
654
656
|
}
|
|
655
657
|
function walletAddSignerStartSideEffectStore(options) {
|
|
656
|
-
return
|
|
658
|
+
return new D1WalletOperationStore({
|
|
657
659
|
database: options.database,
|
|
658
660
|
scope: {
|
|
659
661
|
namespace: options.namespace,
|
|
@@ -664,10 +666,10 @@ function walletAddSignerStartSideEffectStore(options) {
|
|
|
664
666
|
keyPrefix: "wallet-add-signer-start:",
|
|
665
667
|
encode: (value) => value,
|
|
666
668
|
parse: parseD1WalletAddSignerStartSideEffectRecord
|
|
667
|
-
});
|
|
669
|
+
}, addSignerStartWallet);
|
|
668
670
|
}
|
|
669
671
|
function walletAddSignerFinalizeSideEffectStore(options) {
|
|
670
|
-
return
|
|
672
|
+
return new D1WalletOperationStore({
|
|
671
673
|
database: options.database,
|
|
672
674
|
scope: {
|
|
673
675
|
namespace: options.namespace,
|
|
@@ -678,7 +680,7 @@ function walletAddSignerFinalizeSideEffectStore(options) {
|
|
|
678
680
|
keyPrefix: "wallet-add-signer-finalize:",
|
|
679
681
|
encode: (value) => value,
|
|
680
682
|
parse: parseD1WalletAddSignerFinalizeSideEffectRecord
|
|
681
|
-
});
|
|
683
|
+
}, addSignerFinalizeWallet);
|
|
682
684
|
}
|
|
683
685
|
async function readD1Ed25519KeyManifestBySlot(walletStore, input) {
|
|
684
686
|
const signer = await walletStore.getEd25519SignerBySlot(input);
|
|
@@ -826,21 +828,25 @@ function createCloudflareD1RouterApiAuthAssembly(input) {
|
|
|
826
828
|
projectId: options.projectId,
|
|
827
829
|
envId: options.envId
|
|
828
830
|
});
|
|
829
|
-
const walletCustodyCommitStore = createD1WalletCustodyStore(options);
|
|
831
|
+
const walletCustodyCommitStore = createD1WalletCustodyStore(options, walletAuthMethodStore);
|
|
830
832
|
const signedDelegateExecutor = new CloudflareD1SignedDelegateExecutor(options);
|
|
831
833
|
const walletRegistrations = new CloudflareD1WalletRegistrationService({
|
|
834
|
+
executionAuthority: options.walletExecution,
|
|
835
|
+
home: options.sessionRouting?.home() ?? { kind: "direct" },
|
|
832
836
|
registrationAuthority: options.registrationAuthority ?? null,
|
|
837
|
+
startRegistrationWallets: options.startRegistrationWallets ?? null,
|
|
833
838
|
authorizationService,
|
|
839
|
+
registrationSessionStore: authorizationStore,
|
|
834
840
|
authorizationTenantId: authorizationTenantId.value,
|
|
835
841
|
createSponsoredNamedNearAccount,
|
|
836
842
|
emailOtpRegistrationEnrollmentFinalizer,
|
|
837
843
|
getRegistrationCeremonyIntentStore,
|
|
838
|
-
getEd25519YaoProductRegistration: () =>
|
|
844
|
+
getEd25519YaoProductRegistration: () => options.ed25519YaoProductRegistration ?? null,
|
|
839
845
|
ecdsaStrictRegistration: options.ecdsaStrictRegistration,
|
|
840
846
|
tenantRootCustodyLineage: options.tenantRootCustodyLineage,
|
|
841
847
|
getWalletStore,
|
|
842
848
|
activateSideEffects: walletRegistrationActivateSideEffectStore(options),
|
|
843
|
-
|
|
849
|
+
registrationRead: new D1WalletRegistrationRead(options.database, options.registrationAuthority ?? null, walletRegistrationNearProvisioningSideEffectStore(options), getRegistrationCeremonyIntentStore, yaoLifecycleDecisions),
|
|
844
850
|
walletRegistrationCommitStore,
|
|
845
851
|
walletCustodyCommitStore,
|
|
846
852
|
walletAuthMethods,
|
|
@@ -848,8 +854,9 @@ function createCloudflareD1RouterApiAuthAssembly(input) {
|
|
|
848
854
|
yaoLifecycleDecisions
|
|
849
855
|
});
|
|
850
856
|
const walletAddSigners = new CloudflareD1WalletAddSignerService({
|
|
857
|
+
executionAuthority: options.walletExecution,
|
|
851
858
|
getRegistrationCeremonyIntentStore,
|
|
852
|
-
getEd25519YaoProductRegistration: () =>
|
|
859
|
+
getEd25519YaoProductRegistration: () => options.ed25519YaoProductRegistration ?? null,
|
|
853
860
|
ecdsaStrictRegistration: options.ecdsaStrictRegistration,
|
|
854
861
|
tenantRootCustodyLineage: options.tenantRootCustodyLineage,
|
|
855
862
|
getWalletStore,
|
|
@@ -940,6 +947,11 @@ function createCloudflareD1RouterApiAuthAssembly(input) {
|
|
|
940
947
|
});
|
|
941
948
|
linkedDeviceEd25519AuthorityReaderSlot.current = linkedDeviceComposition.linkedDeviceEd25519AuthorityReader ?? null;
|
|
942
949
|
return {
|
|
950
|
+
relocationEmailOtp: {
|
|
951
|
+
verifier: emailOtpChallengeVerifier,
|
|
952
|
+
emailOtpChallenges,
|
|
953
|
+
issuer: emailOtpChallengeIssuer
|
|
954
|
+
},
|
|
943
955
|
options,
|
|
944
956
|
emailOtpServerSeal,
|
|
945
957
|
emailOtpChallengeService,
|
|
@@ -1202,26 +1214,6 @@ function createD1WalletUnlockRouteService(assembly) {
|
|
|
1202
1214
|
refreshWalletSessionAuthorityProjection: assembly.authorizationService.refreshWalletSessionAuthorizationV2AuthorityProjection.bind(assembly.authorizationService)
|
|
1203
1215
|
};
|
|
1204
1216
|
}
|
|
1205
|
-
function createD1EmailOtpRouteService(assembly) {
|
|
1206
|
-
return {
|
|
1207
|
-
applyEmailOtpServerSeal: assembly.emailOtpServerSeal.applyEmailOtpServerSeal.bind(assembly.emailOtpServerSeal),
|
|
1208
|
-
cleanupGoogleEmailOtpDevRegistrationState: assembly.googleEmailOtpSessions.cleanupDevRegistrationState.bind(assembly.googleEmailOtpSessions),
|
|
1209
|
-
consumeEmailOtpGrant: assembly.emailOtpRecoveryService.consumeEmailOtpGrant.bind(assembly.emailOtpRecoveryService),
|
|
1210
|
-
createEmailOtpChallenge: assembly.emailOtpChallengeService.createEmailOtpChallenge.bind(assembly.emailOtpChallengeService),
|
|
1211
|
-
createEmailOtpEnrollmentChallenge: assembly.emailOtpChallengeService.createEmailOtpEnrollmentChallenge.bind(assembly.emailOtpChallengeService),
|
|
1212
|
-
isEmailOtpStrongAuthRequired: assembly.emailOtpRecoveryService.isEmailOtpStrongAuthRequired.bind(assembly.emailOtpRecoveryService),
|
|
1213
|
-
markEmailOtpStrongAuthSatisfied: assembly.emailOtpRecoveryService.markEmailOtpStrongAuthSatisfied.bind(assembly.emailOtpRecoveryService),
|
|
1214
|
-
readActiveEmailOtpEnrollment: assembly.emailOtpRecoveryService.readActiveEmailOtpEnrollment.bind(assembly.emailOtpRecoveryService),
|
|
1215
|
-
readEmailOtpEnrollment: assembly.emailOtpRecoveryService.readEmailOtpEnrollment.bind(assembly.emailOtpRecoveryService),
|
|
1216
|
-
readEmailOtpOutboxEntry: assembly.emailOtpChallengeService.readEmailOtpOutboxEntry.bind(assembly.emailOtpChallengeService),
|
|
1217
|
-
removeEmailOtpServerSeal: assembly.emailOtpServerSeal.removeEmailOtpServerSeal.bind(assembly.emailOtpServerSeal),
|
|
1218
|
-
validateGoogleEmailOtpRegistrationCandidateWallet: assembly.googleEmailOtpSessions.validateRegistrationCandidateWallet.bind(assembly.googleEmailOtpSessions),
|
|
1219
|
-
verifyEmailOtpChallenge: assembly.emailOtpChallengeService.verifyEmailOtpChallenge.bind(assembly.emailOtpChallengeService),
|
|
1220
|
-
verifyEmailOtpWalletRecoveryChallenge: assembly.emailOtpChallengeService.verifyEmailOtpWalletRecoveryChallenge.bind(assembly.emailOtpChallengeService),
|
|
1221
|
-
verifyEmailOtpEnrollment: assembly.emailOtpChallengeService.verifyEmailOtpEnrollment.bind(assembly.emailOtpChallengeService),
|
|
1222
|
-
verifyGoogleLogin: assembly.oidcVerification.verifyGoogleLogin.bind(assembly.oidcVerification)
|
|
1223
|
-
};
|
|
1224
|
-
}
|
|
1225
1217
|
function createD1WebAuthnRouteService(assembly) {
|
|
1226
1218
|
return {
|
|
1227
1219
|
createWebAuthnLoginOptions: assembly.webAuthnAuthService.createWebAuthnLoginOptions.bind(assembly.webAuthnAuthService),
|
|
@@ -1253,6 +1245,7 @@ function createD1AuthorizationSessionRouteService(assembly) {
|
|
|
1253
1245
|
issueDirectWalletSessionAuthorizationV2: assembly.authorizationService.issueDirectWalletSessionAuthorizationV2.bind(assembly.authorizationService),
|
|
1254
1246
|
readWalletSessionAuthorizationV2ByOperationCredential: readActiveWalletSessionCredential.bind(null, assembly.authorizationService),
|
|
1255
1247
|
readWalletSessionSigningCandidateByOperationCredential: readWalletSessionSigningCandidate.bind(null, assembly.authorizationService),
|
|
1248
|
+
readEd25519WalletSessionSigningReadByOperationCredential: readEd25519WalletSessionSigningRead.bind(null, assembly.authorizationService),
|
|
1256
1249
|
readWalletSessionExactOperationContextByCredential: assembly.authorizationService.readWalletSessionExactOperationContextByCredential.bind(assembly.authorizationService),
|
|
1257
1250
|
readExhaustedWalletSessionAuthorizationV2CandidateByOperationCredential: readExhaustedWalletSessionCredential.bind(null, assembly.authorizationService),
|
|
1258
1251
|
readExactWalletSessionStatusByOperationCredential: assembly.authorizationService.readExactWalletSessionStatusByOperationCredential.bind(assembly.authorizationService),
|
|
@@ -1297,6 +1290,8 @@ function createD1RouterAccountRouteService(assembly) {
|
|
|
1297
1290
|
function createCloudflareD1RouterApiAuthService(input) {
|
|
1298
1291
|
const assembly = createCloudflareD1RouterApiAuthAssembly(input);
|
|
1299
1292
|
return {
|
|
1293
|
+
walletExecution: assembly.options.walletExecution,
|
|
1294
|
+
relocationEmailOtp: assembly.relocationEmailOtp,
|
|
1300
1295
|
walletRegistration: createD1WalletRegistrationRouteService(assembly),
|
|
1301
1296
|
walletAuthMethods: createD1WalletAuthMethodRouteService(assembly),
|
|
1302
1297
|
walletUnlock: createD1WalletUnlockRouteService(assembly),
|
|
@@ -1326,6 +1321,15 @@ function createCloudflareD1RouterApiAuthService(input) {
|
|
|
1326
1321
|
...assembly.linkedDeviceEd25519AuthorityReader === void 0 ? {} : { linkedDeviceEd25519AuthorityReader: assembly.linkedDeviceEd25519AuthorityReader }
|
|
1327
1322
|
};
|
|
1328
1323
|
}
|
|
1324
|
+
function registrationOperationWallet(record) {
|
|
1325
|
+
return record.prepared.walletId;
|
|
1326
|
+
}
|
|
1327
|
+
function addSignerStartWallet(record) {
|
|
1328
|
+
return record.prepared.storedIntent.intent.walletId;
|
|
1329
|
+
}
|
|
1330
|
+
function addSignerFinalizeWallet(record) {
|
|
1331
|
+
return record.prepared.walletId;
|
|
1332
|
+
}
|
|
1329
1333
|
//#endregion
|
|
1330
1334
|
export { createCloudflareD1RouterApiAuthService };
|
|
1331
1335
|
|
|
@@ -29,6 +29,22 @@ async function readActiveWalletSessionCredential(service, input) {
|
|
|
29
29
|
if (snapshot.kind === "exhausted") throw new Error("Stored V2 Wallet Session quota is no longer active");
|
|
30
30
|
return activeContext(snapshot);
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* The active session with its wallet's Ed25519 signer and policy rows. An
|
|
34
|
+
* exhausted session throws, as the plain credential read does: its caller
|
|
35
|
+
* resolves the exhausted candidate separately.
|
|
36
|
+
*/
|
|
37
|
+
async function readEd25519WalletSessionSigningRead(service, input) {
|
|
38
|
+
const read = await service.readEd25519WalletSessionAdmissionSnapshotByOperationCredential(input);
|
|
39
|
+
if (!read) return null;
|
|
40
|
+
if (read.snapshot.kind === "exhausted") throw new Error("Stored V2 Wallet Session quota is no longer active");
|
|
41
|
+
const context = activeContext(read.snapshot);
|
|
42
|
+
return context ? {
|
|
43
|
+
context,
|
|
44
|
+
signerRead: read.signerRead,
|
|
45
|
+
policyRead: read.policyRead
|
|
46
|
+
} : null;
|
|
47
|
+
}
|
|
32
48
|
async function readWalletSessionSigningCandidate(service, input) {
|
|
33
49
|
const read = await service.readEcdsaWalletSessionAdmissionSnapshotByOperationCredential(input);
|
|
34
50
|
if (!read) return null;
|
|
@@ -71,6 +87,6 @@ async function readExhaustedWalletSessionCredential(service, input) {
|
|
|
71
87
|
});
|
|
72
88
|
}
|
|
73
89
|
//#endregion
|
|
74
|
-
export { readActiveWalletSessionCredential, readExhaustedWalletSessionCredential, readWalletSessionSigningCandidate };
|
|
90
|
+
export { readActiveWalletSessionCredential, readEd25519WalletSessionSigningRead, readExhaustedWalletSessionCredential, readWalletSessionSigningCandidate };
|
|
75
91
|
|
|
76
92
|
//# sourceMappingURL=walletSessionCredentialReaders.js.map
|
|
@@ -58,8 +58,12 @@ const PINNED_OWNER_WALLET = `
|
|
|
58
58
|
LIMIT 1)
|
|
59
59
|
END AS pinned_owner_wallet_id`;
|
|
60
60
|
function prepareAuthorizedOperationCommittedRead(database, namespace, input) {
|
|
61
|
-
return database.prepare(`SELECT operation.*,
|
|
61
|
+
return database.prepare(`SELECT operation.*, evidence.org_id AS step_up_org_id, evidence.project_id AS step_up_project_id,
|
|
62
|
+
evidence.env_id AS step_up_env_id, ${PINNED_OWNER_WALLET}
|
|
62
63
|
FROM authorized_operations AS operation
|
|
64
|
+
LEFT JOIN verified_wallet_operation_evidence_sets AS evidence
|
|
65
|
+
ON evidence.namespace = operation.namespace AND evidence.tenant_id = operation.tenant_id
|
|
66
|
+
AND evidence.evidence_set_digest = operation.evidence_set_digest
|
|
63
67
|
WHERE operation.namespace = ? AND operation.tenant_id = ?
|
|
64
68
|
AND operation.operation_fingerprint_digest = ?
|
|
65
69
|
LIMIT 1`).bind(namespace, input.tenantId, input.operationFingerprintDigest);
|
|
@@ -74,7 +78,8 @@ function prepareAuthorizedOperationAdmissionRead(input) {
|
|
|
74
78
|
sql: "1",
|
|
75
79
|
bindings: []
|
|
76
80
|
};
|
|
77
|
-
return input.database.prepare(`SELECT operation.*,
|
|
81
|
+
return input.database.prepare(`SELECT operation.*, evidence.org_id AS step_up_org_id, evidence.project_id AS step_up_project_id,
|
|
82
|
+
evidence.env_id AS step_up_env_id, ${PINNED_OWNER_WALLET}, (${material.sql}) AS material_snapshot_active,
|
|
78
83
|
CASE operation.authorization_source_kind
|
|
79
84
|
WHEN 'authorization_grant' THEN EXISTS (
|
|
80
85
|
SELECT 1
|
|
@@ -130,6 +135,9 @@ function prepareAuthorizedOperationAdmissionRead(input) {
|
|
|
130
135
|
ELSE 0
|
|
131
136
|
END AS authorization_source_active
|
|
132
137
|
FROM authorized_operations AS operation
|
|
138
|
+
LEFT JOIN verified_wallet_operation_evidence_sets AS evidence
|
|
139
|
+
ON evidence.namespace = operation.namespace AND evidence.tenant_id = operation.tenant_id
|
|
140
|
+
AND evidence.evidence_set_digest = operation.evidence_set_digest
|
|
133
141
|
WHERE operation.namespace = ? AND operation.tenant_id = ?
|
|
134
142
|
AND operation.operation_fingerprint_digest = ?
|
|
135
143
|
LIMIT 1`).bind(...material.bindings, input.walletSignerScope.orgId, input.walletSignerScope.projectId, input.walletSignerScope.envId, input.nowMs, input.nowMs, input.namespace, input.tenantId, input.operationFingerprintDigest);
|
|
@@ -181,6 +189,22 @@ function prepareAuthorizedOperationInsert(input) {
|
|
|
181
189
|
sql: "1",
|
|
182
190
|
bindings: []
|
|
183
191
|
};
|
|
192
|
+
if (source.kind === "verified_step_up") condition = {
|
|
193
|
+
sql: `(${condition.sql}) AND EXISTS (
|
|
194
|
+
SELECT 1 FROM verified_wallet_operation_evidence_sets AS evidence
|
|
195
|
+
WHERE evidence.namespace = ? AND evidence.tenant_id = ? AND evidence.evidence_set_digest = ?
|
|
196
|
+
AND evidence.org_id = ? AND evidence.project_id = ? AND evidence.env_id = ?
|
|
197
|
+
)`,
|
|
198
|
+
bindings: [
|
|
199
|
+
...condition.bindings,
|
|
200
|
+
namespace,
|
|
201
|
+
operation.tenantId,
|
|
202
|
+
source.evidenceSetDigest,
|
|
203
|
+
walletSignerScope.orgId,
|
|
204
|
+
walletSignerScope.projectId,
|
|
205
|
+
walletSignerScope.envId
|
|
206
|
+
]
|
|
207
|
+
};
|
|
184
208
|
const absence = input.existingOperation === "preserve" ? {
|
|
185
209
|
sql: `NOT EXISTS (SELECT 1 FROM authorized_operations
|
|
186
210
|
WHERE namespace = ? AND tenant_id = ? AND operation_fingerprint_digest = ?)`,
|
|
@@ -205,11 +229,17 @@ function prepareAuthorizedOperationInsert(input) {
|
|
|
205
229
|
material_activation_owner, material_activation_key_binding,
|
|
206
230
|
material_activation_lifecycle_binding, material_activation_signing_worker,
|
|
207
231
|
owner_scope_org_id, owner_scope_project_id,
|
|
208
|
-
owner_scope_env_id
|
|
232
|
+
owner_scope_env_id, ownership_generation
|
|
209
233
|
) SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
|
210
234
|
'claimed', 'pending', NULL, NULL, NULL, NULL, ?, NULL, ?,
|
|
211
|
-
?, ?, ?, ?, ?, ?, ?,
|
|
212
|
-
|
|
235
|
+
?, ?, ?, ?, ?, ?, ?, ?,
|
|
236
|
+
(SELECT execution.generation FROM wallet_operation_authorizations AS owner
|
|
237
|
+
JOIN wallet_execution_generations AS execution
|
|
238
|
+
USING(namespace, org_id, project_id, env_id, wallet_id)
|
|
239
|
+
WHERE owner.namespace = ? AND owner.tenant_id = ? AND owner.source_kind = ?
|
|
240
|
+
AND owner.source_id = ? AND owner.org_id = ? AND owner.project_id = ?
|
|
241
|
+
AND owner.env_id = ? AND execution.state = 'active')
|
|
242
|
+
WHERE (${condition.sql}) AND (${absence.sql})`).bind(...values, namespace, operation.tenantId, source.kind, source.kind === "authorization_grant" ? source.authorizationGrantRef.authorizationId : source.evidenceSetDigest, walletSignerScope.orgId, walletSignerScope.projectId, walletSignerScope.envId, ...condition.bindings, ...absence.bindings);
|
|
213
243
|
}
|
|
214
244
|
//#endregion
|
|
215
245
|
export { prepareAuthorizedOperationAdmissionRead, prepareAuthorizedOperationCommittedRead, prepareAuthorizedOperationInsert, prepareAuthorizedOperationRead };
|