@seams/wallet-server 0.26.0 → 0.28.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/artifact-manifest.json +18 -13
- package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
- package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
- package/dist/esm/auth/externalAuthService.js +98 -0
- package/dist/esm/auth/externalAuthStore.js +217 -0
- package/dist/esm/authorization/domain.js +2 -2
- package/dist/esm/authorization/factorEvidence.js +1 -1
- package/dist/esm/authorization/service.js +2 -2
- package/dist/esm/authorization/vaultProxyUse.js +1 -1
- package/dist/esm/cloud-host.js +10 -9
- package/dist/esm/core/ThresholdService/validation.js +1 -1
- package/dist/esm/core/WebAuthnCredentialBindingStore.js +1 -1
- package/dist/esm/core/authService/webauthn.js +1 -1
- package/dist/esm/core/d1EcdsaSignerRead.js +1 -1
- package/dist/esm/core/d1WalletAuthMethodStore.js +2 -2
- package/dist/esm/core/d1WalletStore.js +1 -1
- package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +1 -1
- package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +1 -1
- package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +2 -2
- package/dist/esm/core/nearRelayerAccountProvisioning.js +1 -1
- package/dist/esm/hosted-wallet-gateway.js +3 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/router/auth/webAuthnCredentialCodecs.js +1 -1
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +5 -2
- package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +2 -2
- package/dist/esm/router/cloudflare/d1/authorization/d1VaultProxyStore.js +2 -2
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +3 -3
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +2 -2
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetAuthenticatorStore.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 +2 -2
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkSourceReader.js +1 -1
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +2 -2
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +2 -2
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +2 -2
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +7 -1
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +1 -1
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +2 -2
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +2 -2
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.js +1 -1
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/d1EvmFamilyEcdsaRegistrationBranch.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +2 -2
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +3 -3
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +1 -1
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +1 -1
- package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/wallet/authorizationSnapshotLayout.js +1 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1VoiceIdWalletSessionChallenges.js +2 -2
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodRevocationReplayStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +2 -2
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +2 -2
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationCleanup.js +2 -1
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationIntake.js +1 -1
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationSnapshot.js +1 -1
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationChallenges.js +1 -1
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationOwnerRequest.js +2 -2
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +2 -2
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +2 -2
- package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +9 -0
- package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +6 -0
- package/dist/esm/router/cloudflare-adaptor.js +1 -1
- package/dist/esm/router/cloudflare.js +4635 -4359
- package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +1 -1
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +3 -3
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +2 -2
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +1 -1
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +1 -1
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +1 -1
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +1 -1
- package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +1 -1
- package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js +2 -2
- package/dist/esm/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.js +2 -2
- package/dist/esm/router/domains/signingOperations/routerAbOperationStepUp.js +1 -1
- package/dist/esm/router/domains/tenantRoot/tenantRootIdentityResolution.js +1 -1
- package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +1 -1
- package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +3 -3
- package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +2 -2
- package/dist/esm/router/framework/http.js +1 -1
- package/dist/esm/router/framework/routeDefinitions.js +2 -1
- package/dist/esm/router/transport/fetch/createFetchRouter.js +5 -3
- 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 +1 -1
- package/dist/esm/router/transport/fetch/routes/ecdsaOperationStepUpFactor.js +1 -1
- package/dist/esm/router/transport/fetch/routes/externalAuth.js +244 -0
- package/dist/esm/router/transport/fetch/routes/normalSigningRouterProxy.js +1 -1
- package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +4 -4
- package/dist/esm/router/transport/fetch/routes/sessions.js +2 -2
- package/dist/esm/router/transport/fetch/routes/syncAccount.js +2 -2
- package/dist/esm/router/transport/fetch/routes/syncAccountBootstrap.js +1 -1
- package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +4 -4
- package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +4 -4
- package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +2 -2
- package/dist/esm/router/transport/fetch/routes/walletRegistration.js +3 -3
- package/dist/esm/shared-ts/src/auth/externalAuth.js +45 -0
- package/dist/esm/shared-ts/src/authorization/voiceIdDeviceAssertion.js +1 -1
- package/dist/esm/shared-ts/src/authorization/walletAuthority.js +2 -2
- package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +1 -1
- 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/parsers.js +2 -2
- package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +1 -1
- package/dist/esm/shared-ts/src/device-linking/wireFields.js +2 -2
- package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +1 -1
- package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +1 -1
- package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +1 -1
- package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -1
- package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +1 -1
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -1
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/service.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/transport/fetch.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/transport/shared.js +1 -1
- package/dist/types/shared-ts/src/auth/externalAuth.d.ts +84 -0
- package/dist/types/wallet-server/src/auth/externalAuthService.d.ts +36 -0
- package/dist/types/wallet-server/src/auth/externalAuthStore.d.ts +61 -0
- package/dist/types/wallet-server/src/cloud-host.d.ts +2 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcBoundary.d.ts +5 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/authorizationSnapshotLayout.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/runtime/staticWalletConsoleBinding.d.ts +2 -0
- package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +1 -0
- package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +1 -0
- package/dist/types/wallet-server/src/router/transport/fetch/routes/externalAuth.d.ts +5 -0
- package/migrations/d1-signer/0085_external_wallet_auth.sql +158 -0
- package/package.json +1 -1
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { parseEmailOtpChallengeId, parseOrgId, parseProviderSubject, parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId, parseWalletRecoveryOperationId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
|
-
import { buildVaultOperationRef, parseAuthFactorId, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parseDeviceId, parsePrincipalId, parseTenantId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
3
2
|
import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
|
|
4
3
|
import { isPlainObject, requireTrimmedString } from "../../../../shared-ts/src/utils/validation.js";
|
|
5
|
-
import { buildDelegatedWalletAuthorityV1, buildFullOwnerPermissionsV1, sameDelegatedWalletAuthorityV1 } from "../../../../shared-ts/src/authorization/delegatedAuthority.js";
|
|
6
4
|
import { base64UrlDecode } from "../../../../shared-ts/src/utils/base64.js";
|
|
7
5
|
import { alphabetizeStringify } from "../../../../shared-ts/src/utils/digests.js";
|
|
8
6
|
import { sha256Utf8DigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
|
|
7
|
+
import { buildVaultOperationRef, parseAuthFactorId, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parseDeviceId, parsePrincipalId, parseTenantId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
8
|
+
import { buildDelegatedWalletAuthorityV1, buildFullOwnerPermissionsV1, sameDelegatedWalletAuthorityV1 } from "../../../../shared-ts/src/authorization/delegatedAuthority.js";
|
|
9
9
|
import { buildCapabilityOperationEnvelope, computeCapabilityOperationFingerprintDigest } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
|
|
10
10
|
import { buildPasskeyWalletAuthAuthority, walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
|
|
11
11
|
import { parseSessionOrigin, parseVerifiedOwnerProofId } from "../../../../authorization/domain.js";
|
|
12
12
|
import { buildVerifiedWalletOperationEmailOtpFactorResult, buildVerifiedWalletOperationPasskeyFactorResult } from "../../../../authorization/factorEvidence.js";
|
|
13
|
-
import { findRouteDefinitionById, matchesRouteDefinitionRequest } from "../../../framework/routeDefinitions.js";
|
|
14
13
|
import { extractBearerCredential, resolveSourceIpFromFetchHeaders } from "../../../auth/routerApiKeyAuth.js";
|
|
14
|
+
import { readJson } from "../../../framework/http.js";
|
|
15
|
+
import { findRouteDefinitionById, matchesRouteDefinitionRequest } from "../../../framework/routeDefinitions.js";
|
|
15
16
|
import { toFetchRouteResponse } from "../../../framework/routeResponses.js";
|
|
16
17
|
import { parsePasskeyCustodyEnvelopeRecord } from "../../../../shared-ts/src/passkey-custody/custodyEnvelope.js";
|
|
17
18
|
import "../../../../shared-ts/src/passkey-custody/index.js";
|
|
18
|
-
import { readJson } from "../../../framework/http.js";
|
|
19
19
|
import { parseWebAuthnAuthenticationCredential, unredactedWebAuthnExtensionField } from "../../../auth/webAuthnCredentialCodecs.js";
|
|
20
20
|
import { parseCustodyOwnerProof, parseRecoveryBackupAcknowledgementRequest, parseRecoveryStatusRequest, requireExactObjectFields } from "./walletCustodyRequestBoundary.js";
|
|
21
21
|
import { isHostWithinRpId, originHostnameOrEmpty } from "../../../../core/authService/webauthnOidcHelpers.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { parseOrgId, parseProviderSubject, parseWalletAuthMethodId, parseWalletId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
|
-
import { parseMpcWalletSigningQuotaId, parseWalletSessionId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
3
2
|
import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
|
|
4
3
|
import { sha256HexUtf8 } from "../../../../shared-ts/src/utils/digests.js";
|
|
5
4
|
import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
|
|
6
5
|
import { base58Encode } from "../../../../shared-ts/src/utils/base58.js";
|
|
6
|
+
import { parseMpcWalletSigningQuotaId, parseWalletSessionId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
7
7
|
import { routerAbMpcMaterialActivationRefToWire, sameRouterAbMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
|
|
8
8
|
import { normalizeRuntimePolicyScope } from "../../../../shared-ts/src/threshold/signingRootScope.js";
|
|
9
9
|
import { walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
|
|
10
10
|
import { parseRouterAbEcdsaCredentialFreeSessionActivationResponseV1, parseRouterAbEcdsaPostRegistrationSessionActivationPolicyV1, parseRouterAbEcdsaPostRegistrationSessionActivationResponseV1, sameRouterAbEcdsaDerivationPublicCapabilityV1, sameRouterAbEcdsaRegistrationActivationReceiptV1 } from "../../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
|
|
11
11
|
import { parseHostedWalletSeamsSessionExchangeCode, parseHostedWalletSeamsSessionExchangeNonce, parsePrimaryWalletSessionOperationCredentialToken, parseSessionOrigin, projectExactWalletSessionAuthorizationV1 } from "../../../../authorization/domain.js";
|
|
12
|
-
import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
|
|
13
12
|
import { extractBearerCredential, resolveSourceIpFromFetchHeaders } from "../../../auth/routerApiKeyAuth.js";
|
|
14
13
|
import { json, readJson } from "../../../framework/http.js";
|
|
14
|
+
import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
|
|
15
15
|
import { routerApiEmailOtpRouteService } from "../../../framework/authServicePort.js";
|
|
16
16
|
import { emailOtpStatusCode, hashEmailOtpOperationBinding } from "../../../domains/emailOtp/emailOtpSessionRouteHelpers.js";
|
|
17
17
|
import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_EXPORT_OPERATION } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { parseWalletId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
|
-
import { parseAuthFactorId, parsePrincipalId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
3
2
|
import { alphabetizeStringify } from "../../../../shared-ts/src/utils/digests.js";
|
|
4
3
|
import { sha256Utf8DigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
|
|
4
|
+
import { parseAuthFactorId, parsePrincipalId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
5
5
|
import { walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
|
|
6
6
|
import { parseSessionOrigin, parseVerifiedOwnerProofId } from "../../../../authorization/domain.js";
|
|
7
7
|
import { buildVerifiedWalletSessionPasskeyFactorResult } from "../../../../authorization/factorEvidence.js";
|
|
8
|
-
import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
|
|
9
8
|
import { json, jsonFailure, readJson } from "../../../framework/http.js";
|
|
9
|
+
import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
|
|
10
10
|
import { parseSyncAccountOptionsRequest, parseSyncAccountVerifyRequest } from "../../../domains/syncAccount/syncAccountRequestValidation.js";
|
|
11
11
|
import { DEFAULT_WALLET_SESSION_TTL_MS } from "../../../../shared-ts/src/threshold/sessionPolicy.js";
|
|
12
12
|
import { issueSyncAccountBootstrapV1 } from "./syncAccountBootstrap.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mpcMaterialActivationRefsEqual, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
|
-
import { parsePrincipalId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
3
2
|
import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
|
|
3
|
+
import { parsePrincipalId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
4
4
|
import { routerAbMpcMaterialActivationRefFromWire } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
|
|
5
5
|
import { parseRouterAbEcdsaCredentialFreeSessionActivationResponseV1, parseRouterAbEcdsaPostRegistrationSessionActivationPolicyV1 } from "../../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
|
|
6
6
|
import { projectActiveWalletSession } from "../../../../authorization/domain.js";
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { parseWalletId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
|
-
import { EVM_ECDSA_MPC_OPERATION_KINDS, buildEvmEcdsaMpcOperationRef, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parseEcdsaAuthorizationSessionId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
3
2
|
import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
|
|
4
3
|
import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
|
|
5
|
-
import { buildCapabilityOperationEnvelope } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
|
|
6
4
|
import "../../../../shared-ts/src/utils/encoders.js";
|
|
5
|
+
import { EVM_ECDSA_MPC_OPERATION_KINDS, buildEvmEcdsaMpcOperationRef, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parseEcdsaAuthorizationSessionId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
6
|
+
import { buildCapabilityOperationEnvelope } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
|
|
7
7
|
import { routerAbMpcMaterialActivationRefToWire, sameRouterAbMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
|
|
8
8
|
import { walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
|
|
9
9
|
import { ROUTER_AB_ECDSA_DERIVATION_EXPORT_PATH, ROUTER_AB_ECDSA_DERIVATION_NORMAL_SIGNING_STATE_KIND_V1, ROUTER_AB_ECDSA_DERIVATION_REFRESH_PATH, computeRouterAbEcdsaOperationStepUpChallengeB64u, parseRouterAbEcdsaDerivationActivationRefreshCommitRequestV1, parseRouterAbEcdsaDerivationEvmDigestSigningFinalizeRequestV1, parseRouterAbEcdsaDerivationEvmDigestSigningRequestV1, parseRouterAbEcdsaDerivationExplicitExportRequestV1, parseRouterAbEcdsaOperationStepUpAuthorizationRequestV1, parseRouterAbEcdsaPostRegistrationSessionActivationRequestV1, parseRouterAbEcdsaPrepareSourceV1, sameRouterAbEcdsaDerivationNormalSigningScopeV1, sameRouterAbEcdsaDerivationPublicCapabilityV1 } from "../../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
|
|
10
10
|
import { buildWalletSessionCapabilitySubjectsV1, projectActiveWalletSession, walletSessionAuthorizationV2RecordsEqual } from "../../../../authorization/domain.js";
|
|
11
|
+
import { extractBearerCredential } from "../../../auth/routerApiKeyAuth.js";
|
|
12
|
+
import { json, readJson } from "../../../framework/http.js";
|
|
11
13
|
import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
|
|
12
14
|
import { WALLET_SESSION_FAILURE_CODES } from "../../../../shared-ts/src/utils/walletSessionFailure.js";
|
|
13
|
-
import { extractBearerCredential } from "../../../auth/routerApiKeyAuth.js";
|
|
14
15
|
import { walletSessionFailure, walletSessionFailureStatus } from "../../../auth/walletSessionFailure.js";
|
|
15
16
|
import { resolveWalletSessionAuthorizationV2Admission } from "../../../domains/signingOperations/walletExecutionAdmission.js";
|
|
16
17
|
import { resolveWalletSessionOperationCredentialAdmission, validateEcdsaPreprocessingSession } from "../../../auth/commonRouterUtils.js";
|
|
17
|
-
import { json, readJson } from "../../../framework/http.js";
|
|
18
18
|
import { thresholdEcdsaStatusCode } from "../../../../threshold/statusCodes.js";
|
|
19
19
|
import { signingPrepareSessionResponse } from "../../../domains/signingOperations/signingPrepareSession.js";
|
|
20
20
|
import { authenticateRouterAbWalletOperationStepUpIdentity } from "../../../domains/signingOperations/routerAbOperationStepUp.js";
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { parseEmailOtpChallengeId, parseOrgId, parseProviderSubject, parseWalletId, parseWebAuthnCredentialIdB64u } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
|
-
import { buildAuthorizationGrantRef, parseAuthFactorId, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parsePrincipalId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
3
2
|
import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
|
|
4
3
|
import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
|
|
5
4
|
import { alphabetizeStringify, sha256BytesUtf8 } from "../../../../shared-ts/src/utils/digests.js";
|
|
6
5
|
import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
|
|
7
|
-
import { buildCapabilityOperationEnvelope, computeCapabilityOperationFingerprintDigest, parseCapabilityOperationFingerprintDigest, parseSigningOperationFingerprintDigest } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
|
|
8
6
|
import "../../../../shared-ts/src/utils/encoders.js";
|
|
7
|
+
import { buildAuthorizationGrantRef, parseAuthFactorId, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parsePrincipalId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
8
|
+
import { buildCapabilityOperationEnvelope, computeCapabilityOperationFingerprintDigest, parseCapabilityOperationFingerprintDigest, parseSigningOperationFingerprintDigest } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
|
|
9
9
|
import { sameRouterAbMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
|
|
10
10
|
import { isPasskeyWalletAuthAuthority, walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
|
|
11
11
|
import { authorizedOperationReplayBodyInit, parseSessionOrigin, parseVerifiedOwnerProofId } from "../../../../authorization/domain.js";
|
|
12
12
|
import { buildVerifiedWalletOperationEmailOtpFactorResult, buildVerifiedWalletOperationPasskeyFactorResult, buildVerifiedWalletSessionPasskeyFactorResult } from "../../../../authorization/factorEvidence.js";
|
|
13
|
-
import { ROUTER_AB_ED25519_NORMAL_SIGNING_PATH, ROUTER_AB_ED25519_NORMAL_SIGNING_PREPARE_PATH, ROUTER_AB_ED25519_WALLET_SESSION_PATH } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
|
|
14
13
|
import { normalizeCorsOrigin } from "../../../../core/SessionService.js";
|
|
14
|
+
import { json, readJson } from "../../../framework/http.js";
|
|
15
|
+
import { ROUTER_AB_ED25519_NORMAL_SIGNING_PATH, ROUTER_AB_ED25519_NORMAL_SIGNING_PREPARE_PATH, ROUTER_AB_ED25519_WALLET_SESSION_PATH } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
|
|
15
16
|
import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
|
|
16
17
|
import { resolveThresholdRuntimePolicyScope } from "../../../auth/commonRouterUtils.js";
|
|
17
|
-
import { json, readJson } from "../../../framework/http.js";
|
|
18
18
|
import { emailOtpStatusCode, hashEmailOtpOperationBinding } from "../../../domains/emailOtp/emailOtpSessionRouteHelpers.js";
|
|
19
19
|
import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
|
|
20
20
|
import { thresholdEd25519StatusCode } from "../../../../threshold/statusCodes.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { parseMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
|
-
import { EVM_ECDSA_MPC_OPERATION_KINDS } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
3
2
|
import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
|
|
3
|
+
import { EVM_ECDSA_MPC_OPERATION_KINDS } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
|
|
4
4
|
import { routerAbMpcMaterialActivationRefToWire } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
|
|
5
|
+
import { json, readJson } from "../../../framework/http.js";
|
|
5
6
|
import { walletSessionFailure, walletSessionFailureStatus } from "../../../auth/walletSessionFailure.js";
|
|
6
7
|
import { validateRouterAbEcdsaDerivationWalletSessionInputs } from "../../../auth/commonRouterUtils.js";
|
|
7
|
-
import { json, readJson } from "../../../framework/http.js";
|
|
8
8
|
//#region src/router/transport/fetch/routes/walletExecutionLanePreflight.ts
|
|
9
9
|
const OWNER_WALLET_EXECUTION_LANE_PREFLIGHT_PATH = "/wallet/execution-lane/owner";
|
|
10
10
|
function parsePreflightRequest(raw) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { findRouteDefinitionById, matchesRouteDefinitionRequest } from "../../../framework/routeDefinitions.js";
|
|
2
1
|
import { resolveSourceIpFromFetchHeaders } from "../../../auth/routerApiKeyAuth.js";
|
|
3
|
-
import { toFetchRouteResponse } from "../../../framework/routeResponses.js";
|
|
4
|
-
import { handleRouterApiWalletAddAuthMethodEmailOtpChallenge, handleRouterApiWalletAddAuthMethodFinalize, handleRouterApiWalletAddAuthMethodIntent, handleRouterApiWalletAddAuthMethodStart, handleRouterApiWalletAddSignerEcdsaActivation, handleRouterApiWalletAddSignerEcdsaDerivationRespond, handleRouterApiWalletAddSignerFinalize, handleRouterApiWalletAddSignerIntent, handleRouterApiWalletAddSignerStart, handleRouterApiWalletEcdsaKeyFactsInventory, handleRouterApiWalletNearImplicitAccountFund, handleRouterApiWalletRegistrationActivate, handleRouterApiWalletRegistrationNearAdmission, handleRouterApiWalletRegistrationNearProvisioning, handleRouterApiWalletRegistrationRespond, handleRouterApiWalletRegistrationSetup, handleRouterApiWalletRevokeAuthMethod } from "../../../domains/walletRegistration/walletRegistrationRoutes.js";
|
|
5
2
|
import "../../../../shared-ts/src/utils/walletManagementProtocol.js";
|
|
6
3
|
import { jsonFailure, readJson } from "../../../framework/http.js";
|
|
4
|
+
import { findRouteDefinitionById, matchesRouteDefinitionRequest } from "../../../framework/routeDefinitions.js";
|
|
5
|
+
import { toFetchRouteResponse } from "../../../framework/routeResponses.js";
|
|
6
|
+
import { handleRouterApiWalletAddAuthMethodEmailOtpChallenge, handleRouterApiWalletAddAuthMethodFinalize, handleRouterApiWalletAddAuthMethodIntent, handleRouterApiWalletAddAuthMethodStart, handleRouterApiWalletAddSignerEcdsaActivation, handleRouterApiWalletAddSignerEcdsaDerivationRespond, handleRouterApiWalletAddSignerFinalize, handleRouterApiWalletAddSignerIntent, handleRouterApiWalletAddSignerStart, handleRouterApiWalletEcdsaKeyFactsInventory, handleRouterApiWalletNearImplicitAccountFund, handleRouterApiWalletRegistrationActivate, handleRouterApiWalletRegistrationNearAdmission, handleRouterApiWalletRegistrationNearProvisioning, handleRouterApiWalletRegistrationRespond, handleRouterApiWalletRegistrationSetup, handleRouterApiWalletRevokeAuthMethod } from "../../../domains/walletRegistration/walletRegistrationRoutes.js";
|
|
7
7
|
import { routerApiWalletRegistrationRouteService } from "../../../framework/authServicePort.js";
|
|
8
8
|
//#region src/router/transport/fetch/routes/walletRegistration.ts
|
|
9
9
|
const ROUTE_IDS = [
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { parseWalletId } from "../utils/domainIds.js";
|
|
2
|
+
import { requireCanonicalString, requireRecord } from "../utils/validation.js";
|
|
3
|
+
import { parseUnixMs } from "../passkey-custody/primitives.js";
|
|
4
|
+
//#region ../shared-ts/src/auth/externalAuth.ts
|
|
5
|
+
const EXTERNAL_AUTH_PATH = "/wallet/external-auth";
|
|
6
|
+
function parseExternalAuthConfiguration(raw) {
|
|
7
|
+
const value = requireRecord(raw, "external authentication configuration");
|
|
8
|
+
if (typeof value.revision !== "number" || !Number.isSafeInteger(value.revision) || value.revision < 0) throw new Error("Invalid external authentication revision");
|
|
9
|
+
if (value.kind === "disabled") return {
|
|
10
|
+
kind: "disabled",
|
|
11
|
+
revision: value.revision
|
|
12
|
+
};
|
|
13
|
+
if (value.kind === "google") return {
|
|
14
|
+
kind: "google",
|
|
15
|
+
revision: value.revision,
|
|
16
|
+
clientId: requireCanonicalString(value.clientId, "clientId")
|
|
17
|
+
};
|
|
18
|
+
throw new Error("Unsupported external authentication configuration");
|
|
19
|
+
}
|
|
20
|
+
function parseExternalWalletAuthentication(value) {
|
|
21
|
+
const record = requireRecord(value, "external authentication");
|
|
22
|
+
const walletId = parseWalletId(record.walletId);
|
|
23
|
+
if (!walletId.ok || record.kind !== "external_authenticated" || record.provider !== "google" || record.permission !== "wallet_settings_read" || "authMethod" in record) throw new Error("External authentication is invalid");
|
|
24
|
+
return {
|
|
25
|
+
kind: "external_authenticated",
|
|
26
|
+
walletId: walletId.value,
|
|
27
|
+
sessionId: requireCanonicalString(record.sessionId, "sessionId"),
|
|
28
|
+
associationId: requireCanonicalString(record.associationId, "associationId"),
|
|
29
|
+
environmentId: requireCanonicalString(record.environmentId, "environmentId"),
|
|
30
|
+
provider: "google",
|
|
31
|
+
permission: "wallet_settings_read",
|
|
32
|
+
expiresAtMs: parseUnixMs(record.expiresAtMs, "expiresAtMs")
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function externalAuthFailure(code) {
|
|
36
|
+
return {
|
|
37
|
+
ok: false,
|
|
38
|
+
code,
|
|
39
|
+
message: "Wallet authentication could not be completed."
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { EXTERNAL_AUTH_PATH, externalAuthFailure, parseExternalAuthConfiguration, parseExternalWalletAuthentication };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=externalAuth.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId } from "../utils/domainIds.js";
|
|
2
|
-
import { parseWalletSessionMintId } from "./capabilityKinds.js";
|
|
3
2
|
import { isPlainObject } from "../utils/validation.js";
|
|
4
3
|
import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
|
|
5
4
|
import { alphabetizeStringify } from "../utils/digests.js";
|
|
6
5
|
import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
|
|
6
|
+
import { parseWalletSessionMintId } from "./capabilityKinds.js";
|
|
7
7
|
//#region ../shared-ts/src/authorization/voiceIdDeviceAssertion.ts
|
|
8
8
|
const CHALLENGE_DOMAIN = "seams:wallet-session:voiceid-device:v1";
|
|
9
9
|
const MAXIMUM_CHALLENGE_MS = 6e4;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseMpcMaterialActivationRef, parseWalletAuthorityId, parseWalletId, parseWalletRecoveryOperationId } from "../utils/domainIds.js";
|
|
2
|
-
import { parseDeviceId } from "./capabilityKinds.js";
|
|
3
2
|
import { requireRecord } from "../utils/validation.js";
|
|
4
|
-
import { parseDelegatedWalletPermissionSetV1 } from "./delegatedAuthority.js";
|
|
5
3
|
import { base64UrlEncode } from "../utils/base64.js";
|
|
6
4
|
import { sha256Bytes } from "../utils/digests.js";
|
|
7
5
|
import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
|
|
6
|
+
import { parseDeviceId } from "./capabilityKinds.js";
|
|
7
|
+
import { parseDelegatedWalletPermissionSetV1 } from "./delegatedAuthority.js";
|
|
8
8
|
import { buildExactAdministeredSignerManifestV1, parseExactAdministeredSignerManifestV1 } from "../device-linking/delegatedActivationPlan.js";
|
|
9
9
|
import { concat, lp32, rawDigest, rawPublicKey, text, u32, u64 } from "../utils/digestEncoding.js";
|
|
10
10
|
//#region ../shared-ts/src/authorization/walletAuthority.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parseWalletId, parseWalletKeyId } from "../utils/domainIds.js";
|
|
2
2
|
import { requireRecord } from "../utils/validation.js";
|
|
3
|
-
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
4
3
|
import { parseEd25519PublicKeyB64u, parseSecp256k1CompressedPublicKeyB64u, requireParsed } from "../passkey-custody/primitives.js";
|
|
4
|
+
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
5
5
|
//#region ../shared-ts/src/device-linking/delegatedActivationPlan.ts
|
|
6
6
|
const MANIFEST_FIELDS = [
|
|
7
7
|
"kind",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { delegatedWalletPermissionNamesV1 } from "../authorization/delegatedAuthority.js";
|
|
2
1
|
import { alphabetizeStringify } from "../utils/digests.js";
|
|
3
2
|
import { sha256DigestB64u, sha256Utf8DigestB64u } from "../utils/canonicalPrimitives.js";
|
|
3
|
+
import { delegatedWalletPermissionNamesV1 } from "../authorization/delegatedAuthority.js";
|
|
4
4
|
import { concat, lp32, rawDigest, rawPublicKey, text, u32, u64 } from "../utils/digestEncoding.js";
|
|
5
5
|
import "./committedSignerPackages.js";
|
|
6
6
|
//#region ../shared-ts/src/device-linking/digests.ts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseLinkedDeviceId, parseWalletId, parseWalletKeyId } from "../utils/domainIds.js";
|
|
2
2
|
import { requireRecord } from "../utils/validation.js";
|
|
3
|
-
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
4
3
|
import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
|
|
5
4
|
import { parseDigestField, parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, requireParsed } from "../passkey-custody/primitives.js";
|
|
5
|
+
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
6
6
|
//#region ../shared-ts/src/device-linking/ed25519ExportRoot.ts
|
|
7
7
|
/**
|
|
8
8
|
* Authenticated relay records for the cross-device Ed25519 Yao Client export
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { requireArray, requireRecord } from "../utils/validation.js";
|
|
2
|
+
import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
|
|
3
|
+
import { parseEd25519PublicKeyB64u } from "../passkey-custody/primitives.js";
|
|
2
4
|
import { exactRecord } from "../utils/exactRecord.js";
|
|
3
5
|
import { wireLiteral, wireNullable, wireObject, wireUnion } from "../utils/wireSchema.js";
|
|
4
6
|
import "../authorization/delegatedAuthority.js";
|
|
5
|
-
import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
|
|
6
|
-
import { parseEd25519PublicKeyB64u } from "../passkey-custody/primitives.js";
|
|
7
7
|
import { authorizationDeviceId, credentialId, digest, enrollmentId, linkedDeviceId, parseDelegatedWalletAuthority, parseNonEmptyToken, parseNonNegativeSafeInteger, parseTargetEmail, parseUnixTime, rpId, sessionId, walletAuthMethodId, walletAuthorityId, walletId, walletKeyId, walletSessionAuthorizationId, walletSessionId } from "./wireFields.js";
|
|
8
8
|
import { parseWalletAddAuthMethodRegistrationOptions } from "../utils/addAuthMethodRegistration.js";
|
|
9
9
|
import { requireRouterAbX25519PublicKey } from "../utils/routerAbPublicKeyset.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { mpcMaterialActivationRefsEqual, parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseMpcMaterialActivationRef, parseWalletAuthorityId, parseWalletKeyId } from "../utils/domainIds.js";
|
|
2
|
-
import { parseDeviceId } from "../authorization/capabilityKinds.js";
|
|
3
2
|
import { requireRecordCopy } from "../utils/validation.js";
|
|
4
3
|
import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
|
|
5
4
|
import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
|
|
6
5
|
import { parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseSecp256k1CompressedPublicKeyB64u } from "../passkey-custody/primitives.js";
|
|
6
|
+
import { parseDeviceId } from "../authorization/capabilityKinds.js";
|
|
7
7
|
import { routerAbMpcMaterialActivationRefFromWire } from "../utils/routerAbNormalSigningIdentity.js";
|
|
8
8
|
import { parseRouterAbEd25519YaoActivationBindingV1, parseRouterAbEd25519YaoActivationPublicReceiptV1, parseRouterAbEd25519YaoApplicationBindingFactsV1, parseRouterAbEd25519YaoEncryptedPackageV1, parseRouterAbEd25519YaoParticipantIdsV1, parseRouterAbEd25519YaoRegistrationActivationAdmissionReceiptV1, sameRouterAbEd25519YaoByteSequence } from "../utils/routerAbEd25519Yao.js";
|
|
9
9
|
import { parseSdkEcdsaDerivationThresholdKeyId } from "../threshold/ecdsaDerivationRoleLocalBootstrap.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { parseLinkDeviceSessionId, parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId } from "../utils/domainIds.js";
|
|
2
|
-
import { parseMpcWalletSigningQuotaId, parsePrincipalId, parseTenantId, parseWalletSessionAuthorizationId, parseWalletSessionId } from "../authorization/capabilityKinds.js";
|
|
3
2
|
import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
|
|
4
3
|
import { alphabetizeStringify } from "../utils/digests.js";
|
|
5
4
|
import { parseDigestB64u, sha256Utf8DigestB64u } from "../utils/canonicalPrimitives.js";
|
|
5
|
+
import { parseMpcWalletSigningQuotaId, parsePrincipalId, parseTenantId, parseWalletSessionAuthorizationId, parseWalletSessionId } from "../authorization/capabilityKinds.js";
|
|
6
6
|
import { parseLinkDevicePublicKeyB64u } from "./parsers.js";
|
|
7
7
|
//#region ../shared-ts/src/device-linking/walletSessionCredentialDelivery.ts
|
|
8
8
|
const DELIVERY_AAD_DOMAIN = "seams/linked-device/wallet-session-credential-delivery-aad/v1";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseLinkedDeviceId, parseMpcMaterialActivationRef, parseVerifiedEmailAddress, parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId, parseWalletKeyId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../utils/domainIds.js";
|
|
2
|
+
import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
|
|
3
|
+
import { parseUnixMs } from "../passkey-custody/primitives.js";
|
|
2
4
|
import { parseDeviceId, parseMpcWalletSigningQuotaId, parseWalletSessionAuthorizationId, parseWalletSessionId } from "../authorization/capabilityKinds.js";
|
|
3
5
|
import { wireLabeled, wireNullable, wireResult } from "../utils/wireSchema.js";
|
|
4
6
|
import { parseDelegatedWalletAuthorityV1 } from "../authorization/delegatedAuthority.js";
|
|
5
|
-
import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
|
|
6
|
-
import { parseUnixMs } from "../passkey-custody/primitives.js";
|
|
7
7
|
//#region ../shared-ts/src/device-linking/wireFields.ts
|
|
8
8
|
const sessionId = /* @__PURE__ */ wireResult(parseLinkDeviceSessionId);
|
|
9
9
|
const walletId = /* @__PURE__ */ wireResult(parseWalletId);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parsePasskeyEnvelopeId, parseWalletAuthMethodId, parseWalletId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../utils/domainIds.js";
|
|
2
2
|
import { requireRecord } from "../utils/validation.js";
|
|
3
|
-
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
4
3
|
import { parseDigestField, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, parseEnvelopeRevision, parseUnixMs } from "./primitives.js";
|
|
4
|
+
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
5
5
|
import { parsePasskeyCustodySecretBinding } from "./custodySecretBinding.js";
|
|
6
6
|
//#region ../shared-ts/src/passkey-custody/custodyEnvelope.ts
|
|
7
7
|
const WALLET_CUSTODY_ENVELOPE_VERSION_V2 = "wallet_custody_envelope_v2";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parseLaneShareEpoch, parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseLinkedDeviceId, parseSigningLaneId, parseThresholdEcdsaSessionId, parseWalletKeyId } from "../utils/domainIds.js";
|
|
2
2
|
import { requireRecord } from "../utils/validation.js";
|
|
3
|
-
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
4
3
|
import { parseDigestField, parseEd25519PublicKeyB64u, parseSecp256k1CompressedPublicKeyB64u } from "./primitives.js";
|
|
4
|
+
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
5
5
|
import { requireEvmFamilySigningKeySlotId } from "../signing-lanes/evmFamilySigningKeySlotId.js";
|
|
6
6
|
import { parseNearEd25519SigningKeyId } from "../utils/registrationIds.js";
|
|
7
7
|
//#region ../shared-ts/src/passkey-custody/custodySecretBinding.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { hasWhitespaceOrControlCharacters, parseMpcSigningWorkerRef } from "../utils/domainIds.js";
|
|
2
2
|
import { requireRecord } from "../utils/validation.js";
|
|
3
|
-
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
4
3
|
import { base64UrlEncode } from "../utils/base64.js";
|
|
5
4
|
import { sha256Bytes } from "../utils/digests.js";
|
|
6
5
|
import { parseDigestField, requireParsed } from "../passkey-custody/primitives.js";
|
|
6
|
+
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
7
7
|
import { concat } from "../utils/digestEncoding.js";
|
|
8
8
|
import { parseLaneParticipantBindingDigestB64u } from "./participants.js";
|
|
9
9
|
import { encodeLaneCanonicalDigestV1, encodeLaneCanonicalTextV1, encodeLaneCanonicalU64V1 } from "./participantDigest.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { parseEcdsaActiveStateId, parseRootShareEpoch, parseThresholdEcdsaSessionId } from "./domainIds.js";
|
|
2
|
-
import { EVM_ECDSA_MPC_OPERATION_KINDS, parseEcdsaAuthorizationSessionId, parseMpcWalletSigningQuotaId, parseWalletSessionAuthorizationId, parseWalletSessionId, parseWalletSessionMintId } from "../authorization/capabilityKinds.js";
|
|
3
2
|
import { requireRecord } from "./validation.js";
|
|
4
3
|
import { base64UrlDecode, base64UrlEncode } from "./base64.js";
|
|
5
4
|
import { alphabetizeStringify, sha256BytesUtf8 } from "./digests.js";
|
|
6
5
|
import { parseCorrelationId } from "./canonicalPrimitives.js";
|
|
6
|
+
import { EVM_ECDSA_MPC_OPERATION_KINDS, parseEcdsaAuthorizationSessionId, parseMpcWalletSigningQuotaId, parseWalletSessionAuthorizationId, parseWalletSessionId, parseWalletSessionMintId } from "../authorization/capabilityKinds.js";
|
|
7
7
|
import { parseActiveWalletSessionV1, parseWalletSessionOperationCredentialV1 } from "../device-linking/activeWalletSession.js";
|
|
8
8
|
import { requireRouterAbX25519PublicKey } from "./routerAbPublicKeyset.js";
|
|
9
9
|
import { canonicalRouterAbMpcMaterialActivationRefBytes, canonicalRouterAbNormalSigningAuthorizationBytes, parseRouterAbMpcMaterialActivationRef, parseRouterAbNormalSigningAuthorization, routerAbMpcMaterialActivationRefToWire, sameRouterAbMpcMaterialActivationRef } from "./routerAbNormalSigningIdentity.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { parseEmailOtpProviderUserId, parseWalletAuthMethodId, parseWalletAuthorityBindingDigest, parseWalletId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "./domainIds.js";
|
|
2
2
|
import { requireRecord } from "./validation.js";
|
|
3
|
-
import { rejectUnknownFields } from "./exactRecord.js";
|
|
4
3
|
import { base64UrlEncode } from "./base64.js";
|
|
5
4
|
import { alphabetizeStringify, sha256BytesUtf8 } from "./digests.js";
|
|
6
5
|
import { parseDigestB64u } from "./canonicalPrimitives.js";
|
|
6
|
+
import { rejectUnknownFields } from "./exactRecord.js";
|
|
7
7
|
//#region ../shared-ts/src/utils/walletAuthAuthority.ts
|
|
8
8
|
const WALLET_AUTHORITY_BINDING_DIGEST_DOMAIN = "seams:wallet-authority-binding:v1|";
|
|
9
9
|
function buildVoiceIdWalletAuthAuthority(input) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../authorization/capabilityKinds.js";
|
|
2
1
|
import { requireTrimmedString } from "../utils/validation.js";
|
|
2
|
+
import "../authorization/capabilityKinds.js";
|
|
3
3
|
import "../utils/walletAuthMethodRecord.js";
|
|
4
4
|
import "../authorization/walletAuthority.js";
|
|
5
5
|
//#region ../shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parseWalletId } from "../utils/domainIds.js";
|
|
2
2
|
import { requireRecord } from "../utils/validation.js";
|
|
3
|
-
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
4
3
|
import { parseDigestField, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, parseUnixMs } from "../passkey-custody/primitives.js";
|
|
4
|
+
import { rejectUnknownFields } from "../utils/exactRecord.js";
|
|
5
5
|
import "../passkey-custody/index.js";
|
|
6
6
|
import { parseRecoveryCodeReservationId } from "./recoveryCodeReservation.js";
|
|
7
7
|
import { parseDerivedWalletRecoveryKeyId } from "./recoveryKeyId.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
|
|
2
|
-
import { SIGNING_SESSION_SEAL_ALG, SIGNING_SESSION_SEAL_GROUP_ID, encodeSigningSessionHkdfTuple } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
|
|
3
2
|
import { failure } from "../../../../shared-ts/src/utils/failure.js";
|
|
3
|
+
import { SIGNING_SESSION_SEAL_ALG, SIGNING_SESSION_SEAL_GROUP_ID, encodeSigningSessionHkdfTuple } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
|
|
4
4
|
import { parseSigningSessionSealKeyVersion } from "../../../../shared-ts/src/threshold/keyMaterialBrands.js";
|
|
5
5
|
import { addSigningSessionSealLock, deriveSigningSessionSealLockKeyHandle, destroySigningSessionSealLockKeyHandle, removeSigningSessionSealLock } from "./shamir3PassWasm.js";
|
|
6
6
|
//#region src/threshold/session/signingSessionSeal/crypto/cipher.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { base64UrlEncode } from "../../../shared-ts/src/utils/base64.js";
|
|
2
2
|
import { sha256BytesUtf8 } from "../../../shared-ts/src/utils/digests.js";
|
|
3
|
-
import "../../../shared-ts/src/utils/encoders.js";
|
|
4
3
|
import { failure } from "../../../shared-ts/src/utils/failure.js";
|
|
4
|
+
import "../../../shared-ts/src/utils/encoders.js";
|
|
5
5
|
//#region src/threshold/session/signingSessionSeal/service.ts
|
|
6
6
|
const SIGNING_SESSION_SEAL_LOG_LABEL = "[threshold-signing-session-seal]";
|
|
7
7
|
const SIGNING_SESSION_SEAL_IDEMPOTENCY_TTL_MS_DEFAULT = 9e4;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { failure } from "../../../../shared-ts/src/utils/failure.js";
|
|
2
|
-
import { authorizeSigningSessionSealRequest, buildSigningSessionSealApplyPath, buildSigningSessionSealRemovePath, parseSigningSessionSealApplyBody, parseSigningSessionSealRemoveBody, resolveSigningSessionSealBasePath, signingSessionSealAuthorizeStatusCode, signingSessionSealStatusCode } from "./shared.js";
|
|
3
2
|
import { headersToRecord, readJson } from "../../../../router/framework/http.js";
|
|
3
|
+
import { authorizeSigningSessionSealRequest, buildSigningSessionSealApplyPath, buildSigningSessionSealRemovePath, parseSigningSessionSealApplyBody, parseSigningSessionSealRemoveBody, resolveSigningSessionSealBasePath, signingSessionSealAuthorizeStatusCode, signingSessionSealStatusCode } from "./shared.js";
|
|
4
4
|
//#region src/threshold/session/signingSessionSeal/transport/fetch.ts
|
|
5
5
|
function json(body, status = 200) {
|
|
6
6
|
return new Response(JSON.stringify(body), {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { parseThresholdSessionId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
2
|
import { ensureLeadingSlash } from "../../../../shared-ts/src/utils/normalize.js";
|
|
3
3
|
import { asRecord } from "../../../../shared-ts/src/utils/validation.js";
|
|
4
|
-
import { WALLET_SESSION_SEAL_BASE_PATH } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
|
|
5
4
|
import { failure } from "../../../../shared-ts/src/utils/failure.js";
|
|
5
|
+
import { WALLET_SESSION_SEAL_BASE_PATH } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
|
|
6
6
|
//#region src/threshold/session/signingSessionSeal/transport/shared.ts
|
|
7
7
|
const DEFAULT_BASE_PATH = WALLET_SESSION_SEAL_BASE_PATH;
|
|
8
8
|
function readRequiredString(obj, key) {
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { type WalletId } from '../utils/domainIds';
|
|
2
|
+
import type { ReadonlyExclusiveUnion } from '../utils/variant';
|
|
3
|
+
export declare const EXTERNAL_AUTH_PATH = "/wallet/external-auth";
|
|
4
|
+
export type ExternalAuthConfiguration = ReadonlyExclusiveUnion<{
|
|
5
|
+
kind: 'disabled';
|
|
6
|
+
revision: number;
|
|
7
|
+
} | {
|
|
8
|
+
kind: 'google';
|
|
9
|
+
revision: number;
|
|
10
|
+
clientId: string;
|
|
11
|
+
}>;
|
|
12
|
+
export declare function parseExternalAuthConfiguration(raw: unknown): ExternalAuthConfiguration;
|
|
13
|
+
type ExternalAuthFailureCode = 'invalid_request' | 'invalid_credential' | 'access_denied' | 'expired' | 'superseded' | 'unavailable' | 'rate_limited';
|
|
14
|
+
export type ExternalAuthResult<T> = ReadonlyExclusiveUnion<{
|
|
15
|
+
ok: true;
|
|
16
|
+
value: T;
|
|
17
|
+
} | {
|
|
18
|
+
ok: false;
|
|
19
|
+
code: ExternalAuthFailureCode;
|
|
20
|
+
message: string;
|
|
21
|
+
}>;
|
|
22
|
+
export type ExternalAuthenticateInput = ReadonlyExclusiveUnion<{
|
|
23
|
+
method: 'google';
|
|
24
|
+
walletId: string;
|
|
25
|
+
idToken: string;
|
|
26
|
+
} | {
|
|
27
|
+
method: 'handoff';
|
|
28
|
+
walletId: string;
|
|
29
|
+
attemptId: string;
|
|
30
|
+
code: string;
|
|
31
|
+
}>;
|
|
32
|
+
export type ExternalAuthAttempt = Readonly<{
|
|
33
|
+
attemptId: string;
|
|
34
|
+
walletId: WalletId;
|
|
35
|
+
expiresAtMs: number;
|
|
36
|
+
}>;
|
|
37
|
+
export type ExternalAuthCommand = ReadonlyExclusiveUnion<{
|
|
38
|
+
action: 'authenticate';
|
|
39
|
+
input: ExternalAuthenticateInput;
|
|
40
|
+
} | {
|
|
41
|
+
action: 'prepare';
|
|
42
|
+
walletId: string;
|
|
43
|
+
} | {
|
|
44
|
+
action: 'associate';
|
|
45
|
+
walletId: string;
|
|
46
|
+
idToken: string;
|
|
47
|
+
} | {
|
|
48
|
+
action: 'unlink';
|
|
49
|
+
walletId: string;
|
|
50
|
+
associationId: string;
|
|
51
|
+
}>;
|
|
52
|
+
export declare function parseExternalAuthCommand(raw: unknown): ExternalAuthCommand;
|
|
53
|
+
export type ExternalWalletAuthentication = Readonly<{
|
|
54
|
+
kind: 'external_authenticated';
|
|
55
|
+
walletId: WalletId;
|
|
56
|
+
sessionId: string;
|
|
57
|
+
associationId: string;
|
|
58
|
+
environmentId: string;
|
|
59
|
+
provider: 'google';
|
|
60
|
+
permission: 'wallet_settings_read';
|
|
61
|
+
expiresAtMs: number;
|
|
62
|
+
authMethod?: never;
|
|
63
|
+
}>;
|
|
64
|
+
export type ExternalWalletSettings = Readonly<{
|
|
65
|
+
authentication: ExternalWalletAuthentication;
|
|
66
|
+
accounts: readonly Readonly<{
|
|
67
|
+
family: 'ed25519' | 'ecdsa';
|
|
68
|
+
address: string;
|
|
69
|
+
publicKey: string;
|
|
70
|
+
}>[];
|
|
71
|
+
methods: readonly Readonly<{
|
|
72
|
+
id: string;
|
|
73
|
+
kind: 'passkey' | 'email_otp' | 'voiceid';
|
|
74
|
+
}>[];
|
|
75
|
+
devices: readonly Readonly<{
|
|
76
|
+
id: string;
|
|
77
|
+
}>[];
|
|
78
|
+
}>;
|
|
79
|
+
export declare function parseExternalWalletAuthentication(value: unknown): ExternalWalletAuthentication;
|
|
80
|
+
export declare function externalAuthFailure(code: ExternalAuthFailureCode): ExternalAuthResult<never>;
|
|
81
|
+
export declare function parseExternalAuthFailure(value: unknown): ExternalAuthResult<never>;
|
|
82
|
+
export declare function parseExternalWalletSettings(value: unknown): ExternalWalletSettings;
|
|
83
|
+
export {};
|
|
84
|
+
//# sourceMappingURL=externalAuth.d.ts.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ExternalAuthResult, ExternalWalletAuthentication, ExternalWalletSettings } from '../../../shared-ts/src/auth/externalAuth';
|
|
2
|
+
import type { WalletId } from '../../../shared-ts/src/utils/domainIds';
|
|
3
|
+
import type { D1WalletStore } from '../core/d1WalletStore';
|
|
4
|
+
import type { WalletAuthMethodV2Store } from '../core/d1WalletAuthMethodStore';
|
|
5
|
+
import { ExternalAuthStore, type ExternalAuthTrust } from './externalAuthStore';
|
|
6
|
+
export declare class ExternalAuthService {
|
|
7
|
+
readonly store: ExternalAuthStore;
|
|
8
|
+
private readonly wallets;
|
|
9
|
+
private readonly methods;
|
|
10
|
+
constructor(store: ExternalAuthStore, wallets: D1WalletStore, methods: WalletAuthMethodV2Store);
|
|
11
|
+
verifyGoogle(trust: ExternalAuthTrust, idToken: string): Promise<ExternalAuthResult<{
|
|
12
|
+
subject: string;
|
|
13
|
+
expiresAtMs: number;
|
|
14
|
+
trust: ExternalAuthTrust;
|
|
15
|
+
}>>;
|
|
16
|
+
prepare(input: {
|
|
17
|
+
walletId: WalletId;
|
|
18
|
+
originBinding: string;
|
|
19
|
+
binding: string;
|
|
20
|
+
sessionToken: string;
|
|
21
|
+
}): Promise<ExternalAuthResult<{
|
|
22
|
+
attemptId: string;
|
|
23
|
+
walletId: WalletId;
|
|
24
|
+
expiresAtMs: number;
|
|
25
|
+
}>>;
|
|
26
|
+
exchange(input: {
|
|
27
|
+
walletId: WalletId;
|
|
28
|
+
attemptId: string;
|
|
29
|
+
idToken: string;
|
|
30
|
+
trust: ExternalAuthTrust;
|
|
31
|
+
}): Promise<ExternalAuthResult<{
|
|
32
|
+
code: string;
|
|
33
|
+
}>>;
|
|
34
|
+
settings(authentication: ExternalWalletAuthentication): Promise<ExternalWalletSettings>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=externalAuthService.d.ts.map
|