@seams/wallet-server 0.7.1 → 0.8.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 +1 -113
- package/artifact-manifest.json +78 -33
- 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/scripts/prepare-local-runtime-config.mjs +0 -2
- package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +77 -20
- package/dist/esm/authorization/lifecycleRouting.js +62 -0
- package/dist/esm/authorization/service.js +43 -12
- package/dist/esm/authorization/vaultProxyUse.js +2 -6
- package/dist/esm/cloud-host.js +23 -25
- package/dist/esm/core/EmailOtpRecords.js +1 -217
- package/dist/esm/core/EmailOtpStores.js +0 -859
- package/dist/esm/core/IdentityStore.js +2 -426
- package/dist/esm/core/SessionService.js +7 -30
- package/dist/esm/core/ThresholdService/config.js +1 -9
- package/dist/esm/core/ThresholdService/index.js +0 -4
- package/dist/esm/core/ThresholdService/kv.js +1 -66
- package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +1 -13
- package/dist/esm/core/ThresholdService/routerAbNormalSigningPolicy.js +4 -21
- package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +0 -617
- package/dist/esm/core/ThresholdService/validation.js +2 -346
- package/dist/esm/core/WalletAuthMethodStore.js +2 -123
- package/dist/esm/core/WalletStore.js +6 -214
- package/dist/esm/core/WebAuthnAuthenticatorStore.js +0 -202
- package/dist/esm/core/WebAuthnCredentialBindingStore.js +2 -182
- package/dist/esm/core/WebAuthnLoginChallengeStore.js +0 -52
- package/dist/esm/core/WebAuthnSyncChallengeStore.js +0 -54
- package/dist/esm/core/authService/emailOtpConfig.js +1 -195
- package/dist/esm/core/authService/emailOtpEnrollment.js +0 -141
- package/dist/esm/core/authService/emailOtpSeal.js +0 -78
- package/dist/esm/core/authService/nearTransactions.js +3 -98
- package/dist/esm/core/authService/rateLimits.js +0 -87
- package/dist/esm/core/authService/thresholdEcdsaKeyInventory.js +2 -1
- package/dist/esm/core/authService/webauthn.js +14 -464
- package/dist/esm/core/authService/webauthnOidcHelpers.js +1 -24
- package/dist/esm/core/authService/webauthnVerificationOutcomes.js +5 -24
- package/dist/esm/core/authService/webauthnWalletBinding.js +0 -37
- package/dist/esm/core/config.js +1 -95
- package/dist/esm/core/d1EcdsaSignerRead.js +76 -0
- package/dist/esm/core/d1IdentityStore.js +17 -77
- package/dist/esm/core/d1TenantStore.js +1 -24
- package/dist/esm/core/d1WalletAuthMethodStore.js +2 -5
- package/dist/esm/core/d1WalletStore.js +15 -25
- package/dist/esm/core/deviceLinking/linkedDeviceBootstrap.js +13 -0
- package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +1 -5
- package/dist/esm/core/deviceLinking/linkedDeviceSession.js +20 -14
- package/dist/esm/core/deviceLinking/linkedDeviceSessionApproval.js +1 -3
- package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +2 -8
- package/dist/esm/core/deviceLinking/requestProof.js +22 -10
- package/dist/esm/core/ecdsaMaterialReadSnapshot.js +85 -0
- package/dist/esm/core/emailOtpD1Statements.js +107 -94
- package/dist/esm/core/keyMaterialBrands.js +2 -12
- package/dist/esm/core/nearKeys.js +0 -1
- package/dist/esm/core/nearRelayerAccountProvisioning.js +8 -14
- package/dist/esm/core/passkeyCredentialClaims.js +8 -0
- package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +2 -6
- package/dist/esm/core/routerAbSigning/RouterAbNormalSigningRuntime.js +2 -30
- package/dist/esm/core/signingLanes/WalletExecutionLaneProjection.js +3 -6
- package/dist/esm/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.js +2 -5
- package/dist/esm/core/thresholdEcdsaChainTarget.js +2 -7
- package/dist/esm/hosted-wallet-gateway.js +68 -45
- package/dist/esm/index.js +6 -19
- package/dist/esm/localHostedWalletGatewayHandler.js +25 -0
- package/dist/esm/localIntendedMaterialAdmissionFault.js +176 -0
- package/dist/esm/localIntendedPresignCancellation.js +44 -0
- package/dist/esm/localRegistrationSetupAuthority.js +89 -0
- package/dist/esm/router/auth/authRequestValidation.js +8 -16
- package/dist/esm/router/auth/commonRouterUtils.js +24 -10
- package/dist/esm/router/auth/walletSessionFailure.js +2 -5
- package/dist/esm/router/auth/webAuthnCredentialCodecs.js +4 -16
- package/dist/esm/router/cloudflare/d1/auth/d1AuthorizationAssembly.js +87 -0
- package/dist/esm/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.js +1 -0
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.js +2 -6
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +12 -2
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +37 -308
- package/dist/esm/router/cloudflare/d1/auth/walletSessionCredentialReaders.js +76 -0
- package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +52 -43
- package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +217 -50
- package/dist/esm/router/cloudflare/d1/authorization/d1VaultProxyStore.js +8 -12
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +62 -21
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +6 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +12 -2
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +4 -4
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +3 -9
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.js +2 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +89 -7
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +24 -15
- package/dist/esm/router/cloudflare/d1/deviceLinking/index.js +3 -3
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +9 -6
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +12 -56
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +17 -81
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +0 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpDeliveryRuntime.js +6 -25
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +1 -7
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +19 -13
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +12 -48
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +24 -86
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +9 -32
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +5 -21
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +44 -12
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +1 -49
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +37 -136
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.js +85 -0
- package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +0 -1
- package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +9 -88
- package/dist/esm/router/cloudflare/d1/near/d1SponsoredNearAccount.js +242 -0
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +18 -92
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +4 -55
- package/dist/esm/router/cloudflare/d1/oidc/googleOidcToken.js +41 -0
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +9 -15
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +36 -7
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.js +9 -13
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js +11 -50
- package/dist/esm/router/cloudflare/d1/registration/d1EvmFamilyEcdsaRegistrationBranch.js +5 -20
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +13 -10
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +9 -14
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +25 -13
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +7 -31
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +74 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +7 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +101 -260
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +12 -56
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +155 -0
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +1 -3
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +1 -4
- package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +131 -31
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +68 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +7 -54
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +9 -8
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +2 -142
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +55 -171
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +10 -79
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +23 -7
- package/dist/esm/router/cloudflare/runtime/routerAbPrewarm.js +2 -2
- package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +6 -20
- package/dist/esm/router/cloudflare/runtime/tenantRootCreationGrant.js +2 -9
- package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +1 -0
- package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +5 -0
- package/dist/esm/router/cloudflare/runtime/walletControlOps.js +2 -1
- package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
- package/dist/esm/router/cloudflare/runtime/walletRuntimeOps.js +16 -4
- package/dist/esm/router/cloudflare-adaptor.js +1 -2
- package/dist/esm/router/cloudflare.js +3390 -3437
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +11 -8
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +3 -2
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +6 -6
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js +5 -8
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +6 -6
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +3 -0
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +8 -0
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +3 -6
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +6 -25
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js +39 -55
- package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +0 -1
- package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +15 -62
- package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +2 -8
- package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +2 -8
- package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js +83 -74
- package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmission.js +1 -0
- package/dist/esm/router/domains/signingOperations/routerAbOperationStepUp.js +1 -0
- package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +5 -19
- package/dist/esm/router/domains/signingOperations/walletExecutionAdmission.js +3 -7
- package/dist/esm/router/domains/tenantRoot/tenantRootIdentityResolution.js +7 -13
- package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +70 -0
- package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +10 -11
- package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +2 -3
- package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +55 -200
- package/dist/esm/router/express.js +858 -1145
- package/dist/esm/router/framework/http.js +7 -1
- package/dist/esm/router/framework/registrationSetupDispatch.js +14 -0
- package/dist/esm/router/framework/ror/normalize.js +0 -1
- package/dist/esm/router/framework/ror/options.js +0 -1
- package/dist/esm/router/framework/ror/provider.js +0 -1
- package/dist/esm/router/framework/ror/staticProvider.js +0 -1
- package/dist/esm/router/framework/routeDefinitions.js +1 -2
- package/dist/esm/router/framework/routerApiWebhooks.js +0 -1
- package/dist/esm/router/framework/runtimeSnapshotConsumer.js +8 -35
- package/dist/esm/router/ror.js +0 -1
- package/dist/esm/router/transport/fetch/createFetchRouter.js +3 -8
- package/dist/esm/router/transport/fetch/routes/auth.js +11 -41
- package/dist/esm/router/transport/fetch/routes/deviceLinking.js +36 -147
- package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +7 -23
- package/dist/esm/router/transport/fetch/routes/deviceLinkingResponses.js +130 -0
- package/dist/esm/router/transport/fetch/routes/ecdsaOperationStepUpFactor.js +171 -0
- package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +1 -0
- package/dist/esm/router/transport/fetch/routes/sessions.js +1 -0
- package/dist/esm/router/transport/fetch/routes/syncAccount.js +15 -38
- package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +46 -194
- package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +4 -1
- package/dist/esm/router/transport/fetch/routes/walletRegistration.js +3 -1
- package/dist/esm/router/transport/fetch/routes/webauthnAuthenticators.js +4 -16
- package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +0 -1
- package/dist/esm/shared-ts/src/authorization/walletSignerActivationEquality.js +12 -0
- package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +0 -2
- package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +2 -5
- package/dist/esm/shared-ts/src/device-linking/contracts.js +16 -1
- package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +1 -5
- package/dist/esm/shared-ts/src/device-linking/digests.js +1 -8
- package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +12 -16
- package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +5 -8
- package/dist/esm/shared-ts/src/near/actions.js +0 -1
- package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
- package/dist/esm/shared-ts/src/passkey-custody/primitives.js +5 -1
- package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
- package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -6
- package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +5 -9
- package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +2 -81
- package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -219
- package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +0 -3
- package/dist/esm/shared-ts/src/tenant-root/tenantRootIdentifier.js +12 -0
- package/dist/esm/shared-ts/src/tenant-root/tenantRootIdentity.js +2 -9
- package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +2 -6
- package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
- package/dist/esm/shared-ts/src/threshold/keyMaterialBrands.js +1 -22
- package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
- package/dist/esm/shared-ts/src/threshold/signingRootScope.js +0 -1
- package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +4 -13
- package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +1 -7
- package/dist/esm/shared-ts/src/utils/domainIds.js +1 -16
- package/dist/esm/shared-ts/src/utils/ecdsaCapabilityActivation.js +1 -11
- package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +2 -5
- package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +0 -1
- package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +3 -1
- package/dist/esm/shared-ts/src/utils/errors.js +1 -19
- package/dist/esm/shared-ts/src/utils/exactKeys.js +17 -0
- package/dist/esm/shared-ts/src/utils/failure.js +20 -0
- package/dist/esm/shared-ts/src/utils/near.js +1 -1
- package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
- package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
- package/dist/esm/shared-ts/src/utils/registrationIntent.js +3 -13
- package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +8 -0
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +3 -6
- package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -2
- package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +1 -1
- package/dist/esm/shared-ts/src/utils/thresholdEcdsaChainTarget.js +9 -0
- package/dist/esm/shared-ts/src/utils/validation.js +1 -5
- package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
- package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
- package/dist/esm/shared-ts/src/utils/wireSchema.js +2 -13
- package/dist/esm/shared-ts/src/wallet-recovery/backupAcknowledgement.js +6 -24
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +5 -6
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -4
- package/dist/esm/storage/d1Sql.js +1 -7
- package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +10 -33
- package/dist/esm/threshold/session/signingSessionSeal/guards/backends.js +1 -2
- package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +3 -4
- package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +3 -10
- package/dist/esm/threshold/session/signingSessionSeal/options.js +0 -1
- package/dist/esm/threshold/session/signingSessionSeal/service.js +8 -35
- package/dist/esm/threshold/session/signingSessionSeal/transport/express.js +18 -94
- package/dist/esm/threshold/session/signingSessionSeal/transport/fetch.js +6 -30
- package/dist/esm/threshold/session/signingSessionSeal/transport/shared.js +5 -20
- package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +0 -611
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
- package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
- package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +2 -1
- package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +9 -2
- package/dist/types/shared-ts/src/authorization/walletSignerActivationEquality.d.ts +4 -0
- package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -4
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +6 -63
- package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +2 -0
- package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +5 -12
- package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +9 -0
- package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +11 -12
- package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +3 -17
- package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
- package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
- package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
- package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
- package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -845
- package/dist/types/shared-ts/src/tenant-root/tenantRootIdentifier.d.ts +3 -0
- package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -1
- package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +6 -0
- package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
- package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
- package/dist/types/shared-ts/src/threshold/signingRootScope.d.ts +1 -0
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
- package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
- package/dist/types/shared-ts/src/utils/ecdsaKeyFactsInventory.d.ts +2 -11
- package/dist/types/shared-ts/src/utils/eip1559TxWasmJson.d.ts +16 -0
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +2 -0
- package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
- package/dist/types/shared-ts/src/utils/exactKeys.d.ts +11 -0
- package/dist/types/shared-ts/src/utils/failure.d.ts +12 -0
- package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +3 -4
- package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
- package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +1 -0
- package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
- package/dist/types/shared-ts/src/utils/registrationAuthMethodInput.d.ts +3 -8
- package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/registrationSignerPlan.d.ts +7 -19
- package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +3 -1
- package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +1 -0
- package/dist/types/shared-ts/src/utils/routerAbEd25519YaoDigests.d.ts +3 -4
- package/dist/types/shared-ts/src/utils/routerAbNormalSigningIdentity.d.ts +30 -8
- package/dist/types/shared-ts/src/utils/routerApiKeyAuth.d.ts +2 -0
- package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +10 -11
- package/dist/types/shared-ts/src/utils/thresholdEcdsaChainTarget.d.ts +25 -0
- package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
- package/dist/types/shared-ts/src/utils/variant.d.ts +18 -0
- package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +3 -6
- package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
- package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +4 -2
- package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
- package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
- package/dist/types/shared-ts/src/wallet-recovery/recoveryEnvelopes.d.ts +3 -16
- package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryPreparation.d.ts +15 -0
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.d.ts +3 -4
- package/dist/types/wallet-server/src/authorization/domain.d.ts +13 -2
- package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.d.ts +27 -3
- package/dist/types/wallet-server/src/authorization/lifecycleRouting.d.ts +32 -0
- package/dist/types/wallet-server/src/authorization/lifecycleRouting.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/authorization/recoveryRouting.d.ts +22 -0
- package/dist/types/wallet-server/src/authorization/recoveryRouting.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/authorization/service.d.ts +27 -1
- package/dist/types/wallet-server/src/authorization/sessionRouting.d.ts +20 -0
- package/dist/types/wallet-server/src/authorization/sessionRouting.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/cloud-host.d.ts +31 -9
- package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +1 -22
- package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +1 -79
- package/dist/types/wallet-server/src/core/IdentityStore.d.ts +0 -10
- package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +0 -1
- package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +0 -2
- package/dist/types/wallet-server/src/core/ThresholdService/index.d.ts +1 -3
- package/dist/types/wallet-server/src/core/ThresholdService/kv.d.ts +0 -7
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +0 -3
- package/dist/types/wallet-server/src/core/ThresholdService/routerAbNormalSigningPolicy.d.ts +0 -1
- package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +6 -18
- package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +0 -127
- package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +1 -5
- package/dist/types/wallet-server/src/core/WalletStore.d.ts +0 -3
- package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +8 -20
- package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +1 -27
- package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +2 -16
- package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +22 -14
- package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +0 -24
- package/dist/types/wallet-server/src/core/authService/emailOtpEnrollment.d.ts +1 -70
- package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +1 -14
- package/dist/types/wallet-server/src/core/authService/githubOAuth.d.ts +2 -1
- package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +1 -39
- package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +0 -17
- package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +0 -125
- package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +0 -3
- package/dist/types/wallet-server/src/core/authService/webauthnVerificationOutcomes.d.ts +1 -1
- package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +0 -12
- package/dist/types/wallet-server/src/core/config.d.ts +0 -10
- package/dist/types/wallet-server/src/core/d1EcdsaSignerRead.d.ts +39 -0
- package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +0 -2
- package/dist/types/wallet-server/src/core/d1TenantStore.d.ts +0 -7
- package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +0 -1
- package/dist/types/wallet-server/src/core/d1WalletStore.d.ts +10 -0
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceBootstrap.d.ts +19 -0
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +8 -6
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSessionRecord.d.ts +3 -4
- package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +2 -5
- package/dist/types/wallet-server/src/core/ecdsaMaterialReadSnapshot.d.ts +19 -0
- package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +10 -7
- package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +1 -5
- package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +0 -1
- package/dist/types/wallet-server/src/core/passkeyCredentialClaims.d.ts +9 -0
- package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +0 -2
- package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +3 -7
- package/dist/types/wallet-server/src/core/rpcClients/near/NearClient.d.ts +1 -2
- package/dist/types/wallet-server/src/core/signingLanes/WalletExecutionLaneProjection.d.ts +2 -11
- package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +1 -92
- package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +4 -52
- package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +3 -12
- package/dist/types/wallet-server/src/core/types.d.ts +2 -305
- package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +15 -3
- package/dist/types/wallet-server/src/index.d.ts +8 -13
- package/dist/types/wallet-server/src/localIntendedMaterialAdmissionFault.d.ts +38 -0
- package/dist/types/wallet-server/src/localIntendedPresignCancellation.d.ts +4 -0
- package/dist/types/wallet-server/src/localRegistrationSetupAuthority.d.ts +13 -0
- package/dist/types/wallet-server/src/router/auth/authRequestValidation.d.ts +4 -9
- package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +15 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizationAssembly.d.ts +23 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.d.ts +0 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +25 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthService.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/walletSessionCredentialReaders.d.ts +9 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/authorizedOperationStatements.d.ts +4 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +11 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +22 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +7 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.d.ts +1 -10
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.d.ts +4 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +8 -6
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.d.ts +5 -8
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +1 -13
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.d.ts +2 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.d.ts +2 -8
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +0 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +20 -11
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +5 -5
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.d.ts +4 -14
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +29 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +3 -16
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.d.ts +7 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.d.ts +23 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityService.d.ts +0 -12
- package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.d.ts +24 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcVerificationService.d.ts +0 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/googleOidcToken.d.ts +4 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +5 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +9 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +3 -7
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +10 -11
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +3 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +51 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +3 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +35 -50
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +3 -30
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.d.ts +11 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.d.ts +14 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.d.ts +27 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +1 -10
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +2 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +0 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.d.ts +3 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +8 -50
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +23 -10
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflare.types.d.ts +0 -2
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +9 -34
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOps.d.ts +3 -0
- package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +0 -1
- package/dist/types/wallet-server/src/router/domains/ecdsa/thresholdEcdsaRequestValidation.d.ts +3 -15
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +1 -1
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +2 -2
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +2 -2
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.d.ts +2 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.d.ts +2 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/routerAbEd25519YaoWalletSession.d.ts +9 -50
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +0 -2
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +0 -3
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryKeyManifest.d.ts +1 -13
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.d.ts +8 -9
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmission.d.ts +13 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbOperationStepUp.d.ts +3 -4
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +7 -33
- package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +1 -2
- package/dist/types/wallet-server/src/router/domains/syncAccount/syncAccountRequestValidation.d.ts +2 -7
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +1 -0
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationReservation.d.ts +51 -0
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +2 -10
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +2 -2
- package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +3 -1
- package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +39 -38
- package/dist/types/wallet-server/src/router/framework/googleLoginResolution.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/framework/http.d.ts +1 -0
- package/dist/types/wallet-server/src/router/framework/registrationSetupDispatch.d.ts +13 -0
- package/dist/types/wallet-server/src/router/framework/ror/normalize.d.ts +1 -9
- package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +1 -1
- package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.d.ts +3 -6
- package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingResponses.d.ts +17 -0
- package/dist/types/wallet-server/src/router/transport/fetch/routes/ecdsaOperationStepUpFactor.d.ts +37 -0
- package/dist/types/wallet-server/src/router/transport/fetch/routes/syncAccountBootstrap.d.ts +3 -5
- package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +0 -1
- package/dist/types/wallet-server/src/storage/d1Sql.d.ts +0 -1
- package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/idempotencyRecords.d.ts +1 -2
- package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/signingSessionSeal.types.d.ts +6 -8
- package/migrations/d1-signer/0040_namespace_home_challenges.sql +16 -0
- package/migrations/d1-signer/0041_step_up_admission_expiry.sql +28 -0
- package/migrations/d1-signer/0042_deployment_resource_challenges.sql +4 -0
- package/migrations/d1-signer/0043_google_registration_candidate_claim.sql +2 -0
- package/migrations/d1-signer/0044_linked_device_bootstrap_imports.sql +6 -0
- package/migrations/d1-signer/0045_wallet_owned_capability_receipts.sql +29 -0
- package/migrations/d1-signer/0046_wallet_owned_signing_abuse.sql +41 -0
- package/migrations/d1-signer/0047_remove_unused_near_public_keys.sql +2 -0
- package/migrations/d1-signer/0048_operation_owner_scope.sql +45 -0
- package/package.json +2 -3
- package/src/README.md +11 -3
- package/dist/esm/core/AuthService.js +0 -2
- package/dist/esm/core/NearPublicKeyStore.js +0 -200
- package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +0 -397
- package/dist/esm/core/ThresholdService/stores/KeyStore.js +0 -140
- package/dist/esm/core/ThresholdService/stores/SessionStore.js +0 -361
- package/dist/esm/core/ThresholdService/stores/StoreConfig.js +0 -13
- package/dist/esm/core/authService/AuthService.js +0 -594
- package/dist/esm/core/authService/bytes.js +0 -22
- package/dist/esm/core/authService/configValues.js +0 -15
- package/dist/esm/core/authService/emailOtpChallengeOperations.js +0 -126
- package/dist/esm/core/authService/emailOtpChallengeProof.js +0 -214
- package/dist/esm/core/authService/emailOtpChallengeVerification.js +0 -335
- package/dist/esm/core/authService/emailOtpChallenges.js +0 -260
- package/dist/esm/core/authService/emailOtpDelivery.js +0 -169
- package/dist/esm/core/authService/emailOtpGrant.js +0 -74
- package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +0 -175
- package/dist/esm/core/authService/emailOtpUnlock.js +0 -264
- package/dist/esm/core/authService/googleEmailOtpOperations.js +0 -141
- package/dist/esm/core/authService/googleEmailOtpRegistration.js +0 -674
- package/dist/esm/core/authService/identity.js +0 -57
- package/dist/esm/core/authService/identityOperations.js +0 -32
- package/dist/esm/core/authService/nearAccountOperations.js +0 -229
- package/dist/esm/core/authService/nearPublicKeyMetadata.js +0 -127
- package/dist/esm/core/authService/oidcVerification.js +0 -261
- package/dist/esm/core/authService/registrationThresholdHelpers.js +0 -30
- package/dist/esm/core/authService/runtime.js +0 -45
- package/dist/esm/core/authService/storeRegistry.js +0 -102
- package/dist/esm/core/authService/thresholdStoreSummary.js +0 -32
- package/dist/esm/core/authService/webauthnAuthority.js +0 -17
- package/dist/esm/core/defaultConfigsServer.js +0 -9
- package/dist/esm/core/hostedAccountIds.js +0 -225
- package/dist/esm/core/routerAbSigning/createRouterAbSigningRuntimes.js +0 -84
- package/dist/esm/core/signingLanes/LaneAggregateRevocationApplicationService.js +0 -86
- package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +0 -324
- package/dist/esm/core/signingLanes/LaneEnrollmentRevocation.js +0 -173
- package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +0 -198
- package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +0 -73
- package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +0 -68
- package/dist/esm/core/signingLanes/signingWorkerLaneMaterialIdentity.js +0 -0
- package/dist/esm/core/storeBackends.js +0 -208
- package/dist/esm/core/utils.js +0 -14
- package/dist/esm/core/webAuthnStoreBackends.js +0 -198
- package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +0 -56
- package/dist/esm/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.js +0 -10
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.js +0 -22
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +0 -166
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.js +0 -38
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.js +0 -20
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +0 -1459
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLockStore.js +0 -114
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.js +0 -16
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +0 -171
- package/dist/esm/router/cloudflare/d1/signingLanes/index.js +0 -10
- package/dist/esm/router/cloudflare/durableObjects/thresholdStore.js +0 -404
- package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +0 -596
- package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +0 -273
- package/dist/esm/router/cloudflare/signingLanes/index.js +0 -4
- package/dist/esm/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.js +0 -32
- package/dist/esm/router/transport/fetch/routes/nearPublicKeys.js +0 -39
- package/dist/esm/shared-ts/src/signing-lanes/rotation.js +0 -8
- package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -358
- package/dist/esm/shared-ts/src/signing-lanes/rotationLifecycle.js +0 -313
- package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -532
- package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -323
- package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -59
- package/dist/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_worker_bg.wasm +0 -0
- package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
- package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
- package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
- package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
- package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
- package/dist/types/wallet-server/src/core/AuthService.d.ts +0 -3
- package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +0 -48
- package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +0 -21
- package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +0 -40
- package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +0 -98
- package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +0 -4
- package/dist/types/wallet-server/src/core/ThresholdService/stores/ThresholdStoreConfig.typecheck.d.ts +0 -2
- package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +0 -490
- package/dist/types/wallet-server/src/core/authService/bytes.d.ts +0 -4
- package/dist/types/wallet-server/src/core/authService/configValues.d.ts +0 -7
- package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +0 -109
- package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +0 -169
- package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +0 -47
- package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +0 -94
- package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +0 -66
- package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +0 -43
- package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +0 -49
- package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +0 -71
- package/dist/types/wallet-server/src/core/authService/googleEmailOtpOperations.d.ts +0 -126
- package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +0 -169
- package/dist/types/wallet-server/src/core/authService/identity.d.ts +0 -25
- package/dist/types/wallet-server/src/core/authService/identityOperations.d.ts +0 -19
- package/dist/types/wallet-server/src/core/authService/nearAccountOperations.d.ts +0 -55
- package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +0 -44
- package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +0 -66
- package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +0 -11
- package/dist/types/wallet-server/src/core/authService/runtime.d.ts +0 -20
- package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +0 -53
- package/dist/types/wallet-server/src/core/authService/thresholdStoreSummary.d.ts +0 -3
- package/dist/types/wallet-server/src/core/authService/webauthnAuthority.d.ts +0 -5
- package/dist/types/wallet-server/src/core/defaultConfigsServer.d.ts +0 -5
- package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +0 -16
- package/dist/types/wallet-server/src/core/routerAbSigning/createRouterAbSigningRuntimes.d.ts +0 -16
- package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +0 -36
- package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +0 -62
- package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentActivation.d.ts +0 -13
- package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentRevocation.d.ts +0 -24
- package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleApplicationService.d.ts +0 -141
- package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +0 -228
- package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +0 -58
- package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +0 -30
- package/dist/types/wallet-server/src/core/signingLanes/signingWorkerLaneMaterialIdentity.d.ts +0 -21
- package/dist/types/wallet-server/src/core/storeBackends.d.ts +0 -83
- package/dist/types/wallet-server/src/core/utils.d.ts +0 -3
- package/dist/types/wallet-server/src/core/webAuthnStoreBackends.d.ts +0 -96
- package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +0 -29
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.d.ts +0 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.d.ts +0 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +0 -24
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.d.ts +0 -20
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.d.ts +0 -13
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.d.ts +0 -51
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLockStore.d.ts +0 -28
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.d.ts +0 -5
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneRecords.d.ts +0 -107
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/index.d.ts +0 -10
- package/dist/types/wallet-server/src/router/cloudflare/durableObjects/thresholdStore.d.ts +0 -18
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.d.ts +0 -217
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.d.ts +0 -73
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/index.d.ts +0 -4
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.d.ts +0 -6
- package/dist/types/wallet-server/src/router/transport/fetch/routes/nearPublicKeys.d.ts +0 -3
- /package/dist/esm/{core/signingLanes/LaneEffectJournalStore.js → authorization/recoveryRouting.js} +0 -0
- /package/dist/esm/{core/signingLanes/LaneLifecycleStore.js → authorization/sessionRouting.js} +0 -0
|
@@ -3,7 +3,6 @@ import { base64UrlDecode, base64UrlEncode } from "../../../../shared-ts/src/util
|
|
|
3
3
|
import { alphabetizeStringify } from "../../../../shared-ts/src/utils/digests.js";
|
|
4
4
|
import "../../../../shared-ts/src/utils/encoders.js";
|
|
5
5
|
import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
|
|
6
|
-
import "../../../../shared-ts/src/utils/validation.js";
|
|
7
6
|
import { buildDelegatedWalletAuthorityV1, buildFullOwnerPermissionsV1, sameDelegatedWalletAuthorityV1 } from "../../../../shared-ts/src/authorization/delegatedAuthority.js";
|
|
8
7
|
import { parseWalletAddAuthMethodRegistrationOptions } from "../../../../shared-ts/src/utils/addAuthMethodRegistration.js";
|
|
9
8
|
import { normalizeRuntimePolicyScope } from "../../../../shared-ts/src/threshold/signingRootScope.js";
|
|
@@ -24,7 +23,7 @@ import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
|
|
|
24
23
|
import { d1HostIsWithinWebAuthnRpId, resolveD1AddAuthMethodExistingAuth, resolveD1AddSignerExistingAuth, verifyD1LinkedDeviceFreshRevokeProofV1, walletAuthAuthorityFromRegistrationAuthority } from "./d1WalletAuthMethodBoundary.js";
|
|
25
24
|
import { parseWalletIdForIntent } from "../registration/d1RegistrationCeremonyRecords.js";
|
|
26
25
|
import { runtimePolicyScopeKey } from "../../../../core/EmailOtpRecords.js";
|
|
27
|
-
import { expiredGoogleEmailOtpRegistrationAttemptRecord
|
|
26
|
+
import { expiredGoogleEmailOtpRegistrationAttemptRecord } from "../emailOtp/d1GoogleEmailOtpRegistrationRecords.js";
|
|
28
27
|
import { admitAddWalletAuthMethod } from "../../../../shared-ts/src/utils/addWalletAuthMethod.js";
|
|
29
28
|
import { computeWalletAuthMethodRevocationProofDigestV1 } from "./d1WalletAuthMethodRevocationReplayStore.js";
|
|
30
29
|
//#region src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.ts
|
|
@@ -864,7 +863,7 @@ var CloudflareD1WalletAuthMethodService = class {
|
|
|
864
863
|
deviceInfo: credential.device
|
|
865
864
|
}
|
|
866
865
|
}),
|
|
867
|
-
this.webAuthnStore.prepareCredentialBindingInsertStatement(binding),
|
|
866
|
+
await this.webAuthnStore.prepareCredentialBindingInsertStatement(binding),
|
|
868
867
|
...this.getWalletAuthMethodStore().prepareV2InsertStatements(authMethod),
|
|
869
868
|
...replayStatements,
|
|
870
869
|
...atomicCompanionStatements
|
|
@@ -1932,11 +1931,6 @@ var CloudflareD1WalletAuthMethodService = class {
|
|
|
1932
1931
|
code: "registration_candidate_mismatch",
|
|
1933
1932
|
message: "Google Email OTP registration candidate does not match walletId"
|
|
1934
1933
|
};
|
|
1935
|
-
if (attempt.walletId !== selectedOfferCandidate.walletId || attempt.selectedCandidateId !== selectedOfferCandidate.candidateId || attempt.collisionCounter !== selectedOfferCandidate.collisionCounter) await this.googleEmailOtpRegistrationAttempts.put(pendingGoogleEmailOtpRegistrationAttemptWithSelectedCandidate({
|
|
1936
|
-
record: attempt,
|
|
1937
|
-
candidate: selectedOfferCandidate,
|
|
1938
|
-
updatedAtMs: Date.now()
|
|
1939
|
-
}));
|
|
1940
1934
|
if (runtimePolicyScopeKey(attempt.runtimePolicyScope) !== runtimePolicyScopeKeyForRegistrationIntent(input.intent.runtimePolicyScope)) return {
|
|
1941
1935
|
ok: false,
|
|
1942
1936
|
code: "runtime_policy_scope_mismatch",
|
|
@@ -1961,6 +1955,13 @@ var CloudflareD1WalletAuthMethodService = class {
|
|
|
1961
1955
|
code: "duplicate_auth_method",
|
|
1962
1956
|
message: "Email OTP auth method is already registered"
|
|
1963
1957
|
};
|
|
1958
|
+
const claimed = await this.googleEmailOtpRegistrationAttempts.claimCandidate({
|
|
1959
|
+
attemptId: attempt.attemptId,
|
|
1960
|
+
candidateId: selectedOfferCandidate.candidateId,
|
|
1961
|
+
walletId: finalWalletId,
|
|
1962
|
+
intentDigest: input.expectedDigestB64u
|
|
1963
|
+
});
|
|
1964
|
+
if (!claimed.ok) return claimed;
|
|
1964
1965
|
return {
|
|
1965
1966
|
ok: true,
|
|
1966
1967
|
authority: {
|
|
@@ -5,136 +5,11 @@ import { parseDelegatedWalletPermissionSetV1 } from "../../../../shared-ts/src/a
|
|
|
5
5
|
import { parseWalletAuthMethodRecordV2 } from "../../../../shared-ts/src/utils/walletAuthMethodRecord.js";
|
|
6
6
|
import { buildRevokedWalletAuthorityV1, computeWalletAuthorityDigestB64u, parseWalletAuthorityV1, parseWalletSignerActivationSetV1, walletAuthorityDigestsMatchV1 } from "../../../../shared-ts/src/authorization/walletAuthority.js";
|
|
7
7
|
import { buildWalletSessionCapabilitySubjectsV1 } from "../../../../authorization/domain.js";
|
|
8
|
-
import { d1ChangedRows,
|
|
8
|
+
import { d1ChangedRows, parseD1JsonColumn } from "../../../../storage/d1Sql.js";
|
|
9
9
|
import { prepareD1WalletPutSignerStatement } from "../../../../core/d1WalletStore.js";
|
|
10
|
-
import {
|
|
10
|
+
import { prepareD1WalletAuthMethodV2PutStatement } from "../../../../core/d1WalletAuthMethodStore.js";
|
|
11
11
|
import { prepareD1WalletSessionAuthorityProjectionStatements } from "../authorization/walletSessionAuthorityProjection.js";
|
|
12
12
|
//#region src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.ts
|
|
13
|
-
const WALLET_AUTHORITY_STORE_D1_SCHEMA_SQL = Object.freeze([
|
|
14
|
-
`
|
|
15
|
-
CREATE TABLE IF NOT EXISTS wallet_authorities (
|
|
16
|
-
namespace TEXT NOT NULL,
|
|
17
|
-
org_id TEXT NOT NULL,
|
|
18
|
-
project_id TEXT NOT NULL,
|
|
19
|
-
env_id TEXT NOT NULL,
|
|
20
|
-
authority_id TEXT NOT NULL,
|
|
21
|
-
wallet_id TEXT NOT NULL,
|
|
22
|
-
device_id TEXT NOT NULL,
|
|
23
|
-
provenance_kind TEXT NOT NULL,
|
|
24
|
-
enrollment_id TEXT,
|
|
25
|
-
source_authority_id TEXT,
|
|
26
|
-
link_session_id TEXT,
|
|
27
|
-
recovery_operation_id TEXT,
|
|
28
|
-
continuity_authority_id TEXT,
|
|
29
|
-
lifecycle_state TEXT NOT NULL,
|
|
30
|
-
permissions_json TEXT NOT NULL,
|
|
31
|
-
signer_activations_json TEXT NOT NULL,
|
|
32
|
-
local_install_package_set_digest_b64u TEXT,
|
|
33
|
-
signer_activation_set_digest_b64u TEXT NOT NULL,
|
|
34
|
-
authority_digest_b64u TEXT NOT NULL,
|
|
35
|
-
revocation_epoch INTEGER NOT NULL,
|
|
36
|
-
record_json TEXT NOT NULL,
|
|
37
|
-
created_at_ms INTEGER NOT NULL,
|
|
38
|
-
updated_at_ms INTEGER NOT NULL,
|
|
39
|
-
activated_at_ms INTEGER,
|
|
40
|
-
revoked_at_ms INTEGER,
|
|
41
|
-
PRIMARY KEY (namespace, org_id, project_id, env_id, authority_id),
|
|
42
|
-
CHECK (length(authority_id) > 0),
|
|
43
|
-
CHECK (length(wallet_id) > 0),
|
|
44
|
-
CHECK (length(device_id) > 0),
|
|
45
|
-
CHECK (provenance_kind IN ('wallet_registration', 'device_link', 'wallet_recovery')),
|
|
46
|
-
CHECK (lifecycle_state IN ('pending_local_install', 'active', 'revoked')),
|
|
47
|
-
CHECK (length(permissions_json) > 0 AND json_valid(permissions_json)),
|
|
48
|
-
CHECK (length(signer_activations_json) > 0 AND json_valid(signer_activations_json)),
|
|
49
|
-
CHECK (length(record_json) > 0 AND json_valid(record_json)),
|
|
50
|
-
CHECK (length(signer_activation_set_digest_b64u) > 0),
|
|
51
|
-
CHECK (length(authority_digest_b64u) > 0),
|
|
52
|
-
CHECK (revocation_epoch >= 0),
|
|
53
|
-
CHECK (created_at_ms >= 0),
|
|
54
|
-
CHECK (updated_at_ms >= created_at_ms),
|
|
55
|
-
CHECK (
|
|
56
|
-
(provenance_kind = 'wallet_registration'
|
|
57
|
-
AND enrollment_id IS NULL
|
|
58
|
-
AND source_authority_id IS NULL
|
|
59
|
-
AND link_session_id IS NULL
|
|
60
|
-
AND recovery_operation_id IS NULL
|
|
61
|
-
AND continuity_authority_id IS NULL)
|
|
62
|
-
OR
|
|
63
|
-
(provenance_kind = 'device_link'
|
|
64
|
-
AND enrollment_id IS NOT NULL AND length(enrollment_id) > 0
|
|
65
|
-
AND source_authority_id IS NOT NULL AND length(source_authority_id) > 0
|
|
66
|
-
AND link_session_id IS NOT NULL AND length(link_session_id) > 0
|
|
67
|
-
AND recovery_operation_id IS NULL
|
|
68
|
-
AND continuity_authority_id IS NULL)
|
|
69
|
-
OR
|
|
70
|
-
(provenance_kind = 'wallet_recovery'
|
|
71
|
-
AND enrollment_id IS NULL
|
|
72
|
-
AND source_authority_id IS NULL
|
|
73
|
-
AND link_session_id IS NULL
|
|
74
|
-
AND recovery_operation_id IS NOT NULL
|
|
75
|
-
AND length(recovery_operation_id) > 0
|
|
76
|
-
AND continuity_authority_id IS NOT NULL
|
|
77
|
-
AND length(continuity_authority_id) > 0)
|
|
78
|
-
),
|
|
79
|
-
CHECK (
|
|
80
|
-
(lifecycle_state = 'pending_local_install'
|
|
81
|
-
AND local_install_package_set_digest_b64u IS NOT NULL
|
|
82
|
-
AND length(local_install_package_set_digest_b64u) > 0
|
|
83
|
-
AND activated_at_ms IS NULL
|
|
84
|
-
AND revoked_at_ms IS NULL
|
|
85
|
-
AND revocation_epoch = 0)
|
|
86
|
-
OR
|
|
87
|
-
(lifecycle_state = 'active'
|
|
88
|
-
AND local_install_package_set_digest_b64u IS NULL
|
|
89
|
-
AND activated_at_ms IS NOT NULL
|
|
90
|
-
AND revoked_at_ms IS NULL)
|
|
91
|
-
OR
|
|
92
|
-
(lifecycle_state = 'revoked'
|
|
93
|
-
AND local_install_package_set_digest_b64u IS NULL
|
|
94
|
-
AND activated_at_ms IS NOT NULL
|
|
95
|
-
AND revoked_at_ms IS NOT NULL)
|
|
96
|
-
),
|
|
97
|
-
CHECK (json_extract(record_json, '$.authorityId') = authority_id),
|
|
98
|
-
CHECK (json_extract(record_json, '$.walletId') = wallet_id),
|
|
99
|
-
CHECK (json_extract(record_json, '$.state') = lifecycle_state),
|
|
100
|
-
CHECK (json_extract(record_json, '$.revocationEpoch') = revocation_epoch),
|
|
101
|
-
CHECK (json_extract(record_json, '$.authorityDigestB64u') = authority_digest_b64u),
|
|
102
|
-
CHECK (
|
|
103
|
-
json_extract(record_json, '$.signerActivationSetDigestB64u')
|
|
104
|
-
= signer_activation_set_digest_b64u
|
|
105
|
-
)
|
|
106
|
-
)
|
|
107
|
-
`,
|
|
108
|
-
`
|
|
109
|
-
CREATE UNIQUE INDEX IF NOT EXISTS wallet_authorities_active_device_uidx
|
|
110
|
-
ON wallet_authorities (
|
|
111
|
-
namespace, org_id, project_id, env_id, wallet_id, device_id
|
|
112
|
-
)
|
|
113
|
-
WHERE lifecycle_state <> 'revoked'
|
|
114
|
-
`,
|
|
115
|
-
`
|
|
116
|
-
CREATE UNIQUE INDEX IF NOT EXISTS wallet_authorities_enrollment_uidx
|
|
117
|
-
ON wallet_authorities (
|
|
118
|
-
namespace, org_id, project_id, env_id, wallet_id, enrollment_id
|
|
119
|
-
)
|
|
120
|
-
WHERE enrollment_id IS NOT NULL
|
|
121
|
-
`,
|
|
122
|
-
`
|
|
123
|
-
CREATE INDEX IF NOT EXISTS wallet_authorities_inventory_idx
|
|
124
|
-
ON wallet_authorities (
|
|
125
|
-
namespace, org_id, project_id, env_id, wallet_id, lifecycle_state,
|
|
126
|
-
updated_at_ms, authority_id
|
|
127
|
-
)
|
|
128
|
-
`,
|
|
129
|
-
`
|
|
130
|
-
CREATE TABLE IF NOT EXISTS wallet_authority_cas_guard (
|
|
131
|
-
guard_id INTEGER PRIMARY KEY CHECK (guard_id = 1)
|
|
132
|
-
)
|
|
133
|
-
`,
|
|
134
|
-
`
|
|
135
|
-
INSERT OR IGNORE INTO wallet_authority_cas_guard (guard_id) VALUES (1)
|
|
136
|
-
`
|
|
137
|
-
]);
|
|
138
13
|
function normalizeScope(input) {
|
|
139
14
|
return {
|
|
140
15
|
namespace: requireScopeString(input.namespace, "namespace"),
|
|
@@ -385,7 +260,6 @@ var WalletAuthorityCommitConflictError = class extends Error {
|
|
|
385
260
|
};
|
|
386
261
|
var D1WalletAuthorityStore = class {
|
|
387
262
|
constructor(input) {
|
|
388
|
-
this.schemaReady = false;
|
|
389
263
|
this.database = input.database;
|
|
390
264
|
this.scope = normalizeScope(input.scope ?? {
|
|
391
265
|
namespace: input.namespace ?? "",
|
|
@@ -393,13 +267,6 @@ var D1WalletAuthorityStore = class {
|
|
|
393
267
|
projectId: input.projectId ?? "",
|
|
394
268
|
envId: input.envId ?? ""
|
|
395
269
|
});
|
|
396
|
-
this.ensureSchemaOnUse = input.ensureSchema !== false;
|
|
397
|
-
}
|
|
398
|
-
async ensureSchema() {
|
|
399
|
-
if (!this.ensureSchemaOnUse || this.schemaReady) return;
|
|
400
|
-
for (const statement of WALLET_AUTHORITY_STORE_D1_SCHEMA_SQL) await this.database.exec(formatD1ExecStatement(statement));
|
|
401
|
-
await ensureWalletAuthMethodStoreD1SchemaV2({ database: this.database });
|
|
402
|
-
this.schemaReady = true;
|
|
403
270
|
}
|
|
404
271
|
/**
|
|
405
272
|
* Commits an added signer: its signer records, the authority extended with
|
|
@@ -409,7 +276,6 @@ var D1WalletAuthorityStore = class {
|
|
|
409
276
|
* credentials and deletes its unredeemed hosted exchange codes.
|
|
410
277
|
*/
|
|
411
278
|
async extendActiveAuthority(input) {
|
|
412
|
-
await this.ensureSchema();
|
|
413
279
|
const statements = [
|
|
414
280
|
...input.walletSigners.map((record) => prepareD1WalletPutSignerStatement({
|
|
415
281
|
database: this.database,
|
|
@@ -447,7 +313,6 @@ var D1WalletAuthorityStore = class {
|
|
|
447
313
|
if (results.length !== statements.length || results.some((result) => !result.success)) throw new Error("D1 wallet authority extension returned an incomplete batch result");
|
|
448
314
|
}
|
|
449
315
|
async readById(authorityId) {
|
|
450
|
-
await this.ensureSchema();
|
|
451
316
|
const row = await this.database.prepare(`SELECT *
|
|
452
317
|
FROM wallet_authorities
|
|
453
318
|
WHERE namespace = ? AND org_id = ? AND project_id = ? AND env_id = ?
|
|
@@ -457,7 +322,6 @@ var D1WalletAuthorityStore = class {
|
|
|
457
322
|
return await parseD1WalletAuthorityRow(row);
|
|
458
323
|
}
|
|
459
324
|
async readByWalletAndDevice(input) {
|
|
460
|
-
await this.ensureSchema();
|
|
461
325
|
const row = await this.database.prepare(`SELECT *
|
|
462
326
|
FROM wallet_authorities
|
|
463
327
|
WHERE namespace = ? AND org_id = ? AND project_id = ? AND env_id = ?
|
|
@@ -476,7 +340,6 @@ var D1WalletAuthorityStore = class {
|
|
|
476
340
|
* link-session CAS, keeping the pending transition one atomic batch.
|
|
477
341
|
*/
|
|
478
342
|
async commitPendingAuthorityWithStatements(input, additionalStatements) {
|
|
479
|
-
await this.ensureSchema();
|
|
480
343
|
assertPendingCommitInput(input);
|
|
481
344
|
if (!await walletAuthorityDigestsMatchV1(input.authority)) throw new Error("pending wallet authority digest does not match its canonical record");
|
|
482
345
|
const existing = await this.readById(input.authority.authorityId);
|
|
@@ -539,7 +402,6 @@ var D1WalletAuthorityStore = class {
|
|
|
539
402
|
* same transaction as authority and auth-method visibility.
|
|
540
403
|
*/
|
|
541
404
|
async activatePendingAuthorityWithStatements(input, additionalStatements) {
|
|
542
|
-
await this.ensureSchema();
|
|
543
405
|
assertActivationInput(input);
|
|
544
406
|
if (!await walletAuthorityDigestsMatchV1(input.pendingAuthority)) return {
|
|
545
407
|
kind: "conflict",
|
|
@@ -617,7 +479,6 @@ var D1WalletAuthorityStore = class {
|
|
|
617
479
|
};
|
|
618
480
|
}
|
|
619
481
|
async listForWallet(input) {
|
|
620
|
-
await this.ensureSchema();
|
|
621
482
|
if (!Number.isSafeInteger(input.limit) || input.limit < 1 || input.limit > 1e3) throw new Error("wallet authority page limit is invalid");
|
|
622
483
|
const state = input.lifecycleState ?? "";
|
|
623
484
|
const cursorTime = input.cursor?.updatedAtMs ?? 0;
|
|
@@ -645,7 +506,6 @@ var D1WalletAuthorityStore = class {
|
|
|
645
506
|
};
|
|
646
507
|
}
|
|
647
508
|
async revokeWalletAuthMethod(input) {
|
|
648
|
-
await this.ensureSchema();
|
|
649
509
|
const expectedEpoch = requireNonNegativeInteger(input.expectedAuthorityRevocationEpoch, "expected authority revocation epoch");
|
|
650
510
|
const requestedAtMs = requireNonNegativeInteger(input.requestedAtMs, "requestedAtMs");
|
|
651
511
|
const activeCountRow = await this.database.prepare(`SELECT COUNT(*) AS count
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { parseWebAuthnRpId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
2
|
import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
|
|
3
3
|
import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
|
|
4
|
-
import "../../../../
|
|
4
|
+
import { WalletLifecycleLocator } from "../../../../authorization/lifecycleRouting.js";
|
|
5
5
|
import { secureRandomBase64Url } from "../../../../shared-ts/src/utils/secureRandomId.js";
|
|
6
|
+
import { failedVerification, failure } from "../../../../shared-ts/src/utils/failure.js";
|
|
6
7
|
import { decodeWebAuthnBase64UrlOrBase64, parseWebAuthnAuthenticationCredential, parseWebAuthnClientDataJsonBase64url, webAuthnCredentialIdB64uFromCredential, webAuthnOriginHostnameOrEmpty } from "../../../auth/webAuthnCredentialCodecs.js";
|
|
7
8
|
import { nonNegativeSafeInteger, optionalNonNegativeInteger, parseD1BoundaryWalletId, parseD1BoundaryWalletIdResult, parseJsonObject } from "../auth/d1RouterApiAuthBoundary.js";
|
|
8
9
|
import { parseWebAuthnAuthenticatorRowDeviceInfo, webAuthnSyncWalletBindingFromCredentialBinding } from "./d1WebAuthnRecords.js";
|
|
@@ -14,6 +15,7 @@ function errorMessage(error) {
|
|
|
14
15
|
}
|
|
15
16
|
var CloudflareD1WebAuthnAuthService = class {
|
|
16
17
|
constructor(input) {
|
|
18
|
+
this.lifecycleRouting = input.lifecycleRouting;
|
|
17
19
|
this.webAuthnStore = input.webAuthnStore;
|
|
18
20
|
this.walletManifestSource = input.walletManifestSource;
|
|
19
21
|
this.walletAuthMethodStore = input.walletAuthMethodStore;
|
|
@@ -21,11 +23,7 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
21
23
|
async listWebAuthnAuthenticatorsForUser(input) {
|
|
22
24
|
try {
|
|
23
25
|
const userId = parseD1BoundaryWalletIdResult(input.userId);
|
|
24
|
-
if (!userId.ok) return
|
|
25
|
-
ok: false,
|
|
26
|
-
code: "invalid_args",
|
|
27
|
-
message: userId.code === "missing" ? "Missing userId" : "Invalid userId"
|
|
28
|
-
};
|
|
26
|
+
if (!userId.ok) return failure("invalid_args", userId.code === "missing" ? "Missing userId" : "Invalid userId");
|
|
29
27
|
const rpId = normalizeOptionalTrimmedString(input.rpId);
|
|
30
28
|
const authRows = await this.webAuthnStore.readAuthenticatorRows(userId.value);
|
|
31
29
|
const bindings = await this.webAuthnStore.readBindingRows({
|
|
@@ -55,27 +53,15 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
55
53
|
authenticators
|
|
56
54
|
};
|
|
57
55
|
} catch (error) {
|
|
58
|
-
return
|
|
59
|
-
ok: false,
|
|
60
|
-
code: "internal",
|
|
61
|
-
message: errorMessage(error) || "Failed to list authenticators"
|
|
62
|
-
};
|
|
56
|
+
return failure("internal", errorMessage(error) || "Failed to list authenticators");
|
|
63
57
|
}
|
|
64
58
|
}
|
|
65
59
|
async createWebAuthnLoginOptions(input) {
|
|
66
60
|
try {
|
|
67
61
|
const userId = parseD1BoundaryWalletIdResult(input.userId ?? input.user_id);
|
|
68
62
|
const rpId = normalizeOptionalTrimmedString(input.rpId ?? input.rp_id);
|
|
69
|
-
if (!userId.ok) return
|
|
70
|
-
|
|
71
|
-
code: "invalid_body",
|
|
72
|
-
message: userId.code === "missing" ? "Missing userId" : "Invalid userId"
|
|
73
|
-
};
|
|
74
|
-
if (!rpId) return {
|
|
75
|
-
ok: false,
|
|
76
|
-
code: "invalid_body",
|
|
77
|
-
message: "Missing rpId"
|
|
78
|
-
};
|
|
63
|
+
if (!userId.ok) return failure("invalid_body", userId.code === "missing" ? "Missing userId" : "Invalid userId");
|
|
64
|
+
if (!rpId) return failure("invalid_body", "Missing rpId");
|
|
79
65
|
const createdAtMs = Date.now();
|
|
80
66
|
const expiresAtMs = createdAtMs + webAuthnLoginChallengeTtlMs(input.ttlMs ?? input.ttl_ms);
|
|
81
67
|
const challengeId = secureRandomBase64Url(16, "WebAuthn login challenge id");
|
|
@@ -96,11 +82,7 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
96
82
|
seenCredentialIds.add(credentialId);
|
|
97
83
|
credentialIds.push(credentialId);
|
|
98
84
|
}
|
|
99
|
-
if (credentialIds.length === 0) return
|
|
100
|
-
ok: false,
|
|
101
|
-
code: "unknown_credential",
|
|
102
|
-
message: "Wallet has no registered passkey credential"
|
|
103
|
-
};
|
|
85
|
+
if (credentialIds.length === 0) return failure("unknown_credential", "Wallet has no registered passkey credential");
|
|
104
86
|
const record = {
|
|
105
87
|
version: "webauthn_login_challenge_v1",
|
|
106
88
|
challengeId,
|
|
@@ -110,6 +92,8 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
110
92
|
createdAtMs,
|
|
111
93
|
expiresAtMs
|
|
112
94
|
};
|
|
95
|
+
const publication = await publishPasskeyChallengeHome(this.lifecycleRouting, userId.value, challengeId);
|
|
96
|
+
if (!publication.ok) return publication;
|
|
113
97
|
await this.webAuthnStore.writeChallenge({
|
|
114
98
|
challengeId,
|
|
115
99
|
challengeKind: "login",
|
|
@@ -125,28 +109,16 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
125
109
|
expiresAtMs
|
|
126
110
|
};
|
|
127
111
|
} catch (error) {
|
|
128
|
-
return
|
|
129
|
-
ok: false,
|
|
130
|
-
code: "internal",
|
|
131
|
-
message: errorMessage(error) || "Failed to create login options"
|
|
132
|
-
};
|
|
112
|
+
return failure("internal", errorMessage(error) || "Failed to create login options");
|
|
133
113
|
}
|
|
134
114
|
}
|
|
135
115
|
async createWebAuthnSyncAccountOptions(input) {
|
|
136
116
|
try {
|
|
137
117
|
const rpId = normalizeOptionalTrimmedString(input.rp_id);
|
|
138
|
-
if (!rpId) return
|
|
139
|
-
ok: false,
|
|
140
|
-
code: "invalid_body",
|
|
141
|
-
message: "Missing rp_id"
|
|
142
|
-
};
|
|
118
|
+
if (!rpId) return failure("invalid_body", "Missing rp_id");
|
|
143
119
|
const expectedUserIdRaw = normalizeOptionalTrimmedString(input.account_id);
|
|
144
120
|
const expectedUserId = expectedUserIdRaw ? parseD1BoundaryWalletId(expectedUserIdRaw) : null;
|
|
145
|
-
if (expectedUserIdRaw && !expectedUserId) return
|
|
146
|
-
ok: false,
|
|
147
|
-
code: "invalid_body",
|
|
148
|
-
message: "Invalid wallet account_id"
|
|
149
|
-
};
|
|
121
|
+
if (expectedUserIdRaw && !expectedUserId) return failure("invalid_body", "Invalid wallet account_id");
|
|
150
122
|
const createdAtMs = Date.now();
|
|
151
123
|
const expiresAtMs = createdAtMs + webAuthnLoginChallengeTtlMs(input.ttlMs ?? input.ttl_ms);
|
|
152
124
|
const challengeId = secureRandomBase64Url(16, "WebAuthn sync challenge id");
|
|
@@ -172,11 +144,7 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
172
144
|
}
|
|
173
145
|
if (credentialId && activeCredentialIds.has(credentialId) && !walletBinding) walletBinding = webAuthnSyncWalletBindingFromCredentialBinding(binding) || void 0;
|
|
174
146
|
}
|
|
175
|
-
if (credentialIds.length === 0) return
|
|
176
|
-
ok: false,
|
|
177
|
-
code: "unknown_credential",
|
|
178
|
-
message: "Wallet has no registered active passkey credential"
|
|
179
|
-
};
|
|
147
|
+
if (credentialIds.length === 0) return failure("unknown_credential", "Wallet has no registered active passkey credential");
|
|
180
148
|
}
|
|
181
149
|
const record = {
|
|
182
150
|
version: "webauthn_sync_challenge_v1",
|
|
@@ -187,13 +155,14 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
187
155
|
createdAtMs,
|
|
188
156
|
expiresAtMs
|
|
189
157
|
};
|
|
190
|
-
await this.webAuthnStore.writeChallenge({
|
|
158
|
+
const stored = await this.webAuthnStore.writeChallenge({
|
|
191
159
|
challengeId,
|
|
192
160
|
challengeKind: "sync",
|
|
193
161
|
record,
|
|
194
162
|
createdAtMs,
|
|
195
163
|
expiresAtMs
|
|
196
164
|
});
|
|
165
|
+
if (!stored.ok) return stored;
|
|
197
166
|
return {
|
|
198
167
|
ok: true,
|
|
199
168
|
challengeId,
|
|
@@ -203,11 +172,7 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
203
172
|
expiresAtMs
|
|
204
173
|
};
|
|
205
174
|
} catch (error) {
|
|
206
|
-
return
|
|
207
|
-
ok: false,
|
|
208
|
-
code: "internal",
|
|
209
|
-
message: errorMessage(error) || "Failed to create sync account options"
|
|
210
|
-
};
|
|
175
|
+
return failure("internal", errorMessage(error) || "Failed to create sync account options");
|
|
211
176
|
}
|
|
212
177
|
}
|
|
213
178
|
async verifyWebAuthnAuthenticationLite(input) {
|
|
@@ -349,56 +314,22 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
349
314
|
async verifyWebAuthnLogin(input) {
|
|
350
315
|
try {
|
|
351
316
|
const challengeId = normalizeOptionalTrimmedString(input.challengeId ?? input.challenge_id);
|
|
352
|
-
if (!challengeId) return
|
|
353
|
-
ok: false,
|
|
354
|
-
code: "invalid_body",
|
|
355
|
-
message: "Missing challengeId"
|
|
356
|
-
};
|
|
317
|
+
if (!challengeId) return failure("invalid_body", "Missing challengeId");
|
|
357
318
|
const challenge = await this.webAuthnStore.consumeLoginChallenge(challengeId);
|
|
358
|
-
if (!challenge) return
|
|
359
|
-
ok: false,
|
|
360
|
-
verified: false,
|
|
361
|
-
code: "challenge_expired_or_invalid",
|
|
362
|
-
message: "Login challenge expired or invalid"
|
|
363
|
-
};
|
|
319
|
+
if (!challenge) return failedVerification("challenge_expired_or_invalid", "Login challenge expired or invalid");
|
|
364
320
|
const expectedOrigin = normalizeOptionalTrimmedString(input.expected_origin);
|
|
365
|
-
if (!expectedOrigin) return
|
|
366
|
-
ok: false,
|
|
367
|
-
verified: false,
|
|
368
|
-
code: "invalid_body",
|
|
369
|
-
message: "expected_origin is required for WebAuthn authentication verification"
|
|
370
|
-
};
|
|
321
|
+
if (!expectedOrigin) return failedVerification("invalid_body", "expected_origin is required for WebAuthn authentication verification");
|
|
371
322
|
const rpId = parseWebAuthnRpId(challenge.rpId);
|
|
372
|
-
if (!rpId.ok) return {
|
|
373
|
-
ok: false,
|
|
374
|
-
verified: false,
|
|
375
|
-
code: "internal",
|
|
376
|
-
message: `Stored login challenge rpId is invalid: ${rpId.error.message}`
|
|
377
|
-
};
|
|
323
|
+
if (!rpId.ok) return failedVerification("internal", `Stored login challenge rpId is invalid: ${rpId.error.message}`);
|
|
378
324
|
const credential = parseWebAuthnAuthenticationCredential(input.webauthn_authentication);
|
|
379
|
-
if (!credential) return
|
|
380
|
-
ok: false,
|
|
381
|
-
verified: false,
|
|
382
|
-
code: "invalid_body",
|
|
383
|
-
message: "Missing webauthn_authentication"
|
|
384
|
-
};
|
|
325
|
+
if (!credential) return failedVerification("invalid_body", "Missing webauthn_authentication");
|
|
385
326
|
const credentialId = webAuthnCredentialIdB64uFromCredential(credential);
|
|
386
|
-
if (!credentialId.ok) return
|
|
387
|
-
ok: false,
|
|
388
|
-
verified: false,
|
|
389
|
-
code: credentialId.code,
|
|
390
|
-
message: credentialId.message
|
|
391
|
-
};
|
|
327
|
+
if (!credentialId.ok) return failedVerification(credentialId.code, credentialId.message);
|
|
392
328
|
const activeMethod = await this.walletAuthMethodStore.getPasskeyV2({
|
|
393
329
|
rpId: challenge.rpId,
|
|
394
330
|
credentialIdB64u: credentialId.credentialIdB64u
|
|
395
331
|
});
|
|
396
|
-
if (!activeMethod || activeMethod.kind !== "passkey" || activeMethod.status !== "active" || String(activeMethod.walletId) !== String(challenge.userId) || String(activeMethod.rpId) !== String(challenge.rpId) || String(activeMethod.credentialIdB64u) !== String(credentialId.credentialIdB64u)) return
|
|
397
|
-
ok: false,
|
|
398
|
-
verified: false,
|
|
399
|
-
code: "unknown_credential",
|
|
400
|
-
message: "Credential is not active for this wallet"
|
|
401
|
-
};
|
|
332
|
+
if (!activeMethod || activeMethod.kind !== "passkey" || activeMethod.status !== "active" || String(activeMethod.walletId) !== String(challenge.userId) || String(activeMethod.rpId) !== String(challenge.rpId) || String(activeMethod.credentialIdB64u) !== String(credentialId.credentialIdB64u)) return failedVerification("unknown_credential", "Credential is not active for this wallet");
|
|
402
333
|
const verificationFailure = webAuthnAuthenticationFailure(await this.verifyWebAuthnAuthenticationLite({
|
|
403
334
|
userId: challenge.userId,
|
|
404
335
|
rpId: rpId.value,
|
|
@@ -424,43 +355,21 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
424
355
|
ed25519: loginSigner.ed25519
|
|
425
356
|
};
|
|
426
357
|
} catch (error) {
|
|
427
|
-
return
|
|
428
|
-
ok: false,
|
|
429
|
-
verified: false,
|
|
430
|
-
code: "internal",
|
|
431
|
-
message: errorMessage(error) || "Login verification failed"
|
|
432
|
-
};
|
|
358
|
+
return failedVerification("internal", errorMessage(error) || "Login verification failed");
|
|
433
359
|
}
|
|
434
360
|
}
|
|
435
361
|
async verifyWebAuthnSyncAccount(input) {
|
|
436
362
|
try {
|
|
437
363
|
const challengeId = normalizeOptionalTrimmedString(input.challengeId ?? input.challenge_id);
|
|
438
|
-
if (!challengeId) return
|
|
439
|
-
ok: false,
|
|
440
|
-
code: "invalid_body",
|
|
441
|
-
message: "Missing challengeId"
|
|
442
|
-
};
|
|
443
|
-
const challenge = await this.webAuthnStore.consumeSyncChallenge(challengeId);
|
|
444
|
-
if (!challenge) return {
|
|
445
|
-
ok: false,
|
|
446
|
-
verified: false,
|
|
447
|
-
code: "challenge_expired_or_invalid",
|
|
448
|
-
message: "Sync challenge expired or invalid"
|
|
449
|
-
};
|
|
364
|
+
if (!challengeId) return failure("invalid_body", "Missing challengeId");
|
|
450
365
|
const credential = parseWebAuthnAuthenticationCredential(input.webauthn_authentication);
|
|
451
|
-
if (!credential) return
|
|
452
|
-
ok: false,
|
|
453
|
-
verified: false,
|
|
454
|
-
code: "invalid_body",
|
|
455
|
-
message: "Missing webauthn_authentication"
|
|
456
|
-
};
|
|
366
|
+
if (!credential) return failedVerification("invalid_body", "Missing webauthn_authentication");
|
|
457
367
|
const credentialId = webAuthnCredentialIdB64uFromCredential(credential);
|
|
458
|
-
if (!credentialId.ok) return
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
};
|
|
368
|
+
if (!credentialId.ok) return failedVerification(credentialId.code, credentialId.message);
|
|
369
|
+
const consumed = await this.webAuthnStore.consumeSyncChallenge(challengeId, credentialId.credentialIdB64u);
|
|
370
|
+
if (!consumed.ok) return failedVerification(consumed.code, consumed.message);
|
|
371
|
+
const challenge = consumed.record;
|
|
372
|
+
if (!challenge) return failedVerification("challenge_expired_or_invalid", "Sync challenge expired or invalid");
|
|
464
373
|
const syncBinding = webAuthnSyncCredentialBinding(await this.webAuthnStore.readBindingByCredential({
|
|
465
374
|
rpId: challenge.rpId,
|
|
466
375
|
credentialIdB64u: credentialId.credentialIdB64u
|
|
@@ -471,26 +380,11 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
471
380
|
rpId: challenge.rpId,
|
|
472
381
|
credentialIdB64u: credentialId.credentialIdB64u
|
|
473
382
|
});
|
|
474
|
-
if (!activeMethod || activeMethod.kind !== "passkey" || activeMethod.status !== "active" || String(activeMethod.walletId) !== String(binding.userId) || String(activeMethod.rpId) !== String(challenge.rpId) || String(activeMethod.credentialIdB64u) !== String(credentialId.credentialIdB64u)) return
|
|
475
|
-
ok: false,
|
|
476
|
-
verified: false,
|
|
477
|
-
code: "unknown_credential",
|
|
478
|
-
message: "Credential is not active for this wallet"
|
|
479
|
-
};
|
|
383
|
+
if (!activeMethod || activeMethod.kind !== "passkey" || activeMethod.status !== "active" || String(activeMethod.walletId) !== String(binding.userId) || String(activeMethod.rpId) !== String(challenge.rpId) || String(activeMethod.credentialIdB64u) !== String(credentialId.credentialIdB64u)) return failedVerification("unknown_credential", "Credential is not active for this wallet");
|
|
480
384
|
const expectedOrigin = normalizeOptionalTrimmedString(input.expected_origin);
|
|
481
|
-
if (!expectedOrigin) return
|
|
482
|
-
ok: false,
|
|
483
|
-
verified: false,
|
|
484
|
-
code: "invalid_body",
|
|
485
|
-
message: "expected_origin is required for WebAuthn authentication verification"
|
|
486
|
-
};
|
|
385
|
+
if (!expectedOrigin) return failedVerification("invalid_body", "expected_origin is required for WebAuthn authentication verification");
|
|
487
386
|
const rpId = parseWebAuthnRpId(binding.rpId);
|
|
488
|
-
if (!rpId.ok) return {
|
|
489
|
-
ok: false,
|
|
490
|
-
verified: false,
|
|
491
|
-
code: "internal",
|
|
492
|
-
message: `Stored sync credential binding rpId is invalid: ${rpId.error.message}`
|
|
493
|
-
};
|
|
387
|
+
if (!rpId.ok) return failedVerification("internal", `Stored sync credential binding rpId is invalid: ${rpId.error.message}`);
|
|
494
388
|
const verificationFailure = webAuthnAuthenticationFailure(await this.verifyWebAuthnAuthenticationLite({
|
|
495
389
|
userId: binding.userId,
|
|
496
390
|
rpId: rpId.value,
|
|
@@ -503,36 +397,16 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
503
397
|
userId: binding.userId,
|
|
504
398
|
credentialIdB64u: credentialId.credentialIdB64u
|
|
505
399
|
});
|
|
506
|
-
if (!authenticator) return
|
|
507
|
-
ok: false,
|
|
508
|
-
verified: false,
|
|
509
|
-
code: "unknown_credential",
|
|
510
|
-
message: "Credential is not registered for user"
|
|
511
|
-
};
|
|
400
|
+
if (!authenticator) return failedVerification("unknown_credential", "Credential is not registered for user");
|
|
512
401
|
const walletBinding = webAuthnSyncWalletBindingFromCredentialBinding(binding);
|
|
513
|
-
if (!walletBinding) return
|
|
514
|
-
ok: false,
|
|
515
|
-
verified: false,
|
|
516
|
-
code: "internal",
|
|
517
|
-
message: "Credential binding is missing wallet identity fields"
|
|
518
|
-
};
|
|
402
|
+
if (!walletBinding) return failedVerification("internal", "Credential binding is missing wallet identity fields");
|
|
519
403
|
const walletId = parseD1BoundaryWalletId(walletBinding.walletId);
|
|
520
|
-
if (!walletId) return
|
|
521
|
-
ok: false,
|
|
522
|
-
verified: false,
|
|
523
|
-
code: "internal",
|
|
524
|
-
message: "Credential binding contains an invalid wallet ID"
|
|
525
|
-
};
|
|
404
|
+
if (!walletId) return failedVerification("internal", "Credential binding contains an invalid wallet ID");
|
|
526
405
|
const ed25519Manifest = await this.walletManifestSource.getEd25519KeyManifestBySlot({
|
|
527
406
|
walletId,
|
|
528
407
|
signerSlot: walletBinding.signerSlot
|
|
529
408
|
});
|
|
530
|
-
if (!ed25519Manifest) return
|
|
531
|
-
ok: false,
|
|
532
|
-
verified: false,
|
|
533
|
-
code: "ed25519_not_provisioned",
|
|
534
|
-
message: "Wallet has no Ed25519 signer yet; NEAR provisioning has not completed"
|
|
535
|
-
};
|
|
409
|
+
if (!ed25519Manifest) return failedVerification("ed25519_not_provisioned", "Wallet has no Ed25519 signer yet; NEAR provisioning has not completed");
|
|
536
410
|
const thresholdEd25519 = binding.relayerKeyId && binding.publicKey ? {
|
|
537
411
|
relayerKeyId: binding.relayerKeyId,
|
|
538
412
|
authorityScope: {
|
|
@@ -566,12 +440,7 @@ var CloudflareD1WebAuthnAuthService = class {
|
|
|
566
440
|
...thresholdEd25519 ? { thresholdEd25519 } : {}
|
|
567
441
|
};
|
|
568
442
|
} catch (error) {
|
|
569
|
-
return
|
|
570
|
-
ok: false,
|
|
571
|
-
verified: false,
|
|
572
|
-
code: "internal",
|
|
573
|
-
message: errorMessage(error) || "Sync verification failed"
|
|
574
|
-
};
|
|
443
|
+
return failedVerification("internal", errorMessage(error) || "Sync verification failed");
|
|
575
444
|
}
|
|
576
445
|
}
|
|
577
446
|
};
|
|
@@ -594,6 +463,21 @@ function webAuthnLoginChallengeTtlMs(input) {
|
|
|
594
463
|
function compareAuthenticatorSlots(left, right) {
|
|
595
464
|
return (Number(left.signerSlot || 0) || 0) - (Number(right.signerSlot || 0) || 0);
|
|
596
465
|
}
|
|
466
|
+
async function publishPasskeyChallengeHome(publisher, walletId, challengeId) {
|
|
467
|
+
if (!publisher) return { ok: true };
|
|
468
|
+
try {
|
|
469
|
+
if (!(await publisher.publishLifecycle({
|
|
470
|
+
walletId,
|
|
471
|
+
locator: WalletLifecycleLocator.parse({
|
|
472
|
+
kind: "passkey_challenge",
|
|
473
|
+
value: challengeId
|
|
474
|
+
})
|
|
475
|
+
})).ok) return failure("wallet_home_conflict", "Passkey challenge home conflicts");
|
|
476
|
+
return { ok: true };
|
|
477
|
+
} catch {
|
|
478
|
+
return failure("wallet_home_unavailable", "Passkey challenge home is unavailable");
|
|
479
|
+
}
|
|
480
|
+
}
|
|
597
481
|
//#endregion
|
|
598
482
|
export { CloudflareD1WebAuthnAuthService };
|
|
599
483
|
|