@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
|
@@ -2,9 +2,10 @@ import { base64UrlDecode, base64UrlEncode } from "../../../shared-ts/src/utils/b
|
|
|
2
2
|
import "../../../shared-ts/src/utils/encoders.js";
|
|
3
3
|
import { normalizeOptionalTrimmedString } from "../../../shared-ts/src/utils/normalize.js";
|
|
4
4
|
import { isPlainObject } from "../../../shared-ts/src/utils/validation.js";
|
|
5
|
+
import { failure } from "../../../shared-ts/src/utils/failure.js";
|
|
5
6
|
import { emailOtpStatusCode } from "./emailOtpSessionRouteHelpers.js";
|
|
7
|
+
import { EMAIL_OTP_FACTOR_RELEASE_AAD_DOMAIN_V1 } from "../../../shared-ts/src/utils/emailOtpDomain.js";
|
|
6
8
|
//#region src/router/domains/emailOtp/emailOtpRouteHandlers.ts
|
|
7
|
-
const EMAIL_OTP_FACTOR_RELEASE_AAD_DOMAIN = "seams/email-otp/factor-release/v1";
|
|
8
9
|
function decodeEmailOtpFactorSecret32(value) {
|
|
9
10
|
const magnitude = base64UrlDecode(value);
|
|
10
11
|
if (magnitude.length === 0 || magnitude.length > 32) {
|
|
@@ -18,7 +19,7 @@ function decodeEmailOtpFactorSecret32(value) {
|
|
|
18
19
|
}
|
|
19
20
|
function emailOtpFactorReleaseAad(input) {
|
|
20
21
|
return new TextEncoder().encode([
|
|
21
|
-
|
|
22
|
+
EMAIL_OTP_FACTOR_RELEASE_AAD_DOMAIN_V1,
|
|
22
23
|
input.walletId,
|
|
23
24
|
input.enrollmentId,
|
|
24
25
|
input.enrollmentSealKeyVersion,
|
|
@@ -32,19 +33,11 @@ async function sealEmailOtpFactorSecretForWorker(input) {
|
|
|
32
33
|
factorSecret32 = decodeEmailOtpFactorSecret32(input.factorSecret32B64u);
|
|
33
34
|
workerPublicKey65 = base64UrlDecode(input.workerEphemeralPublicKey65B64u);
|
|
34
35
|
} catch {
|
|
35
|
-
return
|
|
36
|
-
ok: false,
|
|
37
|
-
code: "invalid_body",
|
|
38
|
-
message: "Email OTP factor release key is invalid"
|
|
39
|
-
};
|
|
36
|
+
return failure("invalid_body", "Email OTP factor release key is invalid");
|
|
40
37
|
}
|
|
41
38
|
if (workerPublicKey65.length !== 65 || workerPublicKey65[0] !== 4) {
|
|
42
39
|
factorSecret32.fill(0);
|
|
43
|
-
return
|
|
44
|
-
ok: false,
|
|
45
|
-
code: "invalid_body",
|
|
46
|
-
message: "Email OTP factor release key is invalid"
|
|
47
|
-
};
|
|
40
|
+
return failure("invalid_body", "Email OTP factor release key is invalid");
|
|
48
41
|
}
|
|
49
42
|
try {
|
|
50
43
|
const workerPublicKey = await crypto.subtle.importKey("raw", workerPublicKey65, {
|
|
@@ -76,11 +69,7 @@ async function sealEmailOtpFactorSecretForWorker(input) {
|
|
|
76
69
|
ciphertextB64u: base64UrlEncode(ciphertext)
|
|
77
70
|
};
|
|
78
71
|
} catch {
|
|
79
|
-
return
|
|
80
|
-
ok: false,
|
|
81
|
-
code: "factor_release_failed",
|
|
82
|
-
message: "Email OTP factor release encryption failed"
|
|
83
|
-
};
|
|
72
|
+
return failure("factor_release_failed", "Email OTP factor release encryption failed");
|
|
84
73
|
} finally {
|
|
85
74
|
factorSecret32.fill(0);
|
|
86
75
|
}
|
|
@@ -92,11 +81,7 @@ async function handleEmailOtpDevCleanupGoogleRegistrationRoute(input) {
|
|
|
92
81
|
const code = verified.code || "not_verified";
|
|
93
82
|
return {
|
|
94
83
|
status: code === "internal" ? 500 : code === "not_configured" || code === "unsupported" ? 501 : code === "invalid_body" ? 400 : 401,
|
|
95
|
-
body:
|
|
96
|
-
ok: false,
|
|
97
|
-
code,
|
|
98
|
-
message: verified.message || "Google login failed"
|
|
99
|
-
}
|
|
84
|
+
body: failure(code, verified.message || "Google login failed")
|
|
100
85
|
};
|
|
101
86
|
}
|
|
102
87
|
const runtimePolicyScope = isPlainObject(body.runtimePolicyScope) ? body.runtimePolicyScope : null;
|
|
@@ -113,30 +98,18 @@ async function handleEmailOtpDevCleanupGoogleRegistrationRoute(input) {
|
|
|
113
98
|
async function handleEmailOtpRegistrationSealRoute(input) {
|
|
114
99
|
if (!isPlainObject(input.body)) return {
|
|
115
100
|
status: 400,
|
|
116
|
-
body:
|
|
117
|
-
ok: false,
|
|
118
|
-
code: "invalid_body",
|
|
119
|
-
message: "Invalid body"
|
|
120
|
-
}
|
|
101
|
+
body: failure("invalid_body", "Invalid body")
|
|
121
102
|
};
|
|
122
103
|
const allowedFields = new Set(["walletId", "wrappedCiphertext"]);
|
|
123
104
|
for (const field of Object.keys(input.body)) if (!allowedFields.has(field)) return {
|
|
124
105
|
status: 400,
|
|
125
|
-
body: {
|
|
126
|
-
ok: false,
|
|
127
|
-
code: "invalid_body",
|
|
128
|
-
message: `Unsupported field: ${field}`
|
|
129
|
-
}
|
|
106
|
+
body: failure("invalid_body", `Unsupported field: ${field}`)
|
|
130
107
|
};
|
|
131
108
|
const walletId = normalizeOptionalTrimmedString(input.body.walletId);
|
|
132
109
|
const wrappedCiphertext = normalizeOptionalTrimmedString(input.body.wrappedCiphertext);
|
|
133
110
|
if (!walletId || !wrappedCiphertext) return {
|
|
134
111
|
status: 400,
|
|
135
|
-
body:
|
|
136
|
-
ok: false,
|
|
137
|
-
code: "invalid_body",
|
|
138
|
-
message: "Missing walletId or wrappedCiphertext"
|
|
139
|
-
}
|
|
112
|
+
body: failure("invalid_body", "Missing walletId or wrappedCiphertext")
|
|
140
113
|
};
|
|
141
114
|
const result = await input.service.applyEmailOtpServerSeal({ wrappedCiphertext });
|
|
142
115
|
return {
|
|
@@ -150,11 +123,7 @@ async function handleEmailOtpRegistrationSealRoute(input) {
|
|
|
150
123
|
async function handleEmailOtpDevOutboxRoute(input) {
|
|
151
124
|
if (!isPlainObject(input.body)) return {
|
|
152
125
|
status: 400,
|
|
153
|
-
body:
|
|
154
|
-
ok: false,
|
|
155
|
-
code: "invalid_body",
|
|
156
|
-
message: "Invalid body"
|
|
157
|
-
}
|
|
126
|
+
body: failure("invalid_body", "Invalid body")
|
|
158
127
|
};
|
|
159
128
|
const allowedFields = new Set([
|
|
160
129
|
"idToken",
|
|
@@ -164,11 +133,7 @@ async function handleEmailOtpDevOutboxRoute(input) {
|
|
|
164
133
|
]);
|
|
165
134
|
for (const field of Object.keys(input.body)) if (!allowedFields.has(field)) return {
|
|
166
135
|
status: 400,
|
|
167
|
-
body: {
|
|
168
|
-
ok: false,
|
|
169
|
-
code: "invalid_body",
|
|
170
|
-
message: `Unsupported field: ${field}`
|
|
171
|
-
}
|
|
136
|
+
body: failure("invalid_body", `Unsupported field: ${field}`)
|
|
172
137
|
};
|
|
173
138
|
const idToken = normalizeOptionalTrimmedString(input.body.idToken);
|
|
174
139
|
const walletId = normalizeOptionalTrimmedString(input.body.walletId);
|
|
@@ -176,30 +141,18 @@ async function handleEmailOtpDevOutboxRoute(input) {
|
|
|
176
141
|
const challengeSubjectId = normalizeOptionalTrimmedString(input.body.challengeSubjectId);
|
|
177
142
|
if (!idToken || !walletId) return {
|
|
178
143
|
status: 400,
|
|
179
|
-
body:
|
|
180
|
-
ok: false,
|
|
181
|
-
code: "invalid_body",
|
|
182
|
-
message: "Missing idToken or walletId"
|
|
183
|
-
}
|
|
144
|
+
body: failure("invalid_body", "Missing idToken or walletId")
|
|
184
145
|
};
|
|
185
146
|
if (challengeSubjectId && !challengeId) return {
|
|
186
147
|
status: 400,
|
|
187
|
-
body:
|
|
188
|
-
ok: false,
|
|
189
|
-
code: "invalid_body",
|
|
190
|
-
message: "challengeSubjectId requires the exact challengeId it belongs to"
|
|
191
|
-
}
|
|
148
|
+
body: failure("invalid_body", "challengeSubjectId requires the exact challengeId it belongs to")
|
|
192
149
|
};
|
|
193
150
|
const verified = await input.service.verifyGoogleLogin({ idToken });
|
|
194
151
|
if (!verified.ok || !verified.verified || !verified.userId) {
|
|
195
152
|
const code = verified.code || "not_verified";
|
|
196
153
|
return {
|
|
197
154
|
status: code === "internal" ? 500 : code === "not_configured" ? 501 : 401,
|
|
198
|
-
body:
|
|
199
|
-
ok: false,
|
|
200
|
-
code,
|
|
201
|
-
message: verified.message || "Google login failed"
|
|
202
|
-
}
|
|
155
|
+
body: failure(code, verified.message || "Google login failed")
|
|
203
156
|
};
|
|
204
157
|
}
|
|
205
158
|
const result = await input.service.readEmailOtpOutboxEntry({
|
|
@@ -84,14 +84,8 @@ async function retrievePasskeyCustodyEnvelope(input) {
|
|
|
84
84
|
envelope: lookup.envelope,
|
|
85
85
|
storeVersion: lookup.storeVersion
|
|
86
86
|
};
|
|
87
|
-
case "retired": return {
|
|
88
|
-
|
|
89
|
-
retiredAtMs: lookup.retiredAtMs
|
|
90
|
-
};
|
|
91
|
-
case "revoked": return {
|
|
92
|
-
kind: "revoked",
|
|
93
|
-
revokedAtMs: lookup.revokedAtMs
|
|
94
|
-
};
|
|
87
|
+
case "retired": return { kind: "retired" };
|
|
88
|
+
case "revoked": return { kind: "revoked" };
|
|
95
89
|
case "digest_mismatch":
|
|
96
90
|
input.logger.error("[passkey-custody] stored envelope failed its ciphertext digest", {
|
|
97
91
|
walletId: String(request.locator.walletId),
|
|
@@ -150,14 +150,8 @@ async function commitWalletCustodyRegistration(input) {
|
|
|
150
150
|
envelopeStoreVersion: stored.envelopeStoreVersion,
|
|
151
151
|
recoverySetStoreVersion: stored.recoverySetStoreVersion
|
|
152
152
|
};
|
|
153
|
-
case "already_exists": return {
|
|
154
|
-
|
|
155
|
-
key: stored.key
|
|
156
|
-
};
|
|
157
|
-
case "custody_already_established": return {
|
|
158
|
-
kind: "custody_already_established",
|
|
159
|
-
walletId: stored.walletId
|
|
160
|
-
};
|
|
153
|
+
case "already_exists": return { kind: "already_exists" };
|
|
154
|
+
case "custody_already_established": return { kind: "custody_already_established" };
|
|
161
155
|
case "inconsistent": return {
|
|
162
156
|
kind: "rejected",
|
|
163
157
|
reason: stored.reason
|
package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js
CHANGED
|
@@ -10,7 +10,7 @@ import { extractBearerCredential } from "../../auth/routerApiKeyAuth.js";
|
|
|
10
10
|
import { walletSessionFailure, walletSessionFailureStatus } from "../../auth/walletSessionFailure.js";
|
|
11
11
|
import { validateRouterAbEcdsaDerivationWalletSessionInputs } from "../../auth/commonRouterUtils.js";
|
|
12
12
|
import { evaluateRouterAbNormalSigningAdmission, requireAuthorizationValue, requireMpcMaterialActivationId, routerAbErrorMessage, routerAbOwnerOperationFailureResult, routerAbOwnerOperationStepUpDecision, routerAbSigningError, routerAbStepUpError, routerAbWalletSessionValidationStatus } from "./routerAbNormalSigningAdmission.js";
|
|
13
|
-
import { ecdsaStepUpActiveMaterial, exactOperationStepUpSession, parseStepUpRequestOrigin,
|
|
13
|
+
import { ecdsaStepUpActiveMaterial, exactOperationStepUpSession, parseStepUpRequestOrigin, recordedStepUpOperationClaim, routerAbOperationStepUpClaimFailure, walletSessionCandidateAdmission, walletSessionScopeInvalidFailure, walletSessionUnavailableFailure } from "./routerAbOperationStepUp.js";
|
|
14
14
|
import { buildRouterAbEcdsaDerivationPrivateSigningWorkerBody, isRouterAbEcdsaSigningWorkerOperationInProgress, postRouterAbSigningWorkerJson, replayResponseFromSigningWorkerResult } from "./routerAbPrivateSigningWorker.js";
|
|
15
15
|
//#region src/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.ts
|
|
16
16
|
function routerAbEcdsaAtomicAuthorizationConfigured(authorizedOperations) {
|
|
@@ -43,6 +43,7 @@ async function resolveRouterAbEcdsaOwnerOperationStepUpPreparation(input) {
|
|
|
43
43
|
const walletId = parseWalletId(request.scope.wallet_id);
|
|
44
44
|
if (!walletId.ok) return void 0;
|
|
45
45
|
const activeMaterial = await input.resolveEcdsaMaterialActivation({
|
|
46
|
+
source: { kind: "database" },
|
|
46
47
|
walletId: walletId.value,
|
|
47
48
|
materialActivation: request.material_activation
|
|
48
49
|
});
|
|
@@ -165,6 +166,7 @@ function routerAbWalletSessionError(code) {
|
|
|
165
166
|
*/
|
|
166
167
|
async function resolveFreshRouterAbEcdsaMaterialActivation(input) {
|
|
167
168
|
const resolved = await input.resolveEcdsaMaterialActivation({
|
|
169
|
+
source: { kind: "database" },
|
|
168
170
|
walletId: input.walletId,
|
|
169
171
|
materialActivation: input.expected
|
|
170
172
|
});
|
|
@@ -184,15 +186,7 @@ async function resolveFreshRouterAbEcdsaMaterialActivation(input) {
|
|
|
184
186
|
};
|
|
185
187
|
}
|
|
186
188
|
function validateRouterAbEcdsaV2NormalSigningRequestForSession(input) {
|
|
187
|
-
|
|
188
|
-
try {
|
|
189
|
-
request = parseRouterAbEcdsaOperationStepUpRequest(input);
|
|
190
|
-
} catch (error) {
|
|
191
|
-
return {
|
|
192
|
-
ok: false,
|
|
193
|
-
error: routerAbStepUpError(400, "invalid_body", routerAbErrorMessage(error))
|
|
194
|
-
};
|
|
195
|
-
}
|
|
189
|
+
const request = input.request;
|
|
196
190
|
if (request.authorization.kind !== "reusable_wallet_session" || request.authorization.wallet_session_id !== input.session.walletSessionId || request.scope.wallet_id !== String(input.session.walletId) || request.material_activation.material_owner !== String(input.session.walletId) || request.material_activation.signing_worker !== request.scope.signing_worker.server_id || !sameRouterAbMpcMaterialActivationRef(request.material_activation, request.scope.material_activation) || !sameRouterAbMpcMaterialActivationRef(request.material_activation, input.admittedMaterialActivation)) return {
|
|
197
191
|
ok: false,
|
|
198
192
|
error: routerAbWalletSessionError(WALLET_SESSION_FAILURE_CODES.scopeMismatch)
|
|
@@ -221,7 +215,7 @@ function validateRouterAbEcdsaV2NormalSigningRequestForSession(input) {
|
|
|
221
215
|
};
|
|
222
216
|
}
|
|
223
217
|
async function admitRouterAbEcdsaReusableWalletSessionOperation(input) {
|
|
224
|
-
if (typeof input.authorizedOperations.admitEcdsaWalletSessionOperation !== "function") return {
|
|
218
|
+
if (typeof input.authorizedOperations.admitEcdsaWalletSessionOperation !== "function" || typeof input.authorizedOperations.resolveEcdsaWalletSessionOperation !== "function") return {
|
|
225
219
|
ok: false,
|
|
226
220
|
error: routerAbStepUpError(501, "not_configured", "ECDSA atomic authorization is not configured")
|
|
227
221
|
};
|
|
@@ -231,7 +225,7 @@ async function admitRouterAbEcdsaReusableWalletSessionOperation(input) {
|
|
|
231
225
|
};
|
|
232
226
|
const nowMs = Date.now();
|
|
233
227
|
try {
|
|
234
|
-
const session = input.binding.kind === "wallet_session_operation_credential_v1" ? input.binding.context.authorization.session : input.binding.candidate.status.session;
|
|
228
|
+
const session = input.binding.kind === "wallet_session_operation_credential_v1" ? input.binding.validated.admission.context.authorization.session : input.binding.candidate.status.session;
|
|
235
229
|
const tenantId = session.tenantId;
|
|
236
230
|
const principalId = session.principalId;
|
|
237
231
|
const walletId = session.walletId;
|
|
@@ -242,16 +236,12 @@ async function admitRouterAbEcdsaReusableWalletSessionOperation(input) {
|
|
|
242
236
|
ok: false,
|
|
243
237
|
error: routerAbStepUpError(403, "wallet_session_mismatch", "Reusable Wallet Session identity does not match")
|
|
244
238
|
};
|
|
245
|
-
const
|
|
246
|
-
|
|
247
|
-
walletId: String(walletId),
|
|
248
|
-
expected: input.materialActivation
|
|
249
|
-
});
|
|
250
|
-
if (!freshMaterial.ok) return {
|
|
239
|
+
const material = input.material;
|
|
240
|
+
if (!sameRouterAbMpcMaterialActivationRef(material.materialActivation, input.request.material_activation)) return {
|
|
251
241
|
ok: false,
|
|
252
|
-
error: routerAbStepUpError(
|
|
242
|
+
error: routerAbStepUpError(403, "material_mismatch", "Signing material does not match the request")
|
|
253
243
|
};
|
|
254
|
-
const capabilityId = requireAuthorizationValue(parseCapabilityId(
|
|
244
|
+
const capabilityId = requireAuthorizationValue(parseCapabilityId(material.materialActivation.capability));
|
|
255
245
|
const operationId = requireAuthorizationValue(parseCapabilityOperationId(input.request.operation_id));
|
|
256
246
|
const envelope = buildCapabilityOperationEnvelope({
|
|
257
247
|
tenantId,
|
|
@@ -265,13 +255,11 @@ async function admitRouterAbEcdsaReusableWalletSessionOperation(input) {
|
|
|
265
255
|
displayDigest: parseDigestB64u(input.request.operation_digests.display_digest_b64u)
|
|
266
256
|
}
|
|
267
257
|
});
|
|
268
|
-
const
|
|
269
|
-
const auditEventId = requireAuthorizationValue(parseAuthorizationAuditEventId(`ecdsa-operation-audit:${operationId}`));
|
|
270
|
-
const outcome = await input.authorizedOperations.admitEcdsaWalletSessionOperation({
|
|
258
|
+
const admissionInput = {
|
|
271
259
|
operation: {
|
|
272
260
|
tenantId,
|
|
273
|
-
authorizedOperationId,
|
|
274
|
-
auditEventId,
|
|
261
|
+
authorizedOperationId: requireAuthorizationValue(parseAuthorizedOperationId(`ecdsa-authorized-operation:${operationId}:${input.request.request_id}`)),
|
|
262
|
+
auditEventId: requireAuthorizationValue(parseAuthorizationAuditEventId(`ecdsa-operation-audit:${operationId}`)),
|
|
275
263
|
operation: envelope,
|
|
276
264
|
authorization: {
|
|
277
265
|
kind: "authorization_grant",
|
|
@@ -284,12 +272,35 @@ async function admitRouterAbEcdsaReusableWalletSessionOperation(input) {
|
|
|
284
272
|
claimedAtMs: nowMs
|
|
285
273
|
},
|
|
286
274
|
material: {
|
|
275
|
+
readSnapshot: material.readSnapshot,
|
|
287
276
|
walletId,
|
|
288
|
-
keyHandle:
|
|
289
|
-
runtimePolicyScope:
|
|
290
|
-
materialActivation:
|
|
277
|
+
keyHandle: material.keyHandle,
|
|
278
|
+
runtimePolicyScope: material.runtimePolicyScope,
|
|
279
|
+
materialActivation: material.materialActivation
|
|
291
280
|
}
|
|
292
|
-
}
|
|
281
|
+
};
|
|
282
|
+
if (input.phase === "finalize") {
|
|
283
|
+
const resolved = await input.authorizedOperations.resolveEcdsaWalletSessionOperation(admissionInput);
|
|
284
|
+
if (resolved.kind === "authorized_operation_missing") return {
|
|
285
|
+
ok: false,
|
|
286
|
+
error: routerAbStepUpError(409, resolved.kind, "ECDSA finalize requires a claimed prepare operation")
|
|
287
|
+
};
|
|
288
|
+
const failure = routerAbReusableWalletSessionClaimFailure(resolved);
|
|
289
|
+
if (failure) return {
|
|
290
|
+
ok: false,
|
|
291
|
+
error: failure
|
|
292
|
+
};
|
|
293
|
+
if (resolved.kind === "operation_in_progress" || resolved.kind === "replayed") return {
|
|
294
|
+
ok: true,
|
|
295
|
+
phase: "finalize",
|
|
296
|
+
admission: resolved
|
|
297
|
+
};
|
|
298
|
+
return {
|
|
299
|
+
ok: false,
|
|
300
|
+
error: routerAbStepUpError(409, resolved.kind, "Authorized operation is unavailable")
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
const outcome = await input.authorizedOperations.admitEcdsaWalletSessionOperation(admissionInput);
|
|
293
304
|
const claimFailure = routerAbReusableWalletSessionClaimFailure(outcome);
|
|
294
305
|
if (claimFailure) return {
|
|
295
306
|
ok: false,
|
|
@@ -297,6 +308,7 @@ async function admitRouterAbEcdsaReusableWalletSessionOperation(input) {
|
|
|
297
308
|
};
|
|
298
309
|
if (outcome.kind === "claimed" || outcome.kind === "operation_in_progress" || outcome.kind === "replayed") return {
|
|
299
310
|
ok: true,
|
|
311
|
+
phase: "prepare",
|
|
300
312
|
admission: outcome
|
|
301
313
|
};
|
|
302
314
|
return {
|
|
@@ -342,6 +354,10 @@ async function authorizeRouterAbEcdsaWalletSessionRequest(input) {
|
|
|
342
354
|
result: validated.error
|
|
343
355
|
};
|
|
344
356
|
const activeMaterial = await input.resolveEcdsaMaterialActivation({
|
|
357
|
+
source: {
|
|
358
|
+
kind: "credential_snapshot",
|
|
359
|
+
materialRead: input.materialRead
|
|
360
|
+
},
|
|
345
361
|
walletId: String(input.session.walletId),
|
|
346
362
|
materialActivation: validated.admission.materialActivation
|
|
347
363
|
});
|
|
@@ -359,6 +375,10 @@ async function authorizeRouterAbEcdsaWalletSessionRequest(input) {
|
|
|
359
375
|
result: routerAbStepUpError(403, "wallet_session_scope_mismatch", "Wallet Session V2 scope does not match the active material")
|
|
360
376
|
};
|
|
361
377
|
const admissionDecision = await evaluateRouterAbNormalSigningAdmission({
|
|
378
|
+
policyReadSource: {
|
|
379
|
+
kind: "credential_snapshot",
|
|
380
|
+
policyRead: input.policyRead
|
|
381
|
+
},
|
|
362
382
|
adapter: input.admissionAdapter,
|
|
363
383
|
curve: "ecdsa",
|
|
364
384
|
authorizationKind: "wallet_session_operation_credential_v1",
|
|
@@ -393,29 +413,21 @@ async function authorizeRouterAbEcdsaWalletSessionRequest(input) {
|
|
|
393
413
|
};
|
|
394
414
|
}
|
|
395
415
|
async function resolveRouterAbEcdsaExhaustedCandidateAuthorization(input) {
|
|
396
|
-
const
|
|
397
|
-
|
|
398
|
-
const
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
operation: {
|
|
402
|
-
keyFamily: "ecdsa_secp256k1",
|
|
403
|
-
operationKind: "evm.sign_transaction"
|
|
404
|
-
}
|
|
416
|
+
const candidate = input.candidate;
|
|
417
|
+
const session = candidate.status.session;
|
|
418
|
+
const admission = walletSessionCandidateAdmission(session, candidate, {
|
|
419
|
+
keyFamily: "ecdsa_secp256k1",
|
|
420
|
+
operationKind: "evm.sign_transaction"
|
|
405
421
|
});
|
|
406
|
-
if (!exhausted) return null;
|
|
407
|
-
if (!exhausted.ok) return {
|
|
408
|
-
ok: false,
|
|
409
|
-
result: exhausted.error
|
|
410
|
-
};
|
|
411
|
-
const { candidate, session, admission } = exhausted;
|
|
412
422
|
if (!admission.ok || admission.keyFamily !== "ecdsa_secp256k1") return {
|
|
413
423
|
ok: false,
|
|
414
424
|
result: routerAbWalletSessionError(WALLET_SESSION_FAILURE_CODES.scopeMismatch)
|
|
415
425
|
};
|
|
416
426
|
const authorized = await authorizeRouterAbEcdsaWalletSessionRequest({
|
|
427
|
+
materialRead: input.materialRead,
|
|
428
|
+
policyRead: input.policyRead,
|
|
417
429
|
phase: input.phase,
|
|
418
|
-
|
|
430
|
+
request: input.request,
|
|
419
431
|
session,
|
|
420
432
|
admittedMaterialActivation: routerAbMpcMaterialActivationRefToWire(admission.materialActivation),
|
|
421
433
|
admissionAdapter: input.admissionAdapter,
|
|
@@ -468,6 +480,7 @@ async function authenticateRouterAbEcdsaOperationStepUp(input) {
|
|
|
468
480
|
let resolvedMaterial;
|
|
469
481
|
try {
|
|
470
482
|
resolvedMaterial = await input.resolveEcdsaMaterialActivation({
|
|
483
|
+
source: { kind: "database" },
|
|
471
484
|
walletId: scope.wallet_id,
|
|
472
485
|
materialActivation: admittedMaterialActivation
|
|
473
486
|
});
|
|
@@ -575,6 +588,7 @@ async function handleRouterAbEcdsaOperationStepUpRoute(input) {
|
|
|
575
588
|
const materialActivationId = requireMpcMaterialActivationId(activeMaterial.materialActivation.activation_id);
|
|
576
589
|
if (!input.admissionAdapter) return routerAbStepUpError(501, "not_configured", "Router A/B ECDSA operation step-up admission is not configured");
|
|
577
590
|
const admission = await input.admissionAdapter.evaluatePolicy({
|
|
591
|
+
policyReadSource: { kind: "database" },
|
|
578
592
|
curve: "ecdsa",
|
|
579
593
|
phase: input.phase,
|
|
580
594
|
walletId: authenticated.session.walletId,
|
|
@@ -624,19 +638,19 @@ async function handleRouterAbEcdsaOperationStepUpRoute(input) {
|
|
|
624
638
|
};
|
|
625
639
|
}
|
|
626
640
|
async function authorizeRouterAbEcdsaDerivationNormalSigningRoute(input) {
|
|
627
|
-
let
|
|
641
|
+
let parsedRequest;
|
|
628
642
|
try {
|
|
629
|
-
|
|
643
|
+
parsedRequest = parseRouterAbEcdsaOperationStepUpRequest({
|
|
630
644
|
phase: input.phase,
|
|
631
645
|
body: input.body
|
|
632
|
-
})
|
|
646
|
+
});
|
|
633
647
|
} catch (error) {
|
|
634
648
|
return {
|
|
635
649
|
ok: false,
|
|
636
650
|
result: routerAbStepUpError(400, "invalid_body", routerAbErrorMessage(error))
|
|
637
651
|
};
|
|
638
652
|
}
|
|
639
|
-
if (
|
|
653
|
+
if (parsedRequest.authorization.kind === "operation_step_up") {
|
|
640
654
|
const stepUp = await handleRouterAbEcdsaOperationStepUpRoute({
|
|
641
655
|
body: input.body,
|
|
642
656
|
headers: input.headers,
|
|
@@ -660,22 +674,12 @@ async function authorizeRouterAbEcdsaDerivationNormalSigningRoute(input) {
|
|
|
660
674
|
};
|
|
661
675
|
}
|
|
662
676
|
const validated = await validateRouterAbEcdsaDerivationWalletSessionInputs({
|
|
677
|
+
materialActivation: parsedRequest.material_activation,
|
|
663
678
|
headers: input.headers,
|
|
664
679
|
authorizationSessions: input.authorizationSessions,
|
|
665
680
|
operationKind: "evm.sign_transaction"
|
|
666
681
|
});
|
|
667
682
|
if (!validated.ok) {
|
|
668
|
-
if (validated.code === "wallet_session_unavailable" && input.authorizationSessions) {
|
|
669
|
-
const exhaustedCandidate = await resolveRouterAbEcdsaExhaustedCandidateAuthorization({
|
|
670
|
-
phase: input.phase,
|
|
671
|
-
body: input.body,
|
|
672
|
-
headers: input.headers,
|
|
673
|
-
authorizationSessions: input.authorizationSessions,
|
|
674
|
-
admissionAdapter: input.admissionAdapter,
|
|
675
|
-
resolveEcdsaMaterialActivation: input.resolveEcdsaMaterialActivation
|
|
676
|
-
});
|
|
677
|
-
if (exhaustedCandidate) return exhaustedCandidate;
|
|
678
|
-
}
|
|
679
683
|
const stepUp = await resolveRouterAbEcdsaOwnerOperationStepUpPreparation({
|
|
680
684
|
body: input.body,
|
|
681
685
|
phase: input.phase,
|
|
@@ -692,10 +696,21 @@ async function authorizeRouterAbEcdsaDerivationNormalSigningRoute(input) {
|
|
|
692
696
|
})
|
|
693
697
|
};
|
|
694
698
|
}
|
|
699
|
+
if (validated.kind === "wallet_session_operation_credential_exhausted_candidate_v1") return await resolveRouterAbEcdsaExhaustedCandidateAuthorization({
|
|
700
|
+
materialRead: validated.materialRead,
|
|
701
|
+
policyRead: validated.policyRead,
|
|
702
|
+
phase: input.phase,
|
|
703
|
+
request: parsedRequest,
|
|
704
|
+
candidate: validated.candidate,
|
|
705
|
+
admissionAdapter: input.admissionAdapter,
|
|
706
|
+
resolveEcdsaMaterialActivation: input.resolveEcdsaMaterialActivation
|
|
707
|
+
});
|
|
695
708
|
const session = validated.admission.context.authorization.session;
|
|
696
709
|
const authorized = await authorizeRouterAbEcdsaWalletSessionRequest({
|
|
710
|
+
materialRead: validated.materialRead,
|
|
711
|
+
policyRead: validated.policyRead,
|
|
697
712
|
phase: input.phase,
|
|
698
|
-
|
|
713
|
+
request: parsedRequest,
|
|
699
714
|
session,
|
|
700
715
|
admittedMaterialActivation: routerAbMpcMaterialActivationRefToWire(validated.admission.admission.materialActivation),
|
|
701
716
|
admissionAdapter: input.admissionAdapter,
|
|
@@ -727,18 +742,13 @@ async function handleRouterAbEcdsaDerivationNormalSigningRouteCore(input) {
|
|
|
727
742
|
headers: input.headers
|
|
728
743
|
});
|
|
729
744
|
if (!input.authorizedOperations) return routerAbStepUpError(501, "not_configured", "Reusable Wallet Session authorization is not configured");
|
|
745
|
+
const request = parseRouterAbEcdsaOperationStepUpRequest(input);
|
|
730
746
|
const claimed = await admitRouterAbEcdsaReusableWalletSessionOperation({
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
} : {
|
|
737
|
-
kind: "wallet_session_operation_credential_exhausted_candidate_v1",
|
|
738
|
-
candidate: authorization.candidate
|
|
739
|
-
},
|
|
740
|
-
authorizedOperations: input.authorizedOperations,
|
|
741
|
-
resolveEcdsaMaterialActivation: input.resolveEcdsaMaterialActivation
|
|
747
|
+
phase: input.phase,
|
|
748
|
+
request,
|
|
749
|
+
material: authorization.activeMaterial,
|
|
750
|
+
binding: authorization,
|
|
751
|
+
authorizedOperations: input.authorizedOperations
|
|
742
752
|
});
|
|
743
753
|
if (!claimed.ok) return claimed.error;
|
|
744
754
|
if (claimed.admission.kind === "replayed") return routerAbEcdsaReplayResult(claimed.admission.operation);
|
|
@@ -746,7 +756,7 @@ async function handleRouterAbEcdsaDerivationNormalSigningRouteCore(input) {
|
|
|
746
756
|
if (!runtime) return routerAbEcdsaPrivateSigningWorkerUnavailableResult();
|
|
747
757
|
const signingWorker = runtime.getSigningWorkerPrivateTransport();
|
|
748
758
|
if (signingWorker.kind === "unconfigured") return routerAbEcdsaPrivateSigningWorkerUnavailableResult();
|
|
749
|
-
if (
|
|
759
|
+
if (claimed.phase === "prepare") {
|
|
750
760
|
if (claimed.admission.kind === "operation_in_progress") return routerAbEcdsaOperationInProgressResult();
|
|
751
761
|
const operation = claimed.admission.operation;
|
|
752
762
|
const replay = await runtime.reservePrepareReplay({
|
|
@@ -801,7 +811,6 @@ async function handleRouterAbEcdsaDerivationNormalSigningRouteCore(input) {
|
|
|
801
811
|
body: forwarded.body
|
|
802
812
|
};
|
|
803
813
|
}
|
|
804
|
-
if (claimed.admission.kind === "claimed") return routerAbStepUpError(409, "authorized_operation_missing", "ECDSA finalize requires a claimed prepare operation");
|
|
805
814
|
const forwarded = await postRouterAbSigningWorkerJson({
|
|
806
815
|
config: signingWorker,
|
|
807
816
|
path: input.privatePath,
|
|
@@ -152,6 +152,7 @@ async function evaluateRouterAbNormalSigningAdmission(input) {
|
|
|
152
152
|
});
|
|
153
153
|
return await input.adapter.evaluatePolicy({
|
|
154
154
|
curve: "ecdsa",
|
|
155
|
+
policyReadSource: input.policyReadSource,
|
|
155
156
|
phase: input.phase,
|
|
156
157
|
walletId: input.walletId,
|
|
157
158
|
materialActivationId: requireMpcMaterialActivationId(input.admission.materialActivation.activation_id),
|
|
@@ -230,6 +230,7 @@ async function authenticateRouterAbWalletOperationStepUpIdentity(input) {
|
|
|
230
230
|
if (admission.curve === "ecdsa" && input.keyFamily === "ecdsa_secp256k1") {
|
|
231
231
|
const active = ecdsaStepUpActiveMaterial({
|
|
232
232
|
activeMaterial: await input.resolveEcdsaMaterialActivation({
|
|
233
|
+
source: { kind: "database" },
|
|
233
234
|
walletId: input.walletId,
|
|
234
235
|
materialActivation: admittedMaterialActivation
|
|
235
236
|
}),
|
|
@@ -47,18 +47,6 @@ function registrationMaterialSourceV1(input) {
|
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
-
function routerAbNormalSigningMaterialSourceFromActiveLaneV1(input) {
|
|
51
|
-
const groupPublicKey = input.groupPublicKey.trim();
|
|
52
|
-
if (groupPublicKey.length === 0) throw new Error("active lane group public key is required");
|
|
53
|
-
return {
|
|
54
|
-
kind: "rotatable_lane",
|
|
55
|
-
lookup: {
|
|
56
|
-
identity: input.identity,
|
|
57
|
-
admittedLaneIdentityDigestB64u: input.admittedLaneIdentityDigestB64u
|
|
58
|
-
},
|
|
59
|
-
group_public_key: groupPublicKey
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
50
|
function nonEmptyString(value) {
|
|
63
51
|
return String(value || "").trim();
|
|
64
52
|
}
|
|
@@ -395,7 +383,7 @@ async function buildRouterAbEd25519PrivateSigningWorkerBody(input) {
|
|
|
395
383
|
const scope = parseRouterAbEd25519NormalSigningScopeV2(input.body.scope);
|
|
396
384
|
const signingContext = privateSigningAuthorizationContext(scope, input.authorization);
|
|
397
385
|
const trustedSourceDigest = await privateSigningTrustedSourceDigest(input.headers);
|
|
398
|
-
const materialSource =
|
|
386
|
+
const materialSource = registrationMaterialSourceV1({
|
|
399
387
|
accountId: scope.account_id,
|
|
400
388
|
materialActivationId: scope.material_activation.activation_id,
|
|
401
389
|
signingWorkerId: scope.signing_worker_id
|
|
@@ -490,8 +478,7 @@ async function buildRouterAbEcdsaDerivationPrivateSigningWorkerBody(input) {
|
|
|
490
478
|
request,
|
|
491
479
|
requestDigest: await routerAbEcdsaDerivationEvmDigestSigningRequestDigestV1(request),
|
|
492
480
|
signingContext,
|
|
493
|
-
trustedSourceDigest
|
|
494
|
-
materialSource: input.materialSource
|
|
481
|
+
trustedSourceDigest
|
|
495
482
|
});
|
|
496
483
|
}
|
|
497
484
|
const request = parseRouterAbEcdsaDerivationEvmDigestSigningFinalizeRequestV1(input.body);
|
|
@@ -500,8 +487,7 @@ async function buildRouterAbEcdsaDerivationPrivateSigningWorkerBody(input) {
|
|
|
500
487
|
request,
|
|
501
488
|
requestDigest: await routerAbEcdsaDerivationEvmDigestSigningFinalizeCoreRequestDigestV1(request),
|
|
502
489
|
signingContext,
|
|
503
|
-
trustedSourceDigest
|
|
504
|
-
materialSource: input.materialSource
|
|
490
|
+
trustedSourceDigest
|
|
505
491
|
});
|
|
506
492
|
}
|
|
507
493
|
function privateEcdsaDerivationSigningWorkerBody(input) {
|
|
@@ -514,7 +500,7 @@ function privateEcdsaDerivationSigningWorkerBody(input) {
|
|
|
514
500
|
intentDigest: input.requestDigest,
|
|
515
501
|
trustedSourceDigest: input.trustedSourceDigest
|
|
516
502
|
}),
|
|
517
|
-
material_source:
|
|
503
|
+
material_source: registrationMaterialSourceV1({
|
|
518
504
|
accountId: input.request.scope.wallet_id,
|
|
519
505
|
materialActivationId: input.request.scope.material_activation.activation_id,
|
|
520
506
|
signingWorkerId: input.request.scope.signing_worker.server_id
|
|
@@ -544,6 +530,6 @@ async function postRouterAbSigningWorkerJson(input) {
|
|
|
544
530
|
};
|
|
545
531
|
}
|
|
546
532
|
//#endregion
|
|
547
|
-
export { ROUTER_AB_ECDSA_DERIVATION_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_PRIVATE_SIGNING_PATHS, buildRouterAbEcdsaDerivationPrivateSigningWorkerBody, buildRouterAbEd25519PrivateSigningWorkerBody, computeRouterAbEd25519NormalSigningAdmissionMaterial, isRouterAbEcdsaSigningWorkerOperationInProgress, parseRouterAbEd25519NormalSigningScopeV2, postRouterAbSigningWorkerJson, replayResponseFromSigningWorkerResult, requirePrivateSigningDigest
|
|
533
|
+
export { ROUTER_AB_ECDSA_DERIVATION_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_PRIVATE_SIGNING_PATHS, buildRouterAbEcdsaDerivationPrivateSigningWorkerBody, buildRouterAbEd25519PrivateSigningWorkerBody, computeRouterAbEd25519NormalSigningAdmissionMaterial, isRouterAbEcdsaSigningWorkerOperationInProgress, parseRouterAbEd25519NormalSigningScopeV2, postRouterAbSigningWorkerJson, replayResponseFromSigningWorkerResult, requirePrivateSigningDigest };
|
|
548
534
|
|
|
549
535
|
//# sourceMappingURL=routerAbPrivateSigningWorker.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { mpcMaterialActivationRefsEqual } from "../../../shared-ts/src/utils/domainIds.js";
|
|
2
2
|
import { CAPABILITY_KINDS, EVM_ECDSA_MPC_OPERATION_KINDS, NEAR_ED25519_MPC_OPERATION_KINDS } from "../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
3
3
|
import { buildWalletSessionCapabilitySubjectsV1, walletSessionCapabilitySubjectsV1Equal } from "../../../authorization/domain.js";
|
|
4
|
-
import { computeOwnerLaneParticipantBindingDigestV1 } from "../../../shared-ts/src/signing-lanes/ownerContinuity.js";
|
|
5
4
|
import { buildPreparedOwnerWalletExecution } from "../../../shared-ts/src/signing-lanes/execution.js";
|
|
5
|
+
import { computeOwnerLaneParticipantBindingDigestV1 } from "../../../shared-ts/src/signing-lanes/ownerContinuity.js";
|
|
6
6
|
import "../../../shared-ts/src/signing-lanes/index.js";
|
|
7
7
|
//#region src/router/domains/signingOperations/walletExecutionAdmission.ts
|
|
8
8
|
function validateWalletSessionAuthorizationV2Context(input) {
|
|
@@ -74,8 +74,7 @@ function resolveWalletSessionAuthorizationV2AdministrationAdmission(input) {
|
|
|
74
74
|
if (!subject || subject.authorityId !== input.authority.authorityId) return admissionRefused("capability_subject_mismatch");
|
|
75
75
|
return {
|
|
76
76
|
ok: true,
|
|
77
|
-
operationKind: "link_devices"
|
|
78
|
-
authorityId: input.authority.authorityId
|
|
77
|
+
operationKind: "link_devices"
|
|
79
78
|
};
|
|
80
79
|
}
|
|
81
80
|
default: return assertNeverWalletSessionAuthorizationV2AdministrationOperation(input.operation.kind);
|
|
@@ -165,7 +164,7 @@ async function prepareOwnerWalletExecution(input) {
|
|
|
165
164
|
if (lane.walletKeyId !== input.evidence.walletKey.walletKeyId) return refused("wallet_key_mismatch");
|
|
166
165
|
if (!operationMatchesWalletKey(input.authorizedOperation, input.evidence.walletKey)) return refused("curve_mismatch");
|
|
167
166
|
if (String(claimedOperation.operation.capabilityId) !== String(input.evidence.materialActivation.capability)) return refused("capability_mismatch");
|
|
168
|
-
if (!
|
|
167
|
+
if (!mpcMaterialActivationRefsEqual(input.evidence.materialActivation, input.evidence.expectedMaterialActivation)) return refused("material_activation_mismatch");
|
|
169
168
|
if (lane.participantBindingDigestB64u !== input.evidence.verifiedLaneParticipantBindingDigestB64u || String(lane.ownerParticipantContinuity.signingWorkerId) !== String(input.evidence.materialActivation.signingWorker)) return refused("participant_binding_mismatch");
|
|
170
169
|
if (await computeOwnerLaneParticipantBindingDigestV1(lane.ownerParticipantContinuity) !== lane.participantBindingDigestB64u) return refused("participant_binding_mismatch");
|
|
171
170
|
if (lane.lifecycle.activationReceiptDigestB64u !== input.evidence.verifiedActivationReceiptDigestB64u) return refused("activation_receipt_mismatch");
|
|
@@ -213,9 +212,6 @@ function operationMatchesWalletKey(operation, walletKey) {
|
|
|
213
212
|
case "ecdsa_secp256k1": return operation.operation.operation.capabilityKind === CAPABILITY_KINDS.evmEcdsaMpcSigning;
|
|
214
213
|
}
|
|
215
214
|
}
|
|
216
|
-
function sameMaterialActivation(left, right) {
|
|
217
|
-
return left.activationId === right.activationId && left.capability === right.capability && left.materialOwner === right.materialOwner && left.keyBinding === right.keyBinding && left.lifecycleBinding === right.lifecycleBinding && left.signingWorker === right.signingWorker;
|
|
218
|
-
}
|
|
219
215
|
function refused(reason) {
|
|
220
216
|
return {
|
|
221
217
|
kind: "refused",
|