@seams/wallet-server 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_NOTICES.md +7 -1
- package/artifact-manifest.json +196 -41
- package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
- package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
- package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/router/index.js +2 -2
- package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
- package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
- package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
- package/cloudflare-router-ab/migrations/deriver-a/0019_wallet_object_addresses.sql +10 -0
- package/cloudflare-router-ab/migrations/deriver-b/0019_wallet_object_addresses.sql +10 -0
- package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +3 -117
- package/cloudflare-router-ab/wrangler.deriver-a.toml +0 -8
- package/cloudflare-router-ab/wrangler.deriver-b.toml +24 -8
- package/cloudflare-router-ab/wrangler.router.toml +0 -2
- package/cloudflare-router-ab/wrangler.signing-worker.toml +29 -0
- package/dist/esm/authorization/domain.js +3 -2
- package/dist/esm/authorization/ed25519WalletSessionAdmission.js +0 -0
- package/dist/esm/authorization/service.js +64 -36
- package/dist/esm/cloud-host.js +24 -19
- package/dist/esm/core/EmailOtpRecords.js +29 -6
- package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +2 -0
- package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.js +10 -0
- package/dist/esm/core/ThresholdService/routerAb/internalServiceHttp.js +1 -0
- package/dist/esm/core/ThresholdService/validation.js +2 -2
- package/dist/esm/core/authService/nearPrivateKeySigning.js +1 -1
- package/dist/esm/core/authService/webauthn.js +1 -1
- package/dist/esm/core/d1Ed25519SignerRead.js +55 -0
- package/dist/esm/core/d1WalletStore.js +14 -11
- package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +2 -2
- package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +1 -1
- package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +2 -2
- package/dist/esm/core/emailOtpD1Statements.js +1 -0
- package/dist/esm/core/nearRelayerAccountProvisioning.js +1 -1
- package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +4 -0
- package/dist/esm/core/signingLanes/WalletExecutionLaneProjection.js +1 -1
- package/dist/esm/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.js +1 -0
- package/dist/esm/hosted-wallet-gateway.js +93 -10
- package/dist/esm/localHostedWalletGatewayHandler.js +12 -9
- package/dist/esm/localIntendedYaoSigningFault.js +2 -30
- package/dist/esm/localRegistrationSetupAuthority.js +8 -1
- package/dist/esm/router/auth/commonRouterUtils.js +17 -10
- package/dist/esm/router/auth/routerApiCredentialAuth.js +26 -7
- package/dist/esm/router/auth/walletRegistrationContext.js +49 -0
- package/dist/esm/router/auth/webAuthnCredentialCodecs.js +1 -1
- package/dist/esm/router/cloudflare/d1/auth/d1AuthorizationAssembly.js +4 -3
- package/dist/esm/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.js +2 -0
- package/dist/esm/router/cloudflare/d1/auth/d1EmailOtpRouteService.js +25 -0
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +14 -6
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +44 -40
- package/dist/esm/router/cloudflare/d1/auth/walletSessionCredentialReaders.js +17 -1
- package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +35 -5
- package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +258 -99
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +31 -4
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.js +1 -1
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.js +11 -2
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +100 -10
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoStateWriteFence.js +92 -0
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1WalletCeremonyActivity.js +77 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +14 -8
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +14 -8
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +3 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +58 -38
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +27 -20
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +1 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +1 -0
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +1 -1
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +18 -7
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +75 -14
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +49 -29
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSessionTransaction.js +28 -0
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +11 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletExecutionAuthority.js +168 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletOperationStore.js +53 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +83 -42
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationInitialSession.js +33 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationPreparation.js +16 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationRead.js +58 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +439 -500
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +104 -90
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +78 -44
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +11 -35
- package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +98 -39
- package/dist/esm/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js +12 -9
- package/dist/esm/router/cloudflare/d1/wallet/authorizationSnapshotLayout.js +168 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +1 -1
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +15 -6
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +3 -40
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +54 -1
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationCleanup.js +157 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationFreeze.js +56 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationHistory.js +238 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationIntake.js +287 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationSnapshot.js +295 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationApprovals.js +140 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationChallenges.js +170 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationEmailOtp.js +60 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationOwner.js +33 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationOwnerRequest.js +74 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationPasskey.js +77 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationReadAccess.js +37 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationSessions.js +97 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationWriteBlock.js +133 -0
- package/dist/esm/router/cloudflare/d1/walletObjectAddresses.js +47 -0
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +1 -1
- package/dist/esm/router/cloudflare/runtime/routerAbServiceBindings.js +32 -1
- package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +20 -8
- package/dist/esm/router/cloudflare/runtime/walletAuthorizationRelocationRoutes.js +488 -0
- package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +1 -1
- package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +26 -6
- package/dist/esm/router/cloudflare/runtime/walletControlOps.js +3 -0
- package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
- package/dist/esm/router/cloudflare/runtime/walletObjectAddresses.js +105 -0
- package/dist/esm/router/cloudflare/runtime/walletPlacementRoutes.js +339 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationDeriver.js +244 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationEcdsa.js +212 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationEd25519.js +172 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationOps.js +183 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationPresign.js +185 -0
- package/dist/esm/router/cloudflare/runtime/walletRelocationSource.js +221 -0
- package/dist/esm/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js +30 -8
- package/dist/esm/router/cloudflare-adaptor.js +8 -8
- package/dist/esm/router/cloudflare.js +34115 -32240
- package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +35 -9
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoCapabilityCommit.js +42 -0
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +32 -6
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +61 -1
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js +70 -3
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +59 -87
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +52 -22
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +10 -7
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +108 -78
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +19 -5
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +71 -22
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +37 -25
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +3 -3
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.js +2 -1
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +24 -3
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js +4 -3
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js +20 -7
- package/dist/esm/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.js +7 -1
- package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +2 -2
- package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +1 -1
- package/dist/esm/router/domains/passkeyCustody/registrationCustodyOutcome.js +34 -18
- package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.js +2 -2
- package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +16 -6
- package/dist/esm/router/domains/signingOperations/authorizedOperationWire.js +73 -0
- package/dist/esm/router/domains/signingOperations/ecdsaSigningResponse.js +31 -0
- package/dist/esm/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.js +1 -1
- package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js +2 -1
- package/dist/esm/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.js +31 -121
- package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmission.js +2 -93
- package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +1 -1
- package/dist/esm/router/domains/signingOperations/signingPrepareSession.js +33 -0
- package/dist/esm/router/domains/walletRegistration/registrationSessionSeal.js +121 -0
- package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +4 -4
- package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +46 -157
- package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +1 -1
- package/dist/esm/router/express.js +764 -894
- package/dist/esm/router/framework/http.js +2 -1
- package/dist/esm/router/transport/fetch/createFetchRouter.js +2 -2
- package/dist/esm/router/transport/fetch/routes/auth.js +1 -1
- package/dist/esm/router/transport/fetch/routes/deviceLinking.js +3 -3
- package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +2 -2
- package/dist/esm/router/transport/fetch/routes/ed25519AuthorizedOperationRevalidation.js +65 -0
- package/dist/esm/router/transport/fetch/routes/normalSigningRouterProxy.js +13 -3
- package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +3 -3
- package/dist/esm/router/transport/fetch/routes/sessions.js +3 -2
- package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +67 -130
- package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +76 -212
- package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +18 -41
- package/dist/esm/router/transport/fetch/routes/walletRegistration.js +6 -5
- package/dist/esm/router/transport/fetch/routes/webauthnAuthenticators.js +1 -1
- package/dist/esm/shared-ts/src/authorization/index.js +1 -1
- package/dist/esm/shared-ts/src/authorization/walletAuthority.js +2 -2
- package/dist/esm/shared-ts/src/device-linking/activeWalletSession.js +12 -2
- package/dist/esm/shared-ts/src/device-linking/digests.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/index.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/parsers.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/wireFields.js +1 -1
- package/dist/esm/shared-ts/src/near/nearClient.js +1 -1
- package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +2 -2
- package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +6 -1
- package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +4 -2
- package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -1
- package/dist/esm/shared-ts/src/utils/routerAbPublicKeyset.js +0 -27
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/options.js +1 -1
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
- package/dist/types/shared-ts/src/device-linking/activeWalletSession.d.ts +2 -1
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +10 -0
- package/dist/types/shared-ts/src/threshold/ed25519OperationFingerprint.d.ts +2 -1
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +3 -1
- package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +0 -9
- package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +1 -1
- package/dist/types/wallet-server/src/authorization/domain.d.ts +17 -1
- package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.d.ts +1 -0
- package/dist/types/wallet-server/src/authorization/ed25519WalletSessionAdmission.d.ts +35 -0
- package/dist/types/wallet-server/src/authorization/ed25519WalletSessionAdmission.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/authorization/service.d.ts +43 -5
- package/dist/types/wallet-server/src/authorization/sessionRouting.d.ts +2 -0
- package/dist/types/wallet-server/src/cloud-host.d.ts +7 -3
- package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +2 -1
- package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +19 -5
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +1 -0
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.d.ts +6 -0
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/internalServiceHttp.d.ts +1 -0
- package/dist/types/wallet-server/src/core/d1Ed25519SignerRead.d.ts +17 -0
- package/dist/types/wallet-server/src/core/d1WalletStore.d.ts +6 -0
- package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +1 -0
- package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +5 -1
- package/dist/types/wallet-server/src/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.d.ts +1 -0
- package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +14 -48
- package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +4 -3
- package/dist/types/wallet-server/src/localIntendedYaoSigningFault.d.ts +1 -16
- package/dist/types/wallet-server/src/localRegistrationSetupAuthority.d.ts +1 -1
- package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +7 -1
- package/dist/types/wallet-server/src/router/auth/routerApiCredentialAuth.d.ts +11 -3
- package/dist/types/wallet-server/src/router/auth/walletRegistrationContext.d.ts +8 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizationAssembly.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1EmailOtpRouteService.d.ts +16 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +7 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthService.d.ts +4 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/walletSessionCredentialReaders.d.ts +7 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +32 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.d.ts +3 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts +1 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoStateWriteFence.d.ts +8 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1WalletCeremonyActivity.d.ts +15 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.d.ts +6 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +1 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.d.ts +4 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpCounters.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +6 -29
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +21 -7
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +17 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +32 -7
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +16 -7
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSessionTransaction.d.ts +13 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +7 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletExecutionAuthority.d.ts +41 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletOperationStore.d.ts +28 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +6 -9
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationInitialSession.d.ts +17 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationPreparation.d.ts +12 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts +43 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +24 -45
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.d.ts +9 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.d.ts +42 -14
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.d.ts +5 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.d.ts +24 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.d.ts +10 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/authorizationSnapshotLayout.d.ts +21 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +3 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +3 -7
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +8 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationCleanup.d.ts +20 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationFreeze.d.ts +12 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationHistory.d.ts +20 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationIntake.d.ts +29 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationSnapshot.d.ts +31 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationApprovals.d.ts +49 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationChallenges.d.ts +47 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationEmailOtp.d.ts +25 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationOwner.d.ts +88 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationOwnerRequest.d.ts +37 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationPasskey.d.ts +12 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationReadAccess.d.ts +18 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationSessions.d.ts +23 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationWriteBlock.d.ts +16 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/walletObjectAddresses.d.ts +14 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/routerAbServiceBindings.d.ts +13 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletAuthorizationRelocationRoutes.d.ts +21 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +3 -3
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletControlOps.d.ts +2 -1
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +3 -1
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletObjectAddresses.d.ts +45 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletPlacementRoutes.d.ts +30 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationDeriver.d.ts +11 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationEcdsa.d.ts +7 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationEd25519.d.ts +7 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationOps.d.ts +11 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationPresign.d.ts +7 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationSource.d.ts +26 -0
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.d.ts +5 -0
- package/dist/types/wallet-server/src/router/domains/ecdsa/routerAbEcdsaStrictRegistration.d.ts +3 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoCapabilityCommit.d.ts +7 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +41 -7
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +33 -2
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +12 -6
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.d.ts +17 -9
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.d.ts +2 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.d.ts +13 -14
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.d.ts +7 -3
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.d.ts +1 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.d.ts +6 -1
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.d.ts +11 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.d.ts +12 -3
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/registrationCustodyOutcome.d.ts +10 -6
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.d.ts +10 -3
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +12 -5
- package/dist/types/wallet-server/src/router/domains/signingOperations/authorizedOperationWire.d.ts +97 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/ecdsaSigningResponse.d.ts +13 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmission.d.ts +9 -206
- package/dist/types/wallet-server/src/router/domains/signingOperations/signingPrepareSession.d.ts +23 -0
- package/dist/types/wallet-server/src/router/domains/walletRegistration/registrationSessionSeal.d.ts +36 -0
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +7 -7
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationReservation.d.ts +80 -6
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +15 -5
- package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +24 -0
- package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +21 -7
- package/dist/types/wallet-server/src/router/framework/routerApi.d.ts +3 -12
- package/dist/types/wallet-server/src/router/transport/fetch/routes/ed25519AuthorizedOperationRevalidation.d.ts +37 -0
- package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +1 -17
- package/dist/types/wallet-server/src/storage/tenantRoute.d.ts +1 -1
- package/migrations/d1-signer/0049_wallet_relocation_challenges.sql +16 -0
- package/migrations/d1-signer/0050_wallet_relocation_approvals.sql +14 -0
- package/migrations/d1-signer/0051_wallet_relocation_email_otp.sql +92 -0
- package/migrations/d1-signer/0052_wallet_relocation_session_fences.sql +91 -0
- package/migrations/d1-signer/0053_wallet_hosted_history_import.sql +164 -0
- package/migrations/d1-signer/0054_wallet_authorization_freeze.sql +318 -0
- package/migrations/d1-signer/0055_wallet_authorization_snapshot.sql +120 -0
- package/migrations/d1-signer/0056_wallet_authorization_history_import.sql +424 -0
- package/migrations/d1-signer/0057_wallet_authorization_intake.sql +44 -0
- package/migrations/d1-signer/0058_wallet_ceremony_activity.sql +59 -0
- package/migrations/d1-signer/0059_wallet_authorization_activation.sql +45 -0
- package/migrations/d1-signer/0060_wallet_authorization_cleanup.sql +153 -0
- package/migrations/d1-signer/0061_wallet_session_operation_settlement.sql +28 -0
- package/migrations/d1-signer/0062_wallet_step_up_operation_settlement.sql +204 -0
- package/migrations/d1-signer/0063_wallet_operation_history_transfer.sql +466 -0
- package/migrations/d1-signer/0064_wallet_execution_generations.sql +93 -0
- package/migrations/d1-signer/0065_wallet_operation_execution_generation.sql +37 -0
- package/migrations/d1-signer/0066_regional_deployment_admission.sql +59 -0
- package/migrations/d1-signer/0067_registration_completion_decision.sql +12 -0
- package/migrations/d1-signer/0068_registration_cancellation_write_fence.sql +24 -0
- package/migrations/d1-signer/0069_cancelled_registration_session_fence.sql +11 -0
- package/migrations/d1-signer/0070_wallet_passkey_relocation.sql +369 -0
- package/migrations/d1-signer/0071_regional_wallet_otp_counters.sql +98 -0
- package/migrations/d1-signer/0072_linked_device_relocation_history.sql +899 -0
- package/migrations/d1-signer/0073_wallet_recovery_relocation.sql +86 -0
- package/migrations/d1-signer/0074_email_otp_relocation.sql +158 -0
- package/migrations/d1-signer/0075_wallet_authorization_return.sql +107 -0
- package/migrations/d1-signer/0076_wallet_relocation_write_block.sql +406 -0
- package/migrations/d1-signer/0077_wallet_object_addresses.sql +24 -0
- package/package.json +1 -1
- package/src/README.md +23 -1
- package/cloudflare-router-ab/scripts/local-key-material.mjs +0 -29
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
CREATE TABLE wallet_relocation_session_fences (
|
|
2
|
+
namespace TEXT NOT NULL,
|
|
3
|
+
org_id TEXT NOT NULL,
|
|
4
|
+
project_id TEXT NOT NULL,
|
|
5
|
+
env_id TEXT NOT NULL,
|
|
6
|
+
wallet_id TEXT NOT NULL,
|
|
7
|
+
move_id TEXT NOT NULL,
|
|
8
|
+
request_digest_hex TEXT NOT NULL,
|
|
9
|
+
source_generation INTEGER NOT NULL CHECK (source_generation > 0 AND source_generation < 9007199254740991),
|
|
10
|
+
retired_at_ms INTEGER NOT NULL CHECK (retired_at_ms > 0),
|
|
11
|
+
PRIMARY KEY (namespace, org_id, project_id, env_id, wallet_id),
|
|
12
|
+
CHECK (length(move_id) = 49 AND substr(move_id, 1, 6) = 'wmove_' AND substr(move_id, 7) NOT GLOB '*[^A-Za-z0-9_-]*'),
|
|
13
|
+
CHECK (length(request_digest_hex) = 64 AND request_digest_hex NOT GLOB '*[^a-f0-9]*')
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
CREATE TRIGGER wallet_relocation_session_fences_immutable
|
|
17
|
+
BEFORE UPDATE ON wallet_relocation_session_fences
|
|
18
|
+
WHEN NEW.namespace IS NOT OLD.namespace OR NEW.org_id IS NOT OLD.org_id
|
|
19
|
+
OR NEW.project_id IS NOT OLD.project_id OR NEW.env_id IS NOT OLD.env_id
|
|
20
|
+
OR NEW.wallet_id IS NOT OLD.wallet_id OR NEW.move_id IS NOT OLD.move_id
|
|
21
|
+
OR NEW.request_digest_hex IS NOT OLD.request_digest_hex
|
|
22
|
+
OR NEW.source_generation IS NOT OLD.source_generation OR NEW.retired_at_ms IS NOT OLD.retired_at_ms
|
|
23
|
+
BEGIN
|
|
24
|
+
SELECT RAISE(ABORT, 'wallet_relocation_session_fence_immutable');
|
|
25
|
+
END;
|
|
26
|
+
|
|
27
|
+
CREATE TRIGGER wallet_relocation_session_fences_retain
|
|
28
|
+
BEFORE DELETE ON wallet_relocation_session_fences
|
|
29
|
+
BEGIN
|
|
30
|
+
SELECT RAISE(ABORT, 'wallet_relocation_session_fence_retained');
|
|
31
|
+
END;
|
|
32
|
+
|
|
33
|
+
CREATE TRIGGER wallet_session_authorizations_v2_relocation_insert_guard
|
|
34
|
+
BEFORE INSERT ON wallet_session_authorizations_v2
|
|
35
|
+
WHEN EXISTS (
|
|
36
|
+
SELECT 1 FROM wallet_relocation_session_fences AS fence
|
|
37
|
+
WHERE (fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id AND fence.wallet_id = NEW.wallet_id)
|
|
38
|
+
)
|
|
39
|
+
BEGIN
|
|
40
|
+
SELECT RAISE(ABORT, 'wallet_relocation_session_admission_closed');
|
|
41
|
+
END;
|
|
42
|
+
|
|
43
|
+
CREATE TRIGGER wallet_session_authorizations_v2_relocation_update_guard
|
|
44
|
+
BEFORE UPDATE ON wallet_session_authorizations_v2
|
|
45
|
+
WHEN (NEW.retired_at_ms IS NULL) AND EXISTS (
|
|
46
|
+
SELECT 1 FROM wallet_relocation_session_fences AS fence
|
|
47
|
+
WHERE (fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id AND fence.wallet_id = OLD.wallet_id) OR (fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id AND fence.wallet_id = NEW.wallet_id)
|
|
48
|
+
)
|
|
49
|
+
BEGIN
|
|
50
|
+
SELECT RAISE(ABORT, 'wallet_relocation_session_admission_closed');
|
|
51
|
+
END;
|
|
52
|
+
|
|
53
|
+
CREATE TRIGGER wallet_session_hosted_credentials_v2_relocation_insert_guard
|
|
54
|
+
BEFORE INSERT ON wallet_session_hosted_credentials_v2
|
|
55
|
+
WHEN EXISTS (
|
|
56
|
+
SELECT 1 FROM wallet_relocation_session_fences AS fence
|
|
57
|
+
WHERE (fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id AND fence.wallet_id = NEW.wallet_id)
|
|
58
|
+
)
|
|
59
|
+
BEGIN
|
|
60
|
+
SELECT RAISE(ABORT, 'wallet_relocation_session_admission_closed');
|
|
61
|
+
END;
|
|
62
|
+
|
|
63
|
+
CREATE TRIGGER wallet_session_hosted_credentials_v2_relocation_update_guard
|
|
64
|
+
BEFORE UPDATE ON wallet_session_hosted_credentials_v2
|
|
65
|
+
WHEN (NEW.lifecycle_kind = 'active') AND EXISTS (
|
|
66
|
+
SELECT 1 FROM wallet_relocation_session_fences AS fence
|
|
67
|
+
WHERE (fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id AND fence.wallet_id = OLD.wallet_id) OR (fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id AND fence.wallet_id = NEW.wallet_id)
|
|
68
|
+
)
|
|
69
|
+
BEGIN
|
|
70
|
+
SELECT RAISE(ABORT, 'wallet_relocation_session_admission_closed');
|
|
71
|
+
END;
|
|
72
|
+
|
|
73
|
+
CREATE TRIGGER wallet_session_hosted_exchange_codes_v2_relocation_insert_guard
|
|
74
|
+
BEFORE INSERT ON wallet_session_hosted_exchange_codes_v2
|
|
75
|
+
WHEN EXISTS (
|
|
76
|
+
SELECT 1 FROM wallet_relocation_session_fences AS fence
|
|
77
|
+
WHERE (fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id AND fence.wallet_id = NEW.wallet_id)
|
|
78
|
+
)
|
|
79
|
+
BEGIN
|
|
80
|
+
SELECT RAISE(ABORT, 'wallet_relocation_session_admission_closed');
|
|
81
|
+
END;
|
|
82
|
+
|
|
83
|
+
CREATE TRIGGER wallet_session_hosted_exchange_codes_v2_relocation_update_guard
|
|
84
|
+
BEFORE UPDATE ON wallet_session_hosted_exchange_codes_v2
|
|
85
|
+
WHEN (NEW.lifecycle_kind IN ('issued', 'consumed')) AND EXISTS (
|
|
86
|
+
SELECT 1 FROM wallet_relocation_session_fences AS fence
|
|
87
|
+
WHERE (fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id AND fence.wallet_id = OLD.wallet_id) OR (fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id AND fence.wallet_id = NEW.wallet_id)
|
|
88
|
+
)
|
|
89
|
+
BEGIN
|
|
90
|
+
SELECT RAISE(ABORT, 'wallet_relocation_session_admission_closed');
|
|
91
|
+
END;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
CREATE TABLE wallet_relocation_hosted_imports (
|
|
2
|
+
namespace TEXT NOT NULL, org_id TEXT NOT NULL, project_id TEXT NOT NULL, env_id TEXT NOT NULL,
|
|
3
|
+
wallet_id TEXT NOT NULL, move_id TEXT NOT NULL, request_digest_hex TEXT NOT NULL,
|
|
4
|
+
source_generation INTEGER NOT NULL CHECK (source_generation > 0 AND source_generation < 9007199254740991),
|
|
5
|
+
state TEXT NOT NULL CHECK (state IN ('importing', 'closed', 'activated')),
|
|
6
|
+
PRIMARY KEY (namespace, org_id, project_id, env_id, wallet_id)
|
|
7
|
+
);
|
|
8
|
+
|
|
9
|
+
CREATE TABLE wallet_relocation_hosted_import_context (
|
|
10
|
+
namespace TEXT NOT NULL, org_id TEXT NOT NULL, project_id TEXT NOT NULL, env_id TEXT NOT NULL,
|
|
11
|
+
wallet_id TEXT NOT NULL, move_id TEXT NOT NULL, request_digest_hex TEXT NOT NULL,
|
|
12
|
+
source_generation INTEGER NOT NULL,
|
|
13
|
+
kind TEXT NOT NULL CHECK (kind IN ('credential', 'exchange')),
|
|
14
|
+
tenant_id TEXT NOT NULL, record_id TEXT NOT NULL,
|
|
15
|
+
record_digest TEXT NOT NULL CHECK (length(record_digest) = 64 AND record_digest NOT GLOB '*[^a-f0-9]*'),
|
|
16
|
+
PRIMARY KEY (namespace, org_id, project_id, env_id, wallet_id, kind, tenant_id, record_id)
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
CREATE TABLE wallet_relocation_hosted_import_receipts (
|
|
20
|
+
namespace TEXT NOT NULL, org_id TEXT NOT NULL, project_id TEXT NOT NULL, env_id TEXT NOT NULL,
|
|
21
|
+
wallet_id TEXT NOT NULL, move_id TEXT NOT NULL, request_digest_hex TEXT NOT NULL,
|
|
22
|
+
source_generation INTEGER NOT NULL,
|
|
23
|
+
kind TEXT NOT NULL CHECK (kind IN ('credential', 'exchange')),
|
|
24
|
+
tenant_id TEXT NOT NULL, record_id TEXT NOT NULL,
|
|
25
|
+
record_digest TEXT NOT NULL CHECK (length(record_digest) = 64 AND record_digest NOT GLOB '*[^a-f0-9]*'),
|
|
26
|
+
PRIMARY KEY (namespace, org_id, project_id, env_id, wallet_id, move_id, kind, tenant_id, record_id)
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
CREATE TRIGGER wallet_relocation_hosted_import_identity_guard
|
|
30
|
+
BEFORE UPDATE ON wallet_relocation_hosted_imports
|
|
31
|
+
WHEN NEW.namespace IS NOT OLD.namespace OR NEW.org_id IS NOT OLD.org_id
|
|
32
|
+
OR NEW.project_id IS NOT OLD.project_id OR NEW.env_id IS NOT OLD.env_id
|
|
33
|
+
OR NEW.wallet_id IS NOT OLD.wallet_id OR NEW.move_id IS NOT OLD.move_id
|
|
34
|
+
OR NEW.request_digest_hex IS NOT OLD.request_digest_hex OR NEW.source_generation IS NOT OLD.source_generation
|
|
35
|
+
OR (OLD.state = 'closed' AND NEW.state = 'importing')
|
|
36
|
+
OR (OLD.state = 'activated' AND NEW.state != 'activated')
|
|
37
|
+
OR (OLD.state = 'importing' AND NEW.state = 'activated')
|
|
38
|
+
BEGIN SELECT RAISE(ABORT, 'wallet_hosted_history_import_transition_rejected'); END;
|
|
39
|
+
|
|
40
|
+
CREATE TRIGGER wallet_relocation_hosted_import_retain
|
|
41
|
+
BEFORE DELETE ON wallet_relocation_hosted_imports
|
|
42
|
+
BEGIN SELECT RAISE(ABORT, 'wallet_hosted_history_import_retained'); END;
|
|
43
|
+
|
|
44
|
+
CREATE TRIGGER wallet_relocation_hosted_receipt_immutable
|
|
45
|
+
BEFORE UPDATE ON wallet_relocation_hosted_import_receipts
|
|
46
|
+
BEGIN SELECT RAISE(ABORT, 'wallet_hosted_history_receipt_immutable'); END;
|
|
47
|
+
|
|
48
|
+
CREATE TRIGGER wallet_relocation_hosted_receipt_retain
|
|
49
|
+
BEFORE DELETE ON wallet_relocation_hosted_import_receipts
|
|
50
|
+
BEGIN SELECT RAISE(ABORT, 'wallet_hosted_history_receipt_retained'); END;
|
|
51
|
+
|
|
52
|
+
CREATE TRIGGER wallet_session_authorizations_v2_import_insert_guard
|
|
53
|
+
BEFORE INSERT ON wallet_session_authorizations_v2
|
|
54
|
+
WHEN NEW.retired_at_ms IS NULL AND EXISTS (
|
|
55
|
+
SELECT 1 FROM wallet_relocation_hosted_imports AS destination
|
|
56
|
+
WHERE destination.namespace = NEW.namespace AND destination.org_id = NEW.org_id
|
|
57
|
+
AND destination.project_id = NEW.project_id AND destination.env_id = NEW.env_id
|
|
58
|
+
AND destination.wallet_id = NEW.wallet_id AND destination.state != 'activated'
|
|
59
|
+
)
|
|
60
|
+
BEGIN SELECT RAISE(ABORT, 'wallet_hosted_history_destination_inactive'); END;
|
|
61
|
+
|
|
62
|
+
CREATE TRIGGER wallet_session_authorizations_v2_import_update_guard
|
|
63
|
+
BEFORE UPDATE ON wallet_session_authorizations_v2
|
|
64
|
+
WHEN NEW.retired_at_ms IS NULL AND EXISTS (
|
|
65
|
+
SELECT 1 FROM wallet_relocation_hosted_imports AS destination
|
|
66
|
+
WHERE destination.namespace = NEW.namespace AND destination.org_id = NEW.org_id
|
|
67
|
+
AND destination.project_id = NEW.project_id AND destination.env_id = NEW.env_id
|
|
68
|
+
AND destination.wallet_id = NEW.wallet_id AND destination.state != 'activated'
|
|
69
|
+
)
|
|
70
|
+
BEGIN SELECT RAISE(ABORT, 'wallet_hosted_history_destination_inactive'); END;
|
|
71
|
+
|
|
72
|
+
DROP TRIGGER wallet_session_hosted_credentials_v2_insert_lifecycle_guard;
|
|
73
|
+
CREATE TRIGGER wallet_session_hosted_credentials_v2_insert_lifecycle_guard
|
|
74
|
+
BEFORE INSERT ON wallet_session_hosted_credentials_v2
|
|
75
|
+
WHEN (NEW.lifecycle_kind != 'active' OR NEW.retired_at_ms IS NOT NULL) AND NOT (NEW.lifecycle_kind = 'retired' AND NEW.retired_at_ms IS NOT NULL AND EXISTS (SELECT 1 FROM wallet_relocation_hosted_import_context AS context
|
|
76
|
+
JOIN wallet_relocation_hosted_imports AS destination
|
|
77
|
+
ON destination.namespace = context.namespace AND destination.org_id = context.org_id
|
|
78
|
+
AND destination.project_id = context.project_id AND destination.env_id = context.env_id
|
|
79
|
+
AND destination.wallet_id = context.wallet_id AND destination.move_id = context.move_id
|
|
80
|
+
AND destination.request_digest_hex = context.request_digest_hex
|
|
81
|
+
AND destination.source_generation = context.source_generation AND destination.state = 'importing'
|
|
82
|
+
WHERE context.namespace = NEW.namespace AND context.org_id = NEW.org_id
|
|
83
|
+
AND context.project_id = NEW.project_id AND context.env_id = NEW.env_id
|
|
84
|
+
AND context.wallet_id = NEW.wallet_id AND context.tenant_id = NEW.tenant_id
|
|
85
|
+
AND context.kind = 'credential' AND context.record_id = NEW.hosted_credential_id))
|
|
86
|
+
BEGIN SELECT RAISE(ABORT, 'wallet_session_hosted_credential_initial_state_rejected'); END;
|
|
87
|
+
|
|
88
|
+
DROP TRIGGER wallet_session_hosted_credentials_v2_parent_guard;
|
|
89
|
+
CREATE TRIGGER wallet_session_hosted_credentials_v2_parent_guard
|
|
90
|
+
BEFORE INSERT ON wallet_session_hosted_credentials_v2
|
|
91
|
+
WHEN NOT EXISTS (
|
|
92
|
+
SELECT 1 FROM wallet_session_authorizations_v2 AS session
|
|
93
|
+
WHERE session.namespace = NEW.namespace AND session.org_id = NEW.org_id
|
|
94
|
+
AND session.project_id = NEW.project_id AND session.env_id = NEW.env_id
|
|
95
|
+
AND session.tenant_id = NEW.tenant_id AND session.authorization_id = NEW.authorization_id
|
|
96
|
+
AND session.wallet_session_id = NEW.wallet_session_id AND session.quota_id = NEW.quota_id
|
|
97
|
+
AND session.principal_id = NEW.principal_id AND session.wallet_id = NEW.wallet_id
|
|
98
|
+
AND session.authority_id = NEW.authority_id AND session.wallet_auth_method_id = NEW.wallet_auth_method_id
|
|
99
|
+
AND session.operation_credential_hash IS NOT NULL AND session.expires_at_ms >= NEW.expires_at_ms
|
|
100
|
+
AND (session.retired_at_ms IS NULL OR (NEW.lifecycle_kind = 'retired' AND NEW.retired_at_ms IS NOT NULL AND EXISTS (SELECT 1 FROM wallet_relocation_hosted_import_context AS context
|
|
101
|
+
JOIN wallet_relocation_hosted_imports AS destination
|
|
102
|
+
ON destination.namespace = context.namespace AND destination.org_id = context.org_id
|
|
103
|
+
AND destination.project_id = context.project_id AND destination.env_id = context.env_id
|
|
104
|
+
AND destination.wallet_id = context.wallet_id AND destination.move_id = context.move_id
|
|
105
|
+
AND destination.request_digest_hex = context.request_digest_hex
|
|
106
|
+
AND destination.source_generation = context.source_generation AND destination.state = 'importing'
|
|
107
|
+
WHERE context.namespace = NEW.namespace AND context.org_id = NEW.org_id
|
|
108
|
+
AND context.project_id = NEW.project_id AND context.env_id = NEW.env_id
|
|
109
|
+
AND context.wallet_id = NEW.wallet_id AND context.tenant_id = NEW.tenant_id
|
|
110
|
+
AND context.kind = 'credential' AND context.record_id = NEW.hosted_credential_id)))
|
|
111
|
+
)
|
|
112
|
+
BEGIN SELECT RAISE(ABORT, 'wallet_session_hosted_credential_parent_rejected'); END;
|
|
113
|
+
|
|
114
|
+
DROP TRIGGER wallet_session_hosted_exchange_codes_v2_insert_lifecycle_guard;
|
|
115
|
+
CREATE TRIGGER wallet_session_hosted_exchange_codes_v2_insert_lifecycle_guard
|
|
116
|
+
BEFORE INSERT ON wallet_session_hosted_exchange_codes_v2
|
|
117
|
+
WHEN (NEW.lifecycle_kind != 'issued' OR NEW.hosted_credential_id IS NOT NULL OR NEW.consumed_at_ms IS NOT NULL) AND NOT ((NEW.lifecycle_kind = 'issued' OR (NEW.lifecycle_kind = 'consumed' AND EXISTS (
|
|
118
|
+
SELECT 1 FROM wallet_session_hosted_credentials_v2 AS child
|
|
119
|
+
WHERE child.namespace = NEW.namespace AND child.org_id = NEW.org_id
|
|
120
|
+
AND child.project_id = NEW.project_id AND child.env_id = NEW.env_id
|
|
121
|
+
AND child.tenant_id = NEW.tenant_id AND child.hosted_credential_id = NEW.hosted_credential_id
|
|
122
|
+
AND child.wallet_id = NEW.wallet_id AND child.lifecycle_kind = 'retired'))) AND EXISTS (SELECT 1 FROM wallet_relocation_hosted_import_context AS context
|
|
123
|
+
JOIN wallet_relocation_hosted_imports AS destination
|
|
124
|
+
ON destination.namespace = context.namespace AND destination.org_id = context.org_id
|
|
125
|
+
AND destination.project_id = context.project_id AND destination.env_id = context.env_id
|
|
126
|
+
AND destination.wallet_id = context.wallet_id AND destination.move_id = context.move_id
|
|
127
|
+
AND destination.request_digest_hex = context.request_digest_hex
|
|
128
|
+
AND destination.source_generation = context.source_generation AND destination.state = 'importing'
|
|
129
|
+
WHERE context.namespace = NEW.namespace AND context.org_id = NEW.org_id
|
|
130
|
+
AND context.project_id = NEW.project_id AND context.env_id = NEW.env_id
|
|
131
|
+
AND context.wallet_id = NEW.wallet_id AND context.tenant_id = NEW.tenant_id
|
|
132
|
+
AND context.kind = 'exchange' AND context.record_id = NEW.exchange_code_id))
|
|
133
|
+
BEGIN SELECT RAISE(ABORT, 'wallet_session_hosted_exchange_initial_state_rejected'); END;
|
|
134
|
+
|
|
135
|
+
DROP TRIGGER wallet_session_hosted_exchange_codes_v2_parent_guard;
|
|
136
|
+
CREATE TRIGGER wallet_session_hosted_exchange_codes_v2_parent_guard
|
|
137
|
+
BEFORE INSERT ON wallet_session_hosted_exchange_codes_v2
|
|
138
|
+
WHEN NOT EXISTS (
|
|
139
|
+
SELECT 1 FROM wallet_session_authorizations_v2 AS session
|
|
140
|
+
WHERE session.namespace = NEW.namespace AND session.org_id = NEW.org_id
|
|
141
|
+
AND session.project_id = NEW.project_id AND session.env_id = NEW.env_id
|
|
142
|
+
AND session.tenant_id = NEW.tenant_id AND session.authorization_id = NEW.authorization_id
|
|
143
|
+
AND session.wallet_session_id = NEW.wallet_session_id AND session.quota_id = NEW.quota_id
|
|
144
|
+
AND session.principal_id = NEW.principal_id AND session.wallet_id = NEW.wallet_id
|
|
145
|
+
AND session.authority_id = NEW.authority_id AND session.wallet_auth_method_id = NEW.wallet_auth_method_id
|
|
146
|
+
AND session.operation_credential_hash IS NOT NULL AND session.expires_at_ms >= NEW.expires_at_ms
|
|
147
|
+
AND (session.retired_at_ms IS NULL OR ((NEW.lifecycle_kind = 'issued' OR (NEW.lifecycle_kind = 'consumed' AND EXISTS (
|
|
148
|
+
SELECT 1 FROM wallet_session_hosted_credentials_v2 AS child
|
|
149
|
+
WHERE child.namespace = NEW.namespace AND child.org_id = NEW.org_id
|
|
150
|
+
AND child.project_id = NEW.project_id AND child.env_id = NEW.env_id
|
|
151
|
+
AND child.tenant_id = NEW.tenant_id AND child.hosted_credential_id = NEW.hosted_credential_id
|
|
152
|
+
AND child.wallet_id = NEW.wallet_id AND child.lifecycle_kind = 'retired'))) AND EXISTS (SELECT 1 FROM wallet_relocation_hosted_import_context AS context
|
|
153
|
+
JOIN wallet_relocation_hosted_imports AS destination
|
|
154
|
+
ON destination.namespace = context.namespace AND destination.org_id = context.org_id
|
|
155
|
+
AND destination.project_id = context.project_id AND destination.env_id = context.env_id
|
|
156
|
+
AND destination.wallet_id = context.wallet_id AND destination.move_id = context.move_id
|
|
157
|
+
AND destination.request_digest_hex = context.request_digest_hex
|
|
158
|
+
AND destination.source_generation = context.source_generation AND destination.state = 'importing'
|
|
159
|
+
WHERE context.namespace = NEW.namespace AND context.org_id = NEW.org_id
|
|
160
|
+
AND context.project_id = NEW.project_id AND context.env_id = NEW.env_id
|
|
161
|
+
AND context.wallet_id = NEW.wallet_id AND context.tenant_id = NEW.tenant_id
|
|
162
|
+
AND context.kind = 'exchange' AND context.record_id = NEW.exchange_code_id)))
|
|
163
|
+
)
|
|
164
|
+
BEGIN SELECT RAISE(ABORT, 'wallet_session_hosted_exchange_parent_rejected'); END;
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
-- Freeze authorization history only after wallet-wide session retirement.
|
|
2
|
+
CREATE TABLE wallet_relocation_authorization_fences (
|
|
3
|
+
namespace TEXT NOT NULL,
|
|
4
|
+
org_id TEXT NOT NULL,
|
|
5
|
+
project_id TEXT NOT NULL,
|
|
6
|
+
env_id TEXT NOT NULL,
|
|
7
|
+
wallet_id TEXT NOT NULL,
|
|
8
|
+
move_id TEXT NOT NULL,
|
|
9
|
+
request_digest_hex TEXT NOT NULL,
|
|
10
|
+
source_generation INTEGER NOT NULL,
|
|
11
|
+
frozen_at_ms INTEGER NOT NULL CHECK (frozen_at_ms > 0),
|
|
12
|
+
PRIMARY KEY (namespace, org_id, project_id, env_id, wallet_id)
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
CREATE TRIGGER wallet_relocation_authorization_fences_retired
|
|
16
|
+
BEFORE INSERT ON wallet_relocation_authorization_fences
|
|
17
|
+
WHEN EXISTS (
|
|
18
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS existing
|
|
19
|
+
WHERE existing.namespace = NEW.namespace AND existing.org_id = NEW.org_id
|
|
20
|
+
AND existing.project_id = NEW.project_id AND existing.env_id = NEW.env_id
|
|
21
|
+
AND existing.wallet_id = NEW.wallet_id
|
|
22
|
+
) OR NOT EXISTS (
|
|
23
|
+
SELECT 1 FROM wallet_relocation_session_fences AS retired
|
|
24
|
+
WHERE retired.namespace = NEW.namespace AND retired.org_id = NEW.org_id
|
|
25
|
+
AND retired.project_id = NEW.project_id AND retired.env_id = NEW.env_id
|
|
26
|
+
AND retired.wallet_id = NEW.wallet_id AND retired.move_id = NEW.move_id
|
|
27
|
+
AND retired.request_digest_hex = NEW.request_digest_hex
|
|
28
|
+
AND retired.source_generation = NEW.source_generation
|
|
29
|
+
AND retired.retired_at_ms <= NEW.frozen_at_ms
|
|
30
|
+
) OR EXISTS (
|
|
31
|
+
SELECT 1 FROM wallet_session_authorizations_v2 AS session
|
|
32
|
+
WHERE session.namespace = NEW.namespace AND session.org_id = NEW.org_id
|
|
33
|
+
AND session.project_id = NEW.project_id AND session.env_id = NEW.env_id
|
|
34
|
+
AND session.wallet_id = NEW.wallet_id AND session.retired_at_ms IS NULL
|
|
35
|
+
) OR EXISTS (
|
|
36
|
+
SELECT 1 FROM wallet_session_hosted_credentials_v2 AS credential
|
|
37
|
+
WHERE credential.namespace = NEW.namespace AND credential.org_id = NEW.org_id
|
|
38
|
+
AND credential.project_id = NEW.project_id AND credential.env_id = NEW.env_id
|
|
39
|
+
AND credential.wallet_id = NEW.wallet_id AND credential.lifecycle_kind = 'active'
|
|
40
|
+
)
|
|
41
|
+
BEGIN
|
|
42
|
+
SELECT RAISE(ABORT, 'wallet_authorization_freeze_requires_retirement');
|
|
43
|
+
END;
|
|
44
|
+
|
|
45
|
+
CREATE TRIGGER wallet_relocation_authorization_fences_immutable
|
|
46
|
+
BEFORE UPDATE ON wallet_relocation_authorization_fences
|
|
47
|
+
WHEN NEW.namespace IS NOT OLD.namespace OR NEW.org_id IS NOT OLD.org_id
|
|
48
|
+
OR NEW.project_id IS NOT OLD.project_id OR NEW.env_id IS NOT OLD.env_id
|
|
49
|
+
OR NEW.wallet_id IS NOT OLD.wallet_id OR NEW.move_id IS NOT OLD.move_id
|
|
50
|
+
OR NEW.request_digest_hex IS NOT OLD.request_digest_hex
|
|
51
|
+
OR NEW.source_generation IS NOT OLD.source_generation OR NEW.frozen_at_ms IS NOT OLD.frozen_at_ms
|
|
52
|
+
BEGIN
|
|
53
|
+
SELECT RAISE(ABORT, 'wallet_authorization_fence_immutable');
|
|
54
|
+
END;
|
|
55
|
+
|
|
56
|
+
CREATE TRIGGER wallet_relocation_authorization_fences_retain
|
|
57
|
+
BEFORE DELETE ON wallet_relocation_authorization_fences
|
|
58
|
+
BEGIN
|
|
59
|
+
SELECT RAISE(ABORT, 'wallet_authorization_fence_retained');
|
|
60
|
+
END;
|
|
61
|
+
|
|
62
|
+
CREATE TRIGGER wallet_authorities_frozen_insert
|
|
63
|
+
BEFORE INSERT ON wallet_authorities
|
|
64
|
+
WHEN EXISTS (
|
|
65
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
66
|
+
WHERE fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id
|
|
67
|
+
AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id
|
|
68
|
+
AND fence.wallet_id = NEW.wallet_id
|
|
69
|
+
)
|
|
70
|
+
BEGIN
|
|
71
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
72
|
+
END;
|
|
73
|
+
|
|
74
|
+
CREATE TRIGGER wallet_authorities_frozen_update
|
|
75
|
+
BEFORE UPDATE ON wallet_authorities
|
|
76
|
+
WHEN EXISTS (
|
|
77
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
78
|
+
WHERE fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id
|
|
79
|
+
AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id
|
|
80
|
+
AND fence.wallet_id = OLD.wallet_id
|
|
81
|
+
) OR EXISTS (
|
|
82
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
83
|
+
WHERE fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id
|
|
84
|
+
AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id
|
|
85
|
+
AND fence.wallet_id = NEW.wallet_id
|
|
86
|
+
)
|
|
87
|
+
BEGIN
|
|
88
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
89
|
+
END;
|
|
90
|
+
|
|
91
|
+
CREATE TRIGGER wallet_authorities_frozen_delete
|
|
92
|
+
BEFORE DELETE ON wallet_authorities
|
|
93
|
+
WHEN EXISTS (
|
|
94
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
95
|
+
WHERE fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id
|
|
96
|
+
AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id
|
|
97
|
+
AND fence.wallet_id = OLD.wallet_id
|
|
98
|
+
)
|
|
99
|
+
BEGIN
|
|
100
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
101
|
+
END;
|
|
102
|
+
|
|
103
|
+
CREATE TRIGGER wallet_auth_methods_frozen_insert
|
|
104
|
+
BEFORE INSERT ON wallet_auth_methods
|
|
105
|
+
WHEN EXISTS (
|
|
106
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
107
|
+
WHERE fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id
|
|
108
|
+
AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id
|
|
109
|
+
AND fence.wallet_id = NEW.wallet_id
|
|
110
|
+
)
|
|
111
|
+
BEGIN
|
|
112
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
113
|
+
END;
|
|
114
|
+
|
|
115
|
+
CREATE TRIGGER wallet_auth_methods_frozen_update
|
|
116
|
+
BEFORE UPDATE ON wallet_auth_methods
|
|
117
|
+
WHEN EXISTS (
|
|
118
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
119
|
+
WHERE fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id
|
|
120
|
+
AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id
|
|
121
|
+
AND fence.wallet_id = OLD.wallet_id
|
|
122
|
+
) OR EXISTS (
|
|
123
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
124
|
+
WHERE fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id
|
|
125
|
+
AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id
|
|
126
|
+
AND fence.wallet_id = NEW.wallet_id
|
|
127
|
+
)
|
|
128
|
+
BEGIN
|
|
129
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
130
|
+
END;
|
|
131
|
+
|
|
132
|
+
CREATE TRIGGER wallet_auth_methods_frozen_delete
|
|
133
|
+
BEFORE DELETE ON wallet_auth_methods
|
|
134
|
+
WHEN EXISTS (
|
|
135
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
136
|
+
WHERE fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id
|
|
137
|
+
AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id
|
|
138
|
+
AND fence.wallet_id = OLD.wallet_id
|
|
139
|
+
)
|
|
140
|
+
BEGIN
|
|
141
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
142
|
+
END;
|
|
143
|
+
|
|
144
|
+
CREATE TRIGGER wallet_session_authorizations_v2_frozen_insert
|
|
145
|
+
BEFORE INSERT ON wallet_session_authorizations_v2
|
|
146
|
+
WHEN EXISTS (
|
|
147
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
148
|
+
WHERE fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id
|
|
149
|
+
AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id
|
|
150
|
+
AND fence.wallet_id = NEW.wallet_id
|
|
151
|
+
)
|
|
152
|
+
BEGIN
|
|
153
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
154
|
+
END;
|
|
155
|
+
|
|
156
|
+
CREATE TRIGGER wallet_session_authorizations_v2_frozen_update
|
|
157
|
+
BEFORE UPDATE ON wallet_session_authorizations_v2
|
|
158
|
+
WHEN EXISTS (
|
|
159
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
160
|
+
WHERE fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id
|
|
161
|
+
AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id
|
|
162
|
+
AND fence.wallet_id = OLD.wallet_id
|
|
163
|
+
) OR EXISTS (
|
|
164
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
165
|
+
WHERE fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id
|
|
166
|
+
AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id
|
|
167
|
+
AND fence.wallet_id = NEW.wallet_id
|
|
168
|
+
)
|
|
169
|
+
BEGIN
|
|
170
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
171
|
+
END;
|
|
172
|
+
|
|
173
|
+
CREATE TRIGGER wallet_session_authorizations_v2_frozen_delete
|
|
174
|
+
BEFORE DELETE ON wallet_session_authorizations_v2
|
|
175
|
+
WHEN EXISTS (
|
|
176
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
177
|
+
WHERE fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id
|
|
178
|
+
AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id
|
|
179
|
+
AND fence.wallet_id = OLD.wallet_id
|
|
180
|
+
)
|
|
181
|
+
BEGIN
|
|
182
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
183
|
+
END;
|
|
184
|
+
|
|
185
|
+
CREATE TRIGGER wallet_session_hosted_credentials_v2_frozen_insert
|
|
186
|
+
BEFORE INSERT ON wallet_session_hosted_credentials_v2
|
|
187
|
+
WHEN EXISTS (
|
|
188
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
189
|
+
WHERE fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id
|
|
190
|
+
AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id
|
|
191
|
+
AND fence.wallet_id = NEW.wallet_id
|
|
192
|
+
)
|
|
193
|
+
BEGIN
|
|
194
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
195
|
+
END;
|
|
196
|
+
|
|
197
|
+
CREATE TRIGGER wallet_session_hosted_credentials_v2_frozen_update
|
|
198
|
+
BEFORE UPDATE ON wallet_session_hosted_credentials_v2
|
|
199
|
+
WHEN EXISTS (
|
|
200
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
201
|
+
WHERE fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id
|
|
202
|
+
AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id
|
|
203
|
+
AND fence.wallet_id = OLD.wallet_id
|
|
204
|
+
) OR EXISTS (
|
|
205
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
206
|
+
WHERE fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id
|
|
207
|
+
AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id
|
|
208
|
+
AND fence.wallet_id = NEW.wallet_id
|
|
209
|
+
)
|
|
210
|
+
BEGIN
|
|
211
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
212
|
+
END;
|
|
213
|
+
|
|
214
|
+
CREATE TRIGGER wallet_session_hosted_credentials_v2_frozen_delete
|
|
215
|
+
BEFORE DELETE ON wallet_session_hosted_credentials_v2
|
|
216
|
+
WHEN EXISTS (
|
|
217
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
218
|
+
WHERE fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id
|
|
219
|
+
AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id
|
|
220
|
+
AND fence.wallet_id = OLD.wallet_id
|
|
221
|
+
)
|
|
222
|
+
BEGIN
|
|
223
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
224
|
+
END;
|
|
225
|
+
|
|
226
|
+
CREATE TRIGGER wallet_session_hosted_exchange_codes_v2_frozen_insert
|
|
227
|
+
BEFORE INSERT ON wallet_session_hosted_exchange_codes_v2
|
|
228
|
+
WHEN EXISTS (
|
|
229
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
230
|
+
WHERE fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id
|
|
231
|
+
AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id
|
|
232
|
+
AND fence.wallet_id = NEW.wallet_id
|
|
233
|
+
)
|
|
234
|
+
BEGIN
|
|
235
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
236
|
+
END;
|
|
237
|
+
|
|
238
|
+
CREATE TRIGGER wallet_session_hosted_exchange_codes_v2_frozen_update
|
|
239
|
+
BEFORE UPDATE ON wallet_session_hosted_exchange_codes_v2
|
|
240
|
+
WHEN EXISTS (
|
|
241
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
242
|
+
WHERE fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id
|
|
243
|
+
AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id
|
|
244
|
+
AND fence.wallet_id = OLD.wallet_id
|
|
245
|
+
) OR EXISTS (
|
|
246
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
247
|
+
WHERE fence.namespace = NEW.namespace AND fence.org_id = NEW.org_id
|
|
248
|
+
AND fence.project_id = NEW.project_id AND fence.env_id = NEW.env_id
|
|
249
|
+
AND fence.wallet_id = NEW.wallet_id
|
|
250
|
+
)
|
|
251
|
+
BEGIN
|
|
252
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
253
|
+
END;
|
|
254
|
+
|
|
255
|
+
CREATE TRIGGER wallet_session_hosted_exchange_codes_v2_frozen_delete
|
|
256
|
+
BEFORE DELETE ON wallet_session_hosted_exchange_codes_v2
|
|
257
|
+
WHEN EXISTS (
|
|
258
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
259
|
+
WHERE fence.namespace = OLD.namespace AND fence.org_id = OLD.org_id
|
|
260
|
+
AND fence.project_id = OLD.project_id AND fence.env_id = OLD.env_id
|
|
261
|
+
AND fence.wallet_id = OLD.wallet_id
|
|
262
|
+
)
|
|
263
|
+
BEGIN
|
|
264
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
265
|
+
END;
|
|
266
|
+
|
|
267
|
+
CREATE TRIGGER authorization_wallet_session_quotas_frozen_insert
|
|
268
|
+
BEFORE INSERT ON authorization_wallet_session_quotas
|
|
269
|
+
WHEN EXISTS (
|
|
270
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
271
|
+
JOIN wallet_session_authorizations_v2 AS session
|
|
272
|
+
ON session.namespace = fence.namespace AND session.org_id = fence.org_id
|
|
273
|
+
AND session.project_id = fence.project_id AND session.env_id = fence.env_id
|
|
274
|
+
AND session.wallet_id = fence.wallet_id
|
|
275
|
+
WHERE session.namespace = NEW.namespace AND session.tenant_id = NEW.tenant_id
|
|
276
|
+
AND session.quota_id = NEW.quota_id AND session.wallet_session_id = NEW.wallet_session_id
|
|
277
|
+
)
|
|
278
|
+
BEGIN
|
|
279
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
280
|
+
END;
|
|
281
|
+
|
|
282
|
+
CREATE TRIGGER authorization_wallet_session_quotas_frozen_update
|
|
283
|
+
BEFORE UPDATE ON authorization_wallet_session_quotas
|
|
284
|
+
WHEN EXISTS (
|
|
285
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
286
|
+
JOIN wallet_session_authorizations_v2 AS session
|
|
287
|
+
ON session.namespace = fence.namespace AND session.org_id = fence.org_id
|
|
288
|
+
AND session.project_id = fence.project_id AND session.env_id = fence.env_id
|
|
289
|
+
AND session.wallet_id = fence.wallet_id
|
|
290
|
+
WHERE session.namespace = OLD.namespace AND session.tenant_id = OLD.tenant_id
|
|
291
|
+
AND session.quota_id = OLD.quota_id AND session.wallet_session_id = OLD.wallet_session_id
|
|
292
|
+
) OR EXISTS (
|
|
293
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
294
|
+
JOIN wallet_session_authorizations_v2 AS session
|
|
295
|
+
ON session.namespace = fence.namespace AND session.org_id = fence.org_id
|
|
296
|
+
AND session.project_id = fence.project_id AND session.env_id = fence.env_id
|
|
297
|
+
AND session.wallet_id = fence.wallet_id
|
|
298
|
+
WHERE session.namespace = NEW.namespace AND session.tenant_id = NEW.tenant_id
|
|
299
|
+
AND session.quota_id = NEW.quota_id AND session.wallet_session_id = NEW.wallet_session_id
|
|
300
|
+
)
|
|
301
|
+
BEGIN
|
|
302
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
303
|
+
END;
|
|
304
|
+
|
|
305
|
+
CREATE TRIGGER authorization_wallet_session_quotas_frozen_delete
|
|
306
|
+
BEFORE DELETE ON authorization_wallet_session_quotas
|
|
307
|
+
WHEN EXISTS (
|
|
308
|
+
SELECT 1 FROM wallet_relocation_authorization_fences AS fence
|
|
309
|
+
JOIN wallet_session_authorizations_v2 AS session
|
|
310
|
+
ON session.namespace = fence.namespace AND session.org_id = fence.org_id
|
|
311
|
+
AND session.project_id = fence.project_id AND session.env_id = fence.env_id
|
|
312
|
+
AND session.wallet_id = fence.wallet_id
|
|
313
|
+
WHERE session.namespace = OLD.namespace AND session.tenant_id = OLD.tenant_id
|
|
314
|
+
AND session.quota_id = OLD.quota_id AND session.wallet_session_id = OLD.wallet_session_id
|
|
315
|
+
)
|
|
316
|
+
BEGIN
|
|
317
|
+
SELECT RAISE(ABORT, 'wallet_authorization_history_frozen');
|
|
318
|
+
END;
|