@seams/wallet-server 0.15.4 → 0.17.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/README.md +51 -1
- package/THIRD_PARTY_NOTICES.md +102 -1
- package/artifact-manifest.json +27 -22
- package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
- 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_bg.wasm +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_bg.wasm +0 -0
- package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
- 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_bg.wasm +0 -0
- package/cloudflare-router-ab/migrations/postgres/0001_role_store.sql +567 -0
- package/dist/esm/authorization/factorEvidence.js +49 -8
- package/dist/esm/authorization/vaultProxyUse.js +15 -15
- package/dist/esm/core/SessionService.js +1 -0
- package/dist/esm/core/ThresholdService/kv.js +2 -0
- package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +3 -0
- package/dist/esm/core/d1IdentityStore.js +3 -1
- package/dist/esm/core/d1TenantStore.js +4 -1
- package/dist/esm/core/d1WalletAuthMethodStore.js +3 -1
- package/dist/esm/core/d1WalletStore.js +5 -2
- package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +1 -4
- package/dist/esm/core/deviceLinking/linkedDeviceSession.js +2 -0
- package/dist/esm/core/deviceLinking/requestProof.js +1 -0
- package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +2 -0
- package/dist/esm/core/routerAbSigning/RouterAbNormalSigningRuntime.js +3 -0
- package/dist/esm/core/rpcClients/near/NearClient.js +8 -0
- package/dist/esm/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.js +0 -1
- package/dist/esm/localHostedWalletGatewayHandler.js +2 -2
- package/dist/esm/localIntendedEcdsaFinalizeFault.js +1 -1
- package/dist/esm/localIntendedLinkExecuteFault.js +1 -1
- package/dist/esm/localIntendedMaterialAdmissionFault.js +2 -2
- package/dist/esm/localIntendedRevokeFault.js +1 -1
- package/dist/esm/localIntendedSessionAdmissionFault.js +1 -1
- package/dist/esm/localIntendedYaoExportFault.js +1 -1
- package/dist/esm/localIntendedYaoFault.js +1 -1
- package/dist/esm/localIntendedYaoFinalizeFault.js +1 -1
- package/dist/esm/localIntendedYaoRecoveryFault.js +3 -3
- package/dist/esm/localIntendedYaoSigningFault.js +1 -1
- package/dist/esm/localRegistrationSetupAuthority.js +1 -0
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +2 -2
- package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +5 -0
- package/dist/esm/router/cloudflare/d1/authorization/d1VaultProxyStore.js +1 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +1 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +2 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +2 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +3 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +2 -3
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +2 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +3 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.js +6 -2
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetAuthenticatorStore.js +3 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +10 -2
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.js +3 -0
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +6 -1
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.js +2 -0
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +5 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +8 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +6 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +4 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +1 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +1 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +4 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +2 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +1 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +3 -0
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +6 -0
- package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +1 -0
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +2 -4
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +4 -0
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyEnvelopeStore.js +4 -0
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +7 -0
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpAttemptStore.js +1 -0
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js +8 -0
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +3 -0
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +1 -0
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +1 -0
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSessionTransaction.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletOperationStore.js +2 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +3 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +24 -0
- package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +3 -0
- package/dist/esm/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js +6 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +11 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodRevocationReplayStore.js +2 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +16 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +3 -1
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +4 -0
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +5 -1
- package/dist/esm/router/cloudflare/durableObjects/versionedJsonRecordStore.js +6 -0
- package/dist/esm/router/cloudflare/runtime/ed25519SessionAdapter.js +6 -0
- package/dist/esm/router/cloudflare/runtime/walletAuthorizationRelocationRoutes.js +117 -117
- package/dist/esm/router/cloudflare/runtime/walletPlacementRoutes.js +51 -51
- package/dist/esm/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js +3 -3
- package/dist/esm/router/cloudflare.js +114 -61
- package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +1 -1
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +2 -1
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +2 -1
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +6 -8
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +11 -9
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +2 -1
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +11 -9
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +2 -3
- package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.js +2 -4
- package/dist/esm/router/domains/walletRegistration/registrationSessionSeal.js +1 -1
- package/dist/esm/router/framework/http.js +1 -1
- package/dist/esm/router/framework/ror/staticProvider.js +1 -0
- package/dist/esm/router/ror.js +1 -0
- package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +1 -1
- package/dist/esm/shared-ts/src/authorization/operationFingerprint.js +6 -0
- package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +5 -5
- package/dist/esm/shared-ts/src/near/nearClient.js +6 -0
- package/dist/esm/shared-ts/src/tenant-root/tenantRootIdentity.js +5 -0
- package/dist/esm/shared-ts/src/utils/domainIds.js +7 -0
- package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +7 -6
- package/dist/esm/storage/tenantRoute.js +4 -0
- package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/guards/backends.js +2 -0
- package/dist/esm/threshold/session/signingSessionSeal/guards/index.js +2 -1
- package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +3 -0
- package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +14 -14
- package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/ed25519ExportRoot.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/requestProof.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +5 -5
- package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +3 -3
- package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +1 -1
- package/dist/types/shared-ts/src/tenant-root/tenantRootIdentity.d.ts +1 -1
- package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/base64.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/digestEncoding.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/digests.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +16 -16
- package/dist/types/shared-ts/src/utils/emailOtpRecoveryKey.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +10 -10
- package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +12 -11
- package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +3 -3
- package/dist/types/shared-ts/src/utils/routerAbTraceContext.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/signerDomain.d.ts +15 -15
- package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +11 -11
- package/dist/types/shared-ts/src/utils/walletSessionFailure.d.ts +8 -8
- package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/wireSchema.d.ts +1 -1
- package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +1 -1
- package/dist/types/wallet-server/src/authorization/factorEvidence.d.ts +6 -6
- package/dist/types/wallet-server/src/core/ecdsaMaterialReadSnapshot.d.ts +1 -1
- package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +6 -6
- package/dist/types/wallet-server/src/router/auth/webAuthnCredentialCodecs.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +3 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts +2 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.d.ts +2 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/authorizationSnapshotLayout.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationOwner.d.ts +9 -9
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.d.ts +6 -6
- package/dist/types/wallet-server/src/router/domains/signingOperations/signingPrepareSession.d.ts +2 -2
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +1 -1
- package/dist/types/wallet-server/src/router/domains/walletUnlock/walletUnlockRequestedCapabilitiesValidation.d.ts +3 -3
- package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +1 -1
- package/dist/types/wallet-server/src/router/framework/routeAuthPolicy.d.ts +2 -2
- package/dist/types/wallet-server/src/router/framework/routeExecutionContext.d.ts +1 -1
- package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.d.ts +1 -1
- package/migrations/d1-signer/0082_wallet_signature_completions.sql +39 -0
- package/package.json +4 -5
|
@@ -2,6 +2,7 @@ import { emailOtpAuthStateRecord, parseEmailOtpAuthStateRow, parseEmailOtpWallet
|
|
|
2
2
|
import { emailOtpAuthStateRows, emailOtpWalletEnrollmentRows } from "../../../../core/emailOtpD1Statements.js";
|
|
3
3
|
//#region src/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.ts
|
|
4
4
|
var CloudflareD1EmailOtpEnrollmentStore = class {
|
|
5
|
+
prepare;
|
|
5
6
|
constructor(input) {
|
|
6
7
|
this.prepare = input.prepare;
|
|
7
8
|
}
|
|
@@ -2,6 +2,7 @@ import { parseEmailOtpGrantRow } from "./d1EmailOtpRecords.js";
|
|
|
2
2
|
import { emailOtpGrantRows } from "../../../../core/emailOtpD1Statements.js";
|
|
3
3
|
//#region src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.ts
|
|
4
4
|
var CloudflareD1EmailOtpGrantStore = class {
|
|
5
|
+
prepare;
|
|
5
6
|
constructor(input) {
|
|
6
7
|
this.prepare = input.prepare;
|
|
7
8
|
}
|
|
@@ -73,6 +73,10 @@ function emailOtpEnrollmentTenantMismatch() {
|
|
|
73
73
|
return failure("tenant_scope_mismatch", "Email OTP enrollment does not match the requested orgId");
|
|
74
74
|
}
|
|
75
75
|
var CloudflareD1EmailOtpRecoveryService = class {
|
|
76
|
+
emailOtpChallenges;
|
|
77
|
+
emailOtpEnrollments;
|
|
78
|
+
emailOtpGrants;
|
|
79
|
+
emailOtpRateLimits;
|
|
76
80
|
constructor(input) {
|
|
77
81
|
this.emailOtpChallenges = input.emailOtpChallenges;
|
|
78
82
|
this.emailOtpEnrollments = input.emailOtpEnrollments;
|
|
@@ -15,6 +15,8 @@ function parseEmailOtpEnrollmentMaterialBoundaryInput(value) {
|
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
var CloudflareD1EmailOtpRegistrationEnrollmentFinalizer = class {
|
|
18
|
+
emailOtpEnrollments;
|
|
19
|
+
googleEmailOtpSessions;
|
|
18
20
|
constructor(input) {
|
|
19
21
|
this.emailOtpEnrollments = input.emailOtpEnrollments;
|
|
20
22
|
this.googleEmailOtpSessions = input.googleEmailOtpSessions;
|
|
@@ -13,6 +13,7 @@ const removeEmailOtpServerSealOperation = {
|
|
|
13
13
|
failureMessage: "Failed to remove Email OTP server seal"
|
|
14
14
|
};
|
|
15
15
|
var CloudflareD1EmailOtpServerSealRuntime = class {
|
|
16
|
+
cipherResult;
|
|
16
17
|
constructor(config) {
|
|
17
18
|
this.config = config;
|
|
18
19
|
this.cipherResult = this.createCipher();
|
|
@@ -7,6 +7,9 @@ import { emailOtpRegistrationAttemptRows } from "../../../../core/emailOtpD1Stat
|
|
|
7
7
|
import { abandonedGoogleEmailOtpRegistrationAttemptRecord, parseGoogleEmailOtpRegistrationAttemptRow } from "./d1GoogleEmailOtpRegistrationRecords.js";
|
|
8
8
|
//#region src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.ts
|
|
9
9
|
var CloudflareD1GoogleEmailOtpRegistrationAttemptStore = class {
|
|
10
|
+
prepare;
|
|
11
|
+
orgId;
|
|
12
|
+
batch;
|
|
10
13
|
constructor(input) {
|
|
11
14
|
this.prepare = input.prepare;
|
|
12
15
|
this.orgId = input.orgId;
|
|
@@ -9,6 +9,12 @@ import { abandonedGoogleEmailOtpRegistrationAttemptRecord, expiredGoogleEmailOtp
|
|
|
9
9
|
import { googleEmailOtpStaleIdentityMapping, hasDifferentWalletIdentitySubject } from "../identity/d1IdentityRecords.js";
|
|
10
10
|
//#region src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.ts
|
|
11
11
|
var CloudflareD1GoogleEmailOtpSessionResolver = class {
|
|
12
|
+
emailOtpEnrollments;
|
|
13
|
+
emailOtpRateLimits;
|
|
14
|
+
identityStore;
|
|
15
|
+
linkIdentity;
|
|
16
|
+
production;
|
|
17
|
+
registrationAttempts;
|
|
12
18
|
constructor(input) {
|
|
13
19
|
this.emailOtpEnrollments = input.emailOtpEnrollments;
|
|
14
20
|
this.emailOtpRateLimits = input.emailOtpRateLimits;
|
|
@@ -41,10 +41,8 @@ function parseGoogleJwks(input) {
|
|
|
41
41
|
return keysByKid.size > 0 ? keysByKid : null;
|
|
42
42
|
}
|
|
43
43
|
var CloudflareD1OidcJwksCache = class {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this.googleJwksFetchPromise = null;
|
|
47
|
-
}
|
|
44
|
+
googleJwksCache = null;
|
|
45
|
+
googleJwksFetchPromise = null;
|
|
48
46
|
async getGoogleJwks() {
|
|
49
47
|
const nowMs = Date.now();
|
|
50
48
|
if (this.googleJwksCache && nowMs < this.googleJwksCache.expiresAtMs) return this.googleJwksCache;
|
|
@@ -7,6 +7,10 @@ function errorMessage(error) {
|
|
|
7
7
|
return error instanceof Error ? error.message : String(error || "");
|
|
8
8
|
}
|
|
9
9
|
var CloudflareD1OidcVerificationService = class {
|
|
10
|
+
googleOidcClientId;
|
|
11
|
+
githubOAuth;
|
|
12
|
+
identityStore;
|
|
13
|
+
linkIdentity;
|
|
10
14
|
constructor(input) {
|
|
11
15
|
this.googleOidcClientId = input.googleOidcClientId;
|
|
12
16
|
this.githubOAuth = input.githubOAuth;
|
|
@@ -134,6 +134,10 @@ function passkeyCustodyEnvelopeLocatorOf(envelope) {
|
|
|
134
134
|
return envelopeLocator(envelope);
|
|
135
135
|
}
|
|
136
136
|
var CloudflareD1PasskeyCustodyEnvelopeStore = class {
|
|
137
|
+
records;
|
|
138
|
+
activityRecords;
|
|
139
|
+
database;
|
|
140
|
+
scope;
|
|
137
141
|
constructor(options) {
|
|
138
142
|
this.database = options.database;
|
|
139
143
|
this.scope = options.scope;
|
|
@@ -125,6 +125,13 @@ function isRecoveryCodeLocatorCollision(error) {
|
|
|
125
125
|
return message.includes("wallet_recovery_code_locators") && /unique|constraint/i.test(message);
|
|
126
126
|
}
|
|
127
127
|
var CloudflareD1WalletCustodyCommitStore = class {
|
|
128
|
+
recoveryRouting;
|
|
129
|
+
credentialClaims;
|
|
130
|
+
database;
|
|
131
|
+
scope;
|
|
132
|
+
records;
|
|
133
|
+
walletAuthMethodStore;
|
|
134
|
+
walletAuthorityStore;
|
|
128
135
|
constructor(options) {
|
|
129
136
|
this.credentialClaims = options.credentialClaims;
|
|
130
137
|
this.recoveryRouting = options.recoveryRouting;
|
package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpAttemptStore.js
CHANGED
|
@@ -11,6 +11,7 @@ function encodeAttempt(record) {
|
|
|
11
11
|
* challenge binding do.
|
|
12
12
|
*/
|
|
13
13
|
var CloudflareD1WalletRecoveryGoogleEmailOtpAttemptStore = class {
|
|
14
|
+
records;
|
|
14
15
|
constructor(input) {
|
|
15
16
|
this.records = createCloudflareD1VersionedJsonRecordStore({
|
|
16
17
|
database: input.database,
|
package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js
CHANGED
|
@@ -19,6 +19,14 @@ import { buildConsumedRecoverySet, buildRecoveredWalletAuthority, parseRecoveryA
|
|
|
19
19
|
* and factor unsealing stay in their existing services.
|
|
20
20
|
*/
|
|
21
21
|
var CloudflareD1WalletRecoveryGoogleEmailOtpService = class {
|
|
22
|
+
attempts;
|
|
23
|
+
google;
|
|
24
|
+
issuer;
|
|
25
|
+
verifier;
|
|
26
|
+
enrollments;
|
|
27
|
+
serverSeal;
|
|
28
|
+
orgId;
|
|
29
|
+
nowMs;
|
|
22
30
|
constructor(input) {
|
|
23
31
|
this.attempts = input.attempts;
|
|
24
32
|
this.google = input.google;
|
|
@@ -27,6 +27,9 @@ var D1RegistrationCeremonyRecordConflictError = class extends Error {
|
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
var D1RegistrationCeremonyRecordStore = class {
|
|
30
|
+
database;
|
|
31
|
+
tenantScope;
|
|
32
|
+
keyPrefix;
|
|
30
33
|
constructor(options) {
|
|
31
34
|
if (!isD1DatabaseLike(options.database)) throw new Error("Registration ceremony D1 database is required");
|
|
32
35
|
this.database = options.database;
|
|
@@ -6,6 +6,7 @@ import { parseD1StoredAddAuthMethodIntent, parseD1StoredAddSignerIntent, parseD1
|
|
|
6
6
|
import { retryTransientD1 } from "../../../../storage/d1Retry.js";
|
|
7
7
|
//#region src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.ts
|
|
8
8
|
var CloudflareD1RegistrationCeremonyIntentStore = class {
|
|
9
|
+
storage;
|
|
9
10
|
constructor(input) {
|
|
10
11
|
this.input = input;
|
|
11
12
|
this.storage = new D1RegistrationCeremonyRecordStore(input);
|
|
@@ -12,6 +12,7 @@ function errorMessage(error) {
|
|
|
12
12
|
return error instanceof Error ? error.message : String(error || "");
|
|
13
13
|
}
|
|
14
14
|
var CloudflareD1RegistrationIntentService = class {
|
|
15
|
+
getRegistrationCeremonyIntentStore;
|
|
15
16
|
constructor(input) {
|
|
16
17
|
this.getRegistrationCeremonyIntentStore = input.getRegistrationCeremonyIntentStore;
|
|
17
18
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
//#region src/router/cloudflare/d1/registration/d1RegistrationSessionTransaction.ts
|
|
2
2
|
/** The wallet's version checks and the session's winner read share one batch. */
|
|
3
3
|
var D1RegistrationSessionTransaction = class {
|
|
4
|
+
sessionResults = null;
|
|
4
5
|
constructor(database, commitWallet) {
|
|
5
6
|
this.database = database;
|
|
6
7
|
this.commitWallet = commitWallet;
|
|
7
|
-
this.sessionResults = null;
|
|
8
8
|
}
|
|
9
9
|
async execute(sessionStatements) {
|
|
10
10
|
await this.commitWallet(this.commit.bind(this, sessionStatements));
|
|
@@ -3,6 +3,8 @@ import { D1WalletCeremonyActivity } from "../ed25519Yao/d1WalletCeremonyActivity
|
|
|
3
3
|
import { lifecycleWriteFenceStatements } from "../ed25519Yao/d1Ed25519YaoStateWriteFence.js";
|
|
4
4
|
//#region src/router/cloudflare/d1/registration/d1WalletOperationStore.ts
|
|
5
5
|
var D1WalletOperationStore = class {
|
|
6
|
+
records;
|
|
7
|
+
activity;
|
|
6
8
|
constructor(options, walletId) {
|
|
7
9
|
this.options = options;
|
|
8
10
|
this.walletId = walletId;
|
|
@@ -239,6 +239,9 @@ function heldClaimCovers(held, authority) {
|
|
|
239
239
|
return held !== null && held.walletId === authority.walletId && held.rpId === authority.rpId && held.credentialIdB64u === authority.credentialIdB64u;
|
|
240
240
|
}
|
|
241
241
|
var CloudflareD1WalletRegistrationCommitStore = class {
|
|
242
|
+
database;
|
|
243
|
+
scope;
|
|
244
|
+
credentialClaims;
|
|
242
245
|
constructor(input) {
|
|
243
246
|
this.credentialClaims = input.credentialClaims;
|
|
244
247
|
this.database = input.database;
|
|
@@ -856,6 +856,30 @@ function mergeRouterServerTiming(target, header) {
|
|
|
856
856
|
}
|
|
857
857
|
}
|
|
858
858
|
var CloudflareD1WalletRegistrationService = class {
|
|
859
|
+
executionAuthority;
|
|
860
|
+
registrationAuthority;
|
|
861
|
+
authorizationService;
|
|
862
|
+
registrationSessionStore;
|
|
863
|
+
authorizationTenantId;
|
|
864
|
+
createSponsoredNamedNearAccount;
|
|
865
|
+
emailOtpRegistrationEnrollmentFinalizer;
|
|
866
|
+
getRegistrationCeremonyIntentStore;
|
|
867
|
+
getEd25519YaoProductRegistration;
|
|
868
|
+
ecdsaStrictRegistration;
|
|
869
|
+
tenantRootCustodyLineage;
|
|
870
|
+
getWalletStore;
|
|
871
|
+
/** The single Gateway operation row for activate-with-finalize. */
|
|
872
|
+
activateSideEffects;
|
|
873
|
+
/** Registration admission and state loaded in one database snapshot. */
|
|
874
|
+
registrationRead;
|
|
875
|
+
walletRegistrationCommitStore;
|
|
876
|
+
/** Where a ceremony's sealed custody seed and its recovery set land. */
|
|
877
|
+
walletCustodyCommitStore;
|
|
878
|
+
walletAuthMethods;
|
|
879
|
+
getLinkedDeviceEd25519AuthorityReader;
|
|
880
|
+
yaoLifecycleDecisions;
|
|
881
|
+
home;
|
|
882
|
+
startRegistrationWallets;
|
|
859
883
|
constructor(input) {
|
|
860
884
|
this.home = input.home;
|
|
861
885
|
this.executionAuthority = input.executionAuthority;
|
package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js
CHANGED
|
@@ -6,6 +6,9 @@ import { abusePrincipalKey, runtimePolicyScopeKey } from "../../../domains/signi
|
|
|
6
6
|
//#region src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.ts
|
|
7
7
|
const ROUTER_AB_NORMAL_SIGNING_ADMISSION_TABLE = "router_ab_normal_signing_admission_records";
|
|
8
8
|
var CloudflareD1RouterAbNormalSigningAdmissionStore = class {
|
|
9
|
+
database;
|
|
10
|
+
storageNamespace;
|
|
11
|
+
now;
|
|
9
12
|
constructor(options) {
|
|
10
13
|
if (!isD1DatabaseLike(options.database)) throw new Error("Router A/B normal-signing admission D1 database is required");
|
|
11
14
|
this.database = options.database;
|
|
@@ -6,6 +6,7 @@ import { containsControlCharacter } from "../../durableObjects/versionedJsonReco
|
|
|
6
6
|
const TABLE_NAME = "router_ab_yao_versioned_json_records";
|
|
7
7
|
const CAS_GUARD_SQL = D1_BATCH_CAS_GUARD_SQL;
|
|
8
8
|
var CloudflareD1VersionedJsonRecordStoreError = class extends Error {
|
|
9
|
+
code;
|
|
9
10
|
constructor(code, message) {
|
|
10
11
|
super(message);
|
|
11
12
|
this.name = "CloudflareD1VersionedJsonRecordStoreError";
|
|
@@ -13,6 +14,11 @@ var CloudflareD1VersionedJsonRecordStoreError = class extends Error {
|
|
|
13
14
|
}
|
|
14
15
|
};
|
|
15
16
|
var CloudflareD1VersionedJsonRecordStore = class {
|
|
17
|
+
database;
|
|
18
|
+
scope;
|
|
19
|
+
encode;
|
|
20
|
+
parse;
|
|
21
|
+
keyPrefix;
|
|
16
22
|
constructor(options) {
|
|
17
23
|
if (!isD1DatabaseLike(options.database)) throw new Error("Cloudflare D1 versioned JSON database is required");
|
|
18
24
|
this.database = options.database;
|
|
@@ -372,6 +372,17 @@ function sameEcdsaSignerActivation(left, right) {
|
|
|
372
372
|
return left.signer.walletId === right.signer.walletId && left.signer.walletKeyId === right.signer.walletKeyId && left.signer.thresholdPublicKey33B64u === right.signer.thresholdPublicKey33B64u && left.signer.evmAddress === right.signer.evmAddress && mpcMaterialActivationRefsEqual(left.materialActivation, right.materialActivation);
|
|
373
373
|
}
|
|
374
374
|
var CloudflareD1WalletAddSignerService = class {
|
|
375
|
+
executionAuthority;
|
|
376
|
+
getRegistrationCeremonyIntentStore;
|
|
377
|
+
getEd25519YaoProductRegistration;
|
|
378
|
+
ecdsaStrictRegistration;
|
|
379
|
+
tenantRootCustodyLineage;
|
|
380
|
+
getWalletStore;
|
|
381
|
+
walletAuthMethods;
|
|
382
|
+
passkeyCustodyEnvelopes;
|
|
383
|
+
startSideEffects;
|
|
384
|
+
finalizeSideEffects;
|
|
385
|
+
yaoLifecycleDecisions;
|
|
375
386
|
constructor(input) {
|
|
376
387
|
this.executionAuthority = input.executionAuthority;
|
|
377
388
|
this.getRegistrationCeremonyIntentStore = input.getRegistrationCeremonyIntentStore;
|
|
@@ -17,6 +17,8 @@ async function computeWalletAuthMethodRevocationProofDigestV1(proof) {
|
|
|
17
17
|
* row is inserted in the batch that revokes the method, and never changes.
|
|
18
18
|
*/
|
|
19
19
|
var D1WalletAuthMethodRevocationReplayStoreV1 = class {
|
|
20
|
+
database;
|
|
21
|
+
scope;
|
|
20
22
|
constructor(input) {
|
|
21
23
|
this.database = input.database;
|
|
22
24
|
this.scope = input.scope;
|
|
@@ -247,6 +247,22 @@ async function buildAddedPasskeyCredentialBinding(input) {
|
|
|
247
247
|
return binding;
|
|
248
248
|
}
|
|
249
249
|
var CloudflareD1WalletAuthMethodService = class {
|
|
250
|
+
emailOtpChallengeVerifier;
|
|
251
|
+
emailOtpEnrollmentChallengeIssuer;
|
|
252
|
+
emailOtpSourceChallengeIssuer;
|
|
253
|
+
emailOtpEnrollmentFinalizer;
|
|
254
|
+
getRegistrationCeremonyIntentStore;
|
|
255
|
+
getWalletAuthMethodStore;
|
|
256
|
+
googleEmailOtpRegistrationAttempts;
|
|
257
|
+
passkeyCustodyEnvelopes;
|
|
258
|
+
sha256Bytes;
|
|
259
|
+
webAuthnStore;
|
|
260
|
+
listWalletEd25519Signers;
|
|
261
|
+
walletAuthorityStore;
|
|
262
|
+
orgId;
|
|
263
|
+
verifyWebAuthnAuthenticationLite;
|
|
264
|
+
prepareOwnerWalletSessionRevocation;
|
|
265
|
+
revocationReplays;
|
|
250
266
|
constructor(input) {
|
|
251
267
|
this.emailOtpChallengeVerifier = input.emailOtpChallengeVerifier;
|
|
252
268
|
this.emailOtpEnrollmentChallengeIssuer = input.emailOtpEnrollmentChallengeIssuer;
|
|
@@ -275,13 +275,15 @@ function prepareD1WalletAuthorityExtensionCasGuard(database) {
|
|
|
275
275
|
`);
|
|
276
276
|
}
|
|
277
277
|
var WalletAuthorityCommitConflictError = class extends Error {
|
|
278
|
+
kind = "wallet_authority_commit_conflict";
|
|
278
279
|
constructor(authorityId) {
|
|
279
280
|
super(`wallet authority ${String(authorityId)} commit conflicts with an existing record`);
|
|
280
|
-
this.kind = "wallet_authority_commit_conflict";
|
|
281
281
|
this.name = "WalletAuthorityCommitConflictError";
|
|
282
282
|
}
|
|
283
283
|
};
|
|
284
284
|
var D1WalletAuthorityStore = class {
|
|
285
|
+
database;
|
|
286
|
+
scope;
|
|
285
287
|
constructor(input) {
|
|
286
288
|
this.database = input.database;
|
|
287
289
|
this.scope = normalizeScope(input.scope ?? {
|
|
@@ -14,6 +14,10 @@ function errorMessage(error) {
|
|
|
14
14
|
return error instanceof Error ? error.message : String(error || "");
|
|
15
15
|
}
|
|
16
16
|
var CloudflareD1WebAuthnAuthService = class {
|
|
17
|
+
lifecycleRouting;
|
|
18
|
+
webAuthnStore;
|
|
19
|
+
walletManifestSource;
|
|
20
|
+
walletAuthMethodStore;
|
|
17
21
|
constructor(input) {
|
|
18
22
|
this.lifecycleRouting = input.lifecycleRouting;
|
|
19
23
|
this.webAuthnStore = input.webAuthnStore;
|
|
@@ -18,8 +18,11 @@ function prepareD1WebAuthnAuthenticatorInsertStatement(input) {
|
|
|
18
18
|
return prepareAuthenticatorStatement(INSERT_WEBAUTHN_AUTHENTICATOR_SQL, input);
|
|
19
19
|
}
|
|
20
20
|
var CloudflareD1WebAuthnStore = class {
|
|
21
|
+
syncChallenges;
|
|
22
|
+
database;
|
|
23
|
+
scope;
|
|
24
|
+
credentialClaims;
|
|
21
25
|
constructor(input) {
|
|
22
|
-
this.prepare = (sql, values) => prepareD1TenantStatement(this.database, this.scope, sql, values);
|
|
23
26
|
this.credentialClaims = input.credentialClaims;
|
|
24
27
|
this.syncChallenges = input.syncChallenges;
|
|
25
28
|
this.database = input.database;
|
|
@@ -179,6 +182,7 @@ var CloudflareD1WebAuthnStore = class {
|
|
|
179
182
|
async consumeChallenge(input) {
|
|
180
183
|
return await webAuthnChallengeRows.consume(this.prepare, input.challengeId, input.challengeKind, Date.now()).first();
|
|
181
184
|
}
|
|
185
|
+
prepare = (sql, values) => prepareD1TenantStatement(this.database, this.scope, sql, values);
|
|
182
186
|
};
|
|
183
187
|
//#endregion
|
|
184
188
|
export { CloudflareD1WebAuthnStore, prepareD1WebAuthnAuthenticatorInsertStatement, prepareD1WebAuthnAuthenticatorPutStatement };
|
|
@@ -2,6 +2,7 @@ import { normalizeOptionalTrimmedString } from "../../../shared-ts/src/utils/nor
|
|
|
2
2
|
import { isPlainObject } from "../../../shared-ts/src/utils/validation.js";
|
|
3
3
|
//#region src/router/cloudflare/durableObjects/versionedJsonRecordStore.ts
|
|
4
4
|
var CloudflareVersionedJsonRecordStoreError = class extends Error {
|
|
5
|
+
code;
|
|
5
6
|
constructor(code, message) {
|
|
6
7
|
super(message);
|
|
7
8
|
this.name = "CloudflareVersionedJsonRecordStoreError";
|
|
@@ -9,6 +10,11 @@ var CloudflareVersionedJsonRecordStoreError = class extends Error {
|
|
|
9
10
|
}
|
|
10
11
|
};
|
|
11
12
|
var CloudflareDurableObjectVersionedJsonRecordStore = class {
|
|
13
|
+
namespace;
|
|
14
|
+
objectNameForKey;
|
|
15
|
+
encode;
|
|
16
|
+
parse;
|
|
17
|
+
keyPrefix;
|
|
12
18
|
constructor(options) {
|
|
13
19
|
if (!isDurableObjectNamespaceLike(options.namespace)) throw new Error("Cloudflare Durable Object namespace is required");
|
|
14
20
|
if (typeof options.objectNameForKey !== "function") throw new Error("Cloudflare versioned JSON object-name resolver is required");
|
|
@@ -4,6 +4,12 @@ import { SessionService } from "../../../core/SessionService.js";
|
|
|
4
4
|
import { CrossSiteSessionCookieAdapter, encodeSessionJsonSegment, normalizeSessionString, normalizeSessionTtlSeconds, parseSessionJwt, requireNormalizedSessionString, sessionJwtTimeClaims, toSessionArrayBufferCopy } from "./sessionAdapterRuntime.js";
|
|
5
5
|
//#region src/router/cloudflare/runtime/ed25519SessionAdapter.ts
|
|
6
6
|
var Ed25519SessionJwtAdapter = class {
|
|
7
|
+
issuer;
|
|
8
|
+
audience;
|
|
9
|
+
keyId;
|
|
10
|
+
ttlSeconds;
|
|
11
|
+
signingKey;
|
|
12
|
+
verifyingKey;
|
|
7
13
|
constructor(options) {
|
|
8
14
|
this.options = options;
|
|
9
15
|
this.issuer = requireNormalizedSessionString(options.issuer, "Ed25519 session issuer");
|