@seams/wallet-server 0.7.3 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/THIRD_PARTY_NOTICES.md +1 -9
  2. package/artifact-manifest.json +78 -33
  3. package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
  4. package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
  5. package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
  6. package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
  7. package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
  8. package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
  9. package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
  10. package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
  11. package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
  12. package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
  13. package/cloudflare-router-ab/build/router/index.js +2 -2
  14. package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
  15. package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
  16. package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
  17. package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
  18. package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
  19. package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
  20. package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
  21. package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +0 -2
  22. package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +77 -20
  23. package/dist/esm/authorization/lifecycleRouting.js +62 -0
  24. package/dist/esm/authorization/service.js +35 -12
  25. package/dist/esm/cloud-host.js +20 -22
  26. package/dist/esm/core/EmailOtpRecords.js +1 -217
  27. package/dist/esm/core/EmailOtpStores.js +0 -859
  28. package/dist/esm/core/IdentityStore.js +2 -339
  29. package/dist/esm/core/ThresholdService/config.js +1 -9
  30. package/dist/esm/core/ThresholdService/index.js +0 -4
  31. package/dist/esm/core/ThresholdService/kv.js +1 -66
  32. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +1 -13
  33. package/dist/esm/core/ThresholdService/routerAbNormalSigningPolicy.js +1 -11
  34. package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +0 -541
  35. package/dist/esm/core/ThresholdService/validation.js +2 -346
  36. package/dist/esm/core/WalletAuthMethodStore.js +2 -123
  37. package/dist/esm/core/WalletStore.js +3 -209
  38. package/dist/esm/core/WebAuthnAuthenticatorStore.js +0 -202
  39. package/dist/esm/core/WebAuthnCredentialBindingStore.js +2 -182
  40. package/dist/esm/core/WebAuthnLoginChallengeStore.js +0 -52
  41. package/dist/esm/core/WebAuthnSyncChallengeStore.js +0 -54
  42. package/dist/esm/core/authService/emailOtpConfig.js +1 -195
  43. package/dist/esm/core/authService/emailOtpEnrollment.js +0 -110
  44. package/dist/esm/core/authService/emailOtpSeal.js +0 -63
  45. package/dist/esm/core/authService/nearTransactions.js +3 -98
  46. package/dist/esm/core/authService/rateLimits.js +0 -84
  47. package/dist/esm/core/authService/webauthn.js +2 -298
  48. package/dist/esm/core/authService/webauthnOidcHelpers.js +1 -24
  49. package/dist/esm/core/authService/webauthnWalletBinding.js +0 -37
  50. package/dist/esm/core/config.js +1 -95
  51. package/dist/esm/core/d1EcdsaSignerRead.js +1 -1
  52. package/dist/esm/core/d1IdentityStore.js +1 -2
  53. package/dist/esm/core/d1TenantStore.js +1 -24
  54. package/dist/esm/core/d1WalletAuthMethodStore.js +2 -5
  55. package/dist/esm/core/d1WalletStore.js +2 -2
  56. package/dist/esm/core/deviceLinking/linkedDeviceBootstrap.js +13 -0
  57. package/dist/esm/core/deviceLinking/linkedDeviceSession.js +20 -14
  58. package/dist/esm/core/deviceLinking/requestProof.js +9 -6
  59. package/dist/esm/core/emailOtpD1Statements.js +107 -94
  60. package/dist/esm/core/keyMaterialBrands.js +2 -12
  61. package/dist/esm/core/nearKeys.js +0 -1
  62. package/dist/esm/core/nearRelayerAccountProvisioning.js +6 -9
  63. package/dist/esm/core/passkeyCredentialClaims.js +8 -0
  64. package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +2 -6
  65. package/dist/esm/core/routerAbSigning/RouterAbNormalSigningRuntime.js +2 -30
  66. package/dist/esm/core/thresholdEcdsaChainTarget.js +1 -4
  67. package/dist/esm/hosted-wallet-gateway.js +66 -43
  68. package/dist/esm/index.js +6 -19
  69. package/dist/esm/localHostedWalletGatewayHandler.js +12 -0
  70. package/dist/esm/localRegistrationSetupAuthority.js +89 -0
  71. package/dist/esm/router/auth/authRequestValidation.js +8 -16
  72. package/dist/esm/router/auth/webAuthnCredentialCodecs.js +0 -1
  73. package/dist/esm/router/cloudflare/d1/auth/d1AuthorizationAssembly.js +87 -0
  74. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +12 -2
  75. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +32 -281
  76. package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +24 -22
  77. package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +8 -6
  78. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +12 -13
  79. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +6 -1
  80. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +12 -2
  81. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +4 -4
  82. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
  83. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +3 -9
  84. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.js +2 -1
  85. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +89 -7
  86. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +23 -14
  87. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +9 -6
  88. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +0 -1
  89. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +0 -1
  90. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +1 -1
  91. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +0 -1
  92. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +1 -1
  93. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +1 -7
  94. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +19 -13
  95. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +0 -1
  96. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +0 -1
  97. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +2 -2
  98. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +0 -1
  99. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +44 -12
  100. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +1 -49
  101. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +19 -31
  102. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.js +85 -0
  103. package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +0 -1
  104. package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +0 -48
  105. package/dist/esm/router/cloudflare/d1/near/d1SponsoredNearAccount.js +242 -0
  106. package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +0 -1
  107. package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +2 -29
  108. package/dist/esm/router/cloudflare/d1/oidc/googleOidcToken.js +41 -0
  109. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +5 -0
  110. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +34 -0
  111. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +9 -3
  112. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +7 -13
  113. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +25 -13
  114. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +0 -1
  115. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +74 -0
  116. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +7 -1
  117. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +69 -238
  118. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +12 -56
  119. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +155 -0
  120. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +1 -3
  121. package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +12 -6
  122. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +68 -0
  123. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +7 -54
  124. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +9 -8
  125. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +2 -142
  126. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +25 -4
  127. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +4 -70
  128. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +23 -7
  129. package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +1 -0
  130. package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +1 -0
  131. package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +5 -0
  132. package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
  133. package/dist/esm/router/cloudflare/runtime/walletRuntimeOps.js +16 -4
  134. package/dist/esm/router/cloudflare-adaptor.js +1 -2
  135. package/dist/esm/router/cloudflare.js +1342 -1733
  136. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +11 -8
  137. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +3 -2
  138. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +6 -6
  139. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +6 -6
  140. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +3 -0
  141. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +8 -0
  142. package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +0 -1
  143. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +2 -8
  144. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +2 -8
  145. package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +5 -19
  146. package/dist/esm/router/domains/signingOperations/walletExecutionAdmission.js +2 -3
  147. package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +70 -0
  148. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +10 -11
  149. package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +2 -3
  150. package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +14 -0
  151. package/dist/esm/router/express.js +574 -479
  152. package/dist/esm/router/framework/http.js +2 -0
  153. package/dist/esm/router/framework/registrationSetupDispatch.js +14 -0
  154. package/dist/esm/router/framework/ror/normalize.js +0 -1
  155. package/dist/esm/router/framework/ror/options.js +0 -1
  156. package/dist/esm/router/framework/ror/provider.js +0 -1
  157. package/dist/esm/router/framework/ror/staticProvider.js +0 -1
  158. package/dist/esm/router/framework/routeDefinitions.js +1 -2
  159. package/dist/esm/router/framework/routerApiWebhooks.js +0 -1
  160. package/dist/esm/router/ror.js +0 -1
  161. package/dist/esm/router/transport/fetch/createFetchRouter.js +0 -2
  162. package/dist/esm/router/transport/fetch/routes/auth.js +2 -0
  163. package/dist/esm/router/transport/fetch/routes/deviceLinking.js +36 -147
  164. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +3 -2
  165. package/dist/esm/router/transport/fetch/routes/deviceLinkingResponses.js +130 -0
  166. package/dist/esm/router/transport/fetch/routes/ecdsaOperationStepUpFactor.js +171 -0
  167. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +1 -0
  168. package/dist/esm/router/transport/fetch/routes/syncAccount.js +7 -2
  169. package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +19 -115
  170. package/dist/esm/router/transport/fetch/routes/walletRegistration.js +3 -1
  171. package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +0 -1
  172. package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +0 -2
  173. package/dist/esm/shared-ts/src/device-linking/contracts.js +16 -1
  174. package/dist/esm/shared-ts/src/device-linking/digests.js +1 -8
  175. package/dist/esm/shared-ts/src/near/actions.js +0 -1
  176. package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
  177. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
  178. package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -6
  179. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +1 -1
  180. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +2 -81
  181. package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -219
  182. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +0 -3
  183. package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +1 -2
  184. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
  185. package/dist/esm/shared-ts/src/threshold/keyMaterialBrands.js +1 -22
  186. package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
  187. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +0 -1
  188. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +4 -13
  189. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +1 -7
  190. package/dist/esm/shared-ts/src/utils/domainIds.js +1 -16
  191. package/dist/esm/shared-ts/src/utils/ecdsaCapabilityActivation.js +1 -11
  192. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -1
  193. package/dist/esm/shared-ts/src/utils/errors.js +1 -19
  194. package/dist/esm/shared-ts/src/utils/near.js +1 -1
  195. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
  196. package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
  197. package/dist/esm/shared-ts/src/utils/registrationIntent.js +0 -1
  198. package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +8 -0
  199. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +1 -1
  200. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +0 -1
  201. package/dist/esm/shared-ts/src/utils/validation.js +1 -5
  202. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
  203. package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
  204. package/dist/esm/shared-ts/src/utils/wireSchema.js +2 -13
  205. package/dist/esm/shared-ts/src/wallet-recovery/backupAcknowledgement.js +6 -24
  206. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
  207. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +5 -6
  208. package/dist/esm/storage/d1Sql.js +1 -7
  209. package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +0 -1
  210. package/dist/esm/threshold/session/signingSessionSeal/guards/backends.js +1 -2
  211. package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +0 -1
  212. package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +0 -1
  213. package/dist/esm/threshold/session/signingSessionSeal/options.js +0 -1
  214. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
  215. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +0 -611
  216. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  217. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
  218. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
  219. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +1 -0
  220. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
  221. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +0 -11
  222. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +2 -7
  223. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
  224. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
  225. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
  226. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
  227. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -843
  228. package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
  229. package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
  230. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
  231. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
  232. package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
  233. package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
  234. package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
  235. package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
  236. package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
  237. package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
  238. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
  239. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
  240. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
  241. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
  242. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
  243. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
  244. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
  245. package/dist/types/wallet-server/src/authorization/lifecycleRouting.d.ts +32 -0
  246. package/dist/types/wallet-server/src/authorization/lifecycleRouting.typecheck.d.ts +2 -0
  247. package/dist/types/wallet-server/src/authorization/recoveryRouting.d.ts +22 -0
  248. package/dist/types/wallet-server/src/authorization/recoveryRouting.typecheck.d.ts +2 -0
  249. package/dist/types/wallet-server/src/authorization/service.d.ts +8 -1
  250. package/dist/types/wallet-server/src/authorization/sessionRouting.d.ts +20 -0
  251. package/dist/types/wallet-server/src/authorization/sessionRouting.typecheck.d.ts +2 -0
  252. package/dist/types/wallet-server/src/cloud-host.d.ts +31 -9
  253. package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +1 -22
  254. package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +1 -79
  255. package/dist/types/wallet-server/src/core/IdentityStore.d.ts +0 -10
  256. package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +0 -1
  257. package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +0 -2
  258. package/dist/types/wallet-server/src/core/ThresholdService/index.d.ts +1 -3
  259. package/dist/types/wallet-server/src/core/ThresholdService/kv.d.ts +0 -7
  260. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +0 -3
  261. package/dist/types/wallet-server/src/core/ThresholdService/routerAbNormalSigningPolicy.d.ts +0 -1
  262. package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +7 -19
  263. package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +0 -34
  264. package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +1 -5
  265. package/dist/types/wallet-server/src/core/WalletStore.d.ts +0 -3
  266. package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +0 -20
  267. package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +1 -27
  268. package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +2 -16
  269. package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +22 -14
  270. package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +0 -24
  271. package/dist/types/wallet-server/src/core/authService/emailOtpEnrollment.d.ts +1 -70
  272. package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +0 -13
  273. package/dist/types/wallet-server/src/core/authService/githubOAuth.d.ts +2 -1
  274. package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +1 -39
  275. package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +0 -17
  276. package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +0 -125
  277. package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +0 -3
  278. package/dist/types/wallet-server/src/core/authService/webauthnVerificationOutcomes.d.ts +1 -1
  279. package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +0 -12
  280. package/dist/types/wallet-server/src/core/config.d.ts +0 -10
  281. package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +0 -2
  282. package/dist/types/wallet-server/src/core/d1TenantStore.d.ts +0 -7
  283. package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +0 -1
  284. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceBootstrap.d.ts +19 -0
  285. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +8 -6
  286. package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +2 -5
  287. package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +10 -7
  288. package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +1 -5
  289. package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +0 -1
  290. package/dist/types/wallet-server/src/core/passkeyCredentialClaims.d.ts +9 -0
  291. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +0 -2
  292. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +0 -2
  293. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +1 -92
  294. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +4 -52
  295. package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +0 -1
  296. package/dist/types/wallet-server/src/core/types.d.ts +0 -299
  297. package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +15 -3
  298. package/dist/types/wallet-server/src/index.d.ts +8 -13
  299. package/dist/types/wallet-server/src/localRegistrationSetupAuthority.d.ts +13 -0
  300. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizationAssembly.d.ts +23 -0
  301. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +25 -3
  302. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +1 -1
  303. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +3 -1
  304. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +7 -1
  305. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.d.ts +1 -10
  306. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.d.ts +4 -0
  307. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +6 -0
  308. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +1 -13
  309. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.d.ts +2 -2
  310. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +1 -1
  311. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +0 -2
  312. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +18 -2
  313. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +29 -1
  314. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +3 -16
  315. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.d.ts +7 -2
  316. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.d.ts +23 -0
  317. package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityService.d.ts +0 -12
  318. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.d.ts +24 -0
  319. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.typecheck.d.ts +2 -0
  320. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcVerificationService.d.ts +0 -1
  321. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/googleOidcToken.d.ts +4 -0
  322. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +5 -0
  323. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +9 -0
  324. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +1 -1
  325. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +10 -11
  326. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +3 -2
  327. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +51 -0
  328. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +3 -0
  329. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +30 -47
  330. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +3 -30
  331. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.d.ts +11 -0
  332. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.d.ts +27 -0
  333. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +1 -10
  334. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +2 -2
  335. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +0 -4
  336. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.d.ts +3 -0
  337. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +0 -13
  338. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +23 -10
  339. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.typecheck.d.ts +2 -0
  340. package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflare.types.d.ts +0 -2
  341. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +1 -0
  342. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +2 -0
  343. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +1 -1
  344. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOps.d.ts +3 -0
  345. package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +0 -1
  346. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +1 -1
  347. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +2 -2
  348. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +2 -2
  349. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.typecheck.d.ts +2 -0
  350. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.d.ts +2 -0
  351. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.d.ts +2 -0
  352. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +0 -2
  353. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +0 -3
  354. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +0 -17
  355. package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +1 -2
  356. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +1 -0
  357. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationReservation.d.ts +51 -0
  358. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +2 -10
  359. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +2 -2
  360. package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +14 -34
  361. package/dist/types/wallet-server/src/router/framework/googleLoginResolution.typecheck.d.ts +2 -0
  362. package/dist/types/wallet-server/src/router/framework/registrationSetupDispatch.d.ts +13 -0
  363. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +1 -1
  364. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingResponses.d.ts +17 -0
  365. package/dist/types/wallet-server/src/router/transport/fetch/routes/ecdsaOperationStepUpFactor.d.ts +37 -0
  366. package/dist/types/wallet-server/src/storage/d1Sql.d.ts +0 -1
  367. package/migrations/d1-signer/0040_namespace_home_challenges.sql +16 -0
  368. package/migrations/d1-signer/0041_step_up_admission_expiry.sql +28 -0
  369. package/migrations/d1-signer/0042_deployment_resource_challenges.sql +4 -0
  370. package/migrations/d1-signer/0043_google_registration_candidate_claim.sql +2 -0
  371. package/migrations/d1-signer/0044_linked_device_bootstrap_imports.sql +6 -0
  372. package/migrations/d1-signer/0045_wallet_owned_capability_receipts.sql +29 -0
  373. package/migrations/d1-signer/0046_wallet_owned_signing_abuse.sql +41 -0
  374. package/migrations/d1-signer/0047_remove_unused_near_public_keys.sql +2 -0
  375. package/migrations/d1-signer/0048_operation_owner_scope.sql +45 -0
  376. package/package.json +2 -3
  377. package/src/README.md +11 -3
  378. package/dist/esm/core/AuthService.js +0 -2
  379. package/dist/esm/core/NearPublicKeyStore.js +0 -200
  380. package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +0 -397
  381. package/dist/esm/core/ThresholdService/stores/KeyStore.js +0 -140
  382. package/dist/esm/core/ThresholdService/stores/SessionStore.js +0 -361
  383. package/dist/esm/core/ThresholdService/stores/StoreConfig.js +0 -13
  384. package/dist/esm/core/ThresholdService/stores/exportReplayGuard.js +0 -7
  385. package/dist/esm/core/authService/AuthService.js +0 -594
  386. package/dist/esm/core/authService/bytes.js +0 -19
  387. package/dist/esm/core/authService/configValues.js +0 -15
  388. package/dist/esm/core/authService/emailOtpChallengeOperations.js +0 -123
  389. package/dist/esm/core/authService/emailOtpChallengeProof.js +0 -183
  390. package/dist/esm/core/authService/emailOtpChallengeVerification.js +0 -264
  391. package/dist/esm/core/authService/emailOtpChallenges.js +0 -225
  392. package/dist/esm/core/authService/emailOtpDelivery.js +0 -134
  393. package/dist/esm/core/authService/emailOtpGrant.js +0 -43
  394. package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +0 -144
  395. package/dist/esm/core/authService/emailOtpUnlock.js +0 -174
  396. package/dist/esm/core/authService/googleEmailOtpOperations.js +0 -141
  397. package/dist/esm/core/authService/googleEmailOtpRegistration.js +0 -587
  398. package/dist/esm/core/authService/identity.js +0 -42
  399. package/dist/esm/core/authService/identityOperations.js +0 -32
  400. package/dist/esm/core/authService/nearAccountOperations.js +0 -229
  401. package/dist/esm/core/authService/nearPublicKeyMetadata.js +0 -108
  402. package/dist/esm/core/authService/oidcVerification.js +0 -249
  403. package/dist/esm/core/authService/registrationThresholdHelpers.js +0 -30
  404. package/dist/esm/core/authService/runtime.js +0 -45
  405. package/dist/esm/core/authService/storeRegistry.js +0 -102
  406. package/dist/esm/core/authService/thresholdStoreSummary.js +0 -32
  407. package/dist/esm/core/authService/webauthnAuthority.js +0 -17
  408. package/dist/esm/core/defaultConfigsServer.js +0 -9
  409. package/dist/esm/core/hostedAccountIds.js +0 -225
  410. package/dist/esm/core/routerAbSigning/createRouterAbSigningRuntimes.js +0 -84
  411. package/dist/esm/core/signingLanes/LaneAggregateRevocationApplicationService.js +0 -86
  412. package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +0 -324
  413. package/dist/esm/core/signingLanes/LaneEnrollmentRevocation.js +0 -173
  414. package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +0 -198
  415. package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +0 -73
  416. package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +0 -68
  417. package/dist/esm/core/signingLanes/signingWorkerLaneMaterialIdentity.js +0 -0
  418. package/dist/esm/core/storeBackends.js +0 -208
  419. package/dist/esm/core/utils.js +0 -14
  420. package/dist/esm/core/webAuthnStoreBackends.js +0 -198
  421. package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +0 -49
  422. package/dist/esm/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.js +0 -10
  423. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.js +0 -22
  424. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +0 -166
  425. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.js +0 -38
  426. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.js +0 -20
  427. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +0 -1459
  428. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLockStore.js +0 -114
  429. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.js +0 -16
  430. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +0 -171
  431. package/dist/esm/router/cloudflare/d1/signingLanes/index.js +0 -10
  432. package/dist/esm/router/cloudflare/durableObjects/thresholdStore.js +0 -397
  433. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +0 -597
  434. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +0 -273
  435. package/dist/esm/router/cloudflare/signingLanes/index.js +0 -4
  436. package/dist/esm/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.js +0 -32
  437. package/dist/esm/router/transport/fetch/routes/nearPublicKeys.js +0 -27
  438. package/dist/esm/shared-ts/src/signing-lanes/rotation.js +0 -8
  439. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -358
  440. package/dist/esm/shared-ts/src/signing-lanes/rotationLifecycle.js +0 -313
  441. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -532
  442. package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -323
  443. package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -59
  444. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
  445. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
  446. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
  447. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
  448. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
  449. package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
  450. package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
  451. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
  452. package/dist/types/wallet-server/src/core/AuthService.d.ts +0 -3
  453. package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +0 -48
  454. package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +0 -21
  455. package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +0 -40
  456. package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +0 -98
  457. package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +0 -4
  458. package/dist/types/wallet-server/src/core/ThresholdService/stores/ThresholdStoreConfig.typecheck.d.ts +0 -2
  459. package/dist/types/wallet-server/src/core/ThresholdService/stores/exportReplayGuard.d.ts +0 -3
  460. package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +0 -490
  461. package/dist/types/wallet-server/src/core/authService/bytes.d.ts +0 -3
  462. package/dist/types/wallet-server/src/core/authService/configValues.d.ts +0 -7
  463. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +0 -109
  464. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +0 -169
  465. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +0 -47
  466. package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +0 -86
  467. package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +0 -66
  468. package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +0 -43
  469. package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +0 -49
  470. package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +0 -64
  471. package/dist/types/wallet-server/src/core/authService/googleEmailOtpOperations.d.ts +0 -126
  472. package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +0 -169
  473. package/dist/types/wallet-server/src/core/authService/identity.d.ts +0 -25
  474. package/dist/types/wallet-server/src/core/authService/identityOperations.d.ts +0 -19
  475. package/dist/types/wallet-server/src/core/authService/nearAccountOperations.d.ts +0 -55
  476. package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +0 -44
  477. package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +0 -66
  478. package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +0 -11
  479. package/dist/types/wallet-server/src/core/authService/runtime.d.ts +0 -20
  480. package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +0 -53
  481. package/dist/types/wallet-server/src/core/authService/thresholdStoreSummary.d.ts +0 -3
  482. package/dist/types/wallet-server/src/core/authService/webauthnAuthority.d.ts +0 -5
  483. package/dist/types/wallet-server/src/core/defaultConfigsServer.d.ts +0 -5
  484. package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +0 -16
  485. package/dist/types/wallet-server/src/core/routerAbSigning/createRouterAbSigningRuntimes.d.ts +0 -16
  486. package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +0 -36
  487. package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +0 -62
  488. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentActivation.d.ts +0 -13
  489. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentRevocation.d.ts +0 -24
  490. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleApplicationService.d.ts +0 -141
  491. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +0 -228
  492. package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +0 -58
  493. package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +0 -30
  494. package/dist/types/wallet-server/src/core/signingLanes/signingWorkerLaneMaterialIdentity.d.ts +0 -4
  495. package/dist/types/wallet-server/src/core/storeBackends.d.ts +0 -83
  496. package/dist/types/wallet-server/src/core/utils.d.ts +0 -3
  497. package/dist/types/wallet-server/src/core/webAuthnStoreBackends.d.ts +0 -96
  498. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +0 -29
  499. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.d.ts +0 -4
  500. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.d.ts +0 -4
  501. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +0 -24
  502. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.d.ts +0 -20
  503. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.d.ts +0 -13
  504. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.d.ts +0 -51
  505. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLockStore.d.ts +0 -28
  506. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.d.ts +0 -5
  507. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneRecords.d.ts +0 -107
  508. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/index.d.ts +0 -10
  509. package/dist/types/wallet-server/src/router/cloudflare/durableObjects/thresholdStore.d.ts +0 -18
  510. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.d.ts +0 -217
  511. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.d.ts +0 -73
  512. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/index.d.ts +0 -4
  513. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.d.ts +0 -6
  514. package/dist/types/wallet-server/src/router/transport/fetch/routes/nearPublicKeys.d.ts +0 -3
  515. /package/dist/esm/{core/signingLanes/LaneEffectJournalStore.js → authorization/recoveryRouting.js} +0 -0
  516. /package/dist/esm/{core/signingLanes/LaneLifecycleStore.js → authorization/sessionRouting.js} +0 -0
@@ -0,0 +1,171 @@
1
+ import { parseEmailOtpChallengeId, parseOrgId, parseProviderSubject } from "../../../../shared-ts/src/utils/domainIds.js";
2
+ import { parseAuthFactorId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
3
+ import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
4
+ import { alphabetizeStringify, sha256BytesUtf8 } from "../../../../shared-ts/src/utils/digests.js";
5
+ import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
6
+ import "../../../../shared-ts/src/utils/encoders.js";
7
+ import { buildVerifiedWalletOperationEmailOtpFactorResult, buildVerifiedWalletOperationPasskeyFactorResult } from "../../../../authorization/factorEvidence.js";
8
+ import { json } from "../../../framework/http.js";
9
+ import { hashEmailOtpOperationBinding } from "../../../domains/emailOtp/emailOtpSessionRouteHelpers.js";
10
+ import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_EXPORT_OPERATION, WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
11
+ //#region src/router/transport/fetch/routes/ecdsaOperationStepUpFactor.ts
12
+ async function verifyEcdsaOperationStepUpFactor(input) {
13
+ const proof = input.proof;
14
+ switch (proof.kind) {
15
+ case "passkey": {
16
+ if (input.authSource.kind !== "passkey" || proof.authority.factor.credentialIdB64u !== input.authSource.credentialIdB64u) return {
17
+ ok: false,
18
+ response: json({
19
+ ok: false,
20
+ code: "scope_mismatch",
21
+ message: "Passkey authority changed"
22
+ }, { status: 403 })
23
+ };
24
+ const credential = proof.webauthn_authentication;
25
+ if (String(credential.rawId || credential.id).trim() !== input.authSource.credentialIdB64u) return {
26
+ ok: false,
27
+ response: json({
28
+ ok: false,
29
+ code: "unauthorized",
30
+ message: "Passkey credential changed"
31
+ }, { status: 401 })
32
+ };
33
+ const verified = await input.webAuthn.verifyWebAuthnAuthenticationLite({
34
+ userId: input.walletId,
35
+ rpId: proof.authority.verifier.rpId,
36
+ expectedChallenge: input.expectedChallenge,
37
+ expected_origin: input.requestOrigin,
38
+ webauthn_authentication: credential
39
+ });
40
+ if (!verified.success || !verified.verified) return {
41
+ ok: false,
42
+ response: json({
43
+ ok: false,
44
+ code: verified.code || "not_verified",
45
+ message: verified.message || "WebAuthn authentication verification failed"
46
+ }, { status: 401 })
47
+ };
48
+ const assertionDigest = parseDigestB64u(base64UrlEncode(await sha256BytesUtf8(alphabetizeStringify(credential))));
49
+ const verifiedAtMs = Date.now();
50
+ if (input.expiresAtMs <= verifiedAtMs) return expiredStepUpFactor();
51
+ const factorId = parseAuthFactorId(`passkey:${input.authSource.credentialIdB64u}`);
52
+ if (!factorId.ok) throw new Error(factorId.error.message);
53
+ return {
54
+ ok: true,
55
+ factor: buildVerifiedWalletOperationPasskeyFactorResult({
56
+ tenantId: input.operation.tenantId,
57
+ principalId: input.operation.principalId,
58
+ walletId: input.walletId,
59
+ requestOrigin: input.requestOrigin,
60
+ audience: input.requestOrigin,
61
+ factorId: factorId.value,
62
+ authorityRef: input.authorityRef,
63
+ operation: input.operation,
64
+ credentialIdB64u: proof.authority.factor.credentialIdB64u,
65
+ assertionDigest,
66
+ verifiedAtMs,
67
+ expiresAtMs: input.expiresAtMs
68
+ }),
69
+ unseal: { kind: "not_requested" }
70
+ };
71
+ }
72
+ case "email_otp": {
73
+ const isExport = input.operation.operation.operationKind === "evm.export_key";
74
+ const emailOtpOperation = isExport ? WALLET_EMAIL_OTP_EXPORT_OPERATION : WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION;
75
+ const operationBinding = await hashEmailOtpOperationBinding({
76
+ walletId: input.walletId,
77
+ providerUserId: proof.authority.factor.providerUserId,
78
+ orgId: input.operation.tenantId,
79
+ operation: emailOtpOperation,
80
+ requestOrigin: input.requestOrigin,
81
+ audience: input.requestOrigin,
82
+ authorityRef: input.authorityRef,
83
+ ...isExport ? {} : { operationFingerprintDigest: input.operation.digests.laneDigest }
84
+ });
85
+ const verified = await input.emailOtp.verifyEmailOtpChallenge({
86
+ userId: proof.authority.factor.providerUserId,
87
+ walletId: input.walletId,
88
+ orgId: input.operation.tenantId,
89
+ challengeId: proof.challenge_id,
90
+ otpCode: proof.otp_code,
91
+ otpChannel: EMAIL_OTP_CHANNEL,
92
+ ownerProofBindingDigest: operationBinding,
93
+ operation: emailOtpOperation
94
+ });
95
+ if (!verified.ok) return {
96
+ ok: false,
97
+ response: json(verified, { status: verified.code === "invalid_body" ? 400 : 401 })
98
+ };
99
+ let verifiedChallengeId = verified.challengeId;
100
+ if (!isExport) {
101
+ const orgId = parseOrgId(input.operation.tenantId);
102
+ const providerSubject = parseProviderSubject(proof.authority.factor.providerUserId);
103
+ if (!orgId.ok) throw new Error(orgId.error.message);
104
+ if (!providerSubject.ok) throw new Error(providerSubject.error.message);
105
+ const consumed = await input.emailOtp.consumeEmailOtpGrant({
106
+ subject: {
107
+ kind: "provider_identity",
108
+ orgId: orgId.value,
109
+ providerSubject: providerSubject.value,
110
+ walletId: input.walletId
111
+ },
112
+ loginGrant: verified.loginGrant,
113
+ otpChannel: EMAIL_OTP_CHANNEL
114
+ });
115
+ if (!consumed.ok) return {
116
+ ok: false,
117
+ response: json(consumed, { status: consumed.code === "invalid_body" ? 400 : 401 })
118
+ };
119
+ verifiedChallengeId = consumed.challengeId;
120
+ }
121
+ const verificationReceiptDigest = parseDigestB64u(base64UrlEncode(await sha256BytesUtf8(alphabetizeStringify({
122
+ challengeId: verifiedChallengeId,
123
+ operationFingerprint: input.expectedChallenge
124
+ }))));
125
+ const verifiedAtMs = Date.now();
126
+ const expiresAtMs = Math.min(input.expiresAtMs, verified.grantExpiresAtMs);
127
+ if (expiresAtMs <= verifiedAtMs) return expiredStepUpFactor();
128
+ const factorId = parseAuthFactorId(`email_otp:${proof.authority.factor.provider}:${proof.authority.factor.providerUserId}`);
129
+ const challengeId = parseEmailOtpChallengeId(verifiedChallengeId);
130
+ if (!factorId.ok) throw new Error(factorId.error.message);
131
+ if (!challengeId.ok) throw new Error(challengeId.error.message);
132
+ return {
133
+ ok: true,
134
+ factor: buildVerifiedWalletOperationEmailOtpFactorResult({
135
+ tenantId: input.operation.tenantId,
136
+ principalId: input.operation.principalId,
137
+ walletId: input.walletId,
138
+ requestOrigin: input.requestOrigin,
139
+ audience: input.requestOrigin,
140
+ factorId: factorId.value,
141
+ authorityRef: input.authorityRef,
142
+ operation: input.operation,
143
+ challengeId: challengeId.value,
144
+ verificationReceiptDigest,
145
+ verifiedAtMs,
146
+ expiresAtMs
147
+ }),
148
+ unseal: isExport ? {
149
+ kind: "email_otp_grant",
150
+ grant: verified.loginGrant,
151
+ challenge_id: verified.challengeId
152
+ } : { kind: "not_requested" }
153
+ };
154
+ }
155
+ default: throw new Error("Unsupported ECDSA operation step-up proof");
156
+ }
157
+ }
158
+ function expiredStepUpFactor() {
159
+ return {
160
+ ok: false,
161
+ response: json({
162
+ ok: false,
163
+ code: "verified_step_up_rejected",
164
+ message: "Operation step-up authorization expired"
165
+ }, { status: 403 })
166
+ };
167
+ }
168
+ //#endregion
169
+ export { verifyEcdsaOperationStepUpFactor };
170
+
171
+ //# sourceMappingURL=ecdsaOperationStepUpFactor.js.map
@@ -652,6 +652,7 @@ async function handleWalletRecoveryPrepare(ctx) {
652
652
  case "refused": return toFetchRouteResponse(refusedSpend());
653
653
  case "reserved":
654
654
  case "consumed": return routeErrorResponse(401, "recovery_code_used", "that recovery code has already been used");
655
+ case "routing_unavailable": return routeErrorResponse(503, "wallet_home_unavailable", "Wallet recovery routing is temporarily unavailable");
655
656
  case "manifest_unavailable":
656
657
  case "registration_unavailable": return routeErrorResponse(409, "recovery_preparation_conflict", "wallet recovery could not be prepared");
657
658
  }
@@ -13,7 +13,12 @@ import { issueSyncAccountBootstrapV1 } from "./syncAccountBootstrap.js";
13
13
  //#region src/router/transport/fetch/routes/syncAccount.ts
14
14
  function syncAccountResponseStatus(result) {
15
15
  if (result.ok && result.verified) return 200;
16
- switch (result.code) {
16
+ return syncAccountFailureStatus(result.code);
17
+ }
18
+ function syncAccountFailureStatus(code) {
19
+ switch (code) {
20
+ case "wallet_home_unavailable": return 503;
21
+ case "wallet_home_conflict": return 409;
17
22
  case "internal": return 500;
18
23
  case "ed25519_not_provisioned": return 409;
19
24
  default: return 400;
@@ -43,7 +48,7 @@ async function handleSyncAccount(ctx) {
43
48
  const parsed = parseSyncAccountOptionsRequest(await readJson(ctx.request));
44
49
  if (!parsed.ok) return json(parsed.body, { status: parsed.status });
45
50
  const result = await ctx.service.webAuthn.createWebAuthnSyncAccountOptions(parsed.request);
46
- return json(result, { status: result.ok ? 200 : result.code === "internal" ? 500 : 400 });
51
+ return json(result, { status: result.ok ? 200 : syncAccountFailureStatus(result.code) });
47
52
  }
48
53
  if (ctx.pathname === "/sync-account/verify") {
49
54
  const parsed = parseSyncAccountVerifyRequest({
@@ -1,7 +1,6 @@
1
- import { parseEmailOtpChallengeId, parseOrgId, parseProviderSubject, parseWalletId } from "../../../../shared-ts/src/utils/domainIds.js";
2
- import { EVM_ECDSA_MPC_OPERATION_KINDS, buildEvmEcdsaMpcOperationRef, parseAuthFactorId, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parseEcdsaAuthorizationSessionId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
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
3
  import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
4
- import { alphabetizeStringify, sha256BytesUtf8 } from "../../../../shared-ts/src/utils/digests.js";
5
4
  import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
6
5
  import { buildCapabilityOperationEnvelope } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
7
6
  import "../../../../shared-ts/src/utils/encoders.js";
@@ -9,20 +8,18 @@ import { routerAbMpcMaterialActivationRefToWire, sameRouterAbMpcMaterialActivati
9
8
  import { walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
10
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";
11
10
  import { buildWalletSessionCapabilitySubjectsV1, projectActiveWalletSession } from "../../../../authorization/domain.js";
12
- import { buildVerifiedWalletOperationEmailOtpFactorResult, buildVerifiedWalletOperationPasskeyFactorResult } from "../../../../authorization/factorEvidence.js";
13
11
  import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
14
12
  import { WALLET_SESSION_FAILURE_CODES } from "../../../../shared-ts/src/utils/walletSessionFailure.js";
15
13
  import { json, readJson } from "../../../framework/http.js";
16
14
  import { extractBearerCredential } from "../../../auth/routerApiKeyAuth.js";
17
15
  import { walletSessionFailure, walletSessionFailureStatus } from "../../../auth/walletSessionFailure.js";
18
16
  import { resolveWalletSessionOperationCredentialAdmission, validateEcdsaPreprocessingSession } from "../../../auth/commonRouterUtils.js";
19
- import { hashEmailOtpOperationBinding } from "../../../domains/emailOtp/emailOtpSessionRouteHelpers.js";
20
- import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_EXPORT_OPERATION, WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
21
17
  import { thresholdEcdsaStatusCode } from "../../../../threshold/statusCodes.js";
22
18
  import { parseEcdsaServerTiming } from "../../../../shared-ts/src/utils/ecdsaServerTiming.js";
23
19
  import { authenticateRouterAbWalletOperationStepUpIdentity } from "../../../domains/signingOperations/routerAbOperationStepUp.js";
24
20
  import { admitRouterAbEcdsaReusableWalletSessionOperation, authenticateRouterAbEcdsaOperationStepUp, authorizeRouterAbEcdsaDerivationNormalSigningRoute, buildRouterAbEcdsaOwnerOperationStepUpPreparation, claimRouterAbEcdsaOperationStepUp, completeRouterAbEcdsaOperation, decideRouterAbEcdsaOwnerOperationAuthorization, resolveFreshRouterAbEcdsaMaterialActivation, routerAbEcdsaAtomicAuthorizationConfigured, routerAbEcdsaOperationInProgressResult, routerAbEcdsaOwnerOperationFailureResult, routerAbEcdsaReplayHttpResponse, routerAbEcdsaReplayUnavailableResult } from "../../../domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js";
25
21
  import { parseRouterAbEcdsaDerivationPoolFillInitRouteRequest, parseRouterAbEcdsaDerivationPoolFillStepRouteRequest } from "../../../domains/ecdsa/thresholdEcdsaRequestValidation.js";
22
+ import { verifyEcdsaOperationStepUpFactor } from "./ecdsaOperationStepUpFactor.js";
26
23
  import { resolveWalletAuthMethodIdForAuthority } from "../../../../core/signingLanes/WalletExecutionLaneProjection.js";
27
24
  import { proxyNormalSigningRequestToMpcRouter, proxyOwnerLaneAdmittedNormalSigningRequest } from "./normalSigningRouterProxy.js";
28
25
  //#region src/router/transport/fetch/routes/thresholdEcdsa.ts
@@ -582,7 +579,6 @@ async function issueEcdsaOperationStepUpAuthorization(input) {
582
579
  }, { status: 400 });
583
580
  }
584
581
  const expectedChallenge = await computeRouterAbEcdsaOperationStepUpChallengeB64u(operation);
585
- const nowMs = Date.now();
586
582
  const requestId = operation.operation_id;
587
583
  let freshMaterial;
588
584
  if (v2Resolution.kind === "admitted") {
@@ -623,112 +619,24 @@ async function issueEcdsaOperationStepUpAuthorization(input) {
623
619
  const evidenceSetId = requireAuthorizationValue(parseAuthorizationEvidenceSetId(`ecdsa-step-up-evidence-set:${requestId}`));
624
620
  const expiresAtMs = operation.expires_at_ms;
625
621
  const requestOrigin = authenticated.requestOrigin;
626
- let emailOtpUnseal;
627
- let factor;
628
- switch (proof.kind) {
629
- case "passkey": {
630
- if (authenticated.session.laneAuthorization.authSource.kind !== "passkey" || proof.authority.factor.credentialIdB64u !== authenticated.session.laneAuthorization.authSource.credentialIdB64u) return json({
631
- ok: false,
632
- code: "scope_mismatch",
633
- message: "Passkey authority changed"
634
- }, { status: 403 });
635
- const credential = proof.webauthn_authentication;
636
- if (String(credential.rawId || credential.id).trim() !== authenticated.session.laneAuthorization.authSource.credentialIdB64u) return json({
637
- ok: false,
638
- code: "unauthorized",
639
- message: "Passkey credential changed"
640
- }, { status: 401 });
641
- const verified = await input.ctx.service.webAuthn.verifyWebAuthnAuthenticationLite({
642
- userId: authenticated.session.walletId,
643
- rpId: proof.authority.verifier.rpId,
644
- expectedChallenge,
645
- expected_origin: requestOrigin,
646
- webauthn_authentication: credential
647
- });
648
- if (!verified.success || !verified.verified) return json({
649
- ok: false,
650
- code: verified.code || "not_verified",
651
- message: verified.message || "WebAuthn authentication verification failed"
652
- }, { status: 401 });
653
- factor = buildVerifiedWalletOperationPasskeyFactorResult({
654
- tenantId: authenticated.session.tenantId,
655
- principalId: authenticated.session.principalId,
656
- walletId: walletIdFromString(authenticated.session.walletId),
657
- requestOrigin,
658
- audience: requestOrigin,
659
- factorId: requireAuthorizationValue(parseAuthFactorId(`passkey:${authenticated.session.laneAuthorization.authSource.credentialIdB64u}`)),
660
- authorityRef: authenticated.authorityRef,
661
- operation: envelope,
662
- credentialIdB64u: proof.authority.factor.credentialIdB64u,
663
- assertionDigest: parseDigestB64u(base64UrlEncode(await sha256BytesUtf8(alphabetizeStringify(credential)))),
664
- verifiedAtMs: nowMs,
665
- expiresAtMs
666
- });
667
- break;
668
- }
669
- case "email_otp": {
670
- const operationBinding = await hashEmailOtpOperationBinding({
671
- walletId: authenticated.session.walletId,
672
- providerUserId: proof.authority.factor.providerUserId,
673
- orgId: authenticated.session.tenantId,
674
- operation: operation.operation_kind === "evm.export_key" ? WALLET_EMAIL_OTP_EXPORT_OPERATION : WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION,
675
- requestOrigin,
676
- audience: requestOrigin,
677
- authorityRef: authenticated.authorityRef,
678
- ...operation.operation_kind === "evm.sign_transaction" ? { operationFingerprintDigest: envelope.digests.laneDigest } : {}
679
- });
680
- const verified = await input.ctx.service.emailOtp.verifyEmailOtpChallenge({
681
- userId: proof.authority.factor.providerUserId,
682
- walletId: authenticated.session.walletId,
683
- orgId: authenticated.session.tenantId,
684
- challengeId: proof.challenge_id,
685
- otpCode: proof.otp_code,
686
- otpChannel: EMAIL_OTP_CHANNEL,
687
- ownerProofBindingDigest: operationBinding,
688
- operation: operation.operation_kind === "evm.export_key" ? WALLET_EMAIL_OTP_EXPORT_OPERATION : WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION
689
- });
690
- if (!verified.ok) return json(verified, { status: verified.code === "invalid_body" ? 400 : 401 });
691
- const consumed = operation.operation_kind === "evm.export_key" ? null : await input.ctx.service.emailOtp.consumeEmailOtpGrant({
692
- subject: {
693
- kind: "provider_identity",
694
- orgId: requireAuthorizationValue(parseOrgId(authenticated.session.tenantId)),
695
- providerSubject: requireAuthorizationValue(parseProviderSubject(proof.authority.factor.providerUserId)),
696
- walletId: walletIdFromString(authenticated.session.walletId)
697
- },
698
- loginGrant: verified.loginGrant,
699
- otpChannel: EMAIL_OTP_CHANNEL
700
- });
701
- if (consumed && !consumed.ok) return json(consumed, { status: consumed.code === "invalid_body" ? 400 : 401 });
702
- if (operation.operation_kind === "evm.export_key") emailOtpUnseal = {
703
- grant: verified.loginGrant,
704
- challengeId: verified.challengeId
705
- };
706
- const verifiedChallengeId = consumed?.ok ? consumed.challengeId : verified.challengeId;
707
- factor = buildVerifiedWalletOperationEmailOtpFactorResult({
708
- tenantId: authenticated.session.tenantId,
709
- principalId: authenticated.session.principalId,
710
- walletId: walletIdFromString(authenticated.session.walletId),
711
- requestOrigin,
712
- audience: requestOrigin,
713
- factorId: requireAuthorizationValue(parseAuthFactorId(`email_otp:${proof.authority.factor.provider}:${proof.authority.factor.providerUserId}`)),
714
- authorityRef: authenticated.authorityRef,
715
- operation: envelope,
716
- challengeId: requireAuthorizationValue(parseEmailOtpChallengeId(verifiedChallengeId)),
717
- verificationReceiptDigest: parseDigestB64u(base64UrlEncode(await sha256BytesUtf8(alphabetizeStringify({
718
- challengeId: verifiedChallengeId,
719
- operationFingerprint: expectedChallenge
720
- })))),
721
- verifiedAtMs: nowMs,
722
- expiresAtMs: Math.min(expiresAtMs, verified.grantExpiresAtMs)
723
- });
724
- break;
725
- }
726
- }
622
+ const verifiedFactor = await verifyEcdsaOperationStepUpFactor({
623
+ proof,
624
+ operation: envelope,
625
+ walletId: walletIdFromString(authenticated.session.walletId),
626
+ authorityRef: authenticated.authorityRef,
627
+ authSource: authenticated.session.laneAuthorization.authSource,
628
+ requestOrigin,
629
+ expectedChallenge,
630
+ expiresAtMs,
631
+ webAuthn: input.ctx.service.webAuthn,
632
+ emailOtp: input.ctx.service.emailOtp
633
+ });
634
+ if (!verifiedFactor.ok) return verifiedFactor.response;
727
635
  const evidenceSet = await input.ctx.service.authorizedOperations.recordVerifiedWalletOperationFactorEvidenceSet({
728
636
  operation: envelope,
729
637
  evidenceId,
730
638
  evidenceSetId,
731
- factor
639
+ factor: verifiedFactor.factor
732
640
  });
733
641
  const authorizedOperationId = requireAuthorizationValue(parseAuthorizedOperationId(`ecdsa-step-up-authorized-operation:${operation.operation_id}`));
734
642
  const atomicOperation = await input.ctx.service.authorizedOperations.admitAuthorizedOperation({
@@ -742,7 +650,7 @@ async function issueEcdsaOperationStepUpAuthorization(input) {
742
650
  evidenceSetDigest: evidenceSet.evidenceSetDigest
743
651
  },
744
652
  quota: { kind: "quota_neutral" },
745
- claimedAtMs: nowMs
653
+ claimedAtMs: Date.now()
746
654
  },
747
655
  material: {
748
656
  walletId: walletIdFromString(authenticated.session.walletId),
@@ -775,11 +683,7 @@ async function issueEcdsaOperationStepUpAuthorization(input) {
775
683
  const responseAuthorization = {
776
684
  kind: "operation_step_up",
777
685
  evidence_set_digest: evidenceSet.evidenceSetDigest,
778
- unseal: emailOtpUnseal ? {
779
- kind: "email_otp_grant",
780
- grant: emailOtpUnseal.grant,
781
- challenge_id: emailOtpUnseal.challengeId
782
- } : { kind: "not_requested" }
686
+ unseal: verifiedFactor.unseal
783
687
  };
784
688
  if (operation.operation_kind === "evm.export_key") {
785
689
  const exportTopology = v2Resolution.kind === "admitted" && v2Resolution.operationKind === "evm.export_key" ? v2Resolution.exportTopology : await resolveStrictEcdsaExportTopology({
@@ -1,5 +1,6 @@
1
1
  import { findRouteDefinitionById, matchesRouteDefinitionRequest } from "../../../framework/routeDefinitions.js";
2
- import { readJson } from "../../../framework/http.js";
2
+ import "../../../../shared-ts/src/utils/walletManagementProtocol.js";
3
+ import { jsonFailure, readJson } from "../../../framework/http.js";
3
4
  import { resolveSourceIpFromFetchHeaders } from "../../../auth/routerApiKeyAuth.js";
4
5
  import { toFetchRouteResponse } from "../../../framework/routeResponses.js";
5
6
  import { handleRouterApiWalletAddAuthMethodEmailOtpChallenge, handleRouterApiWalletAddAuthMethodFinalize, handleRouterApiWalletAddAuthMethodIntent, handleRouterApiWalletAddAuthMethodStart, handleRouterApiWalletAddSignerEcdsaActivation, handleRouterApiWalletAddSignerEcdsaDerivationRespond, handleRouterApiWalletAddSignerFinalize, handleRouterApiWalletAddSignerIntent, handleRouterApiWalletAddSignerStart, handleRouterApiWalletEcdsaKeyFactsInventory, handleRouterApiWalletNearImplicitAccountFund, handleRouterApiWalletRegistrationActivate, handleRouterApiWalletRegistrationNearAdmission, handleRouterApiWalletRegistrationNearProvisioning, handleRouterApiWalletRegistrationRespond, handleRouterApiWalletRegistrationSetup, handleRouterApiWalletRevokeAuthMethod } from "../../../domains/walletRegistration/walletRegistrationRoutes.js";
@@ -43,6 +44,7 @@ function resolveWalletRegistrationRoute(ctx) {
43
44
  async function handleWalletRegistration(ctx) {
44
45
  const route = resolveWalletRegistrationRoute(ctx);
45
46
  if (!route) return null;
47
+ if (ctx.request.headers.get("X-Seams-Wallet-Protocol") !== "2") return jsonFailure(409, "wallet_protocol_mismatch", "Your wallet application needs an update. Reload this page and try again. If the problem continues, ask the application developer to upgrade the Wallet SDK.");
46
48
  const common = {
47
49
  body: await readJson(ctx.request),
48
50
  headers: Object.fromEntries(ctx.request.headers.entries()),
@@ -1,5 +1,4 @@
1
1
  import "./capabilityKinds.js";
2
- import "../utils/validation.js";
3
2
  //#endregion
4
3
 
5
4
  //# sourceMappingURL=walletSessionIssuance.js.map
@@ -1,5 +1,3 @@
1
- import "../utils/validation.js";
2
- import "../utils/exactRecord.js";
3
1
  import { wireLiteral, wireObject } from "../utils/wireSchema.js";
4
2
  import { authorizationDeviceId, digest, keyLabeled, parseUnixTime, sessionId, walletAuthMethodId, walletAuthorityId, walletId, walletSessionAuthorizationId, walletSessionId } from "./wireFields.js";
5
3
  import "./activeWalletSession.js";
@@ -1,8 +1,23 @@
1
1
  //#region ../shared-ts/src/device-linking/contracts.ts
2
+ function isLinkSessionTerminalFailureV1(state) {
3
+ switch (state.state) {
4
+ case "failed_before_commit":
5
+ case "cancelled":
6
+ case "expired": return true;
7
+ case "displaying_qr":
8
+ case "claimed":
9
+ case "awaiting_target_factor":
10
+ case "awaiting_source_contribution":
11
+ case "provisioning":
12
+ case "authority_pending_local_install":
13
+ case "active": return false;
14
+ default: return assertNeverLinkSessionStateV1(state);
15
+ }
16
+ }
2
17
  function assertNeverLinkSessionStateV1(value) {
3
18
  throw new Error(`[LinkSessionStateV1] unsupported state: ${String(value)}`);
4
19
  }
5
20
  //#endregion
6
- export { assertNeverLinkSessionStateV1 };
21
+ export { assertNeverLinkSessionStateV1, isLinkSessionTerminalFailureV1 };
7
22
 
8
23
  //# sourceMappingURL=contracts.js.map
@@ -10,13 +10,6 @@ const TARGET_PREPARATION_DOMAIN = "seams/linked-device/target-preparation/v1";
10
10
  const TARGET_PASSKEY_CONFIGURATION_DOMAIN = "seams/linked-device/passkey-target-configuration/v1";
11
11
  const LOCAL_AUTHORITY_INSTALLATION_RECEIPT_DOMAIN = "seams/linked-device/local-authority-installation-receipt/v1";
12
12
  const TEXT_ENCODER = new TextEncoder();
13
- /**
14
- * The server stores this digest alongside the authorization. Hashing the
15
- * opaque token directly keeps the browser binding identical to that row.
16
- */
17
- async function computeWalletSessionOperationCredentialDigestB64u(credential) {
18
- return sha256Utf8DigestB64u(credential.token);
19
- }
20
13
  function encodeWalletSessionInstallationReceiptV1(receipt) {
21
14
  return alphabetizeStringify({
22
15
  domain: LOCAL_AUTHORITY_INSTALLATION_RECEIPT_DOMAIN,
@@ -213,6 +206,6 @@ async function assertLinkedDeviceTargetCredentialRegistrationMatchesPreparationV
213
206
  }
214
207
  }
215
208
  //#endregion
216
- export { assertLinkedDeviceTargetCredentialRegistrationMatchesPreparationV1, computeLinkedDeviceApprovalDigestV1, computeLinkedDevicePasskeyTargetConfigurationDigestV1, computeLinkedDeviceSessionClaimDigestV1, computeLinkedDeviceTargetPreparationDigestV1, computeWalletSessionInstallationReceiptDigestB64u, computeWalletSessionOperationCredentialDigestB64u };
209
+ export { assertLinkedDeviceTargetCredentialRegistrationMatchesPreparationV1, computeLinkedDeviceApprovalDigestV1, computeLinkedDevicePasskeyTargetConfigurationDigestV1, computeLinkedDeviceSessionClaimDigestV1, computeLinkedDeviceTargetPreparationDigestV1, computeWalletSessionInstallationReceiptDigestB64u };
217
210
 
218
211
  //# sourceMappingURL=digests.js.map
@@ -1,4 +1,3 @@
1
- import "../utils/validation.js";
2
1
  //#region ../shared-ts/src/near/actions.ts
3
2
  let ActionType = /* @__PURE__ */ function(ActionType) {
4
3
  ActionType["CreateAccount"] = "CreateAccount";
@@ -7,10 +7,8 @@ import { decodeNearAccessKeyList, decodeNearAccessKeyView, decodeNearAccountView
7
7
  //#region ../shared-ts/src/near/nearClient.ts
8
8
  var RpcCallType = /* @__PURE__ */ function(RpcCallType) {
9
9
  RpcCallType["Query"] = "query";
10
- RpcCallType["View"] = "view";
11
10
  RpcCallType["Send"] = "send_tx";
12
11
  RpcCallType["Block"] = "block";
13
- RpcCallType["Call"] = "call_function";
14
12
  return RpcCallType;
15
13
  }(RpcCallType || {});
16
14
  const DEFAULT_SEND_WAIT_UNTIL = "EXECUTED_OPTIMISTIC";
@@ -44,6 +44,6 @@ function deriveEvmFamilySigningKeySlotId(input) {
44
44
  ].join(":"));
45
45
  }
46
46
  //#endregion
47
- export { deriveEvmFamilySigningKeySlotId, parseEvmFamilySigningKeySlotId, requireEvmFamilySigningKeySlotId };
47
+ export { deriveEvmFamilySigningKeySlotId, requireEvmFamilySigningKeySlotId };
48
48
 
49
49
  //# sourceMappingURL=evmFamilySigningKeySlotId.js.map
@@ -1,11 +1,6 @@
1
1
  import "../utils/domainIds.js";
2
2
  import "./evmFamilySigningKeySlotId.js";
3
3
  import "./participants.js";
4
- import "./rotationParsers.js";
5
- import "./rotation.js";
6
4
  import "./participantDigest.js";
7
- import "./ownerContinuity.js";
8
- import "./rotationDigests.js";
9
- import "./rotationProtocolParsers.js";
10
- import "./rotationLifecycle.js";
11
5
  import "./execution.js";
6
+ import "./ownerContinuity.js";
@@ -75,6 +75,6 @@ async function computeOwnerLaneParticipantBindingDigestV1(input) {
75
75
  return requireParsed(parseLaneParticipantBindingDigestB64u(base64UrlEncode(await sha256Bytes(ownerLaneParticipantContinuityCanonicalBytesV1(input)))), "owner participant digest");
76
76
  }
77
77
  //#endregion
78
- export { buildOwnerLaneParticipantContinuityV1, computeOwnerLaneParticipantBindingDigestV1, ownerLaneParticipantContinuityCanonicalBytesV1, parseOwnerLaneParticipantContinuityV1, parseWalletSignerId };
78
+ export { buildOwnerLaneParticipantContinuityV1, computeOwnerLaneParticipantBindingDigestV1, parseOwnerLaneParticipantContinuityV1, parseWalletSignerId };
79
79
 
80
80
  //# sourceMappingURL=ownerContinuity.js.map
@@ -1,19 +1,7 @@
1
- import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
2
- import { sha256Bytes } from "../utils/digests.js";
1
+ import { base64UrlDecode } from "../utils/base64.js";
3
2
  import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
4
3
  import { concat } from "../utils/digestEncoding.js";
5
- import { buildSigningWorkerParticipantRecordV1, parseLaneHolderParticipantRecordV1, parseLaneParticipantBindingDigestB64u, parseSigningWorkerParticipantRecordV1 } from "./participants.js";
6
4
  //#region ../shared-ts/src/signing-lanes/participantDigest.ts
7
- /** Domain tags are part of the wire contract and must never be shortened. */
8
- const LANE_HOLDER_PARTICIPANT_BINDING_DOMAIN_V1 = "seams/rotatable-signing-lanes/lane-holder-participant/v1";
9
- const SIGNING_WORKER_PARTICIPANT_BINDING_DOMAIN_V1 = "seams/rotatable-signing-lanes/signing-worker-participant/v1";
10
- /** The lane digest binds the fixed holder-then-SigningWorker participant set. */
11
- const LANE_PARTICIPANT_SET_BINDING_DOMAIN_V1 = "seams/rotatable-signing-lanes/lane-participant-set/v1";
12
- function placeholderParticipantDigest() {
13
- const parsed = parseLaneParticipantBindingDigestB64u(base64UrlEncode(new Uint8Array(32)));
14
- if (!parsed.ok) throw new Error(parsed.error.message);
15
- return parsed.value;
16
- }
17
5
  function u32(value) {
18
6
  if (!Number.isInteger(value) || value < 0 || value > 4294967295) throw new Error("canonical u32 must be an integer between 0 and 4294967295");
19
7
  return new Uint8Array([
@@ -42,74 +30,7 @@ function encodeLaneCanonicalU64V1(value) {
42
30
  for (let shift = 56; shift >= 0; shift -= 8) output[7 - shift / 8] = Number(remaining >> BigInt(shift) & 255n);
43
31
  return output;
44
32
  }
45
- /** Nonempty array count encoding used by enrollment and receipt records. */
46
- function encodeLaneCanonicalNonEmptyCountV1(count) {
47
- if (!Number.isInteger(count) || count < 1 || count > 4294967295) throw new Error("canonical array count must be a nonempty u32");
48
- return u32(count);
49
- }
50
- function laneHolderParticipantCanonicalBytesV1(input) {
51
- const record = parseLaneHolderParticipantRecordV1(input);
52
- return concat([
53
- encodeLaneCanonicalTextV1(LANE_HOLDER_PARTICIPANT_BINDING_DOMAIN_V1),
54
- encodeLaneCanonicalTextV1(record.participantId),
55
- encodeLaneCanonicalTextV1(record.custodyBindingId),
56
- encodeLaneCanonicalDigestV1(record.custodyBindingDigestB64u),
57
- encodeLaneCanonicalTextV1(record.hpkePublicKeyB64u),
58
- encodeLaneCanonicalDigestV1(record.hpkePublicKeyDigestB64u)
59
- ]);
60
- }
61
- function signingWorkerParticipantCanonicalBytesV1(input) {
62
- const record = parseSigningWorkerParticipantRecordV1(input);
63
- return concat([
64
- encodeLaneCanonicalTextV1(SIGNING_WORKER_PARTICIPANT_BINDING_DOMAIN_V1),
65
- encodeLaneCanonicalTextV1(record.participantId),
66
- encodeLaneCanonicalTextV1(record.recipientKeyId),
67
- encodeLaneCanonicalTextV1(record.hpkePublicKeyB64u),
68
- encodeLaneCanonicalDigestV1(record.hpkePublicKeyDigestB64u)
69
- ]);
70
- }
71
- function encodeCanonicalBytes(value) {
72
- return concat([u32(value.length), value]);
73
- }
74
- /**
75
- * Canonical bytes for the lane's complete participant set. The order is part
76
- * of the protocol: holder first, SigningWorker second. Individual participant
77
- * binding digests are included after their canonical identity bytes so a
78
- * verified record cannot be substituted while retaining the same identities.
79
- */
80
- function laneParticipantSetCanonicalBytesV1(input) {
81
- const holderParticipant = parseLaneHolderParticipantRecordV1(input.holderParticipant);
82
- const signingWorkerParticipant = parseSigningWorkerParticipantRecordV1(input.signingWorkerParticipant);
83
- return concat([
84
- encodeLaneCanonicalTextV1(LANE_PARTICIPANT_SET_BINDING_DOMAIN_V1),
85
- encodeLaneCanonicalNonEmptyCountV1(2),
86
- encodeLaneCanonicalTextV1("holder"),
87
- encodeCanonicalBytes(laneHolderParticipantCanonicalBytesV1(holderParticipant)),
88
- encodeLaneCanonicalDigestV1(holderParticipant.participantBindingDigestB64u),
89
- encodeLaneCanonicalTextV1("signing_worker"),
90
- encodeCanonicalBytes(signingWorkerParticipantCanonicalBytesV1(signingWorkerParticipant)),
91
- encodeLaneCanonicalDigestV1(signingWorkerParticipant.participantBindingDigestB64u)
92
- ]);
93
- }
94
- async function digestCanonicalBytes(bytes) {
95
- const parsed = parseLaneParticipantBindingDigestB64u(base64UrlEncode(await sha256Bytes(bytes)));
96
- if (!parsed.ok) throw new Error(parsed.error.message);
97
- return parsed.value;
98
- }
99
- async function computeLaneParticipantSetBindingDigestV1(input) {
100
- return await digestCanonicalBytes(laneParticipantSetCanonicalBytesV1(input));
101
- }
102
- async function buildSigningWorkerParticipantRecordWithDigestV1(input) {
103
- const draft = buildSigningWorkerParticipantRecordV1({
104
- ...input,
105
- participantBindingDigestB64u: placeholderParticipantDigest()
106
- });
107
- return buildSigningWorkerParticipantRecordV1({
108
- ...input,
109
- participantBindingDigestB64u: await digestCanonicalBytes(signingWorkerParticipantCanonicalBytesV1(draft))
110
- });
111
- }
112
33
  //#endregion
113
- export { buildSigningWorkerParticipantRecordWithDigestV1, computeLaneParticipantSetBindingDigestV1, encodeLaneCanonicalDigestV1, encodeLaneCanonicalTextV1, encodeLaneCanonicalU64V1 };
34
+ export { encodeLaneCanonicalDigestV1, encodeLaneCanonicalTextV1, encodeLaneCanonicalU64V1 };
114
35
 
115
36
  //# sourceMappingURL=participantDigest.js.map