@seams/wallet 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -5
- package/THIRD_PARTY_NOTICES.md +1 -113
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +12 -3
- package/dist/esm/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +2 -2
- package/dist/esm/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +1 -1
- package/dist/esm/SeamsWeb/assembly/createBrowserSigningStores.js +1 -1
- package/dist/esm/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -2
- package/dist/esm/SeamsWeb/operations/auth/login.js +34 -49
- package/dist/esm/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.js +64 -0
- package/dist/esm/SeamsWeb/operations/auth/walletAuth.js +2 -3
- package/dist/esm/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +1 -4
- package/dist/esm/SeamsWeb/operations/auth/walletUnlockSubject.js +2 -8
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +1 -1
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +5 -9
- package/dist/esm/SeamsWeb/operations/authMethods/passkey/addPasskey.js +1 -1
- package/dist/esm/SeamsWeb/operations/authMethods/revokeAuthMethod.js +1 -1
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +11 -12
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingResume.js +2 -9
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +24 -24
- package/dist/esm/SeamsWeb/operations/devices/linkDeviceFlow.js +38 -13
- package/dist/esm/SeamsWeb/operations/devices/scanDevice.js +1 -1
- package/dist/esm/SeamsWeb/operations/near/signNEP413.js +0 -1
- package/dist/esm/SeamsWeb/operations/recovery/syncAccount.js +2 -4
- package/dist/esm/SeamsWeb/operations/recovery/walletRecovery.js +1 -2
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +4 -5
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +5 -9
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryRotation.js +1 -2
- package/dist/esm/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +5 -20
- package/dist/esm/SeamsWeb/operations/registration/registration.js +5 -5
- package/dist/esm/SeamsWeb/operations/registration/registrationStrictEcdsa.js +1 -1
- package/dist/esm/SeamsWeb/operations/registration/registrationTerminalCommit.js +1 -1
- package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +2 -6
- package/dist/esm/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +4 -1
- package/dist/esm/SeamsWeb/publicApi/auth.js +2 -1
- package/dist/esm/SeamsWeb/publicApi/near.js +1 -1
- package/dist/esm/SeamsWeb/publicApi/tempo.js +6 -0
- package/dist/esm/SeamsWeb/publicApi/transactionReview.js +4 -1
- package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +28 -19
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +1 -2
- package/dist/esm/SeamsWeb/walletIframe/client/surface/domain.js +0 -2
- package/dist/esm/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -4
- package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +1 -1
- package/dist/esm/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.js +29 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +64 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +194 -385
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +136 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +6 -26
- package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +6 -6
- package/dist/esm/SeamsWeb/walletIframe/shared/transactionReview.js +11 -1
- package/dist/esm/advanced.js +0 -1
- package/dist/esm/base-styles.js +2 -2
- package/dist/esm/build-paths.js +0 -2
- package/dist/esm/core/accountData/near/accountProjection.js +0 -1
- package/dist/esm/core/accountData/near/keyMaterial.js +0 -1
- package/dist/esm/core/browser/walletIframe/events.js +1 -5
- package/dist/esm/core/browser/walletIframe/host-mode.js +0 -10
- package/dist/esm/core/config/chains.js +1 -2
- package/dist/esm/core/config/configBuilder.js +0 -1
- package/dist/esm/core/config/configHelpers.js +0 -1
- package/dist/esm/core/indexedDB/accountKeyMaterial.js +0 -1
- package/dist/esm/core/indexedDB/index.js +3 -4
- package/dist/esm/core/indexedDB/pendingWalletRecoveryCommit.js +6 -14
- package/dist/esm/core/indexedDB/pendingWalletRegistrationCommit.js +139 -273
- package/dist/esm/core/indexedDB/schemaNames.js +0 -22
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +3 -3
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +3 -3
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +1 -1
- package/dist/esm/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -1
- package/dist/esm/core/indexedDB/seamsWalletDB/registrationSetup.js +103 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +2 -3
- package/dist/esm/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -35
- package/dist/esm/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +4 -4
- package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +37 -19
- package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +10 -3
- package/dist/esm/core/indexedDB/walletCustodyEd25519MaterialRecord.js +1 -1
- package/dist/esm/core/platform/browser/createBrowserPlatformRuntime.js +8 -25
- package/dist/esm/core/rpcClients/near/rpcCalls.js +39 -1
- package/dist/esm/core/rpcClients/relayer/passkeyCustodyEnvelope.js +3 -13
- package/dist/esm/core/rpcClients/relayer/thresholdEcdsa.js +0 -2
- package/dist/esm/core/rpcClients/relayer/walletRecoveryPrepare.js +72 -125
- package/dist/esm/core/rpcClients/relayer/walletRegistration.js +21 -15
- package/dist/esm/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +1 -2
- package/dist/esm/core/signingEngine/assembly/createManagers.js +1 -1
- package/dist/esm/core/signingEngine/assembly/ports/recovery.js +1 -1
- package/dist/esm/core/signingEngine/assembly/ports/shared.js +1 -2
- package/dist/esm/core/signingEngine/assembly/warmup.js +1 -5
- package/dist/esm/core/signingEngine/chains/evm/display/functionSelectors.js +2 -5
- package/dist/esm/core/signingEngine/chains/near/nearSignerWasm.js +2 -33
- package/dist/esm/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -1
- package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportFlow.js +2 -2
- package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +35 -29
- package/dist/esm/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +3 -3
- package/dist/esm/core/signingEngine/flows/recovery/exportKeypairOperation.js +1 -4
- package/dist/esm/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +2 -5
- package/dist/esm/core/signingEngine/flows/recovery/stepUpAuthorization.js +1 -1
- package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +3 -8
- package/dist/esm/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +1 -2
- package/dist/esm/core/signingEngine/flows/shared/signingStateMachine.js +2 -5
- package/dist/esm/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +2 -2
- package/dist/esm/core/signingEngine/flows/signEvmFamily/preparedSigning.js +2 -9
- package/dist/esm/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -2
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +6 -8
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +24 -18
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +7 -5
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +10 -9
- package/dist/esm/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +3 -7
- package/dist/esm/core/signingEngine/flows/signNear/implicitAccountFunding.js +1 -1
- package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +33 -42
- package/dist/esm/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -2
- package/dist/esm/core/signingEngine/flows/signNear/shared/signingMaterials.js +1 -7
- package/dist/esm/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +4 -14
- package/dist/esm/core/signingEngine/flows/signNear/signDelegate.js +2 -6
- package/dist/esm/core/signingEngine/flows/signNear/signNear.js +2 -2
- package/dist/esm/core/signingEngine/flows/signNear/signNep413.js +2 -6
- package/dist/esm/core/signingEngine/nonce/NonceCoordinator.js +1 -1
- package/dist/esm/core/signingEngine/nonce/nearNonceLane.js +1 -1
- package/dist/esm/core/signingEngine/nonce/nonceDiagnostics.js +1 -1
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -1
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +2 -1
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -3
- package/dist/esm/core/signingEngine/session/SigningSessionCoordinator.js +1 -4
- package/dist/esm/core/signingEngine/session/authority/authorityOperationResolver.js +17 -68
- package/dist/esm/core/signingEngine/session/availability/availableSigningLanes.js +1 -10
- package/dist/esm/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +7 -6
- package/dist/esm/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +107 -24
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +1 -1
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -3
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLogin.js +4 -15
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaRecovery.js +12 -16
- package/dist/esm/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -3
- package/dist/esm/core/signingEngine/session/emailOtp/exportRecovery.js +0 -2
- package/dist/esm/core/signingEngine/session/identity/clientSessionPersistenceState.js +5 -16
- package/dist/esm/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -1
- package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +1 -1
- package/dist/esm/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -2
- package/dist/esm/core/signingEngine/session/identity/selectLane.js +7 -21
- package/dist/esm/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +3 -9
- package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +4 -16
- package/dist/esm/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +1 -14
- package/dist/esm/core/signingEngine/session/material/ecdsaSigningCapability.js +1 -1
- package/dist/esm/core/signingEngine/session/operationState/preparedOperation.js +1 -5
- package/dist/esm/core/signingEngine/session/passkey/ecdsaBootstrap.js +3 -6
- package/dist/esm/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -1
- package/dist/esm/core/signingEngine/session/passkey/ecdsaRecovery.js +1 -4
- package/dist/esm/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -1
- package/dist/esm/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +2 -3
- package/dist/esm/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +13 -49
- package/dist/esm/core/signingEngine/session/persistence/clientSessionPersistence.js +8 -16
- package/dist/esm/core/signingEngine/session/persistence/sealedSessionRecords.js +5 -10
- package/dist/esm/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -2
- package/dist/esm/core/signingEngine/session/routerAbSigningWalletSession.js +2 -8
- package/dist/esm/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +2 -2
- package/dist/esm/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +1 -1
- package/dist/esm/core/signingEngine/session/warmCapabilities/readModel.js +2 -8
- package/dist/esm/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +1 -12
- package/dist/esm/core/signingEngine/session/warmCapabilities/transitions.js +7 -11
- package/dist/esm/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -1
- package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +6 -30
- package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -3
- package/dist/esm/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +1 -5
- package/dist/esm/core/signingEngine/threshold/commitQueueShared.js +20 -6
- package/dist/esm/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +7 -4
- package/dist/esm/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -3
- package/dist/esm/core/signingEngine/threshold/ecdsa/bootstrapSession.js +1 -5
- package/dist/esm/core/signingEngine/threshold/ecdsa/signingQueue.js +8 -50
- package/dist/esm/core/signingEngine/threshold/ed25519/commitQueue.js +7 -43
- package/dist/esm/core/signingEngine/threshold/ed25519/walletSession.js +1 -1
- package/dist/esm/core/signingEngine/threshold/ed25519/yaoClient.js +1 -35
- package/dist/esm/core/signingEngine/threshold/sessionPolicy.js +0 -1
- package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +1 -4
- package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +4 -3
- package/dist/esm/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -1
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +1 -1
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -1
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +25 -16
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +3 -13
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +1 -10
- package/dist/esm/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -1
- package/dist/esm/core/signingEngine/walletCustody/emailOtpLink.js +10 -13
- package/dist/esm/core/signingEngine/walletCustody/openCustodyCache.js +2 -6
- package/dist/esm/core/signingEngine/walletCustody/passkeyLink.js +7 -10
- package/dist/esm/core/signingEngine/walletCustody/registrationCeremony.js +0 -1
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -1
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -1
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEd25519.js +1 -1
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -2
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -1
- package/dist/esm/core/signingEngine/webauthnAuth/walletOriginWebAuthn.js +109 -0
- package/dist/esm/core/signingEngine/workerManager/SignerWorkerManager.js +0 -2
- package/dist/esm/core/signingEngine/workerManager/deviceLinkingPorts.js +67 -48
- package/dist/esm/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -4
- package/dist/esm/core/signingEngine/workerManager/validation.js +1 -1
- package/dist/esm/core/signingEngine/workerManager/workerTransport.js +4 -47
- package/dist/esm/core/signingEngine/workerManager/workerTypes.js +0 -2
- package/dist/esm/core/types/accountIds.js +0 -1
- package/dist/esm/core/types/sdkSentEvents.js +1 -2
- package/dist/esm/core/types/signer-worker.js +1 -36
- package/dist/esm/core/walletRuntimePaths/base.js +11 -1
- package/dist/esm/plugins/headers.js +0 -1
- package/dist/esm/plugins/next.js +0 -1
- package/dist/esm/plugins/plugin-utils.js +0 -1
- package/dist/esm/plugins/shared-ts/src/utils/normalize.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/AccountsSection.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +3 -3
- package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +2 -2
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +8 -8
- package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +2 -1
- package/dist/esm/react/components/AccountMenuButton/MenuItem.css +17 -0
- package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/UserAccountButton.css +0 -5
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.css +8 -0
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +21 -13
- package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +0 -52
- package/dist/esm/react/components/AccountMenuButton/icons/GlobeIcon.js +12 -27
- package/dist/esm/react/components/AccountMenuButton/icons/KeyIcon.js +12 -27
- package/dist/esm/react/components/AccountMenuButton/icons/LaptopIcon.js +4 -19
- package/dist/esm/react/components/AccountMenuButton/icons/LinkIcon.js +4 -19
- package/dist/esm/react/components/AccountMenuButton/icons/LockIcon.js +11 -26
- package/dist/esm/react/components/AccountMenuButton/icons/MailIcon.js +10 -25
- package/dist/esm/react/components/AccountMenuButton/icons/RecoveryCodesIcon.js +16 -31
- package/dist/esm/react/components/AccountMenuButton/icons/ScanIcon.js +9 -24
- package/dist/esm/react/components/AccountMenuButton/icons/SlidersIcon.js +14 -29
- package/dist/esm/react/components/AccountMenuButton/icons/SmartphoneIcon.js +11 -26
- package/dist/esm/react/components/AccountMenuButton/icons/TouchIcon.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/icons/lucideIcon.js +27 -0
- package/dist/esm/react/components/AccountMenuButton/icons/strokeIcon.js +7 -17
- package/dist/esm/react/components/AccountMenuButton/index.js +11 -11
- package/dist/esm/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.js +1 -1
- package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +1 -1
- package/dist/esm/react/components/QRCodeScanner.css +0 -15
- package/dist/esm/react/components/QRCodeScanner.js +2 -2
- package/dist/esm/react/components/ShowQRCode.css +0 -14
- package/dist/esm/react/components/ShowQRCode.js +4 -4
- package/dist/esm/react/components/theme/design-tokens.js +1 -2
- package/dist/esm/react/context/index.js +1 -1
- package/dist/esm/react/context/reactLoginStateBuilders.js +1 -1
- package/dist/esm/react/context/seamsManagerSingleton.js +2 -2
- package/dist/esm/react/context/useLoginStateRefresher.js +2 -5
- package/dist/esm/react/context/useSeamsContextValue.js +1 -1
- package/dist/esm/react/context/useSeamsWithSdkFlow.js +2 -3
- package/dist/esm/react/context/useWalletIframeLifecycle.js +1 -15
- package/dist/esm/react/hooks/useAccountInput.js +4 -4
- package/dist/esm/react/hooks/useNearClient.js +3 -3
- package/dist/esm/react/hooks/usePreconnectWalletAssets.js +1 -1
- package/dist/esm/react/hooks/useQRCamera.js +2 -2
- package/dist/esm/react/hooks/useWallet.js +1 -1
- package/dist/esm/react/index.js +10 -10
- package/dist/esm/react/styles/styles.css +25 -86
- package/dist/esm/react/transactionReview/TransactionReviewHost.js +1 -1
- package/dist/esm/react/transactionReview/boundCalls.js +2 -2
- package/dist/esm/react/transactionReview/contract.js +1 -1
- package/dist/esm/react/transactionReview/controller.js +2 -2
- package/dist/esm/react/transactionReview/snapshot.js +2 -2
- package/dist/esm/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
- package/dist/esm/sdk/EvmClient-DoxytQaJ.js +1 -0
- package/dist/esm/sdk/NearClient-vJ65Wjrq.js +1 -0
- package/dist/esm/sdk/NonceCoordinator-BBeadCSq.js +1 -0
- package/dist/esm/sdk/accountIds-C3Ihsd2c.js +1 -0
- package/dist/esm/sdk/accountLifecycle-EyfYPnuT.js +1 -0
- package/dist/esm/sdk/actions-DZLxCcrU.js +1 -0
- package/dist/esm/sdk/adapters-DtAyuoiA.js +2 -0
- package/dist/esm/sdk/base-Xtd32asf.js +1 -0
- package/dist/esm/sdk/base64-ojm5DKcF.js +1 -0
- package/dist/esm/sdk/browser-CsOGMbMy.js +8 -0
- package/dist/esm/sdk/bytes-t5S5mkat.js +1 -0
- package/dist/esm/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
- package/dist/esm/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
- package/dist/esm/sdk/capabilityKinds-XaXXiD2B.js +1 -0
- package/dist/esm/sdk/chains-yAls2d9X.js +1 -0
- package/dist/esm/sdk/challengeDelivery-cAsaUC6U.js +1 -0
- package/dist/esm/sdk/chunk-dVx5-UGu.js +1 -0
- package/dist/esm/sdk/configHelpers-CseiVoZD.js +1 -0
- package/dist/esm/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
- package/dist/esm/sdk/defaultConfigs-CWpApkMq.js +1 -0
- package/dist/esm/sdk/display-jK7_hYho.js +1 -0
- package/dist/esm/sdk/domainIds-GDzjOs6i.js +1 -0
- package/dist/esm/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
- package/dist/esm/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
- package/dist/esm/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
- package/dist/esm/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
- package/dist/esm/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
- package/dist/esm/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
- package/dist/esm/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
- package/dist/esm/sdk/errors-DfbnsXjO.js +1 -0
- package/dist/esm/sdk/events-BJyVcnsn.js +1 -0
- package/dist/esm/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
- package/dist/esm/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
- package/dist/esm/sdk/exactSessionState-CjD8gekO.js +210 -0
- package/dist/esm/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
- package/dist/esm/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
- package/dist/esm/sdk/export-viewer-host-jo7h_0wl.js +1 -0
- package/dist/esm/sdk/helpers-D4QckQhq.js +1 -0
- package/dist/esm/sdk/host-BAqOYnju.js +1 -0
- package/dist/esm/sdk/intentDigest-CB6zy3lN.js +1 -0
- package/dist/esm/sdk/jsonRpc-C85RYR0A.js +1 -0
- package/dist/esm/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
- package/dist/esm/sdk/keccak-zexutGfG.js +1 -0
- package/dist/esm/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
- package/dist/esm/sdk/localOnly-DBQRG6Qh.js +1 -0
- package/dist/esm/sdk/messages-Cv2j4SKI.js +1 -0
- package/dist/esm/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
- package/dist/esm/sdk/nearRpcResults--cBcfmp4.js +1 -0
- package/dist/esm/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
- package/dist/esm/sdk/normalization-BGPR6osg.js +1 -0
- package/dist/esm/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
- package/dist/esm/sdk/operationFingerprint-DtQb0pdp.js +1 -0
- package/dist/esm/sdk/passkey-custody-LP4UTFbn.js +1 -0
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
- package/dist/esm/sdk/prfCache-Mbo7_USg.js +1 -0
- package/dist/esm/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
- package/dist/esm/sdk/promptText-s8TQ6ckX.js +1 -0
- package/dist/esm/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
- package/dist/esm/sdk/registration-Btozh7uh.js +1 -0
- package/dist/esm/sdk/registration-CSAG_h4Y.js +1 -0
- package/dist/esm/sdk/registrationAccounts-DIeEVy6W.js +1 -0
- package/dist/esm/sdk/registrationIds-BIel5S0i.js +1 -0
- package/dist/esm/sdk/registrationIntent-DV1GYZ3K.js +1 -0
- package/dist/esm/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
- package/dist/esm/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
- package/dist/esm/sdk/relayerHttp-DaPeS929.js +1 -0
- package/dist/esm/sdk/routePlan-B_KJaPtm.js +1 -0
- package/dist/esm/sdk/router-Dd3fFHk3.js +1 -0
- package/dist/esm/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
- package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/esm/sdk/runtime-auth-B2M91rSx.js +1 -0
- package/dist/esm/sdk/runtime-device-link-ojjPSRaG.js +1 -0
- package/dist/esm/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
- package/dist/esm/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
- package/dist/esm/sdk/runtime-export-JXYk8sQ-.js +1 -0
- package/dist/esm/sdk/runtime-near-BB8AG6dV.js +1 -0
- package/dist/esm/sdk/runtime-preferences-DKFZYccW.js +1 -0
- package/dist/esm/sdk/runtime-recovery-C_XjsDBg.js +1 -0
- package/dist/esm/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
- package/dist/esm/sdk/runtimeContext-BpObgzbj.js +6 -0
- package/dist/esm/sdk/runtimeLoader-DjgBf_yF.js +1 -0
- package/dist/esm/sdk/sdkSentEvents-_RGAEeld.js +1 -0
- package/dist/esm/sdk/secp256k1-B_6W9QDJ.js +1 -0
- package/dist/esm/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
- package/dist/esm/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
- package/dist/esm/sdk/shared-j_KsFbCT.js +1 -0
- package/dist/esm/sdk/signEvmFamily-CcLVBm0f.js +1 -0
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
- package/dist/esm/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
- package/dist/esm/sdk/signNear-mWbTE2Dl.js +1 -0
- package/dist/esm/sdk/signatureUses-CQkkUcwT.js +1 -0
- package/dist/esm/sdk/signerDomain-BhUTzDmF.js +1 -0
- package/dist/esm/sdk/signerLoader-By0IY24G.js +1 -0
- package/dist/esm/sdk/signerSlot-BQ1g5JNV.js +1 -0
- package/dist/esm/sdk/signingFlow-LUWrZi2d.js +2 -0
- package/dist/esm/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
- package/dist/esm/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
- package/dist/esm/sdk/trace-M34pNGuF.js +1 -0
- package/dist/esm/sdk/transaction-activity-BbDod7ji.js +1 -0
- package/dist/esm/sdk/transactionReview-CBE5oH4c.js +1 -0
- package/dist/esm/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
- package/dist/esm/sdk/transactionState-9d7f3xVj.js +1 -0
- package/dist/esm/sdk/tx-confirm-ui.js +23 -204
- package/dist/esm/sdk/types-M7vxrYtJ.js +1 -0
- package/dist/esm/sdk/validation-dC1-_uyG.js +1 -0
- package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -13
- package/dist/esm/sdk/wallet-iframe-host-full.js +1 -6
- package/dist/esm/sdk/wallet-iframe-host-near.js +1 -13
- package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -4
- package/dist/esm/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
- package/dist/esm/sdk/wallet-ui.css +1 -6134
- package/dist/esm/sdk/walletAuthority-CoWSeqvQ.js +1 -0
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
- package/dist/esm/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
- package/dist/esm/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
- package/dist/esm/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
- package/dist/esm/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
- package/dist/esm/sdk/webauthnP256-qu06GNFm.js +1 -0
- package/dist/esm/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
- package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +5 -8
- package/dist/esm/shared-ts/src/authorization/walletSignerActivationEquality.js +12 -0
- package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +2 -5
- package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +1 -5
- package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +11 -15
- package/dist/esm/shared-ts/src/device-linking/parsers.js +41 -1
- package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +6 -9
- package/dist/esm/shared-ts/src/near/actions.js +10 -1
- package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
- package/dist/esm/shared-ts/src/passkey-custody/primitives.js +5 -1
- package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
- package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -4
- package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +3 -8
- package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +0 -1
- package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -1
- package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +13 -17
- package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
- package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
- package/dist/esm/shared-ts/src/threshold/signingRootScope.js +4 -2
- package/dist/esm/shared-ts/src/utils/domainIds.js +1 -7
- package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +2 -5
- package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +0 -1
- package/dist/esm/shared-ts/src/utils/encoders.js +1 -1
- package/dist/esm/shared-ts/src/utils/errors.js +0 -1
- package/dist/esm/shared-ts/src/utils/exactKeys.js +17 -0
- package/dist/esm/shared-ts/src/utils/index.js +4 -5
- package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
- package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
- package/dist/esm/shared-ts/src/utils/registrationIntent.js +2 -9
- package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +12 -0
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +3 -6
- package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +2 -3
- package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +1 -1
- package/dist/esm/shared-ts/src/utils/thresholdEcdsaChainTarget.js +9 -0
- package/dist/esm/shared-ts/src/utils/validation.js +0 -1
- package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
- package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +10 -1
- package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
- package/dist/esm/shared-ts/src/wallet-recovery/index.js +1 -1
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -2
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -4
- package/dist/esm/theme/base-styles.js +11 -11
- package/dist/esm/utils/deviceDetection.js +16 -1
- package/dist/esm/utils/menuItemBlink.js +24 -0
- package/dist/esm/utils/qrScanner.js +288 -0
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.d.ts +12 -753
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +126 -3701
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
- package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.d.ts +0 -42
- package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.js +2 -106
- package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
- package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.d.ts +3 -158
- package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.js +2 -452
- package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/headers.manifest.json +1 -1
- package/dist/public/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
- package/dist/public/sdk/EvmClient-DoxytQaJ.js +1 -0
- package/dist/public/sdk/NearClient-vJ65Wjrq.js +1 -0
- package/dist/public/sdk/NonceCoordinator-BBeadCSq.js +1 -0
- package/dist/public/sdk/accountIds-C3Ihsd2c.js +1 -0
- package/dist/public/sdk/accountLifecycle-EyfYPnuT.js +1 -0
- package/dist/public/sdk/actions-DZLxCcrU.js +1 -0
- package/dist/public/sdk/adapters-DtAyuoiA.js +2 -0
- package/dist/public/sdk/base-Xtd32asf.js +1 -0
- package/dist/public/sdk/base64-ojm5DKcF.js +1 -0
- package/dist/public/sdk/browser-CsOGMbMy.js +8 -0
- package/dist/public/sdk/bytes-t5S5mkat.js +1 -0
- package/dist/public/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
- package/dist/public/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
- package/dist/public/sdk/capabilityKinds-XaXXiD2B.js +1 -0
- package/dist/public/sdk/chains-yAls2d9X.js +1 -0
- package/dist/public/sdk/challengeDelivery-cAsaUC6U.js +1 -0
- package/dist/public/sdk/chunk-dVx5-UGu.js +1 -0
- package/dist/public/sdk/configHelpers-CseiVoZD.js +1 -0
- package/dist/public/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
- package/dist/public/sdk/defaultConfigs-CWpApkMq.js +1 -0
- package/dist/public/sdk/display-jK7_hYho.js +1 -0
- package/dist/public/sdk/domainIds-GDzjOs6i.js +1 -0
- package/dist/public/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
- package/dist/public/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
- package/dist/public/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
- package/dist/public/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
- package/dist/public/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
- package/dist/public/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
- package/dist/public/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
- package/dist/public/sdk/errors-DfbnsXjO.js +1 -0
- package/dist/public/sdk/events-BJyVcnsn.js +1 -0
- package/dist/public/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
- package/dist/public/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
- package/dist/public/sdk/exactSessionState-CjD8gekO.js +210 -0
- package/dist/public/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
- package/dist/public/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
- package/dist/public/sdk/export-viewer-host-jo7h_0wl.js +1 -0
- package/dist/public/sdk/helpers-D4QckQhq.js +1 -0
- package/dist/public/sdk/host-BAqOYnju.js +1 -0
- package/dist/public/sdk/intentDigest-CB6zy3lN.js +1 -0
- package/dist/public/sdk/jsonRpc-C85RYR0A.js +1 -0
- package/dist/public/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
- package/dist/public/sdk/keccak-zexutGfG.js +1 -0
- package/dist/public/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
- package/dist/public/sdk/localOnly-DBQRG6Qh.js +1 -0
- package/dist/public/sdk/messages-Cv2j4SKI.js +1 -0
- package/dist/public/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
- package/dist/public/sdk/nearRpcResults--cBcfmp4.js +1 -0
- package/dist/public/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
- package/dist/public/sdk/normalization-BGPR6osg.js +1 -0
- package/dist/public/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
- package/dist/public/sdk/operationFingerprint-DtQb0pdp.js +1 -0
- package/dist/public/sdk/passkey-custody-LP4UTFbn.js +1 -0
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
- package/dist/public/sdk/prfCache-Mbo7_USg.js +1 -0
- package/dist/public/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
- package/dist/public/sdk/promptText-s8TQ6ckX.js +1 -0
- package/dist/public/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
- package/dist/public/sdk/registration-Btozh7uh.js +1 -0
- package/dist/public/sdk/registration-CSAG_h4Y.js +1 -0
- package/dist/public/sdk/registrationAccounts-DIeEVy6W.js +1 -0
- package/dist/public/sdk/registrationIds-BIel5S0i.js +1 -0
- package/dist/public/sdk/registrationIntent-DV1GYZ3K.js +1 -0
- package/dist/public/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
- package/dist/public/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
- package/dist/public/sdk/relayerHttp-DaPeS929.js +1 -0
- package/dist/public/sdk/routePlan-B_KJaPtm.js +1 -0
- package/dist/public/sdk/router-Dd3fFHk3.js +1 -0
- package/dist/public/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
- package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/runtime-auth-B2M91rSx.js +1 -0
- package/dist/public/sdk/runtime-device-link-ojjPSRaG.js +1 -0
- package/dist/public/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
- package/dist/public/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
- package/dist/public/sdk/runtime-export-JXYk8sQ-.js +1 -0
- package/dist/public/sdk/runtime-near-BB8AG6dV.js +1 -0
- package/dist/public/sdk/runtime-preferences-DKFZYccW.js +1 -0
- package/dist/public/sdk/runtime-recovery-C_XjsDBg.js +1 -0
- package/dist/public/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
- package/dist/public/sdk/runtimeContext-BpObgzbj.js +6 -0
- package/dist/public/sdk/runtimeLoader-DjgBf_yF.js +1 -0
- package/dist/public/sdk/sdkSentEvents-_RGAEeld.js +1 -0
- package/dist/public/sdk/secp256k1-B_6W9QDJ.js +1 -0
- package/dist/public/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
- package/dist/public/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
- package/dist/public/sdk/shared-j_KsFbCT.js +1 -0
- package/dist/public/sdk/signEvmFamily-CcLVBm0f.js +1 -0
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
- package/dist/public/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
- package/dist/public/sdk/signNear-mWbTE2Dl.js +1 -0
- package/dist/public/sdk/signatureUses-CQkkUcwT.js +1 -0
- package/dist/public/sdk/signerDomain-BhUTzDmF.js +1 -0
- package/dist/public/sdk/signerLoader-By0IY24G.js +1 -0
- package/dist/public/sdk/signerSlot-BQ1g5JNV.js +1 -0
- package/dist/public/sdk/signingFlow-LUWrZi2d.js +2 -0
- package/dist/public/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
- package/dist/public/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
- package/dist/public/sdk/trace-M34pNGuF.js +1 -0
- package/dist/public/sdk/transaction-activity-BbDod7ji.js +1 -0
- package/dist/public/sdk/transactionReview-CBE5oH4c.js +1 -0
- package/dist/public/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
- package/dist/public/sdk/transactionState-9d7f3xVj.js +1 -0
- package/dist/public/sdk/tx-confirm-ui.js +23 -204
- package/dist/public/sdk/types-M7vxrYtJ.js +1 -0
- package/dist/public/sdk/validation-dC1-_uyG.js +1 -0
- package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -13
- package/dist/public/sdk/wallet-iframe-host-full.js +1 -6
- package/dist/public/sdk/wallet-iframe-host-near.js +1 -13
- package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -4
- package/dist/public/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
- package/dist/public/sdk/wallet-ui.css +1 -6134
- package/dist/public/sdk/walletAuthority-CoWSeqvQ.js +1 -0
- package/dist/public/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
- package/dist/public/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
- package/dist/public/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
- package/dist/public/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
- package/dist/public/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
- package/dist/public/sdk/webauthnP256-qu06GNFm.js +1 -0
- package/dist/public/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
- package/dist/public/sdk/workers/device-linking-key.worker.js +567 -2131
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +1529 -2683
- package/dist/public/sdk/workers/ecdsa-online-client.worker.js +1 -273
- package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +59 -346
- package/dist/public/sdk/workers/email-otp.worker.js +307 -2185
- package/dist/public/sdk/workers/email_otp_runtime_bg.wasm +0 -0
- package/dist/public/sdk/workers/evm-crypto.worker.js +0 -188
- package/dist/public/sdk/workers/evm_crypto.wasm +0 -0
- package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
- package/dist/public/sdk/workers/near-signer.worker.js +16 -718
- package/dist/public/sdk/workers/near_signer.wasm +0 -0
- package/dist/public/sdk/workers/passkey-confirm.worker.js +0 -134
- package/dist/public/sdk/workers/passkey-mpc-export.worker.js +149 -506
- package/dist/public/sdk/workers/passkey-mpc-session.worker.js +0 -134
- package/dist/public/sdk/workers/router_ab_ecdsa_client_bg.wasm +0 -0
- package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/workers/shamir3pass.worker.js +0 -134
- package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/public/sdk/workers/tempo-signer.worker.js +0 -134
- package/dist/public/sdk/workers/tempo_signer.wasm +0 -0
- package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
- package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +136 -1636
- package/dist/public/sdk/workers/wallet_custody_ceremony.js +0 -14
- package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
- package/dist/public/wallet-assets.manifest.json +234 -258
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
- package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +2 -1
- package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +9 -2
- package/dist/types/shared-ts/src/authorization/walletSignerActivationEquality.d.ts +4 -0
- package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -4
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +6 -63
- package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +2 -0
- package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +5 -12
- package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +9 -0
- package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +11 -12
- package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +3 -17
- package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
- package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
- package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
- package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
- package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -845
- package/dist/types/shared-ts/src/tenant-root/tenantRootIdentifier.d.ts +3 -0
- package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -1
- package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +6 -0
- package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
- package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
- package/dist/types/shared-ts/src/threshold/signingRootScope.d.ts +1 -0
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
- package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
- package/dist/types/shared-ts/src/utils/ecdsaKeyFactsInventory.d.ts +2 -11
- package/dist/types/shared-ts/src/utils/eip1559TxWasmJson.d.ts +16 -0
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +2 -0
- package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
- package/dist/types/shared-ts/src/utils/exactKeys.d.ts +11 -0
- package/dist/types/shared-ts/src/utils/failure.d.ts +12 -0
- package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +3 -4
- package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
- package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +1 -0
- package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
- package/dist/types/shared-ts/src/utils/registrationAuthMethodInput.d.ts +3 -8
- package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/registrationSignerPlan.d.ts +7 -19
- package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +3 -1
- package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +1 -0
- package/dist/types/shared-ts/src/utils/routerAbEd25519YaoDigests.d.ts +3 -4
- package/dist/types/shared-ts/src/utils/routerAbNormalSigningIdentity.d.ts +30 -8
- package/dist/types/shared-ts/src/utils/routerApiKeyAuth.d.ts +2 -0
- package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +10 -11
- package/dist/types/shared-ts/src/utils/thresholdEcdsaChainTarget.d.ts +25 -0
- package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
- package/dist/types/shared-ts/src/utils/variant.d.ts +18 -0
- package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +3 -6
- package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
- package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +4 -2
- package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
- package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
- package/dist/types/shared-ts/src/wallet-recovery/recoveryEnvelopes.d.ts +3 -16
- package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryPreparation.d.ts +15 -0
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.d.ts +3 -4
- package/dist/types/wallet/build-paths.d.ts +1 -2
- package/dist/types/wallet/src/SeamsWeb/SeamsWeb.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.d.ts +11 -0
- package/dist/types/wallet/src/SeamsWeb/operations/auth/walletAuth.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockSubject.d.ts +3 -20
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/challenge.d.ts +0 -4
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/walletActivation.d.ts +3 -4
- package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.d.ts +2 -10
- package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingResume.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDeviceFlow.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +0 -10
- package/dist/types/wallet/src/SeamsWeb/operations/session/thresholdEcdsaProvisioning.d.ts +1 -2
- package/dist/types/wallet/src/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +7 -16
- package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +0 -2
- package/dist/types/wallet/src/SeamsWeb/signingSurface/types.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/domain.d.ts +0 -8
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.d.ts +1 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/hostedWalletSeamsSession.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.d.ts +17 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +12 -5
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +15 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/exactSessionReconciliation.d.ts +3 -3
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +5 -15
- package/dist/types/wallet/src/advanced.d.ts +1 -1
- package/dist/types/wallet/src/core/accountData/near/keyMaterial.d.ts +3 -5
- package/dist/types/wallet/src/core/browser/walletIframe/events.d.ts +0 -2
- package/dist/types/wallet/src/core/indexedDB/index.d.ts +3 -5
- package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +2 -38
- package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -4
- package/dist/types/wallet/src/core/indexedDB/pendingWalletRegistrationCommit.d.ts +3 -4
- package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -22
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.d.ts +7 -12
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.d.ts +0 -1
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/registrationSetup.d.ts +42 -0
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/signingSessionSeals.d.ts +1 -5
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +8 -7
- package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
- package/dist/types/wallet/src/core/platform/browser/createBrowserPlatformRuntime.d.ts +1 -6
- package/dist/types/wallet/src/core/platform/ecdsaRoleLocalRecords.d.ts +7 -51
- package/dist/types/wallet/src/core/platform/http.d.ts +3 -5
- package/dist/types/wallet/src/core/platform/index.d.ts +4 -4
- package/dist/types/wallet/src/core/platform/ports.d.ts +4 -58
- package/dist/types/wallet/src/core/platform/runtime.d.ts +0 -2
- package/dist/types/wallet/src/core/platform/secretSources.d.ts +0 -29
- package/dist/types/wallet/src/core/rpcClients/near/NearClient.d.ts +1 -1
- package/dist/types/wallet/src/core/rpcClients/near/NearRpcError.d.ts +1 -2
- package/dist/types/wallet/src/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.d.ts +2 -11
- package/dist/types/wallet/src/core/rpcClients/relayer/passkeyCustodyEnvelope.d.ts +0 -6
- package/dist/types/wallet/src/core/rpcClients/relayer/thresholdEcdsa.d.ts +2 -9
- package/dist/types/wallet/src/core/rpcClients/relayer/walletRecoveryPrepare.d.ts +2 -14
- package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +2 -19
- package/dist/types/wallet/src/core/signingEngine/assembly/ports/shared.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/assembly/ports/warmSigning.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/assembly/warmup.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/chains/near/nearSignerWasm.d.ts +0 -10
- package/dist/types/wallet/src/core/signingEngine/chains/near/payloads.d.ts +2 -10
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaDerivationExport.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaExportFlow.d.ts +4 -8
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportConfirmation.d.ts +0 -15
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportFlow.d.ts +7 -6
- package/dist/types/wallet/src/core/signingEngine/flows/registration/accountLifecycle.d.ts +2 -21
- package/dist/types/wallet/src/core/signingEngine/flows/registration/public.d.ts +1 -9
- package/dist/types/wallet/src/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/flows/shared/signingStateMachine.d.ts +0 -6
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/nonceResolution.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.d.ts +7 -18
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.d.ts +10 -5
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.d.ts +4 -14
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingMaterials.d.ts +0 -4
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.d.ts +0 -9
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/signNep413.d.ts +3 -7
- package/dist/types/wallet/src/core/signingEngine/interfaces/index.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/interfaces/near.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/interfaces/operationDeps.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/interfaces/operationStepUpPreparation.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/nonce/NonceCoordinator.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/nonce/nearTransactionReadiness.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +2 -11
- package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/clientCeremony.d.ts +5 -22
- package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.d.ts +3 -14
- package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/authority/authorityOperationResolver.d.ts +1 -24
- package/dist/types/wallet/src/core/signingEngine/session/availability/persistedAvailableSigningLanes.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/availability/readiness.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.d.ts +37 -14
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaLogin.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaPublication.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaRecovery.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ed25519ExportContext.d.ts +2 -7
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/secretEscrow.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/walletUnlock.d.ts +6 -15
- package/dist/types/wallet/src/core/signingEngine/session/identity/clientSessionPersistenceState.d.ts +0 -6
- package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.d.ts +3 -8
- package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionCredential.d.ts +3 -7
- package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionReader.d.ts +3 -6
- package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +5 -14
- package/dist/types/wallet/src/core/signingEngine/session/identity/signingLaneAuthBinding.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/session/identity/walletUnlockSubject.d.ts +0 -8
- package/dist/types/wallet/src/core/signingEngine/session/keyMaterialBrands.d.ts +1 -4
- package/dist/types/wallet/src/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.d.ts +5 -10
- package/dist/types/wallet/src/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.d.ts +4 -7
- package/dist/types/wallet/src/core/signingEngine/session/material/capabilityPreparationResult.d.ts +3 -22
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaCapabilityHydration.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSealedRuntime.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +5 -0
- package/dist/types/wallet/src/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.d.ts +5 -10
- package/dist/types/wallet/src/core/signingEngine/session/operationState/authorizationAdmission.d.ts +4 -9
- package/dist/types/wallet/src/core/signingEngine/session/operationState/preparedOperation.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/operationState/types.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ecdsaBootstrap.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ecdsaSessionProvision.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.d.ts +7 -25
- package/dist/types/wallet/src/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.d.ts +1 -10
- package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionRecords.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionTransportAuth.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/routerAbSigningWalletSession.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/sealedRecovery/sealedRecovery.types.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/capabilityReaderCore.d.ts +3 -16
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.d.ts +0 -105
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.d.ts +6 -26
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/persistencePorts.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/public.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.d.ts +0 -12
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/transitions.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/types.typecheck.d.ts +1 -10
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/channel/confirmTypes.d.ts +11 -36
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodRunners.d.ts +1 -5
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.d.ts +5 -8
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.d.ts +4 -7
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.d.ts +3 -9
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -19
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +7 -32
- package/dist/types/wallet/src/core/signingEngine/threshold/commitQueueShared.d.ts +10 -10
- package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.d.ts +1 -15
- package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/activation.d.ts +0 -4
- package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/bootstrapSession.d.ts +3 -8
- package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/signingQueue.d.ts +1 -7
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/commitQueue.d.ts +1 -6
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/connectSession.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/walletSession.d.ts +6 -36
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -8
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.d.ts +1 -4
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.d.ts +5 -9
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/walletCustody/emailOtpLink.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/walletCustody/openCustodyCache.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/walletCustody/registrationCeremony.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/webauthnAuth/walletOriginWebAuthn.d.ts +8 -0
- package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaClientWorkerChannels.d.ts +0 -8
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaPresignLifecycle.d.ts +5 -16
- package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +9 -109
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/requests.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +2 -12
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/custodyRestore.d.ts +0 -10
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/otpVerification.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/payloadParsing.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/near-signer.worker.d.ts +3 -31
- package/dist/types/wallet/src/core/types/accountIds.d.ts +1 -1
- package/dist/types/wallet/src/core/types/index.d.ts +0 -18
- package/dist/types/wallet/src/core/types/linkDevice.d.ts +3 -18
- package/dist/types/wallet/src/core/types/sdkPublicResults.d.ts +5 -18
- package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +5 -23
- package/dist/types/wallet/src/core/types/seams.d.ts +17 -71
- package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +0 -5
- package/dist/types/wallet/src/core/types/signer-worker.d.ts +75 -134
- package/dist/types/wallet/src/externalEvm/types.d.ts +5 -12
- package/dist/types/wallet/src/react/components/AccountMenuButton/Toggle.d.ts +0 -15
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/GlobeIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/KeyIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LaptopIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LinkIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MailIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/RecoveryCodesIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ScanIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SlidersIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SmartphoneIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/lucideIcon.d.ts +5 -0
- package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +0 -19
- package/dist/types/wallet/src/react/hooks/useAccountInput.d.ts +1 -22
- package/dist/types/wallet/src/react/transactionReview/controller.d.ts +3 -10
- package/dist/types/wallet/src/utils/menuItemBlink.d.ts +9 -0
- package/dist/types/wallet/src/utils/qrScanner.d.ts +1 -21
- package/dist/workers/device-linking-key.worker.js +567 -2131
- package/dist/workers/ecdsa-derivation-client.worker.js +1529 -2683
- package/dist/workers/ecdsa-online-client.worker.js +1 -273
- package/dist/workers/ecdsa-presign-client.worker.js +59 -346
- package/dist/workers/email-otp.worker.js +307 -2185
- package/dist/workers/email_otp_runtime_bg.wasm +0 -0
- package/dist/workers/evm-crypto.worker.js +0 -188
- package/dist/workers/evm_crypto.wasm +0 -0
- package/dist/workers/evm_crypto_bg.wasm +0 -0
- package/dist/workers/near-signer.worker.js +16 -718
- package/dist/workers/near_signer.wasm +0 -0
- package/dist/workers/passkey-confirm.worker.js +0 -134
- package/dist/workers/passkey-mpc-export.worker.js +149 -506
- package/dist/workers/passkey-mpc-session.worker.js +0 -134
- package/dist/workers/router_ab_ecdsa_client_bg.wasm +0 -0
- package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/workers/shamir3pass.worker.js +0 -134
- package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/workers/tempo-signer.worker.js +0 -134
- package/dist/workers/tempo_signer.wasm +0 -0
- package/dist/workers/tempo_signer_bg.wasm +0 -0
- package/dist/workers/wallet-custody-ceremony.worker.js +136 -1636
- package/dist/workers/wallet_custody_ceremony.js +0 -14
- package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
- package/package.json +1 -14
- package/dist/esm/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
- package/dist/esm/components/AccountMenuButton/AccountsSection.css +0 -81
- package/dist/esm/components/AccountMenuButton/ExportKeysSection.css +0 -96
- package/dist/esm/components/AccountMenuButton/HaloBorder/HaloBorder.css +0 -101
- package/dist/esm/components/AccountMenuButton/LinkedDevicesModal.css +0 -612
- package/dist/esm/components/AccountMenuButton/MenuItem.css +0 -181
- package/dist/esm/components/AccountMenuButton/ProfileDropdown.css +0 -80
- package/dist/esm/components/AccountMenuButton/TransactionSettingsSection.css +0 -107
- package/dist/esm/components/AccountMenuButton/UserAccountButton.css +0 -182
- package/dist/esm/components/AccountMenuButton/WalletSettingsLayout.css +0 -456
- package/dist/esm/components/AccountMenuButton/Web3AuthProfileButton.css +0 -75
- package/dist/esm/components/AccountMenuButton/icons/TouchIcon.css +0 -46
- package/dist/esm/components/QRCodeScanner.css +0 -502
- package/dist/esm/components/ShowQRCode.css +0 -345
- package/dist/esm/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.js +0 -239
- package/dist/esm/core/signingEngine/session/emailOtp/coordinatorRuntime.js +0 -131
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.js +0 -12
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.js +0 -12
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.js +0 -12
- package/dist/esm/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
- package/dist/esm/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
- package/dist/esm/plugins/shared-ts/src/utils/base58.js +0 -1
- package/dist/esm/plugins/shared-ts/src/utils/near.js +0 -1
- package/dist/esm/plugins/shared-ts/src/utils/validation.js +0 -2
- package/dist/esm/react/SeamsWeb/SeamsWeb.js +0 -1909
- package/dist/esm/react/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +0 -817
- package/dist/esm/react/SeamsWeb/assembly/browserWorkerWarmupPolicy.js +0 -31
- package/dist/esm/react/SeamsWeb/assembly/configureBrowserIndexedDB.js +0 -10
- package/dist/esm/react/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +0 -95
- package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningRuntime.js +0 -34
- package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningStores.js +0 -39
- package/dist/esm/react/SeamsWeb/assembly/createBrowserStepUpRuntime.js +0 -34
- package/dist/esm/react/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -31
- package/dist/esm/react/SeamsWeb/assembly/createWalletIframeOverlayState.js +0 -9
- package/dist/esm/react/SeamsWeb/assembly/createWalletIframeRouter.js +0 -44
- package/dist/esm/react/SeamsWeb/assembly/initializeBrowserSigningRuntime.js +0 -19
- package/dist/esm/react/SeamsWeb/assembly/runtimeConfig.js +0 -12
- package/dist/esm/react/SeamsWeb/operations/auth/login.js +0 -4398
- package/dist/esm/react/SeamsWeb/operations/auth/scheduleEcdsaSessionPresignaturePrefill.js +0 -41
- package/dist/esm/react/SeamsWeb/operations/auth/walletAuth.js +0 -143
- package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +0 -36
- package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockSubject.js +0 -294
- package/dist/esm/react/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.js +0 -72
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +0 -191
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/challenge.js +0 -247
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +0 -572
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/localEmailOtpProjection.js +0 -69
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationAuthority.js +0 -62
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationOffer.js +0 -69
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/walletActivation.js +0 -95
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/addPasskey.js +0 -260
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/ecdsaBootstrap.js +0 -17
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/exactPasskeyAuthority.js +0 -34
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localPasskeyProjection.js +0 -117
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localUnlock.js +0 -16
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/loginAssertion.js +0 -25
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/registrationAuthority.js +0 -84
- package/dist/esm/react/SeamsWeb/operations/authMethods/revokeAuthMethod.js +0 -205
- package/dist/esm/react/SeamsWeb/operations/authMethods/sourcePasskeyProof.js +0 -12
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.js +0 -444
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingComposition.js +0 -106
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingEd25519ExportRoot.js +0 -194
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +0 -525
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingOwnerTransport.js +0 -135
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingResume.js +0 -219
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetCredential.js +0 -63
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetEd25519ExportRoot.js +0 -61
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +0 -337
- package/dist/esm/react/SeamsWeb/operations/devices/linkDevice.js +0 -75
- package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlow.js +0 -1358
- package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlowSupport.js +0 -143
- package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceTargetActivation.js +0 -119
- package/dist/esm/react/SeamsWeb/operations/devices/scanDevice.js +0 -384
- package/dist/esm/react/SeamsWeb/operations/devices/walletHostComposition.js +0 -130
- package/dist/esm/react/SeamsWeb/operations/devices/walletHostOwnerAuthority.js +0 -191
- package/dist/esm/react/SeamsWeb/operations/evm/index.js +0 -35
- package/dist/esm/react/SeamsWeb/operations/near/actions.js +0 -484
- package/dist/esm/react/SeamsWeb/operations/near/commandSubject.js +0 -14
- package/dist/esm/react/SeamsWeb/operations/near/delegateAction.js +0 -247
- package/dist/esm/react/SeamsWeb/operations/near/index.js +0 -37
- package/dist/esm/react/SeamsWeb/operations/near/signNEP413.js +0 -117
- package/dist/esm/react/SeamsWeb/operations/near/signingEventHelpers.js +0 -15
- package/dist/esm/react/SeamsWeb/operations/recovery/accountSync.js +0 -21
- package/dist/esm/react/SeamsWeb/operations/recovery/recoveryWalletBinding.js +0 -43
- package/dist/esm/react/SeamsWeb/operations/recovery/syncAccount.js +0 -914
- package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCodeBackup.js +0 -100
- package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCommit.js +0 -477
- package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +0 -386
- package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryJournal.js +0 -118
- package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryRotation.js +0 -214
- package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecovery.js +0 -184
- package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryUnlock.js +0 -247
- package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryValidation.js +0 -134
- package/dist/esm/react/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +0 -369
- package/dist/esm/react/SeamsWeb/operations/registration/registration.js +0 -3818
- package/dist/esm/react/SeamsWeb/operations/registration/registrationEd25519Yao.js +0 -166
- package/dist/esm/react/SeamsWeb/operations/registration/registrationSignerSet.js +0 -60
- package/dist/esm/react/SeamsWeb/operations/registration/registrationStrictEcdsa.js +0 -343
- package/dist/esm/react/SeamsWeb/operations/registration/registrationTerminalCommit.js +0 -296
- package/dist/esm/react/SeamsWeb/operations/registration/registrationTiming.js +0 -682
- package/dist/esm/react/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +0 -40
- package/dist/esm/react/SeamsWeb/operations/session/thresholdWarmSessionBootstrap.js +0 -20
- package/dist/esm/react/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +0 -565
- package/dist/esm/react/SeamsWeb/operations/tempo/feeTokenPreference.js +0 -67
- package/dist/esm/react/SeamsWeb/operations/tempo/index.js +0 -39
- package/dist/esm/react/SeamsWeb/publicApi/auth.js +0 -23
- package/dist/esm/react/SeamsWeb/publicApi/awaitNearReady.js +0 -72
- package/dist/esm/react/SeamsWeb/publicApi/capabilitySelection.js +0 -63
- package/dist/esm/react/SeamsWeb/publicApi/chainTargets.js +0 -48
- package/dist/esm/react/SeamsWeb/publicApi/createPublicApi.js +0 -133
- package/dist/esm/react/SeamsWeb/publicApi/currentWallet.js +0 -46
- package/dist/esm/react/SeamsWeb/publicApi/devices.js +0 -83
- package/dist/esm/react/SeamsWeb/publicApi/evm.js +0 -103
- package/dist/esm/react/SeamsWeb/publicApi/keyExport.js +0 -90
- package/dist/esm/react/SeamsWeb/publicApi/near.js +0 -449
- package/dist/esm/react/SeamsWeb/publicApi/preferences.js +0 -61
- package/dist/esm/react/SeamsWeb/publicApi/recovery.js +0 -19
- package/dist/esm/react/SeamsWeb/publicApi/tempo.js +0 -238
- package/dist/esm/react/SeamsWeb/publicApi/transactionReview.js +0 -12
- package/dist/esm/react/SeamsWeb/publicApi/types.js +0 -10
- package/dist/esm/react/SeamsWeb/signingSurface/BrowserSigningSurface.js +0 -3908
- package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +0 -530
- package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +0 -417
- package/dist/esm/react/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +0 -134
- package/dist/esm/react/SeamsWeb/walletIframe/client/router.js +0 -3368
- package/dist/esm/react/SeamsWeb/walletIframe/client/surface/domain.js +0 -288
- package/dist/esm/react/SeamsWeb/walletIframe/client/surface/geometry.js +0 -128
- package/dist/esm/react/SeamsWeb/walletIframe/client/surface/renderer.js +0 -119
- package/dist/esm/react/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.js +0 -125
- package/dist/esm/react/SeamsWeb/walletIframe/client/transactionReviewReservation.js +0 -96
- package/dist/esm/react/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -252
- package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.js +0 -71
- package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +0 -211
- package/dist/esm/react/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
- package/dist/esm/react/SeamsWeb/walletIframe/coordinator.js +0 -235
- package/dist/esm/react/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +0 -158
- package/dist/esm/react/SeamsWeb/walletIframe/shared/exactSessionState.js +0 -625
- package/dist/esm/react/SeamsWeb/walletIframe/shared/is-dev-host.js +0 -11
- package/dist/esm/react/SeamsWeb/walletIframe/shared/messages.js +0 -588
- package/dist/esm/react/SeamsWeb/walletIframe/shared/transactionReview.js +0 -83
- package/dist/esm/react/SeamsWeb/walletIframe/shared/unlockOptions.js +0 -54
- package/dist/esm/react/base-styles.js +0 -13
- package/dist/esm/react/build-paths.js +0 -111
- package/dist/esm/react/components/AccountMenuButton/HaloBorder/HaloBorder.css +0 -101
- package/dist/esm/react/config.js +0 -37
- package/dist/esm/react/core/accountData/near/accountProjection.js +0 -119
- package/dist/esm/react/core/accountData/near/accountRefs.js +0 -21
- package/dist/esm/react/core/accountData/near/keyMaterial.js +0 -171
- package/dist/esm/react/core/accountData/near/profileId.js +0 -24
- package/dist/esm/react/core/browser/walletIframe/csp-stylesheet.js +0 -189
- package/dist/esm/react/core/browser/walletIframe/events.js +0 -10
- package/dist/esm/react/core/browser/walletIframe/host-mode.js +0 -19
- package/dist/esm/react/core/browser/walletIframe/hostVariant.js +0 -16
- package/dist/esm/react/core/config/chains.js +0 -90
- package/dist/esm/react/core/config/configBuilder.js +0 -231
- package/dist/esm/react/core/config/configHelpers.js +0 -183
- package/dist/esm/react/core/config/defaultConfigs.js +0 -120
- package/dist/esm/react/core/config/defineConfig.js +0 -48
- package/dist/esm/react/core/config/managedRuntimeScope.js +0 -16
- package/dist/esm/react/core/indexedDB/accountKeyMaterial.js +0 -68
- package/dist/esm/react/core/indexedDB/accountSignerLifecycle.js +0 -143
- package/dist/esm/react/core/indexedDB/index.js +0 -60
- package/dist/esm/react/core/indexedDB/keyMaterialEnvelope.js +0 -69
- package/dist/esm/react/core/indexedDB/lastProfileState.js +0 -22
- package/dist/esm/react/core/indexedDB/linkedAuthoritySignerMaterial.js +0 -291
- package/dist/esm/react/core/indexedDB/nonceLaneCoordinationStore.js +0 -115
- package/dist/esm/react/core/indexedDB/normalization.js +0 -24
- package/dist/esm/react/core/indexedDB/pendingWalletRecoveryCommit.js +0 -482
- package/dist/esm/react/core/indexedDB/pendingWalletRegistrationCommit.js +0 -879
- package/dist/esm/react/core/indexedDB/profileAccountProjection.js +0 -70
- package/dist/esm/react/core/indexedDB/schemaNames.js +0 -845
- package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.js +0 -209
- package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +0 -848
- package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +0 -1215
- package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +0 -235
- package/dist/esm/react/core/indexedDB/seamsWalletDB/manager.js +0 -140
- package/dist/esm/react/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -145
- package/dist/esm/react/core/indexedDB/seamsWalletDB/repositories.js +0 -4747
- package/dist/esm/react/core/indexedDB/seamsWalletDB/schema.js +0 -23
- package/dist/esm/react/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -205
- package/dist/esm/react/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +0 -198
- package/dist/esm/react/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +0 -569
- package/dist/esm/react/core/indexedDB/singletons.js +0 -7
- package/dist/esm/react/core/indexedDB/unifiedIndexedDBManager.js +0 -578
- package/dist/esm/react/core/indexedDB/walletCustodyEd25519MaterialRecord.js +0 -60
- package/dist/esm/react/core/platform/browser/createBrowserPlatformRuntime.js +0 -552
- package/dist/esm/react/core/platform/secretSources.js +0 -111
- package/dist/esm/react/core/platform/signerCoreCommandAdapters.js +0 -122
- package/dist/esm/react/core/rpcClients/evm/EvmClient.js +0 -549
- package/dist/esm/react/core/rpcClients/evm/nonceBackend.js +0 -279
- package/dist/esm/react/core/rpcClients/near/NearClient.js +0 -56
- package/dist/esm/react/core/rpcClients/near/NearRpcError.js +0 -105
- package/dist/esm/react/core/rpcClients/near/rpcCalls.js +0 -376
- package/dist/esm/react/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.js +0 -67
- package/dist/esm/react/core/rpcClients/relayer/passkeyCustodyEnvelope.js +0 -228
- package/dist/esm/react/core/rpcClients/relayer/registrationSignerSetRequest.js +0 -8
- package/dist/esm/react/core/rpcClients/relayer/relayerHttp.js +0 -26
- package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigning.js +0 -812
- package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigningValidation.js +0 -23
- package/dist/esm/react/core/rpcClients/relayer/sealedRefreshCapabilities.js +0 -148
- package/dist/esm/react/core/rpcClients/relayer/thresholdEcdsa.js +0 -237
- package/dist/esm/react/core/rpcClients/relayer/walletRecoveryFinalize.js +0 -174
- package/dist/esm/react/core/rpcClients/relayer/walletRecoveryGoogleEmailOtp.js +0 -161
- package/dist/esm/react/core/rpcClients/relayer/walletRecoveryPrepare.js +0 -295
- package/dist/esm/react/core/rpcClients/relayer/walletRecoveryRotate.js +0 -311
- package/dist/esm/react/core/rpcClients/relayer/walletRegistration.js +0 -2349
- package/dist/esm/react/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +0 -719
- package/dist/esm/react/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +0 -214
- package/dist/esm/react/core/runtime/createSigningRuntime.js +0 -100
- package/dist/esm/react/core/signingEngine/assembly/createManagers.js +0 -80
- package/dist/esm/react/core/signingEngine/assembly/createPorts.js +0 -54
- package/dist/esm/react/core/signingEngine/assembly/ports/emailOtp.js +0 -30
- package/dist/esm/react/core/signingEngine/assembly/ports/evmFamily.js +0 -73
- package/dist/esm/react/core/signingEngine/assembly/ports/near.js +0 -21
- package/dist/esm/react/core/signingEngine/assembly/ports/recovery.js +0 -75
- package/dist/esm/react/core/signingEngine/assembly/ports/registration.js +0 -22
- package/dist/esm/react/core/signingEngine/assembly/ports/session.js +0 -25
- package/dist/esm/react/core/signingEngine/assembly/ports/shared.js +0 -40
- package/dist/esm/react/core/signingEngine/assembly/ports/stepUpRuntime.js +0 -67
- package/dist/esm/react/core/signingEngine/assembly/ports/warmSigning.js +0 -92
- package/dist/esm/react/core/signingEngine/assembly/warmup.js +0 -68
- package/dist/esm/react/core/signingEngine/chains/evm/bytes.js +0 -22
- package/dist/esm/react/core/signingEngine/chains/evm/display/calldata.js +0 -25
- package/dist/esm/react/core/signingEngine/chains/evm/display/evmTx.js +0 -119
- package/dist/esm/react/core/signingEngine/chains/evm/display/functionSelectors.js +0 -75
- package/dist/esm/react/core/signingEngine/chains/evm/display/gas.js +0 -19
- package/dist/esm/react/core/signingEngine/chains/evm/display/normalization.js +0 -23
- package/dist/esm/react/core/signingEngine/chains/evm/evmAdapter.js +0 -44
- package/dist/esm/react/core/signingEngine/chains/evm/evmCryptoWasm.js +0 -198
- package/dist/esm/react/core/signingEngine/chains/near/display.js +0 -248
- package/dist/esm/react/core/signingEngine/chains/near/nearSignerWasm.js +0 -170
- package/dist/esm/react/core/signingEngine/chains/near/payloads.js +0 -58
- package/dist/esm/react/core/signingEngine/chains/tempo/display.js +0 -130
- package/dist/esm/react/core/signingEngine/chains/tempo/feeToken.js +0 -187
- package/dist/esm/react/core/signingEngine/chains/tempo/tempoAdapter.js +0 -49
- package/dist/esm/react/core/signingEngine/chains/tempo/tempoSignerWasm.js +0 -90
- package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -428
- package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportFlow.js +0 -660
- package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +0 -243
- package/dist/esm/react/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +0 -353
- package/dist/esm/react/core/signingEngine/flows/recovery/exportKeypairOperation.js +0 -216
- package/dist/esm/react/core/signingEngine/flows/recovery/exportLaneSelection.js +0 -283
- package/dist/esm/react/core/signingEngine/flows/recovery/keyExportConfirmation.js +0 -325
- package/dist/esm/react/core/signingEngine/flows/recovery/keyExportFlow.js +0 -81
- package/dist/esm/react/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +0 -195
- package/dist/esm/react/core/signingEngine/flows/recovery/public.js +0 -26
- package/dist/esm/react/core/signingEngine/flows/recovery/stepUpAuthorization.js +0 -139
- package/dist/esm/react/core/signingEngine/flows/registration/accountLifecycle.js +0 -1098
- package/dist/esm/react/core/signingEngine/flows/registration/nearProvisioningRegistry.js +0 -79
- package/dist/esm/react/core/signingEngine/flows/registration/public.js +0 -85
- package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaRegistrationSessions.js +0 -77
- package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaWalletRecords.js +0 -15
- package/dist/esm/react/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +0 -83
- package/dist/esm/react/core/signingEngine/flows/registration/services/registrationAccounts.js +0 -30
- package/dist/esm/react/core/signingEngine/flows/registration/session.js +0 -24
- package/dist/esm/react/core/signingEngine/flows/shared/signingConfirmation.js +0 -194
- package/dist/esm/react/core/signingEngine/flows/shared/signingStateMachine.js +0 -485
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/accountAuth.js +0 -12
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/addresses.js +0 -10
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/authPlanning.js +0 -139
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaLanes.js +0 -102
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +0 -233
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpPublic.js +0 -123
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +0 -227
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/errors.js +0 -127
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/events.js +0 -39
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/evmNonceLifecycle.js +0 -49
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/executorThresholdState.js +0 -22
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.js +0 -98
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshWalletSessionRetry.js +0 -76
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceLifecycleAdapter.js +0 -245
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceResolution.js +0 -91
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/operationIds.js +0 -33
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/preparedSigning.js +0 -383
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -191
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/requireEvmFamilyStepUpAuth.js +0 -128
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +0 -512
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamilyWithUiConfirmForTempo.js +0 -65
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmWithUiConfirm.js +0 -26
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signatureUses.js +0 -12
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signerLoader.js +0 -25
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +0 -76
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +0 -182
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.js +0 -84
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlow.js +0 -631
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +0 -391
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/stepUpAuthorization.js +0 -56
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/tempoNonceLifecycle.js +0 -47
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/thresholdAdmission.js +0 -87
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +0 -143
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/types.js +0 -20
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/webauthnP256KeyRef.js +0 -33
- package/dist/esm/react/core/signingEngine/flows/signNear/implicitAccountFunding.js +0 -202
- package/dist/esm/react/core/signingEngine/flows/signNear/nearSigningFlow.js +0 -56
- package/dist/esm/react/core/signingEngine/flows/signNear/requireNearStepUpAuth.js +0 -102
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/confirmationProgress.js +0 -28
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.js +0 -101
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +0 -822
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/implicitAccountFundingPort.js +0 -24
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.js +0 -68
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -343
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingMaterials.js +0 -25
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +0 -138
- package/dist/esm/react/core/signingEngine/flows/signNear/signDelegate.js +0 -290
- package/dist/esm/react/core/signingEngine/flows/signNear/signNear.js +0 -1238
- package/dist/esm/react/core/signingEngine/flows/signNear/signNep413.js +0 -144
- package/dist/esm/react/core/signingEngine/flows/signNear/signTransactions.js +0 -897
- package/dist/esm/react/core/signingEngine/flows/signNear/signatureUses.js +0 -12
- package/dist/esm/react/core/signingEngine/flows/signNear/stepUpAuthorization.js +0 -42
- package/dist/esm/react/core/signingEngine/interfaces/accountAuthMetadata.js +0 -14
- package/dist/esm/react/core/signingEngine/interfaces/ecdsaChainTarget.js +0 -142
- package/dist/esm/react/core/signingEngine/interfaces/operationStepUpPreparation.js +0 -18
- package/dist/esm/react/core/signingEngine/nonce/NonceCoordinator.js +0 -1026
- package/dist/esm/react/core/signingEngine/nonce/evmNonceLane.js +0 -182
- package/dist/esm/react/core/signingEngine/nonce/nearNonceLane.js +0 -669
- package/dist/esm/react/core/signingEngine/nonce/nearNonceLaneIdentity.js +0 -24
- package/dist/esm/react/core/signingEngine/nonce/nonceCoordinationRecordBoundary.js +0 -216
- package/dist/esm/react/core/signingEngine/nonce/nonceDiagnostics.js +0 -232
- package/dist/esm/react/core/signingEngine/nonce/nonceLaneKeys.js +0 -110
- package/dist/esm/react/core/signingEngine/nonce/nonceLeaseState.js +0 -128
- package/dist/esm/react/core/signingEngine/nonce/nonceTypes.js +0 -59
- package/dist/esm/react/core/signingEngine/nonce/nonceUtils.js +0 -33
- package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/httpRequest.js +0 -74
- package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -217
- package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +0 -1216
- package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignatureRefillProgress.js +0 -53
- package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -22
- package/dist/esm/react/core/signingEngine/session/SigningSessionCoordinator.js +0 -347
- package/dist/esm/react/core/signingEngine/session/authority/authorityOperationResolver.js +0 -165
- package/dist/esm/react/core/signingEngine/session/availability/availableSigningLanes.js +0 -1073
- package/dist/esm/react/core/signingEngine/session/availability/canonicalLaneInventory.js +0 -127
- package/dist/esm/react/core/signingEngine/session/availability/clientSessionExpiryInvalidator.js +0 -72
- package/dist/esm/react/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +0 -213
- package/dist/esm/react/core/signingEngine/session/availability/readiness.js +0 -464
- package/dist/esm/react/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -47
- package/dist/esm/react/core/signingEngine/session/emailOtp/challengeDelivery.js +0 -56
- package/dist/esm/react/core/signingEngine/session/emailOtp/coordinatorRuntime.js +0 -131
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +0 -106
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -50
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLogin.js +0 -941
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaPublication.js +0 -414
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaRecovery.js +0 -268
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaSigningSessionAuthority.js +0 -95
- package/dist/esm/react/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -376
- package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecovery.js +0 -286
- package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecoveryRuntime.js +0 -50
- package/dist/esm/react/core/signingEngine/session/emailOtp/persistedSnapshot.js +0 -22
- package/dist/esm/react/core/signingEngine/session/emailOtp/publicTypes.js +0 -38
- package/dist/esm/react/core/signingEngine/session/emailOtp/routePlan.js +0 -60
- package/dist/esm/react/core/signingEngine/session/emailOtp/runtimeConfig.js +0 -24
- package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRefreshPolicy.js +0 -49
- package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRestoreOrchestrator.js +0 -234
- package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRuntimePurpose.js +0 -16
- package/dist/esm/react/core/signingEngine/session/emailOtp/sealedSessionRegistry.js +0 -40
- package/dist/esm/react/core/signingEngine/session/emailOtp/status.js +0 -72
- package/dist/esm/react/core/signingEngine/session/emailOtp/walletUnlock.js +0 -168
- package/dist/esm/react/core/signingEngine/session/emailOtp/warmSessionRuntime.js +0 -70
- package/dist/esm/react/core/signingEngine/session/emailOtp/workerEnrollment.js +0 -159
- package/dist/esm/react/core/signingEngine/session/emailOtp/workerRequests.js +0 -84
- package/dist/esm/react/core/signingEngine/session/emailOtp/zeroize.js +0 -9
- package/dist/esm/react/core/signingEngine/session/identity/clientSessionPersistenceState.js +0 -95
- package/dist/esm/react/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.js +0 -23
- package/dist/esm/react/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -265
- package/dist/esm/react/core/signingEngine/session/identity/exactSigningLaneIdentity.js +0 -338
- package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -106
- package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionReader.js +0 -54
- package/dist/esm/react/core/signingEngine/session/identity/laneIdentity.js +0 -168
- package/dist/esm/react/core/signingEngine/session/identity/ownerLaneScope.js +0 -185
- package/dist/esm/react/core/signingEngine/session/identity/selectLane.js +0 -349
- package/dist/esm/react/core/signingEngine/session/identity/signingLaneAuthBinding.js +0 -29
- package/dist/esm/react/core/signingEngine/session/keyMaterialBrands.js +0 -75
- package/dist/esm/react/core/signingEngine/session/lanes/walletExecutionLaneHydration.js +0 -194
- package/dist/esm/react/core/signingEngine/session/lifecycle/canonicalWalletSessionStatus.js +0 -32
- package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionFailure.js +0 -69
- package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionStatus.js +0 -123
- package/dist/esm/react/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.js +0 -171
- package/dist/esm/react/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +0 -323
- package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityHydration.js +0 -75
- package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityManifest.js +0 -510
- package/dist/esm/react/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +0 -122
- package/dist/esm/react/core/signingEngine/session/material/ecdsaSealedRuntime.js +0 -197
- package/dist/esm/react/core/signingEngine/session/material/ecdsaSigningCapability.js +0 -231
- package/dist/esm/react/core/signingEngine/session/material/linkedEcdsaHolderRuntime.js +0 -36
- package/dist/esm/react/core/signingEngine/session/material/mpcCapabilityHydration.js +0 -79
- package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoMaterialActivation.js +0 -80
- package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.js +0 -122
- package/dist/esm/react/core/signingEngine/session/material/restorableMpcMaterialRef.internal.js +0 -21
- package/dist/esm/react/core/signingEngine/session/material/walletSigningStateFailure.js +0 -84
- package/dist/esm/react/core/signingEngine/session/operationState/authorizationAdmission.js +0 -98
- package/dist/esm/react/core/signingEngine/session/operationState/lanes.js +0 -127
- package/dist/esm/react/core/signingEngine/session/operationState/preparedOperation.js +0 -38
- package/dist/esm/react/core/signingEngine/session/operationState/trace.js +0 -94
- package/dist/esm/react/core/signingEngine/session/operationState/transactionState.js +0 -106
- package/dist/esm/react/core/signingEngine/session/operationState/types.js +0 -88
- package/dist/esm/react/core/signingEngine/session/passkey/ecdsaBootstrap.js +0 -187
- package/dist/esm/react/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -206
- package/dist/esm/react/core/signingEngine/session/passkey/ecdsaRecovery.js +0 -87
- package/dist/esm/react/core/signingEngine/session/passkey/ecdsaSessionProvision.js +0 -224
- package/dist/esm/react/core/signingEngine/session/passkey/ecdsaWarmCapabilityBootstrap.js +0 -147
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519Provisioner.js +0 -55
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -229
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +0 -537
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +0 -94
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoSealedSession.js +0 -57
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +0 -317
- package/dist/esm/react/core/signingEngine/session/passkey/passkeyCustodySessionCache.js +0 -90
- package/dist/esm/react/core/signingEngine/session/passkey/prfCache.js +0 -60
- package/dist/esm/react/core/signingEngine/session/passkey/public.js +0 -15
- package/dist/esm/react/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.js +0 -247
- package/dist/esm/react/core/signingEngine/session/passkey/warmSessionHydration.js +0 -9
- package/dist/esm/react/core/signingEngine/session/persistence/clientSessionPersistence.js +0 -143
- package/dist/esm/react/core/signingEngine/session/persistence/durableSealedSessionCommands.js +0 -30
- package/dist/esm/react/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.js +0 -316
- package/dist/esm/react/core/signingEngine/session/persistence/ecdsaSealedRecordKey.js +0 -20
- package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionRecords.js +0 -764
- package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionStore.js +0 -518
- package/dist/esm/react/core/signingEngine/session/persistence/walletSessionAuthorizationProjection.js +0 -51
- package/dist/esm/react/core/signingEngine/session/planning/operationFingerprint.js +0 -30
- package/dist/esm/react/core/signingEngine/session/planning/operationIdBinding.js +0 -36
- package/dist/esm/react/core/signingEngine/session/planning/planner.js +0 -98
- package/dist/esm/react/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -165
- package/dist/esm/react/core/signingEngine/session/public.js +0 -44
- package/dist/esm/react/core/signingEngine/session/routerAbSigningWalletSession.js +0 -125
- package/dist/esm/react/core/signingEngine/session/sealedRecovery/exactRecordLookup.js +0 -148
- package/dist/esm/react/core/signingEngine/session/sealedRecovery/materialActivationKey.js +0 -22
- package/dist/esm/react/core/signingEngine/session/sealedRecovery/recoveryRecord.js +0 -248
- package/dist/esm/react/core/signingEngine/session/sealedRecovery/restoreCoordinator.js +0 -229
- package/dist/esm/react/core/signingEngine/session/userPreferences.js +0 -212
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReader.js +0 -62
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReaderCore.js +0 -293
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/clearVolatileWarmSigningMaterial.js +0 -44
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapPersistence.js +0 -107
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapQueue.js +0 -22
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefill.js +0 -93
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +0 -50
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.js +0 -9
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.js +0 -251
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +0 -98
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/public.js +0 -31
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/readModel.js +0 -161
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.js +0 -256
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +0 -73
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/sealedRefreshParity.js +0 -67
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/statusReader.js +0 -100
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/transitions.js +0 -51
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/types.js +0 -122
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/volatileWarmMaterialCommands.js +0 -45
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmCommon.js +0 -89
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmTypes.js +0 -12
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/confirmOperation.js +0 -51
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/intentDigestPreparation.js +0 -29
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/methodSelection.js +0 -41
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -32
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/exportAuthorization.js +0 -108
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/promptText.js +0 -8
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/signingPrompt.js +0 -15
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +0 -295
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -170
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +0 -63
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/types.js +0 -29
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/userConfirmationType.js +0 -15
- package/dist/esm/react/core/signingEngine/threshold/commitQueueShared.js +0 -125
- package/dist/esm/react/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +0 -616
- package/dist/esm/react/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -70
- package/dist/esm/react/core/signingEngine/threshold/ecdsa/activation.js +0 -267
- package/dist/esm/react/core/signingEngine/threshold/ecdsa/bootstrapSession.js +0 -119
- package/dist/esm/react/core/signingEngine/threshold/ecdsa/operationStepUp.js +0 -110
- package/dist/esm/react/core/signingEngine/threshold/ecdsa/postRegistrationSessionActivation.js +0 -132
- package/dist/esm/react/core/signingEngine/threshold/ecdsa/signingQueue.js +0 -58
- package/dist/esm/react/core/signingEngine/threshold/ed25519/commitQueue.js +0 -52
- package/dist/esm/react/core/signingEngine/threshold/ed25519/connectSession.js +0 -137
- package/dist/esm/react/core/signingEngine/threshold/ed25519/walletSession.js +0 -363
- package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoActiveClientRegistry.js +0 -146
- package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoClient.js +0 -597
- package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPageLifecycleOwner.js +0 -23
- package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.js +0 -295
- package/dist/esm/react/core/signingEngine/threshold/sessionPolicy.js +0 -94
- package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcExportManager.js +0 -233
- package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +0 -496
- package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +0 -745
- package/dist/esm/react/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -600
- package/dist/esm/react/core/signingEngine/uiConfirm/confirmationReadinessRegistry.js +0 -41
- package/dist/esm/react/core/signingEngine/uiConfirm/exportConfirmRequest.js +0 -149
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/determineConfirmationConfig.js +0 -82
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flowOrchestrator.js +0 -363
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +0 -337
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/request.js +0 -120
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -150
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/registration.js +0 -235
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.js +0 -178
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/signing.js +0 -684
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/handlePromptFromWorker.js +0 -90
- package/dist/esm/react/core/signingEngine/uiConfirm/nearFundingNotice.js +0 -50
- package/dist/esm/react/core/signingEngine/uiConfirm/transactionReviewAdmission.js +0 -8
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance-token-vars.js +0 -31
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance.js +0 -27
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +0 -346
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-ui.js +0 -516
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-body-model.js +0 -24
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-model.js +0 -161
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/drawer-gesture.js +0 -16
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +0 -155
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-viewer-host.js +0 -207
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +0 -131
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.js +0 -29
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +0 -49
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +0 -137
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +0 -294
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +0 -67
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/CopyStatusIcon.js +0 -41
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +0 -141
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +0 -92
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +0 -318
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/HaloBorder.js +0 -91
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PadlockIcon.js +0 -32
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyHaloLoading.js +0 -63
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +0 -75
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.js +0 -33
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +0 -518
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +0 -128
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.js +0 -22
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.js +0 -158
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +0 -287
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +0 -311
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +0 -284
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/clipboard.js +0 -26
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-controller.js +0 -80
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-styles.js +0 -20
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/email-otp-session.js +0 -178
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +0 -297
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +0 -86
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +0 -82
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/seamsWordmarkPaths.js +0 -6
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +0 -12
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-resize-events.js +0 -18
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-activity.js +0 -46
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +0 -325
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/enrichDisplayModelWithAbi.js +0 -77
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/confirmation-tree.js +0 -27
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/formatters.js +0 -57
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.js +0 -12
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/fallback.js +0 -52
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.js +0 -12
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.js +0 -12
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/types.js +0 -62
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +0 -258
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-receipt.js +0 -50
- package/dist/esm/react/core/signingEngine/uiConfirm/warmSessionUiConfirm.js +0 -65
- package/dist/esm/react/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -123
- package/dist/esm/react/core/signingEngine/walletCustody/ceremonyActiveClientMetadata.js +0 -94
- package/dist/esm/react/core/signingEngine/walletCustody/ceremonyDriver.js +0 -171
- package/dist/esm/react/core/signingEngine/walletCustody/ceremonyStepRunner.js +0 -20
- package/dist/esm/react/core/signingEngine/walletCustody/ed25519ActiveClient.js +0 -100
- package/dist/esm/react/core/signingEngine/walletCustody/ed25519Projection.js +0 -32
- package/dist/esm/react/core/signingEngine/walletCustody/ed25519SeedMaterial.js +0 -92
- package/dist/esm/react/core/signingEngine/walletCustody/emailOtpLink.js +0 -135
- package/dist/esm/react/core/signingEngine/walletCustody/joinCustodyWire.js +0 -64
- package/dist/esm/react/core/signingEngine/walletCustody/openCustodyCache.js +0 -130
- package/dist/esm/react/core/signingEngine/walletCustody/passkeyLink.js +0 -183
- package/dist/esm/react/core/signingEngine/walletCustody/recoveryReplacementEnvelope.js +0 -60
- package/dist/esm/react/core/signingEngine/walletCustody/registrationCeremony.js +0 -461
- package/dist/esm/react/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +0 -258
- package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -24
- package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -76
- package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEd25519.js +0 -129
- package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -180
- package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -103
- package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/collectAuthenticationCredentialForChallengeB64u.js +0 -154
- package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/credentialExtensions.js +0 -36
- package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/helpers.js +0 -273
- package/dist/esm/react/core/signingEngine/webauthnAuth/device/signerSlot.js +0 -25
- package/dist/esm/react/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
- package/dist/esm/react/core/signingEngine/workerManager/SignerWorkerManager.js +0 -70
- package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingPorts.js +0 -323
- package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingSourceContribution.js +0 -158
- package/dist/esm/react/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -17
- package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignLifecycle.js +0 -6
- package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.js +0 -49
- package/dist/esm/react/core/signingEngine/workerManager/executeWorkerOperation.js +0 -12
- package/dist/esm/react/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
- package/dist/esm/react/core/signingEngine/workerManager/validation.js +0 -114
- package/dist/esm/react/core/signingEngine/workerManager/workerTransport.js +0 -777
- package/dist/esm/react/core/signingEngine/workerManager/workerTypes.js +0 -109
- package/dist/esm/react/core/types/accountIds.js +0 -26
- package/dist/esm/react/core/types/actionBuilders.js +0 -73
- package/dist/esm/react/core/types/confirmationConfig.js +0 -39
- package/dist/esm/react/core/types/eventLogging.js +0 -28
- package/dist/esm/react/core/types/linkDevice.js +0 -49
- package/dist/esm/react/core/types/sdkSentEvents.js +0 -602
- package/dist/esm/react/core/types/secure-confirm-worker.js +0 -22
- package/dist/esm/react/core/types/signer-worker.js +0 -50
- package/dist/esm/react/core/types/walletIframeIdentity.js +0 -15
- package/dist/esm/react/core/walletRuntimePaths/base.js +0 -60
- package/dist/esm/react/core/walletRuntimePaths/emailOtpWorker.js +0 -12
- package/dist/esm/react/core/walletRuntimePaths/multichainWorkers.js +0 -25
- package/dist/esm/react/core/walletRuntimePaths/walletCustodyCeremonyWorker.js +0 -18
- package/dist/esm/react/core/walletRuntimePaths/workers.js +0 -93
- package/dist/esm/react/externalEvm/boundary.js +0 -309
- package/dist/esm/react/externalEvm/controller.js +0 -440
- package/dist/esm/react/externalEvm/types.js +0 -31
- package/dist/esm/react/node_modules/@noble/hashes/esm/_u64.js +0 -36
- package/dist/esm/react/node_modules/@noble/hashes/esm/sha3.js +0 -197
- package/dist/esm/react/node_modules/@noble/hashes/esm/utils.js +0 -87
- package/dist/esm/react/node_modules/viem/_esm/errors/abi.js +0 -48
- package/dist/esm/react/node_modules/viem/_esm/errors/address.js +0 -14
- package/dist/esm/react/node_modules/viem/_esm/errors/base.js +0 -86
- package/dist/esm/react/node_modules/viem/_esm/errors/data.js +0 -16
- package/dist/esm/react/node_modules/viem/_esm/errors/encoding.js +0 -16
- package/dist/esm/react/node_modules/viem/_esm/errors/typedData.js +0 -28
- package/dist/esm/react/node_modules/viem/_esm/errors/version.js +0 -6
- package/dist/esm/react/node_modules/viem/_esm/utils/abi/encodeAbiParameters.js +0 -243
- package/dist/esm/react/node_modules/viem/_esm/utils/address/getAddress.js +0 -28
- package/dist/esm/react/node_modules/viem/_esm/utils/address/isAddress.js +0 -23
- package/dist/esm/react/node_modules/viem/_esm/utils/data/concat.js +0 -23
- package/dist/esm/react/node_modules/viem/_esm/utils/data/isHex.js +0 -10
- package/dist/esm/react/node_modules/viem/_esm/utils/data/pad.js +0 -40
- package/dist/esm/react/node_modules/viem/_esm/utils/data/size.js +0 -16
- package/dist/esm/react/node_modules/viem/_esm/utils/data/slice.js +0 -59
- package/dist/esm/react/node_modules/viem/_esm/utils/encoding/fromHex.js +0 -13
- package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toBytes.js +0 -175
- package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toHex.js +0 -168
- package/dist/esm/react/node_modules/viem/_esm/utils/hash/keccak256.js +0 -15
- package/dist/esm/react/node_modules/viem/_esm/utils/lru.js +0 -38
- package/dist/esm/react/node_modules/viem/_esm/utils/regex.js +0 -7
- package/dist/esm/react/node_modules/viem/_esm/utils/signature/hashTypedData.js +0 -113
- package/dist/esm/react/node_modules/viem/_esm/utils/stringify.js +0 -9
- package/dist/esm/react/node_modules/viem/_esm/utils/typedData.js +0 -80
- package/dist/esm/react/shared-ts/src/authorization/capabilityKinds.js +0 -111
- package/dist/esm/react/shared-ts/src/authorization/delegatedAuthority.js +0 -121
- package/dist/esm/react/shared-ts/src/authorization/index.js +0 -6
- package/dist/esm/react/shared-ts/src/authorization/operationFingerprint.js +0 -57
- package/dist/esm/react/shared-ts/src/authorization/walletAuthority.js +0 -719
- package/dist/esm/react/shared-ts/src/authorization/walletCustodyOperation.js +0 -16
- package/dist/esm/react/shared-ts/src/authorization/walletSessionIssuance.js +0 -118
- package/dist/esm/react/shared-ts/src/device-linking/activeWalletSession.js +0 -104
- package/dist/esm/react/shared-ts/src/device-linking/authorityActivation.js +0 -142
- package/dist/esm/react/shared-ts/src/device-linking/committedSignerPackages.js +0 -273
- package/dist/esm/react/shared-ts/src/device-linking/contracts.js +0 -8
- package/dist/esm/react/shared-ts/src/device-linking/delegatedActivationPlan.js +0 -134
- package/dist/esm/react/shared-ts/src/device-linking/deviceManagement.js +0 -120
- package/dist/esm/react/shared-ts/src/device-linking/digests.js +0 -115
- package/dist/esm/react/shared-ts/src/device-linking/ed25519ExportRoot.js +0 -171
- package/dist/esm/react/shared-ts/src/device-linking/index.js +0 -12
- package/dist/esm/react/shared-ts/src/device-linking/parsers.js +0 -1029
- package/dist/esm/react/shared-ts/src/device-linking/requestProof.js +0 -25
- package/dist/esm/react/shared-ts/src/device-linking/sourceContribution.js +0 -545
- package/dist/esm/react/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +0 -173
- package/dist/esm/react/shared-ts/src/device-linking/wireFields.js +0 -59
- package/dist/esm/react/shared-ts/src/near/actions.js +0 -236
- package/dist/esm/react/shared-ts/src/near/nearClient.js +0 -252
- package/dist/esm/react/shared-ts/src/passkey-custody/ceremonyCommitPayload.js +0 -43
- package/dist/esm/react/shared-ts/src/passkey-custody/custodyEnvelope.js +0 -278
- package/dist/esm/react/shared-ts/src/passkey-custody/custodySecretBinding.js +0 -181
- package/dist/esm/react/shared-ts/src/passkey-custody/index.js +0 -4
- package/dist/esm/react/shared-ts/src/passkey-custody/primitives.js +0 -58
- package/dist/esm/react/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +0 -49
- package/dist/esm/react/shared-ts/src/signing-lanes/index.js +0 -8
- package/dist/esm/react/shared-ts/src/signing-lanes/ownerContinuity.js +0 -66
- package/dist/esm/react/shared-ts/src/signing-lanes/participantDigest.js +0 -2
- package/dist/esm/react/shared-ts/src/signing-lanes/participants.js +0 -256
- package/dist/esm/react/shared-ts/src/signing-lanes/recordParsers.js +0 -483
- package/dist/esm/react/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
- package/dist/esm/react/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
- package/dist/esm/react/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
- package/dist/esm/react/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
- package/dist/esm/react/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -39
- package/dist/esm/react/shared-ts/src/threshold/ed25519OperationFingerprint.js +0 -222
- package/dist/esm/react/shared-ts/src/threshold/keyMaterialBrands.js +0 -25
- package/dist/esm/react/shared-ts/src/threshold/participants.js +0 -67
- package/dist/esm/react/shared-ts/src/threshold/secp256k1.js +0 -6
- package/dist/esm/react/shared-ts/src/threshold/sessionPolicy.js +0 -8
- package/dist/esm/react/shared-ts/src/threshold/signingRootScope.js +0 -40
- package/dist/esm/react/shared-ts/src/utils/addAuthMethodRegistration.js +0 -103
- package/dist/esm/react/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
- package/dist/esm/react/shared-ts/src/utils/authenticatorOptions.js +0 -22
- package/dist/esm/react/shared-ts/src/utils/base58.js +0 -28
- package/dist/esm/react/shared-ts/src/utils/base64.js +0 -70
- package/dist/esm/react/shared-ts/src/utils/canonicalPrimitives.js +0 -38
- package/dist/esm/react/shared-ts/src/utils/digestEncoding.js +0 -63
- package/dist/esm/react/shared-ts/src/utils/digests.js +0 -33
- package/dist/esm/react/shared-ts/src/utils/domainIds.js +0 -257
- package/dist/esm/react/shared-ts/src/utils/ecdsaCapabilityActivation.js +0 -67
- package/dist/esm/react/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -46
- package/dist/esm/react/shared-ts/src/utils/ecdsaServerTiming.js +0 -39
- package/dist/esm/react/shared-ts/src/utils/emailOtpDomain.js +0 -28
- package/dist/esm/react/shared-ts/src/utils/emailOtpRecoveryKey.js +0 -65
- package/dist/esm/react/shared-ts/src/utils/encoders.js +0 -2
- package/dist/esm/react/shared-ts/src/utils/errors.js +0 -95
- package/dist/esm/react/shared-ts/src/utils/evmRpcResults.js +0 -101
- package/dist/esm/react/shared-ts/src/utils/exactRecord.js +0 -44
- package/dist/esm/react/shared-ts/src/utils/index.js +0 -38
- package/dist/esm/react/shared-ts/src/utils/jsonRpc.js +0 -64
- package/dist/esm/react/shared-ts/src/utils/keccak.js +0 -150
- package/dist/esm/react/shared-ts/src/utils/near.js +0 -205
- package/dist/esm/react/shared-ts/src/utils/nearRpcResults.js +0 -205
- package/dist/esm/react/shared-ts/src/utils/normalize.js +0 -86
- package/dist/esm/react/shared-ts/src/utils/registrationAuthMethodInput.js +0 -84
- package/dist/esm/react/shared-ts/src/utils/registrationEstablishedSession.js +0 -275
- package/dist/esm/react/shared-ts/src/utils/registrationIds.js +0 -226
- package/dist/esm/react/shared-ts/src/utils/registrationIntent.js +0 -396
- package/dist/esm/react/shared-ts/src/utils/registrationSignerPlan.js +0 -442
- package/dist/esm/react/shared-ts/src/utils/routerAbEcdsaDerivation.js +0 -1334
- package/dist/esm/react/shared-ts/src/utils/routerAbEd25519Yao.js +0 -747
- package/dist/esm/react/shared-ts/src/utils/routerAbEd25519YaoDigests.js +0 -76
- package/dist/esm/react/shared-ts/src/utils/routerAbNormalSigningIdentity.js +0 -115
- package/dist/esm/react/shared-ts/src/utils/routerAbPublicKeyset.js +0 -11
- package/dist/esm/react/shared-ts/src/utils/routerAbTraceContext.js +0 -36
- package/dist/esm/react/shared-ts/src/utils/secureRandomId.js +0 -35
- package/dist/esm/react/shared-ts/src/utils/signerDomain.js +0 -37
- package/dist/esm/react/shared-ts/src/utils/signerSlot.js +0 -12
- package/dist/esm/react/shared-ts/src/utils/signingSessionSeal.js +0 -98
- package/dist/esm/react/shared-ts/src/utils/theme.js +0 -8
- package/dist/esm/react/shared-ts/src/utils/thresholdEcdsaKeyHandle.js +0 -28
- package/dist/esm/react/shared-ts/src/utils/validation.js +0 -92
- package/dist/esm/react/shared-ts/src/utils/walletAddSignerActivation.js +0 -32
- package/dist/esm/react/shared-ts/src/utils/walletAuthAuthority.js +0 -224
- package/dist/esm/react/shared-ts/src/utils/walletAuthMethodRecord.js +0 -357
- package/dist/esm/react/shared-ts/src/utils/walletCapabilityBindings.js +0 -277
- package/dist/esm/react/shared-ts/src/utils/walletSessionFailure.js +0 -28
- package/dist/esm/react/shared-ts/src/utils/webauthnDeviceInfo.js +0 -50
- package/dist/esm/react/shared-ts/src/utils/wireSchema.js +0 -66
- package/dist/esm/react/shared-ts/src/wallet-recovery/index.js +0 -10
- package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeIssuance.js +0 -35
- package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -34
- package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +0 -24
- package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodes.js +0 -3
- package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -14
- package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +0 -254
- package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +0 -153
- package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +0 -84
- package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryRotation.js +0 -64
- package/dist/esm/react/theme/base-styles.js +0 -117
- package/dist/esm/react/theme/palette.js +0 -170
- package/dist/esm/react/utils/deviceDetection.js +0 -95
- package/dist/esm/react/utils/intentDigest.js +0 -77
- package/dist/esm/react/utils/qrScanner.js +0 -297
- package/dist/esm/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
- package/dist/esm/sdk/EvmClient-f3gUhS2L.js +0 -644
- package/dist/esm/sdk/NearClient-DY4NfHeD.js +0 -402
- package/dist/esm/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
- package/dist/esm/sdk/accountIds-DhIPGOSN.js +0 -23
- package/dist/esm/sdk/accountLifecycle-BAGG_rbk.js +0 -1341
- package/dist/esm/sdk/actions-CCvThiKe.js +0 -225
- package/dist/esm/sdk/adapters-B4JeK1nJ.js +0 -4864
- package/dist/esm/sdk/base-D1B5mGin.js +0 -64
- package/dist/esm/sdk/base64-Clm8C-e9.js +0 -68
- package/dist/esm/sdk/browser-D6eZGhzE.js +0 -2393
- package/dist/esm/sdk/bytes-qKxKn4gg.js +0 -40
- package/dist/esm/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
- package/dist/esm/sdk/canonicalSignerErrorCode-CRoJMVpp.js +0 -153
- package/dist/esm/sdk/capabilityKinds-hvYqa6S_.js +0 -109
- package/dist/esm/sdk/chains-BMh3btVo.js +0 -124
- package/dist/esm/sdk/challengeDelivery-Dd0586fo.js +0 -74
- package/dist/esm/sdk/chunk-BtrIJ4_z.js +0 -33
- package/dist/esm/sdk/configHelpers-vAQCzUD0.js +0 -179
- package/dist/esm/sdk/csp-stylesheet-btENhsNp.js +0 -215
- package/dist/esm/sdk/defaultConfigs-B3c16M_8.js +0 -355
- package/dist/esm/sdk/display-KdIL0ff7.js +0 -126
- package/dist/esm/sdk/domainIds-lcrFg6Sa.js +0 -338
- package/dist/esm/sdk/ecdsaCapabilityManifest-kzO_fW09.js +0 -817
- package/dist/esm/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
- package/dist/esm/sdk/ecdsaPresignLifecycle-BFOTNYCK.js +0 -1983
- package/dist/esm/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
- package/dist/esm/sdk/ecdsaWalletRecords-Cz4m6bIz.js +0 -18
- package/dist/esm/sdk/encoders-D8d07vpx.js +0 -0
- package/dist/esm/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
- package/dist/esm/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
- package/dist/esm/sdk/errors-93h9uAW9.js +0 -92
- package/dist/esm/sdk/events-DYoBL2HO.js +0 -8
- package/dist/esm/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
- package/dist/esm/sdk/evmFamilyEcdsaIdentity-Co5XDcEA.js +0 -4288
- package/dist/esm/sdk/exactSessionState-CiD5fBEs.js +0 -2612
- package/dist/esm/sdk/exactSigningLaneIdentity-DQeqPMST.js +0 -335
- package/dist/esm/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
- package/dist/esm/sdk/export-viewer-host-ZqA2Yz3H.js +0 -204
- package/dist/esm/sdk/helpers-ZrowMnev.js +0 -302
- package/dist/esm/sdk/host-BWBbCAMu.js +0 -533
- package/dist/esm/sdk/intentDigest-CvOSNlCH.js +0 -75
- package/dist/esm/sdk/jsonRpc-VVkaQkFD.js +0 -62
- package/dist/esm/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
- package/dist/esm/sdk/keccak-DUL3d8SF.js +0 -148
- package/dist/esm/sdk/keyMaterialBrands-CX41hur6.js +0 -94
- package/dist/esm/sdk/localOnly-Bg8UuLZ5.js +0 -146
- package/dist/esm/sdk/messages-C7Dbx9iN.js +0 -594
- package/dist/esm/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DPb0s3hQ.js +0 -4008
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-BeD-SmbK.js +0 -405
- package/dist/esm/sdk/nearRpcResults-DoUgDATm.js +0 -216
- package/dist/esm/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
- package/dist/esm/sdk/normalization-CBt413-z.js +0 -22
- package/dist/esm/sdk/operationFingerprint-C8Trar4R.js +0 -929
- package/dist/esm/sdk/operationFingerprint-CGZui5dR.js +0 -55
- package/dist/esm/sdk/passkey-custody-Bk1jAknm.js +0 -487
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-DLzBb3WQ.js +0 -237
- package/dist/esm/sdk/prfCache-wqQSjYLn.js +0 -58
- package/dist/esm/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
- package/dist/esm/sdk/promptText-CuRa_ivd.js +0 -32
- package/dist/esm/sdk/recovery-entrypoint-DW2tGyMs.js +0 -779
- package/dist/esm/sdk/registration-BZDzDv91.js +0 -14414
- package/dist/esm/sdk/registration-BzVHODuD.js +0 -233
- package/dist/esm/sdk/registrationAccounts-CKku_Sgy.js +0 -33
- package/dist/esm/sdk/registrationIds-DLSdEKSv.js +0 -310
- package/dist/esm/sdk/registrationIntent-D0PxwEY4.js +0 -393
- package/dist/esm/sdk/registrationPreparationPreload-CIAuRlxI.js +0 -13
- package/dist/esm/sdk/registrationSignerPlan-CAikVZZQ.js +0 -440
- package/dist/esm/sdk/relayerHttp-VC8Holz1.js +0 -24
- package/dist/esm/sdk/routePlan-D59x5xzQ.js +0 -83
- package/dist/esm/sdk/router-C5lF_J_u.js +0 -4721
- package/dist/esm/sdk/routerAbNormalSigning-fhvpDtmY.js +0 -992
- package/dist/esm/sdk/runtime-auth-DFTqwj3u.js +0 -5540
- package/dist/esm/sdk/runtime-device-link-C1Oub8Lw.js +0 -259
- package/dist/esm/sdk/runtime-ecdsa-tempo-rkWwolw1.js +0 -177
- package/dist/esm/sdk/runtime-email-otp-vuUG5LYl.js +0 -320
- package/dist/esm/sdk/runtime-export-FZWj0HxJ.js +0 -112
- package/dist/esm/sdk/runtime-near-B9cjurVD.js +0 -278
- package/dist/esm/sdk/runtime-preferences-Dq0bfyS5.js +0 -67
- package/dist/esm/sdk/runtime-recovery-C-vfFKF3.js +0 -45
- package/dist/esm/sdk/runtime-recovery-codes-bTm3fLV4.js +0 -95
- package/dist/esm/sdk/runtimeContext-iLXnxVlZ.js +0 -44443
- package/dist/esm/sdk/runtimeLoader-hod6T2-m.js +0 -44
- package/dist/esm/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
- package/dist/esm/sdk/secp256k1-el9aE4Sv.js +0 -2504
- package/dist/esm/sdk/secureRandomId-BORsmdS4.js +0 -33
- package/dist/esm/sdk/sessionPolicy-CHiilOAB.js +0 -453
- package/dist/esm/sdk/shared-DkbeLCI3.js +0 -33
- package/dist/esm/sdk/signEvmFamily-e4IWWsZs.js +0 -4666
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-Cu9qdk8M.js +0 -226
- package/dist/esm/sdk/signEvmWithUiConfirm-C61TCBnh.js +0 -27
- package/dist/esm/sdk/signNear-Bblwn2kT.js +0 -5929
- package/dist/esm/sdk/signatureUses-BkGyYt8F.js +0 -51
- package/dist/esm/sdk/signerDomain-IEAVrOrc.js +0 -59
- package/dist/esm/sdk/signerLoader-D7Aey0FD.js +0 -23
- package/dist/esm/sdk/signerSlot-_ovonwVX.js +0 -10
- package/dist/esm/sdk/signingFlow-rZfPegH9.js +0 -1320
- package/dist/esm/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
- package/dist/esm/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
- package/dist/esm/sdk/trace-rHe0wz7q.js +0 -127
- package/dist/esm/sdk/transaction-activity-CSMCveBn.js +0 -218
- package/dist/esm/sdk/transactionReview-DpHLTznU.js +0 -100
- package/dist/esm/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
- package/dist/esm/sdk/transactionState-DP9O8F6f.js +0 -1885
- package/dist/esm/sdk/types-Dx9fczU7.js +0 -111
- package/dist/esm/sdk/validation-gat4LEKm.js +0 -409
- package/dist/esm/sdk/wallet-recovery-Bz9qKgaL.js +0 -1905
- package/dist/esm/sdk/walletAuthority-BQBxgUBn.js +0 -1251
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-Hn4ORIbf.js +0 -11130
- package/dist/esm/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
- package/dist/esm/sdk/walletRecoveryCommit-sjGNTHUj.js +0 -2159
- package/dist/esm/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
- package/dist/esm/sdk/warmSessionHydration-Os8niEm7.js +0 -7
- package/dist/esm/sdk/webauthnP256-DC5EIbKN.js +0 -82
- package/dist/esm/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
- package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
- package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
- package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
- package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
- package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
- package/dist/esm/styles.css +0 -43
- package/dist/public/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
- package/dist/public/sdk/EvmClient-f3gUhS2L.js +0 -644
- package/dist/public/sdk/NearClient-DY4NfHeD.js +0 -402
- package/dist/public/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
- package/dist/public/sdk/accountIds-DhIPGOSN.js +0 -23
- package/dist/public/sdk/accountLifecycle-BAGG_rbk.js +0 -1341
- package/dist/public/sdk/actions-CCvThiKe.js +0 -225
- package/dist/public/sdk/adapters-B4JeK1nJ.js +0 -4864
- package/dist/public/sdk/base-D1B5mGin.js +0 -64
- package/dist/public/sdk/base64-Clm8C-e9.js +0 -68
- package/dist/public/sdk/browser-D6eZGhzE.js +0 -2393
- package/dist/public/sdk/bytes-qKxKn4gg.js +0 -40
- package/dist/public/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
- package/dist/public/sdk/canonicalSignerErrorCode-CRoJMVpp.js +0 -153
- package/dist/public/sdk/capabilityKinds-hvYqa6S_.js +0 -109
- package/dist/public/sdk/chains-BMh3btVo.js +0 -124
- package/dist/public/sdk/challengeDelivery-Dd0586fo.js +0 -74
- package/dist/public/sdk/chunk-BtrIJ4_z.js +0 -33
- package/dist/public/sdk/configHelpers-vAQCzUD0.js +0 -179
- package/dist/public/sdk/csp-stylesheet-btENhsNp.js +0 -215
- package/dist/public/sdk/defaultConfigs-B3c16M_8.js +0 -355
- package/dist/public/sdk/display-KdIL0ff7.js +0 -126
- package/dist/public/sdk/domainIds-lcrFg6Sa.js +0 -338
- package/dist/public/sdk/ecdsaCapabilityManifest-kzO_fW09.js +0 -817
- package/dist/public/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
- package/dist/public/sdk/ecdsaPresignLifecycle-BFOTNYCK.js +0 -1983
- package/dist/public/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
- package/dist/public/sdk/ecdsaWalletRecords-Cz4m6bIz.js +0 -18
- package/dist/public/sdk/encoders-D8d07vpx.js +0 -0
- package/dist/public/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
- package/dist/public/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
- package/dist/public/sdk/errors-93h9uAW9.js +0 -92
- package/dist/public/sdk/events-DYoBL2HO.js +0 -8
- package/dist/public/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
- package/dist/public/sdk/evmFamilyEcdsaIdentity-Co5XDcEA.js +0 -4288
- package/dist/public/sdk/exactSessionState-CiD5fBEs.js +0 -2612
- package/dist/public/sdk/exactSigningLaneIdentity-DQeqPMST.js +0 -335
- package/dist/public/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
- package/dist/public/sdk/export-viewer-host-ZqA2Yz3H.js +0 -204
- package/dist/public/sdk/helpers-ZrowMnev.js +0 -302
- package/dist/public/sdk/host-BWBbCAMu.js +0 -533
- package/dist/public/sdk/intentDigest-CvOSNlCH.js +0 -75
- package/dist/public/sdk/jsonRpc-VVkaQkFD.js +0 -62
- package/dist/public/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
- package/dist/public/sdk/keccak-DUL3d8SF.js +0 -148
- package/dist/public/sdk/keyMaterialBrands-CX41hur6.js +0 -94
- package/dist/public/sdk/localOnly-Bg8UuLZ5.js +0 -146
- package/dist/public/sdk/messages-C7Dbx9iN.js +0 -594
- package/dist/public/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-DPb0s3hQ.js +0 -4008
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-BeD-SmbK.js +0 -405
- package/dist/public/sdk/nearRpcResults-DoUgDATm.js +0 -216
- package/dist/public/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
- package/dist/public/sdk/normalization-CBt413-z.js +0 -22
- package/dist/public/sdk/operationFingerprint-C8Trar4R.js +0 -929
- package/dist/public/sdk/operationFingerprint-CGZui5dR.js +0 -55
- package/dist/public/sdk/passkey-custody-Bk1jAknm.js +0 -487
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-DLzBb3WQ.js +0 -237
- package/dist/public/sdk/prfCache-wqQSjYLn.js +0 -58
- package/dist/public/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
- package/dist/public/sdk/promptText-CuRa_ivd.js +0 -32
- package/dist/public/sdk/recovery-entrypoint-DW2tGyMs.js +0 -779
- package/dist/public/sdk/registration-BZDzDv91.js +0 -14414
- package/dist/public/sdk/registration-BzVHODuD.js +0 -233
- package/dist/public/sdk/registrationAccounts-CKku_Sgy.js +0 -33
- package/dist/public/sdk/registrationIds-DLSdEKSv.js +0 -310
- package/dist/public/sdk/registrationIntent-D0PxwEY4.js +0 -393
- package/dist/public/sdk/registrationPreparationPreload-CIAuRlxI.js +0 -13
- package/dist/public/sdk/registrationSignerPlan-CAikVZZQ.js +0 -440
- package/dist/public/sdk/relayerHttp-VC8Holz1.js +0 -24
- package/dist/public/sdk/routePlan-D59x5xzQ.js +0 -83
- package/dist/public/sdk/router-C5lF_J_u.js +0 -4721
- package/dist/public/sdk/routerAbNormalSigning-fhvpDtmY.js +0 -992
- package/dist/public/sdk/runtime-auth-DFTqwj3u.js +0 -5540
- package/dist/public/sdk/runtime-device-link-C1Oub8Lw.js +0 -259
- package/dist/public/sdk/runtime-ecdsa-tempo-rkWwolw1.js +0 -177
- package/dist/public/sdk/runtime-email-otp-vuUG5LYl.js +0 -320
- package/dist/public/sdk/runtime-export-FZWj0HxJ.js +0 -112
- package/dist/public/sdk/runtime-near-B9cjurVD.js +0 -278
- package/dist/public/sdk/runtime-preferences-Dq0bfyS5.js +0 -67
- package/dist/public/sdk/runtime-recovery-C-vfFKF3.js +0 -45
- package/dist/public/sdk/runtime-recovery-codes-bTm3fLV4.js +0 -95
- package/dist/public/sdk/runtimeContext-iLXnxVlZ.js +0 -44443
- package/dist/public/sdk/runtimeLoader-hod6T2-m.js +0 -44
- package/dist/public/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
- package/dist/public/sdk/secp256k1-el9aE4Sv.js +0 -2504
- package/dist/public/sdk/secureRandomId-BORsmdS4.js +0 -33
- package/dist/public/sdk/sessionPolicy-CHiilOAB.js +0 -453
- package/dist/public/sdk/shared-DkbeLCI3.js +0 -33
- package/dist/public/sdk/signEvmFamily-e4IWWsZs.js +0 -4666
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-Cu9qdk8M.js +0 -226
- package/dist/public/sdk/signEvmWithUiConfirm-C61TCBnh.js +0 -27
- package/dist/public/sdk/signNear-Bblwn2kT.js +0 -5929
- package/dist/public/sdk/signatureUses-BkGyYt8F.js +0 -51
- package/dist/public/sdk/signerDomain-IEAVrOrc.js +0 -59
- package/dist/public/sdk/signerLoader-D7Aey0FD.js +0 -23
- package/dist/public/sdk/signerSlot-_ovonwVX.js +0 -10
- package/dist/public/sdk/signingFlow-rZfPegH9.js +0 -1320
- package/dist/public/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
- package/dist/public/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
- package/dist/public/sdk/trace-rHe0wz7q.js +0 -127
- package/dist/public/sdk/transaction-activity-CSMCveBn.js +0 -218
- package/dist/public/sdk/transactionReview-DpHLTznU.js +0 -100
- package/dist/public/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
- package/dist/public/sdk/transactionState-DP9O8F6f.js +0 -1885
- package/dist/public/sdk/types-Dx9fczU7.js +0 -111
- package/dist/public/sdk/validation-gat4LEKm.js +0 -409
- package/dist/public/sdk/wallet-recovery-Bz9qKgaL.js +0 -1905
- package/dist/public/sdk/walletAuthority-BQBxgUBn.js +0 -1251
- package/dist/public/sdk/walletCustodyEcdsaContinuity-Hn4ORIbf.js +0 -11130
- package/dist/public/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
- package/dist/public/sdk/walletRecoveryCommit-sjGNTHUj.js +0 -2159
- package/dist/public/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
- package/dist/public/sdk/warmSessionHydration-Os8niEm7.js +0 -7
- package/dist/public/sdk/webauthnP256-DC5EIbKN.js +0 -82
- package/dist/public/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
- package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
- package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
- package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
- package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
- package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/webauthn-bridge.d.ts +0 -3
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.d.ts +0 -52
- package/dist/types/wallet/src/core/signingEngine/interfaces/nearKeyOps.d.ts +0 -15
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/coordinatorRuntime.d.ts +0 -43
- package/dist/types/wallet/src/core/signingEngine/session/holderShares/forbiddenHolderSharePayloads.typecheck.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/holderShares/holderShareHandle.d.ts +0 -6
- package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.typecheck.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/activationCoordinator.d.ts +0 -37
- package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/laneMaterialInvalidation.d.ts +0 -23
- package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/operations.typecheck.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/recipientPreparation.d.ts +0 -55
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.typecheck.d.ts +0 -6
- package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaLaneWasm.d.ts +0 -4
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.d.ts +0 -44
- package/dist/types/wallet/src/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.d.ts +0 -4
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/ecdsaLaneHolderWorkerRuntime.d.ts +0 -20
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/passkeyCustodyLink.d.ts +0 -18
- /package/dist/esm/{react/SeamsWeb → SeamsWeb}/assembly/preconnectWalletAssets.js +0 -0
|
@@ -1,3908 +0,0 @@
|
|
|
1
|
-
import { base58Encode } from "../../shared-ts/src/utils/base58.js";
|
|
2
|
-
import { base64UrlDecode, base64UrlEncode } from "../../shared-ts/src/utils/base64.js";
|
|
3
|
-
import { secureRandomId } from "../../shared-ts/src/utils/secureRandomId.js";
|
|
4
|
-
import { sha256HexUtf8 } from "../../shared-ts/src/utils/digests.js";
|
|
5
|
-
import { buildThresholdEd25519Participants2pV1 } from "../../shared-ts/src/threshold/participants.js";
|
|
6
|
-
import { signingRootScopeFromRuntimePolicyScope } from "../../shared-ts/src/threshold/signingRootScope.js";
|
|
7
|
-
import { DEFAULT_THRESHOLD_SESSION_POLICY, DEFAULT_UNLOCK_REMAINING_USES } from "../../core/signingEngine/threshold/sessionPolicy.js";
|
|
8
|
-
import { ROUTER_AB_ED25519_NORMAL_SIGNING_STATE_KIND, SIGNING_SESSION_SEAL_GROUP_ID } from "../../shared-ts/src/utils/signingSessionSeal.js";
|
|
9
|
-
import { mpcMaterialActivationRefsEqual, parseThresholdEd25519SessionId, parseWalletId } from "../../shared-ts/src/utils/domainIds.js";
|
|
10
|
-
import { routerAbMpcMaterialActivationRefFromWire } from "../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
|
|
11
|
-
import { parseWalletSessionAuthorizationId, parseWalletSessionMintId } from "../../shared-ts/src/authorization/capabilityKinds.js";
|
|
12
|
-
import { activeWalletSessionV1RecordsEqual } from "../../shared-ts/src/device-linking/activeWalletSession.js";
|
|
13
|
-
import { isEmailOtpWalletAuthAuthority, parseWalletAuthAuthorityRef, walletAuthAuthorityRef } from "../../shared-ts/src/utils/walletAuthAuthority.js";
|
|
14
|
-
import { WALLET_EMAIL_OTP_UNLOCK_OPERATION } from "../../shared-ts/src/utils/emailOtpDomain.js";
|
|
15
|
-
import { WALLET_AUTH_METHODS } from "../../shared-ts/src/utils/signerDomain.js";
|
|
16
|
-
import { SigningSessionIds } from "../../core/signingEngine/session/operationState/types.js";
|
|
17
|
-
import { nearEd25519SigningKeyIdFromString } from "../../shared-ts/src/utils/registrationIds.js";
|
|
18
|
-
import { toWalletId } from "../../core/signingEngine/interfaces/ecdsaChainTarget.js";
|
|
19
|
-
import { exactEd25519ExportMaterialIdentity } from "../../core/signingEngine/session/identity/exactSigningLaneIdentity.js";
|
|
20
|
-
import { parseSignerSlot } from "../../shared-ts/src/utils/signerSlot.js";
|
|
21
|
-
import { buildRouterAbEd25519SigningWalletSession } from "../../core/signingEngine/session/routerAbSigningWalletSession.js";
|
|
22
|
-
import { toAccountId } from "../../core/types/accountIds.js";
|
|
23
|
-
import { parseSigningSessionSealKeyVersion } from "../../shared-ts/src/threshold/keyMaterialBrands.js";
|
|
24
|
-
import { listExactSealedSessionsForWallet, readExactEd25519SealedSession } from "../../core/signingEngine/session/persistence/sealedSessionStore.js";
|
|
25
|
-
import { buildAuthorizationRequiredNearEd25519YaoSigningPreparation, buildAuthorizedNearEd25519YaoSigningPreparation, classifyNearEd25519WalletSessionAuthorization, nearEd25519SessionMatchesMaterialActivation } from "../../core/signingEngine/session/material/nearEd25519YaoSigningPreparation.js";
|
|
26
|
-
import { ed25519SealedRuntimeAuthorityRef, parseExactEd25519SealedSessionRuntime, resolveExactEd25519SealedSessionRuntimeForLane, resolveExactEd25519SealedSessionRuntimeForWalletSubject } from "../../core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.js";
|
|
27
|
-
import { buildEmailOtpRouterAbEd25519WalletSessionState, buildPasskeyRouterAbEd25519WalletSessionState, nearEd25519YaoOperationMaterialFacts, rebindRouterAbEd25519WalletSessionStateFromExactRuntime } from "../../core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.js";
|
|
28
|
-
import { isWalletCustodySeedBinding } from "../../shared-ts/src/passkey-custody/custodySecretBinding.js";
|
|
29
|
-
import "../../shared-ts/src/passkey-custody/index.js";
|
|
30
|
-
import { ROUTER_AB_ED25519_YAO_EMAIL_OTP_RECOVERY_BOOTSTRAP_KIND_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_EXECUTE_PATH_V1 } from "../../shared-ts/src/utils/routerAbEd25519Yao.js";
|
|
31
|
-
import "../../shared-ts/src/device-linking/index.js";
|
|
32
|
-
import { createNearProvisioningStateChangedEvent } from "../../core/types/sdkSentEvents.js";
|
|
33
|
-
import { WalletSessionStatusReadScope, createRelayerExactWalletSessionStatusPort } from "../../core/rpcClients/relayer/walletSessionAuthorizationStatus.js";
|
|
34
|
-
import { subscribeToNearProvisioning } from "../../core/signingEngine/flows/registration/nearProvisioningRegistry.js";
|
|
35
|
-
import { publishEd25519YaoPublicCapabilityReferenceAndLane, readEmailOtpProviderSubjectForWalletV1 } from "../../core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.js";
|
|
36
|
-
import { Ed25519YaoPageLifecycleOwner } from "../../core/signingEngine/threshold/ed25519/yaoPageLifecycleOwner.js";
|
|
37
|
-
import { establishEvmFamilyCustodyV1, establishNearEd25519CustodyV1, joinEvmFamilyCustodyV1, joinNearEd25519CustodyV1, rejoinEvmFamilyCustodyV1, rejoinNearEd25519CustodyV1 } from "../../core/signingEngine/walletCustody/registrationCeremony.js";
|
|
38
|
-
import { requestWalletCustodyCeremonyOperation, walletCustodyCeremonyStepRunner } from "../../core/signingEngine/walletCustody/ceremonyStepRunner.js";
|
|
39
|
-
import { RouterAbEd25519YaoHttpActivationTransportV1 } from "../../core/signingEngine/threshold/ed25519/yaoClient.js";
|
|
40
|
-
import { walletCustodyEd25519ActiveClientMetadataV1, walletRecoveryEd25519ActiveClientMetadataV1 } from "../../core/signingEngine/walletCustody/ceremonyActiveClientMetadata.js";
|
|
41
|
-
import { activateWalletRecoveryEd25519V1, admitWalletRecoveryEd25519V1, buildWalletSessionEd25519RecoveryAdmissionRequestV1, executeWalletRecoveryEd25519RoundV1 } from "../../core/signingEngine/walletCustody/walletRecoveryEd25519.js";
|
|
42
|
-
import { clearLinkedDeviceEcdsaHolderMaterialsWasm, destroyLinkedDeviceEcdsaHolderMaterialsWasm, openEcdsaRoleLocalSigningMaterialWasm } from "../../core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js";
|
|
43
|
-
import { recoverWalletCustodyManifestV1 } from "../../core/signingEngine/walletCustody/walletRecoveryManifest.js";
|
|
44
|
-
import { deleteWalletCustodyEd25519MaterialV1, loadWalletCustodyEd25519MaterialV1, persistWalletCustodyEd25519MaterialV1 } from "../../core/signingEngine/walletCustody/ed25519SeedMaterial.js";
|
|
45
|
-
import { NEAR_ED25519_YAO_KEY_VERSION_V1 } from "../../shared-ts/src/utils/registrationSignerPlan.js";
|
|
46
|
-
import { WalletSessionAuthorizationUpgradeRequiredError, walletSessionAuthorizations } from "../../core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js";
|
|
47
|
-
import { IndexedDBManager } from "../../core/indexedDB/index.js";
|
|
48
|
-
import { redactedPasskeyRegistrationCredential, serializeRegistrationCredentialWithPRF } from "../../core/signingEngine/webauthnAuth/credentials/helpers.js";
|
|
49
|
-
import { IndexedDbEcdsaCapabilityManifestStore } from "../../core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js";
|
|
50
|
-
import { importWalletCustodyEcdsaContinuity } from "../../core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js";
|
|
51
|
-
import { clearLinkedEcdsaHolderRuntimesV1, listLinkedEcdsaHolderRuntimesV1, removeLinkedEcdsaHolderRuntimeV1, resolveLinkedEcdsaHolderRuntimeV1 } from "../../core/signingEngine/session/material/linkedEcdsaHolderRuntime.js";
|
|
52
|
-
import { SigningAuthPlanKind } from "../../core/signingEngine/stepUpConfirmation/types.js";
|
|
53
|
-
import { fullWalletLoginRequired, invalidWalletSigningMaterial, isWalletSigningStateFailure, walletSigningMaterialBlockError } from "../../core/signingEngine/session/material/walletSigningStateFailure.js";
|
|
54
|
-
import { buildBlockedMpcCapabilityHydrationPlan, buildRehydrateMaterialActivationHydrationPlan, buildUseLiveRuntimeHydrationPlan } from "../../core/signingEngine/session/material/mpcCapabilityHydration.js";
|
|
55
|
-
import { nearEd25519YaoMaterialActivationFromMetadata, nearEd25519YaoRuntimeRef, resolveNearEd25519YaoCapabilityHydrationV1 } from "../../core/signingEngine/session/material/nearEd25519YaoMaterialActivation.js";
|
|
56
|
-
import { buildThresholdEd25519WebAuthnPrfSecretSource } from "../../core/signingEngine/threshold/ed25519/walletSession.js";
|
|
57
|
-
import { resolveThresholdEd25519CommitQueueKey, withThresholdEd25519CommitQueue } from "../../core/signingEngine/threshold/ed25519/commitQueue.js";
|
|
58
|
-
import { isConcreteAvailableSigningLane } from "../../core/signingEngine/session/availability/availableSigningLanes.js";
|
|
59
|
-
import { signNear } from "../../core/signingEngine/flows/signNear/signNear.js";
|
|
60
|
-
import { ed25519DurableMaterialLocator } from "../../core/signingEngine/session/sealedRecovery/materialActivationKey.js";
|
|
61
|
-
import { resolvePasskeyEd25519YaoExportContextV1 } from "../../core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js";
|
|
62
|
-
import { ed25519YaoLocalMaterialIdentityFromWalletSession, hydratePasskeyEd25519YaoLocalMaterialV1, preparePasskeyEd25519YaoLocalMaterialRehydrationV1, readPasskeyEd25519YaoLocalMaterialLocatorV1 } from "../../core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js";
|
|
63
|
-
import { buildPasskeyEd25519RestoreMetadata, persistPasskeyEd25519YaoSessionForRefresh } from "../../core/signingEngine/session/passkey/ed25519YaoSealedSession.js";
|
|
64
|
-
import { buildRestorableMpcMaterialRefForHydration } from "../../core/signingEngine/session/material/ecdsaCapabilityHydration.js";
|
|
65
|
-
import { readOwnerWalletExecutionLaneProjectionV1 } from "../../core/rpcClients/relayer/ownerWalletExecutionLanePreflight.js";
|
|
66
|
-
import { hydrateWalletExecutionLane } from "../../core/signingEngine/session/lanes/walletExecutionLaneHydration.js";
|
|
67
|
-
import { storeNearThresholdKeyMaterial } from "../../core/accountData/near/keyMaterial.js";
|
|
68
|
-
import { persistVerifiedEmailOtpAuthorityAfterUnlock, walletAuthAuthorityRefForVerifiedEmailOtpUnlock } from "../operations/authMethods/emailOtp/walletActivation.js";
|
|
69
|
-
import { isRetryableSealedRefreshCapabilityFetchError } from "../../core/signingEngine/session/warmCapabilities/sealedRefreshParity.js";
|
|
70
|
-
import { buildExactEcdsaPasskeyOwnerLaneScope, buildExactLinkedEmailOtpOwnerLaneScope, buildExactPasskeyOwnerLaneScope, resolveExactOwnerLaneScope, resolveExactWalletAuthAuthority } from "../../core/signingEngine/session/identity/ownerLaneScope.js";
|
|
71
|
-
import { buildFreshEmailOtpRoutePlan } from "../../core/signingEngine/session/emailOtp/routePlan.js";
|
|
72
|
-
import { clearThresholdEcdsaSigningQueue, withThresholdEcdsaSigningQueue } from "../../core/signingEngine/threshold/ecdsa/signingQueue.js";
|
|
73
|
-
import { reconcileTempoNonceLane, reportTempoBroadcastAccepted, reportTempoBroadcastRejected, reportTempoDroppedOrReplaced, reportTempoFinalized, signEvmFamily } from "../../core/signingEngine/flows/signEvmFamily/signEvmFamily.js";
|
|
74
|
-
import { UserConfirmationType } from "../../core/signingEngine/stepUpConfirmation/userConfirmationType.js";
|
|
75
|
-
import { exportKeypairWithUI, resolveExactKeyExportLane } from "../../core/signingEngine/flows/recovery/public.js";
|
|
76
|
-
import { activateAuthenticatedWalletState, finalizeWalletEcdsaRegistration, finalizeWalletEd25519SignerRegistration, getAllUsers, getAuthenticationCredentialsSerialized, getLastUser, getUserBySignerSlot, getWalletNearProvisioningState, hasPasskeyCredential, nearAuthenticatorsByAccount, requestRegistrationCredentialConfirmation, rollbackUserRegistration, rollbackWalletEd25519SignerRegistration, setLastUser, setWalletNearProvisioningState, storeAuthenticator, storeUserData, storeWalletEcdsaRecoverySignerRecords, storeWalletEcdsaSignerRecords, storeWalletEd25519RecoveryRegistrationData, storeWalletEd25519RegistrationData, storeWalletEmailOtpEcdsaRegistrationData, storeWalletEmailOtpEcdsaSignerRecords, storeWalletEmailOtpEd25519RegistrationData, storeWalletEmailOtpMixedRegistrationData, storeWalletMixedRegistrationData } from "../../core/signingEngine/flows/registration/public.js";
|
|
77
|
-
import { exactWalletSessionWithOperationCredentialOrThrow } from "../../core/signingEngine/session/identity/exactWalletSessionReader.js";
|
|
78
|
-
import { enrollEmailOtpInternal, loginWithEmailOtpEcdsaCapabilityInternal, prepareEmailOtpRegistrationEnrollmentMaterialInternal, refreshEmailOtpSigningSession, requestEmailOtpSigningSessionChallenge } from "../../core/signingEngine/flows/signEvmFamily/emailOtpPublic.js";
|
|
79
|
-
import { __isWalletIframeHostMode } from "../../core/browser/walletIframe/host-mode.js";
|
|
80
|
-
import { destroyUnlockedWalletEd25519ExportRootCapabilitiesV1, establishUnlockedWalletEd25519ExportRootCapabilityV1, setUnlockedCustodyEnvelopeUpgradeSinkV1 } from "../../core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js";
|
|
81
|
-
import { createManagerAssembly } from "../../core/signingEngine/assembly/createManagers.js";
|
|
82
|
-
import { verifySealedRefreshStartupParity } from "../../core/rpcClients/relayer/sealedRefreshCapabilities.js";
|
|
83
|
-
import { unlockEmailOtpEd25519YaoCapability } from "../../core/signingEngine/session/emailOtp/walletUnlock.js";
|
|
84
|
-
import { WalletCustodyEd25519ActiveClientV1, disposeWalletCustodyEd25519ActiveClientV1 } from "../../core/signingEngine/walletCustody/ed25519ActiveClient.js";
|
|
85
|
-
import { activateWalletCustodyEd25519CapabilityV1 } from "../../core/signingEngine/walletCustody/activateEd25519Capability.js";
|
|
86
|
-
import { resolveWalletCustodyEd25519ProjectionV1 } from "../../core/signingEngine/walletCustody/ed25519Projection.js";
|
|
87
|
-
import { exactEd25519LaneIdentityFromAvailableLane, nearEd25519CapabilityRehydrationKey, nearEd25519CapabilityRehydrationMaterialIdentity, nearEd25519LaneMatchesCapabilityRehydrationSubject } from "../../core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js";
|
|
88
|
-
import { generateSessionId } from "../../core/signingEngine/session/passkey/prfCache.js";
|
|
89
|
-
import { resolveEmailOtpEd25519OperationRecoveryBootstrapV1, resolveWalletCustodyEd25519ExportContextV1 } from "../../core/signingEngine/session/emailOtp/ed25519ExportContext.js";
|
|
90
|
-
import { requestClearEmailOtpWarmSessionMaterial, requestRehydrateEmailOtpEd25519YaoOperationMaterial } from "../../core/signingEngine/session/emailOtp/workerRequests.js";
|
|
91
|
-
import { resolveWalletAuthorityOperation } from "../../core/signingEngine/session/authority/authorityOperationResolver.js";
|
|
92
|
-
import { discoverPersistedSessionsForWallet, readOwnerScopedSigningLanes, readPersistedAvailableSigningLanes } from "../../core/signingEngine/session/public.js";
|
|
93
|
-
import { createWarmSigningPorts } from "../../core/signingEngine/assembly/ports/warmSigning.js";
|
|
94
|
-
import { createSessionPublicDeps } from "../../core/signingEngine/assembly/ports/session.js";
|
|
95
|
-
import { clearVolatileWarmSigningMaterial, getWarmThresholdEd25519SessionStatus, hydrateSigningSession, scheduleRouterAbEcdsaDerivationLoginPresignaturePrefill } from "../../core/signingEngine/session/warmCapabilities/public.js";
|
|
96
|
-
import { bootstrapEcdsaSession, connectEd25519Session } from "../../core/signingEngine/session/passkey/public.js";
|
|
97
|
-
import { createBrowserActiveEcdsaWalletSessionAuthorizationResolver, createBrowserCanonicalWalletSessionStatusReader, createBrowserSigningSurfaceEnginePorts, listBrowserActiveEcdsaCapabilityManifestsForWallet, listBrowserEcdsaPreprocessingCapabilitiesForWallet, listBrowserEcdsaSigningCapabilitiesForWallet, readBrowserExactNearEd25519WalletSessionAuthorization, resolveBrowserActiveEcdsaCapabilityRuntime, resolveBrowserActiveEcdsaCapabilityRuntimeForChain, resolveBrowserActiveNearEd25519WalletSessionAuthorization, resolveBrowserNearEd25519PasskeyAuthorityForMaterial } from "../assembly/browserSigningSurfaceAssembly.js";
|
|
98
|
-
import { createBrowserRecoveryPublicDeps } from "../assembly/createBrowserRecoveryPublicDeps.js";
|
|
99
|
-
import { createBrowserStepUpRuntime } from "../assembly/createBrowserStepUpRuntime.js";
|
|
100
|
-
import { createBrowserWarmSessionPublicDeps } from "../assembly/createBrowserWarmSessionPublicDeps.js";
|
|
101
|
-
import { configurePasskeyCustodySessionCachePersistence, readPasskeyCustodySessionEnvelope } from "../../core/signingEngine/session/passkey/passkeyCustodySessionCache.js";
|
|
102
|
-
import { upgradeWalletCustodyEnvelopeOwnership } from "../../core/rpcClients/relayer/passkeyCustodyEnvelope.js";
|
|
103
|
-
import { finalizeWalletRegistrationEcdsaSessions } from "../../core/signingEngine/flows/registration/services/ecdsaRegistrationSessions.js";
|
|
104
|
-
import { walletIframeRequestIdFromBoundary } from "../../core/types/walletIframeIdentity.js";
|
|
105
|
-
import { walletRecoveryReplacementCredentialFromRegistrationV1 } from "../../core/signingEngine/walletCustody/walletRecoveryCredential.js";
|
|
106
|
-
//#region src/SeamsWeb/signingSurface/BrowserSigningSurface.ts
|
|
107
|
-
async function resolveActiveEd25519WalletSessionAuthorization(walletId, relayerUrl) {
|
|
108
|
-
return await resolveBrowserActiveNearEd25519WalletSessionAuthorization(walletId, relayerUrl);
|
|
109
|
-
}
|
|
110
|
-
function requireEmailOtpEcdsaRehydrationManifest(manifests, authorityDigest) {
|
|
111
|
-
let selected = null;
|
|
112
|
-
for (const manifest of manifests) {
|
|
113
|
-
if (manifest.signer.authority.authorityDigest !== authorityDigest) continue;
|
|
114
|
-
if (selected && selected.durableMaterial.roleLocalBinding.keyHandle !== manifest.durableMaterial.roleLocalBinding.keyHandle) throw new Error("[SigningEngine][near] Email OTP ECDSA session identity is ambiguous");
|
|
115
|
-
selected = manifest;
|
|
116
|
-
}
|
|
117
|
-
if (!selected) throw new Error("[SigningEngine][near] Email OTP ECDSA capability is unavailable");
|
|
118
|
-
return selected;
|
|
119
|
-
}
|
|
120
|
-
function buildEmailOtpEcdsaRehydrationPolicy(args) {
|
|
121
|
-
const walletSessionMintId = parseWalletSessionMintId(generateSessionId("wallet-session-mint"));
|
|
122
|
-
if (!walletSessionMintId.ok) throw new Error("[SigningEngine][near] failed to generate an ECDSA Wallet Session mint id");
|
|
123
|
-
return {
|
|
124
|
-
kind: "router_ab_ecdsa_post_registration_session_activation_policy_v1",
|
|
125
|
-
key_handle: String(args.manifest.durableMaterial.roleLocalBinding.keyHandle),
|
|
126
|
-
session_policy: {
|
|
127
|
-
threshold_session_id: SigningSessionIds.thresholdEcdsaSession(generateSessionId("threshold-ecdsa-login")),
|
|
128
|
-
wallet_session_mint_id: walletSessionMintId.value,
|
|
129
|
-
ttl_ms: DEFAULT_THRESHOLD_SESSION_POLICY.ttlMs,
|
|
130
|
-
remaining_uses: args.remainingUses,
|
|
131
|
-
runtime_policy_scope: args.manifest.durableMaterial.runtimePolicyScope
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
function activeWalletSessionMatchesCredentialFreeEcdsaActivation(args) {
|
|
136
|
-
const materialActivation = routerAbMpcMaterialActivationRefFromWire(args.activation.public_capability.material_activation);
|
|
137
|
-
let matchCount = 0;
|
|
138
|
-
for (const subject of args.walletSession.capabilitySubjects) if (subject.kind === "sign" && subject.keyFamily === "ecdsa_secp256k1" && mpcMaterialActivationRefsEqual(subject.materialActivation, materialActivation)) matchCount += 1;
|
|
139
|
-
return matchCount === 1;
|
|
140
|
-
}
|
|
141
|
-
async function persistRehydratedEmailOtpEcdsaWalletSession(args) {
|
|
142
|
-
const session = args.response.session;
|
|
143
|
-
const walletSession = args.authorization.record;
|
|
144
|
-
const operationCredential = args.authorization.operationCredential;
|
|
145
|
-
if (String(walletSession.walletId) !== String(args.walletId) || String(args.response.public_capability.client_id) !== String(walletSession.walletId) || walletSession.authorizationId !== session.authorization_id || walletSession.quotaId !== session.quota_id || walletSession.expiresAtMs !== session.expires_at_ms || operationCredential.walletSessionId !== session.wallet_session_id || !activeWalletSessionMatchesCredentialFreeEcdsaActivation({
|
|
146
|
-
walletSession,
|
|
147
|
-
activation: args.response
|
|
148
|
-
})) throw new Error("[SigningEngine][near] refreshed ECDSA exact Wallet Session is inconsistent");
|
|
149
|
-
await walletSessionAuthorizations.writeExactWithOperationCredential({
|
|
150
|
-
record: walletSession,
|
|
151
|
-
operationCredential
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
async function readBrowserEmailOtpProviderSubject(walletId) {
|
|
155
|
-
return await readEmailOtpProviderSubjectForWalletV1(IndexedDBManager, walletId);
|
|
156
|
-
}
|
|
157
|
-
async function noBrowserWalletPasskeyAuthenticator() {
|
|
158
|
-
return null;
|
|
159
|
-
}
|
|
160
|
-
const browserSigningSurfaceExactWalletAuthMethodStore = {
|
|
161
|
-
getWalletAuthMethodV2: (walletAuthMethodId) => IndexedDBManager.getWalletAuthMethodV2(walletAuthMethodId),
|
|
162
|
-
listWalletAuthMethodsForWallet: (walletId) => IndexedDBManager.listWalletAuthMethodsForWallet(walletId),
|
|
163
|
-
getWalletPasskeyAuthenticator: noBrowserWalletPasskeyAuthenticator,
|
|
164
|
-
readEmailOtpProviderSubjectForWallet: readBrowserEmailOtpProviderSubject
|
|
165
|
-
};
|
|
166
|
-
async function resolveBrowserExactPasskeyWalletAuthAuthorityRef(args) {
|
|
167
|
-
const matches = (await IndexedDBManager.listWalletAuthMethodsV2ForWallet(String(args.walletId))).filter((record) => record.kind === WALLET_AUTH_METHODS.passkey && record.status === "active" && record.walletId === args.walletId && String(record.rpId) === args.rpId && String(record.credentialIdB64u) === args.credentialIdB64u);
|
|
168
|
-
const [record] = matches;
|
|
169
|
-
if (matches.length !== 1 || !record || record.kind !== WALLET_AUTH_METHODS.passkey) return null;
|
|
170
|
-
return await walletAuthAuthorityRef({ authority: {
|
|
171
|
-
walletId: record.walletId,
|
|
172
|
-
factor: {
|
|
173
|
-
kind: WALLET_AUTH_METHODS.passkey,
|
|
174
|
-
credentialIdB64u: record.credentialIdB64u
|
|
175
|
-
},
|
|
176
|
-
verifier: {
|
|
177
|
-
kind: "webauthn",
|
|
178
|
-
rpId: record.rpId
|
|
179
|
-
},
|
|
180
|
-
bindingId: record.walletAuthMethodId
|
|
181
|
-
} });
|
|
182
|
-
}
|
|
183
|
-
function exactEmailOtpAuthorityRef(args) {
|
|
184
|
-
const authorityRef = parseWalletAuthAuthorityRef({
|
|
185
|
-
kind: "wallet_auth_authority_ref",
|
|
186
|
-
walletId: args.walletId,
|
|
187
|
-
walletAuthMethodId: args.walletAuthMethodId,
|
|
188
|
-
authorityDigest: args.authorityDigestB64u
|
|
189
|
-
});
|
|
190
|
-
if (!authorityRef) throw new Error("[SigningEngine][near] exact Email OTP authority digest is invalid");
|
|
191
|
-
return authorityRef;
|
|
192
|
-
}
|
|
193
|
-
async function resolveExactEmailOtpFactorAuthority(args) {
|
|
194
|
-
const factorAuthority = await resolveExactWalletAuthAuthority({
|
|
195
|
-
authMethod: args.authMethod,
|
|
196
|
-
stores: browserSigningSurfaceExactWalletAuthMethodStore
|
|
197
|
-
});
|
|
198
|
-
if (!isEmailOtpWalletAuthAuthority(factorAuthority) || factorAuthority.walletId !== args.authMethod.walletId || factorAuthority.bindingId !== args.authMethod.walletAuthMethodId || factorAuthority.verifier.emailHashHex !== args.emailHashHex || factorAuthority.factor.providerUserId !== args.providerSubject) throw new Error("[SigningEngine][near] exact Email OTP factor authority changed");
|
|
199
|
-
return factorAuthority;
|
|
200
|
-
}
|
|
201
|
-
function requireEmailOtpNearEd25519MaterialIdentity(identity) {
|
|
202
|
-
const auth = identity.auth;
|
|
203
|
-
switch (auth.kind) {
|
|
204
|
-
case WALLET_AUTH_METHODS.emailOtp: return {
|
|
205
|
-
kind: identity.kind,
|
|
206
|
-
signer: identity.signer,
|
|
207
|
-
auth,
|
|
208
|
-
thresholdSessionId: identity.thresholdSessionId
|
|
209
|
-
};
|
|
210
|
-
case WALLET_AUTH_METHODS.passkey: throw new Error("[SigningEngine][near] Email OTP material identity is required");
|
|
211
|
-
default: throw new Error("[SigningEngine][near] unsupported Ed25519 material authority");
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
/** Selects the exact unlocked Email OTP factor for exhausted-session step-up. */
|
|
215
|
-
async function resolveBrowserNearEd25519EmailOtpAuthorityForMaterial(args) {
|
|
216
|
-
if (String(args.identity.signer.account.wallet.walletId) !== String(args.walletId) || String(args.identity.signer.account.nearAccountId) !== String(args.nearAccountId) || args.identity.signer.signerSlot !== args.signerSlot) return null;
|
|
217
|
-
let selected;
|
|
218
|
-
try {
|
|
219
|
-
selected = await IndexedDBManager.resolveSelectedWalletAuthority(String(args.walletId));
|
|
220
|
-
} catch {
|
|
221
|
-
return null;
|
|
222
|
-
}
|
|
223
|
-
if (selected.kind !== "resolved") return null;
|
|
224
|
-
const { selection, authMethod, authority } = selected;
|
|
225
|
-
const ed25519Activation = authority.signerActivations.ed25519;
|
|
226
|
-
if (selection.lockState !== "unlocked" || selection.walletId !== args.walletId || selection.walletAuthMethodId !== authMethod.walletAuthMethodId || authMethod.kind !== WALLET_AUTH_METHODS.emailOtp || authMethod.status !== "active" || authMethod.walletId !== args.walletId || authMethod.walletAuthorityId !== authority.authorityId || authority.state !== "active" || authority.walletId !== args.walletId || !ed25519Activation || ed25519Activation.signer.walletId !== args.walletId || !mpcMaterialActivationRefsEqual(ed25519Activation.materialActivation, args.materialActivation)) return null;
|
|
227
|
-
try {
|
|
228
|
-
const factorAuthorityRef = await walletAuthAuthorityRef({ authority: await resolveExactEmailOtpFactorAuthority({
|
|
229
|
-
authMethod,
|
|
230
|
-
emailHashHex: authMethod.emailHashHex,
|
|
231
|
-
providerSubject: args.identity.auth.providerSubjectId
|
|
232
|
-
}) });
|
|
233
|
-
if (factorAuthorityRef.walletId !== args.walletId || factorAuthorityRef.walletAuthMethodId !== authMethod.walletAuthMethodId) return null;
|
|
234
|
-
return factorAuthorityRef;
|
|
235
|
-
} catch {
|
|
236
|
-
return null;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
async function resolveExactEmailOtpEd25519ActivationAuthorization(args) {
|
|
240
|
-
const bootstrapSession = args.bootstrap.session;
|
|
241
|
-
const stored = args.exactAuthorization?.record ?? await walletSessionAuthorizations.readExact(bootstrapSession.walletSessionId);
|
|
242
|
-
if (!stored || stored.kind !== "active_wallet_session_v1" || stored.walletId !== args.walletId || stored.authorizationId !== bootstrapSession.authorizationId || stored.quotaId !== bootstrapSession.quotaId || stored.expiresAtMs <= Date.now()) throw new Error("[SigningEngine][near] exact Email OTP activation session is unavailable");
|
|
243
|
-
const [method, authority] = await Promise.all([IndexedDBManager.getWalletAuthMethodV2(String(stored.authMethodId)), IndexedDBManager.getWalletAuthority(String(stored.authorityId))]);
|
|
244
|
-
if (!method || method.kind !== "email_otp" || method.status !== "active" || method.walletId !== args.walletId || method.walletAuthorityId !== stored.authorityId || method.emailHashHex !== args.emailHashHex || !authority || authority.state !== "active" || authority.walletId !== args.walletId || authority.authorityId !== stored.authorityId || authority.authorityDigestB64u !== stored.authorityDigestB64u || authority.revocationEpoch !== stored.authorityRevocationEpoch) throw new Error("[SigningEngine][near] exact Email OTP activation authority is unavailable");
|
|
245
|
-
const authorityRef = exactEmailOtpAuthorityRef({
|
|
246
|
-
walletId: args.walletId,
|
|
247
|
-
walletAuthMethodId: method.walletAuthMethodId,
|
|
248
|
-
authorityDigestB64u: authority.authorityDigestB64u
|
|
249
|
-
});
|
|
250
|
-
const factorAuthorityRef = await walletAuthAuthorityRef({ authority: await resolveExactEmailOtpFactorAuthority({
|
|
251
|
-
authMethod: method,
|
|
252
|
-
emailHashHex: args.emailHashHex,
|
|
253
|
-
providerSubject: args.providerSubject
|
|
254
|
-
}) });
|
|
255
|
-
if (args.verifiedAuthority && (args.verifiedAuthority.walletId !== factorAuthorityRef.walletId || args.verifiedAuthority.walletAuthMethodId !== factorAuthorityRef.walletAuthMethodId)) throw new Error("[SigningEngine][near] verified Email OTP activation authority changed");
|
|
256
|
-
const exact = args.exactAuthorization;
|
|
257
|
-
if (exact) {
|
|
258
|
-
if (!activeWalletSessionV1RecordsEqual(exact.record, stored) || exact.operationCredential.walletSessionId !== bootstrapSession.walletSessionId) throw new Error("[SigningEngine][near] exact Email OTP activation credential is unavailable");
|
|
259
|
-
return {
|
|
260
|
-
authority: authorityRef,
|
|
261
|
-
operationCredential: exact.operationCredential
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
const persisted = await walletSessionAuthorizations.readExactActiveForWallet({
|
|
265
|
-
walletId: args.walletId,
|
|
266
|
-
authorityId: stored.authorityId,
|
|
267
|
-
authMethodId: stored.authMethodId
|
|
268
|
-
});
|
|
269
|
-
if (persisted.kind !== "found" || !activeWalletSessionV1RecordsEqual(persisted.record, stored) || persisted.operationCredential.walletSessionId !== bootstrapSession.walletSessionId) throw new Error("[SigningEngine][near] exact Email OTP activation credential is unavailable");
|
|
270
|
-
return {
|
|
271
|
-
authority: authorityRef,
|
|
272
|
-
operationCredential: persisted.operationCredential
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
function unavailableEmailOtpExportAuthorizationFromStatus(status) {
|
|
276
|
-
switch (status.status) {
|
|
277
|
-
case "missing": return { kind: "missing" };
|
|
278
|
-
case "expired": return { kind: "expired" };
|
|
279
|
-
case "superseded": return { kind: "superseded" };
|
|
280
|
-
case "authority_unavailable": return { kind: "authority_unavailable" };
|
|
281
|
-
case "method_unavailable": return { kind: "method_unavailable" };
|
|
282
|
-
case "capability_unavailable": return { kind: "capability_unavailable" };
|
|
283
|
-
case "invalid": return { kind: "corrupt" };
|
|
284
|
-
default: throw new Error("[SigningEngine][ed25519-export] unsupported exact session status");
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
async function readExactEmailOtpEd25519ExportAuthorization(args) {
|
|
288
|
-
const walletId = args.subject.signer.account.wallet.walletId;
|
|
289
|
-
let selected;
|
|
290
|
-
try {
|
|
291
|
-
selected = await IndexedDBManager.resolveSelectedWalletAuthority(String(walletId));
|
|
292
|
-
} catch {
|
|
293
|
-
return { kind: "persistence_unavailable" };
|
|
294
|
-
}
|
|
295
|
-
if (selected.kind !== "resolved") return selected.kind === "integrity_error" ? { kind: "corrupt" } : { kind: "missing" };
|
|
296
|
-
const { selection, authority, authMethod } = selected;
|
|
297
|
-
if (selection.lockState !== "unlocked" || selection.walletId !== walletId || selection.walletAuthMethodId !== authMethod.walletAuthMethodId || authority.state !== "active" || authority.walletId !== walletId || authMethod.kind !== "email_otp" || authMethod.status !== "active" || authMethod.walletId !== walletId || authMethod.walletAuthorityId !== authority.authorityId) return { kind: "corrupt" };
|
|
298
|
-
let factorAuthority;
|
|
299
|
-
try {
|
|
300
|
-
factorAuthority = await resolveExactEmailOtpFactorAuthority({
|
|
301
|
-
authMethod,
|
|
302
|
-
emailHashHex: authMethod.emailHashHex,
|
|
303
|
-
providerSubject: args.subject.auth.providerSubjectId
|
|
304
|
-
});
|
|
305
|
-
} catch {
|
|
306
|
-
return { kind: "corrupt" };
|
|
307
|
-
}
|
|
308
|
-
const exact = await walletSessionAuthorizations.readExactActiveForWallet({
|
|
309
|
-
walletId,
|
|
310
|
-
authorityId: authority.authorityId,
|
|
311
|
-
authMethodId: authMethod.walletAuthMethodId
|
|
312
|
-
});
|
|
313
|
-
switch (exact.kind) {
|
|
314
|
-
case "missing":
|
|
315
|
-
case "upgrade_required":
|
|
316
|
-
case "corrupt":
|
|
317
|
-
case "persistence_unavailable": return exact;
|
|
318
|
-
case "found": break;
|
|
319
|
-
default: throw new Error("[SigningEngine][ed25519-export] unsupported exact local session result");
|
|
320
|
-
}
|
|
321
|
-
if (exact.record.expiresAtMs <= Date.now()) return { kind: "expired" };
|
|
322
|
-
let status;
|
|
323
|
-
try {
|
|
324
|
-
status = await createRelayerExactWalletSessionStatusPort({
|
|
325
|
-
relayerUrl: args.relayerUrl,
|
|
326
|
-
operationCredential: exact.operationCredential
|
|
327
|
-
}).read({
|
|
328
|
-
walletSessionId: exact.operationCredential.walletSessionId,
|
|
329
|
-
quotaId: exact.record.quotaId
|
|
330
|
-
});
|
|
331
|
-
} catch {
|
|
332
|
-
return { kind: "persistence_unavailable" };
|
|
333
|
-
}
|
|
334
|
-
if (status.status !== "active" && status.status !== "exhausted") return unavailableEmailOtpExportAuthorizationFromStatus(status);
|
|
335
|
-
return {
|
|
336
|
-
kind: "found",
|
|
337
|
-
authorization: {
|
|
338
|
-
selectedAuthority: authority,
|
|
339
|
-
selectedAuthMethod: authMethod,
|
|
340
|
-
factorAuthority,
|
|
341
|
-
record: exact.record,
|
|
342
|
-
operationCredential: exact.operationCredential,
|
|
343
|
-
status
|
|
344
|
-
}
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
function fetchWithGlobalThis(input, init) {
|
|
348
|
-
return globalThis.fetch(input, init);
|
|
349
|
-
}
|
|
350
|
-
function currentNearEd25519CapabilityRehydrationSubject(args) {
|
|
351
|
-
const thresholdSessionId = args.walletSessionState.thresholdSessionId;
|
|
352
|
-
switch (args.subject.kind) {
|
|
353
|
-
case "exact_lane": return {
|
|
354
|
-
kind: "exact_lane",
|
|
355
|
-
laneIdentity: args.walletSessionState.signingLane.identity
|
|
356
|
-
};
|
|
357
|
-
case "export_exact_lane": return {
|
|
358
|
-
kind: "export_exact_lane",
|
|
359
|
-
laneIdentity: exactEd25519ExportMaterialIdentity({
|
|
360
|
-
signer: args.walletSessionState.signingLane.identity.signer,
|
|
361
|
-
auth: args.walletSessionState.signingLane.identity.auth,
|
|
362
|
-
thresholdSessionId
|
|
363
|
-
}),
|
|
364
|
-
materialActivation: args.subject.materialActivation
|
|
365
|
-
};
|
|
366
|
-
case "material_identity": return {
|
|
367
|
-
kind: "material_identity",
|
|
368
|
-
materialIdentity: {
|
|
369
|
-
kind: "near_ed25519_material_identity",
|
|
370
|
-
signer: args.walletSessionState.signingLane.identity.signer,
|
|
371
|
-
auth: args.walletSessionState.signingLane.identity.auth,
|
|
372
|
-
thresholdSessionId
|
|
373
|
-
}
|
|
374
|
-
};
|
|
375
|
-
default: return assertNeverNearEd25519CapabilityRehydrationSubject(args.subject);
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
function assertNeverNearEd25519CapabilityRehydrationSubject(value) {
|
|
379
|
-
throw new Error(`Unknown Ed25519 capability rehydration subject: ${String(value)}`);
|
|
380
|
-
}
|
|
381
|
-
async function ensurePasskeyEd25519WarmSessionForSigning(args) {
|
|
382
|
-
const thresholdSessionId = args.walletSessionState.thresholdSessionId;
|
|
383
|
-
let claim = await args.claimWarmSessionMaterial({
|
|
384
|
-
thresholdSessionId,
|
|
385
|
-
purpose: {
|
|
386
|
-
curve: "ed25519",
|
|
387
|
-
materialActivation: args.materialActivation
|
|
388
|
-
},
|
|
389
|
-
consume: false
|
|
390
|
-
});
|
|
391
|
-
if (claim.ok || claim.code !== "not_found") return claim;
|
|
392
|
-
if (args.runtime.factor.kind !== "passkey") throw new Error("[SigningEngine][near] persisted Ed25519 credential is unavailable");
|
|
393
|
-
const walletSessionToken = String(args.walletSessionState.walletSessionAuth.walletSessionToken || "").trim();
|
|
394
|
-
const groupId = String(args.runtime.sealedRecord.groupId || "").trim();
|
|
395
|
-
if (!walletSessionToken || !groupId) return {
|
|
396
|
-
ok: false,
|
|
397
|
-
code: "invalid_args",
|
|
398
|
-
message: "Passkey Ed25519 sealed restore metadata is incomplete"
|
|
399
|
-
};
|
|
400
|
-
if (!mpcMaterialActivationRefsEqual(args.runtime.sealedRecord.ed25519Restore.materialActivation, args.materialActivation)) throw new Error("[SigningEngine][near] persisted Ed25519 material activation mismatch");
|
|
401
|
-
const keyVersion = parseSigningSessionSealKeyVersion(args.runtime.sealedRecord.keyVersion);
|
|
402
|
-
const rehydrated = await args.rehydrateWarmSessionMaterial({
|
|
403
|
-
thresholdSessionId,
|
|
404
|
-
sealedSecretB64u: args.runtime.sealedRecord.sealedSecretB64u,
|
|
405
|
-
signingSessionSealKeyVersion: keyVersion,
|
|
406
|
-
expiresAtMs: args.runtime.sealedRecord.expiresAtMs,
|
|
407
|
-
remainingUses: args.runtime.sealedRecord.remainingUses,
|
|
408
|
-
transport: {
|
|
409
|
-
curve: "ed25519",
|
|
410
|
-
authMethod: "passkey",
|
|
411
|
-
walletId: String(args.runtime.walletId),
|
|
412
|
-
relayerUrl: args.runtime.relayerUrl,
|
|
413
|
-
signingSessionSealKeyVersion: keyVersion,
|
|
414
|
-
groupId,
|
|
415
|
-
walletSessionToken,
|
|
416
|
-
ed25519Restore: buildPasskeyEd25519RestoreMetadata({
|
|
417
|
-
rpId: args.runtime.factor.rpId,
|
|
418
|
-
nearAccountId: args.runtime.nearAccountId,
|
|
419
|
-
nearEd25519SigningKeyId: args.runtime.nearEd25519SigningKeyId,
|
|
420
|
-
relayerKeyId: args.runtime.relayerKeyId,
|
|
421
|
-
participantIds: args.runtime.participantIds,
|
|
422
|
-
runtimePolicyScope: args.runtime.runtimePolicyScope,
|
|
423
|
-
signerSlot: args.runtime.signerSlot,
|
|
424
|
-
routerAbNormalSigning: args.runtime.routerAbNormalSigning,
|
|
425
|
-
credentialIdB64u: args.runtime.factor.credentialIdB64u,
|
|
426
|
-
materialActivation: args.materialActivation
|
|
427
|
-
})
|
|
428
|
-
}
|
|
429
|
-
});
|
|
430
|
-
if (!rehydrated.ok) return rehydrated;
|
|
431
|
-
claim = await args.claimWarmSessionMaterial({
|
|
432
|
-
thresholdSessionId,
|
|
433
|
-
purpose: {
|
|
434
|
-
curve: "ed25519",
|
|
435
|
-
materialActivation: args.materialActivation
|
|
436
|
-
},
|
|
437
|
-
consume: false
|
|
438
|
-
});
|
|
439
|
-
return claim;
|
|
440
|
-
}
|
|
441
|
-
async function resolveNearEd25519PublicCapabilityMaterialActivation(args) {
|
|
442
|
-
const signer = args.identity.signer;
|
|
443
|
-
const matches = (await args.store.listLanes()).filter((reference) => String(reference.walletId) === String(signer.account.wallet.walletId) && String(reference.nearAccountId) === String(signer.account.nearAccountId) && String(reference.nearEd25519SigningKeyId) === String(signer.nearEd25519SigningKeyId) && reference.signerSlot === signer.signerSlot && String(reference.thresholdSessionId) === String(args.identity.thresholdSessionId) && nearEd25519AuthBindingsEqual(reference.auth, args.identity.auth));
|
|
444
|
-
if (matches.length > 1) throw new Error("[SigningEngine][near] public Ed25519 capability lane is conflicting");
|
|
445
|
-
return matches[0]?.materialActivation ?? null;
|
|
446
|
-
}
|
|
447
|
-
function emailOtpEd25519YaoLaneReferenceFromRecovery(args) {
|
|
448
|
-
const lane = args.walletSessionState.signingLane;
|
|
449
|
-
const signer = lane.identity.signer;
|
|
450
|
-
if (lane.auth.kind !== "email_otp") throw new Error("[SigningEngine][near] Email OTP recovery returned another auth lane");
|
|
451
|
-
return {
|
|
452
|
-
walletId: signer.account.wallet.walletId,
|
|
453
|
-
nearAccountId: signer.account.nearAccountId,
|
|
454
|
-
thresholdSessionId: args.walletSessionState.thresholdSessionId,
|
|
455
|
-
runtimePolicyScope: args.walletSessionState.runtimePolicyScope,
|
|
456
|
-
materialActivation: args.materialActivation,
|
|
457
|
-
auth: {
|
|
458
|
-
kind: "email_otp",
|
|
459
|
-
providerSubjectId: lane.auth.providerSubjectId
|
|
460
|
-
},
|
|
461
|
-
nearEd25519SigningKeyId: signer.nearEd25519SigningKeyId,
|
|
462
|
-
signerSlot: signer.signerSlot,
|
|
463
|
-
remainingUses: args.walletSessionState.signingWalletSession.remainingUses,
|
|
464
|
-
expiresAtMs: args.walletSessionState.signingWalletSession.expiresAtMs
|
|
465
|
-
};
|
|
466
|
-
}
|
|
467
|
-
function isLinkedEd25519SignerMaterial(material) {
|
|
468
|
-
return material.kind === "wallet_authority_linked_signer_material_v1" && material.keyFamily === "ed25519";
|
|
469
|
-
}
|
|
470
|
-
function resolveSelectedEmailOtpEd25519ExportRootV1(args) {
|
|
471
|
-
const selected = args.selected;
|
|
472
|
-
if (selected.kind !== "resolved") {
|
|
473
|
-
const detail = selected.kind === "integrity_error" ? `: ${selected.reason}` : "";
|
|
474
|
-
throw new Error(`[SigningEngine][ed25519-export] selected Wallet Authority is ${selected.kind}${detail}`);
|
|
475
|
-
}
|
|
476
|
-
if (selected.authority.provenance.kind === "wallet_registration" || selected.authority.provenance.kind === "wallet_recovery") return null;
|
|
477
|
-
const { selection, authMethod, authority, signerMaterials, exportRoot } = selected;
|
|
478
|
-
const signer = args.subject.signer;
|
|
479
|
-
const ed25519Activation = authority.signerActivations.ed25519;
|
|
480
|
-
if (selection.lockState !== "unlocked" || authMethod.kind !== WALLET_AUTH_METHODS.emailOtp || authMethod.status !== "active" || authority.state !== "active" || String(selection.walletId) !== String(signer.account.wallet.walletId) || selection.walletAuthMethodId !== authMethod.walletAuthMethodId || authMethod.walletAuthorityId !== authority.authorityId || String(authMethod.walletId) !== String(signer.account.wallet.walletId) || !authority.permissions.includes("export_keys") || !ed25519Activation || !mpcMaterialActivationRefsEqual(ed25519Activation.materialActivation, args.expectedMaterialActivation) || !exportRoot) throw new Error("[SigningEngine][ed25519-export] selected linked Email OTP authority has no exact export root");
|
|
481
|
-
let linkedMaterial = null;
|
|
482
|
-
for (const candidate of signerMaterials) {
|
|
483
|
-
if (!isLinkedEd25519SignerMaterial(candidate) || candidate.authorityId !== authority.authorityId || candidate.walletAuthMethodId !== authMethod.walletAuthMethodId || !mpcMaterialActivationRefsEqual(candidate.materialActivation, args.expectedMaterialActivation)) continue;
|
|
484
|
-
if (linkedMaterial) throw new Error("[SigningEngine][ed25519-export] linked Ed25519 material is ambiguous");
|
|
485
|
-
linkedMaterial = candidate;
|
|
486
|
-
}
|
|
487
|
-
if (!linkedMaterial) throw new Error("[SigningEngine][ed25519-export] linked Ed25519 material is unavailable");
|
|
488
|
-
const targetFactor = linkedMaterial.targetFactor;
|
|
489
|
-
const application = linkedMaterial.publicFacts.applicationBinding;
|
|
490
|
-
const lifecycle = linkedMaterial.publicFacts.targetBinding.lifecycle;
|
|
491
|
-
const registeredPublicKeyB64u = ed25519Activation.signer.registeredPublicKeyB64u;
|
|
492
|
-
if (targetFactor.kind !== WALLET_AUTH_METHODS.emailOtp || targetFactor.walletAuthMethodId !== authMethod.walletAuthMethodId || targetFactor.emailHashHex !== authMethod.emailHashHex || targetFactor.registrationAuthorityId !== authMethod.registrationAuthorityId || exportRoot.authorityId !== authority.authorityId || exportRoot.walletAuthMethodId !== authMethod.walletAuthMethodId || exportRoot.walletKeyId !== ed25519Activation.signer.walletKeyId || exportRoot.envelope.binding.kind !== "ed25519_yao_client_root_v1" || exportRoot.envelope.binding.registeredPublicKeyB64u !== registeredPublicKeyB64u || exportRoot.envelope.factor.kind !== WALLET_AUTH_METHODS.emailOtp || application.wallet_id !== String(signer.account.wallet.walletId) || application.near_ed25519_signing_key_id !== String(signer.nearEd25519SigningKeyId) || application.key_creation_signer_slot !== signer.signerSlot || lifecycle.account_id !== String(signer.account.wallet.walletId) || lifecycle.session_id !== String(args.subject.thresholdSessionId) || lifecycle.selected_server_id !== args.expectedMaterialActivation.signingWorker || base64UrlEncode(Uint8Array.from(linkedMaterial.publicFacts.activationReceipt.registered_public_key)) !== registeredPublicKeyB64u) throw new Error("[SigningEngine][ed25519-export] linked Email OTP export identity changed");
|
|
493
|
-
if (args.activeCapability) {
|
|
494
|
-
if (!mpcMaterialActivationRefsEqual(args.activeCapability.materialActivation, args.expectedMaterialActivation) || base64UrlEncode(Uint8Array.from(args.activeCapability.registeredPublicKey)) !== registeredPublicKeyB64u) throw new Error("[SigningEngine][ed25519-export] active Email OTP capability changed");
|
|
495
|
-
return exportRoot.envelope;
|
|
496
|
-
}
|
|
497
|
-
return {
|
|
498
|
-
envelope: exportRoot.envelope,
|
|
499
|
-
source: {
|
|
500
|
-
materialActivation: args.expectedMaterialActivation,
|
|
501
|
-
signingWorkerId: lifecycle.selected_server_id,
|
|
502
|
-
participantIds: linkedMaterial.publicFacts.participantIds,
|
|
503
|
-
registeredPublicKeyB64u
|
|
504
|
-
}
|
|
505
|
-
};
|
|
506
|
-
}
|
|
507
|
-
async function resolveLinkedPasskeyOwnerSignerSlot(args) {
|
|
508
|
-
let material = null;
|
|
509
|
-
for (const candidate of args.signerMaterials) {
|
|
510
|
-
if (!isLinkedEd25519SignerMaterial(candidate) || candidate.authorityId !== args.authMethod.walletAuthorityId || candidate.walletAuthMethodId !== args.authMethod.walletAuthMethodId) continue;
|
|
511
|
-
if (material) throw new Error("[SigningEngine] linked Passkey Ed25519 signer material is conflicting");
|
|
512
|
-
material = candidate;
|
|
513
|
-
}
|
|
514
|
-
if (!material) throw new Error("[SigningEngine] linked Passkey Ed25519 signer material is unavailable");
|
|
515
|
-
const application = material.publicFacts.applicationBinding;
|
|
516
|
-
const signerSlot = parseSignerSlot(application.key_creation_signer_slot, { min: 1 });
|
|
517
|
-
const target = material.targetFactor;
|
|
518
|
-
if (!signerSlot || application.wallet_id !== String(args.walletId) || String(material.materialActivation.materialOwner) !== String(args.walletId) || target.kind !== WALLET_AUTH_METHODS.passkey || target.walletAuthMethodId !== args.authMethod.walletAuthMethodId || String(target.rpId) !== String(args.authMethod.rpId) || String(target.credentialIdB64u) !== String(args.authMethod.credentialIdB64u)) throw new Error("[SigningEngine] linked Passkey Ed25519 signer material identity is invalid");
|
|
519
|
-
let laneMatches = 0;
|
|
520
|
-
for (const reference of await args.publicLaneStore.listLanes()) {
|
|
521
|
-
if (reference.auth.kind !== "passkey") continue;
|
|
522
|
-
if (String(reference.walletId) !== String(args.walletId) || String(reference.auth.rpId) !== String(args.authMethod.rpId) || reference.auth.credentialIdB64u !== args.authMethod.credentialIdB64u || String(reference.nearEd25519SigningKeyId) !== String(application.near_ed25519_signing_key_id) || reference.signerSlot !== signerSlot || !mpcMaterialActivationRefsEqual(reference.materialActivation, material.materialActivation)) continue;
|
|
523
|
-
laneMatches += 1;
|
|
524
|
-
}
|
|
525
|
-
if (laneMatches === 0) throw new Error("[SigningEngine] linked Passkey Ed25519 public lane is unavailable");
|
|
526
|
-
if (laneMatches !== 1) throw new Error("[SigningEngine] linked Passkey Ed25519 public lane is ambiguous");
|
|
527
|
-
return signerSlot;
|
|
528
|
-
}
|
|
529
|
-
async function resolveExactEmailOtpPublicLaneReference(args) {
|
|
530
|
-
const signer = args.laneIdentity.signer;
|
|
531
|
-
const matches = (await args.store.listLanes()).filter((reference) => reference.auth.kind === WALLET_AUTH_METHODS.emailOtp && args.laneIdentity.auth.kind === WALLET_AUTH_METHODS.emailOtp && reference.auth.providerSubjectId === args.laneIdentity.auth.providerSubjectId && String(reference.walletId) === String(signer.account.wallet.walletId) && String(reference.nearAccountId) === String(signer.account.nearAccountId) && String(reference.nearEd25519SigningKeyId) === String(signer.nearEd25519SigningKeyId) && reference.signerSlot === signer.signerSlot && String(reference.thresholdSessionId) === String(args.laneIdentity.thresholdSessionId) && mpcMaterialActivationRefsEqual(reference.materialActivation, args.materialActivation));
|
|
532
|
-
if (matches.length !== 1) throw new Error(matches.length === 0 ? "[SigningEngine][near] Email OTP public lane is unavailable" : "[SigningEngine][near] Email OTP public lane is ambiguous");
|
|
533
|
-
return matches[0];
|
|
534
|
-
}
|
|
535
|
-
async function resolveExactPasskeyPublicLaneReference(args) {
|
|
536
|
-
if (args.laneIdentity.auth.kind !== WALLET_AUTH_METHODS.passkey) throw new Error("[SigningEngine][near] Passkey public lane authority is required");
|
|
537
|
-
const auth = args.laneIdentity.auth;
|
|
538
|
-
const signer = args.laneIdentity.signer;
|
|
539
|
-
const matches = (await args.store.listLanes()).filter((reference) => reference.auth.kind === WALLET_AUTH_METHODS.passkey && reference.auth.rpId === auth.rpId && reference.auth.credentialIdB64u === auth.credentialIdB64u && String(reference.walletId) === String(signer.account.wallet.walletId) && String(reference.nearAccountId) === String(signer.account.nearAccountId) && String(reference.nearEd25519SigningKeyId) === String(signer.nearEd25519SigningKeyId) && reference.signerSlot === signer.signerSlot && String(reference.thresholdSessionId) === String(args.laneIdentity.thresholdSessionId));
|
|
540
|
-
if (matches.length !== 1) throw new Error(matches.length === 0 ? "[SigningEngine][near] Passkey public lane is unavailable" : "[SigningEngine][near] Passkey public lane is ambiguous");
|
|
541
|
-
return matches[0];
|
|
542
|
-
}
|
|
543
|
-
async function resolveExactNearEd25519PublicLaneReference(args) {
|
|
544
|
-
const signer = args.identity.signer;
|
|
545
|
-
const matches = (await args.store.listLanes()).filter((reference) => String(reference.walletId) === String(signer.account.wallet.walletId) && String(reference.nearAccountId) === String(signer.account.nearAccountId) && String(reference.nearEd25519SigningKeyId) === String(signer.nearEd25519SigningKeyId) && reference.signerSlot === signer.signerSlot && String(reference.thresholdSessionId) === String(args.identity.thresholdSessionId) && nearEd25519AuthBindingsEqual(reference.auth, args.identity.auth) && mpcMaterialActivationRefsEqual(reference.materialActivation, args.materialActivation));
|
|
546
|
-
if (matches.length !== 1) throw new Error(matches.length === 0 ? "[SigningEngine][near] exact Ed25519 public lane is unavailable" : "[SigningEngine][near] exact Ed25519 public lane is ambiguous");
|
|
547
|
-
return matches[0];
|
|
548
|
-
}
|
|
549
|
-
async function requireExactPasskeyWalletSessionAuthority(args) {
|
|
550
|
-
if (args.reference.auth.kind !== WALLET_AUTH_METHODS.passkey) throw new Error("[SigningEngine][near] Passkey public lane authority is required");
|
|
551
|
-
if (args.authorization.selectedAuthMethod.kind !== WALLET_AUTH_METHODS.passkey || String(args.authorization.session.walletId) !== String(args.reference.walletId)) throw new Error("[SigningEngine][near] Passkey Wallet Session authority does not match lane");
|
|
552
|
-
const method = await IndexedDBManager.getWalletAuthMethodV2(args.authorization.selectedAuthMethod.walletAuthMethodId);
|
|
553
|
-
if (!method || method.kind !== WALLET_AUTH_METHODS.passkey || method.status !== "active" || String(method.walletId) !== String(args.reference.walletId) || String(method.rpId) !== String(args.reference.auth.rpId) || String(method.credentialIdB64u) !== String(args.reference.auth.credentialIdB64u)) throw new Error("[SigningEngine][near] Passkey Wallet Session method does not match lane");
|
|
554
|
-
const authority = await walletAuthAuthorityRef({ authority: {
|
|
555
|
-
walletId: method.walletId,
|
|
556
|
-
factor: {
|
|
557
|
-
kind: WALLET_AUTH_METHODS.passkey,
|
|
558
|
-
credentialIdB64u: method.credentialIdB64u
|
|
559
|
-
},
|
|
560
|
-
verifier: {
|
|
561
|
-
kind: "webauthn",
|
|
562
|
-
rpId: method.rpId
|
|
563
|
-
},
|
|
564
|
-
bindingId: method.walletAuthMethodId
|
|
565
|
-
} });
|
|
566
|
-
const selectedFactorRef = await walletAuthAuthorityRef({ authority: args.authorization.selectedFactorAuthority });
|
|
567
|
-
if (authority.authorityDigest !== selectedFactorRef.authorityDigest || authority.walletAuthMethodId !== selectedFactorRef.walletAuthMethodId) throw new Error("[SigningEngine][near] Passkey Wallet Session authority changed");
|
|
568
|
-
return authority;
|
|
569
|
-
}
|
|
570
|
-
async function passkeyWalletSessionStateFromPublicLane(args) {
|
|
571
|
-
if (args.reference.auth.kind !== WALLET_AUTH_METHODS.passkey) throw new Error("[SigningEngine][near] Passkey public lane authority is required");
|
|
572
|
-
if (!nearEd25519SessionMatchesMaterialActivation({
|
|
573
|
-
session: args.authorization.session,
|
|
574
|
-
materialActivation: args.materialActivation
|
|
575
|
-
})) throw new Error("[SigningEngine][near] Passkey Wallet Session material changed");
|
|
576
|
-
const authority = await requireExactPasskeyWalletSessionAuthority({
|
|
577
|
-
reference: args.reference,
|
|
578
|
-
authorization: args.authorization
|
|
579
|
-
});
|
|
580
|
-
const authorizationId = parseWalletSessionAuthorizationId(args.authorization.session.authorizationId);
|
|
581
|
-
if (!authorizationId.ok || args.authorization.operationCredential.token.trim().length === 0) throw new Error("[SigningEngine][near] Passkey Ed25519 Wallet Session credential is unavailable");
|
|
582
|
-
const facts = args.material.facts;
|
|
583
|
-
const signingWalletSession = buildRouterAbEd25519SigningWalletSession({
|
|
584
|
-
walletId: String(args.reference.walletId),
|
|
585
|
-
nearAccountId: String(args.reference.nearAccountId),
|
|
586
|
-
nearEd25519SigningKeyId: String(args.reference.nearEd25519SigningKeyId),
|
|
587
|
-
walletSessionId: args.authorization.operationCredential.walletSessionId,
|
|
588
|
-
authorizationId: authorizationId.value,
|
|
589
|
-
quotaId: args.authorization.session.quotaId,
|
|
590
|
-
thresholdSessionId: args.reference.thresholdSessionId,
|
|
591
|
-
remainingUses: args.authorization.status.remainingUses,
|
|
592
|
-
expiresAtMs: args.authorization.status.expiresAtMs,
|
|
593
|
-
runtimePolicyScope: facts.runtimePolicyScope,
|
|
594
|
-
signingRootId: facts.signingRootId,
|
|
595
|
-
signingRootVersion: facts.signingRootVersion,
|
|
596
|
-
routerAbNormalSigning: facts.routerAbNormalSigning,
|
|
597
|
-
walletSessionToken: args.authorization.operationCredential.token,
|
|
598
|
-
nowMs: Date.now()
|
|
599
|
-
});
|
|
600
|
-
if (!signingWalletSession.ok) throw new Error(`[SigningEngine][near] Passkey Wallet Session is unusable (${signingWalletSession.reason})`);
|
|
601
|
-
return buildPasskeyRouterAbEd25519WalletSessionState({
|
|
602
|
-
walletId: args.reference.walletId,
|
|
603
|
-
nearAccountId: args.reference.nearAccountId,
|
|
604
|
-
nearEd25519SigningKeyId: args.reference.nearEd25519SigningKeyId,
|
|
605
|
-
signerSlot: args.reference.signerSlot,
|
|
606
|
-
rpId: args.reference.auth.rpId,
|
|
607
|
-
credentialIdB64u: args.reference.auth.credentialIdB64u,
|
|
608
|
-
relayerUrl: args.relayerUrl,
|
|
609
|
-
authority,
|
|
610
|
-
signingWalletSession: signingWalletSession.value
|
|
611
|
-
});
|
|
612
|
-
}
|
|
613
|
-
async function requireExactEd25519SealedRuntimeForLane(args) {
|
|
614
|
-
const resolution = await resolveExactEd25519SealedSessionRuntimeForLane(args);
|
|
615
|
-
if (resolution.kind !== "resolved") throw invalidWalletSigningMaterial(resolution.kind === "conflict" ? "runtime_conflict" : "missing_runtime");
|
|
616
|
-
return resolution.runtime;
|
|
617
|
-
}
|
|
618
|
-
async function requireExactEd25519SealedRuntimeForMaterialActivation(args) {
|
|
619
|
-
const record = await readExactEd25519SealedSession(ed25519DurableMaterialLocator({
|
|
620
|
-
authMethod: args.laneIdentity.auth.kind,
|
|
621
|
-
materialActivation: args.materialActivation
|
|
622
|
-
}));
|
|
623
|
-
if (!record || record.curve !== "ed25519") throw new Error("[SigningEngine][near] exact persisted Ed25519 runtime is missing");
|
|
624
|
-
const runtime = parseExactEd25519SealedSessionRuntime(record);
|
|
625
|
-
if (!runtime || String(runtime.walletId) !== String(args.walletId) || String(runtime.nearAccountId) !== String(args.laneIdentity.signer.account.nearAccountId) || String(runtime.nearEd25519SigningKeyId) !== String(args.laneIdentity.signer.nearEd25519SigningKeyId) || runtime.signerSlot !== args.laneIdentity.signer.signerSlot || String(runtime.thresholdSessionId) !== String(args.laneIdentity.thresholdSessionId) || !nearEd25519AuthBindingsEqual(runtime.auth, args.laneIdentity.auth) || !mpcMaterialActivationRefsEqual(runtime.sealedRecord.ed25519Restore.materialActivation, args.materialActivation)) throw new Error("[SigningEngine][near] exact persisted Ed25519 runtime identity mismatch");
|
|
626
|
-
return runtime;
|
|
627
|
-
}
|
|
628
|
-
async function requireExactEd25519SealedRuntimeForMaterialIdentity(args) {
|
|
629
|
-
const runtimes = (await listExactSealedSessionsForWallet({
|
|
630
|
-
walletId: args.walletId,
|
|
631
|
-
filter: {
|
|
632
|
-
authMethod: args.identity.auth.kind,
|
|
633
|
-
curve: "ed25519"
|
|
634
|
-
}
|
|
635
|
-
})).filter((record) => record.curve === "ed25519").map(parseExactEd25519SealedSessionRuntime).filter((runtime) => runtime !== null && nearEd25519RuntimeMatchesMaterialIdentity({
|
|
636
|
-
runtime,
|
|
637
|
-
identity: args.identity
|
|
638
|
-
}));
|
|
639
|
-
if (runtimes.length === 0) throw invalidWalletSigningMaterial("missing_runtime");
|
|
640
|
-
if (runtimes.length !== 1) throw invalidWalletSigningMaterial("runtime_conflict");
|
|
641
|
-
return runtimes[0];
|
|
642
|
-
}
|
|
643
|
-
function operationStepUpProofMatchesSelectedWalletAuthMethod(args) {
|
|
644
|
-
const { selection, authMethod, authority } = args.selected;
|
|
645
|
-
if (selection.lockState !== "unlocked" || selection.walletId !== args.walletId || selection.walletAuthMethodId !== authMethod.walletAuthMethodId || authMethod.walletId !== args.walletId || authMethod.walletAuthorityId !== authority.authorityId || authority.walletId !== args.walletId) return false;
|
|
646
|
-
switch (args.proof.kind) {
|
|
647
|
-
case "passkey": return authMethod.kind === WALLET_AUTH_METHODS.passkey && args.proof.authority.walletId === args.walletId && args.proof.authority.bindingId === authMethod.walletAuthMethodId && args.proof.authority.factor.credentialIdB64u === authMethod.credentialIdB64u && args.proof.authority.verifier.rpId === authMethod.rpId;
|
|
648
|
-
case "email_otp": return authMethod.kind === WALLET_AUTH_METHODS.emailOtp && args.proof.authorityRef.walletId === args.walletId && args.proof.authorityRef.walletAuthMethodId === authMethod.walletAuthMethodId;
|
|
649
|
-
default:
|
|
650
|
-
args.proof;
|
|
651
|
-
throw new Error("[SigningEngine][near] unsupported operation step-up proof");
|
|
652
|
-
}
|
|
653
|
-
}
|
|
654
|
-
async function resolveExactNearEd25519WalletSessionOperationCredentialForStepUp(args) {
|
|
655
|
-
const selected = await IndexedDBManager.resolveSelectedWalletAuthority(String(args.walletId));
|
|
656
|
-
if (selected.kind !== "resolved") {
|
|
657
|
-
const detail = selected.kind === "integrity_error" ? `: ${selected.reason}` : "";
|
|
658
|
-
throw new Error(`[SigningEngine][near] selected Wallet Authority is ${selected.kind}${detail}`);
|
|
659
|
-
}
|
|
660
|
-
if (!operationStepUpProofMatchesSelectedWalletAuthMethod({
|
|
661
|
-
walletId: args.walletId,
|
|
662
|
-
proof: args.proof,
|
|
663
|
-
selected
|
|
664
|
-
})) throw new Error("[SigningEngine][near] operation step-up authority does not match selection");
|
|
665
|
-
const operation = await resolveWalletAuthorityOperation({
|
|
666
|
-
selected: {
|
|
667
|
-
authMethod: selected.authMethod,
|
|
668
|
-
authority: selected.authority
|
|
669
|
-
},
|
|
670
|
-
operation: {
|
|
671
|
-
kind: "near_sign",
|
|
672
|
-
operation: "sign",
|
|
673
|
-
keyFamily: "ed25519"
|
|
674
|
-
}
|
|
675
|
-
});
|
|
676
|
-
if (operation.kind !== "resolved") throw new Error(`[SigningEngine][near] selected Wallet Authority rejected signing (${operation.reason.kind})`);
|
|
677
|
-
const exactSession = exactWalletSessionWithOperationCredentialOrThrow(await walletSessionAuthorizations.readExactWithOperationCredential({
|
|
678
|
-
walletId: args.walletId,
|
|
679
|
-
authorityId: selected.authority.authorityId,
|
|
680
|
-
authMethodId: selected.authMethod.walletAuthMethodId
|
|
681
|
-
}), "[SigningEngine][near] exact Wallet Session requires a newer client");
|
|
682
|
-
const hasSigningSubject = exactSession?.record.capabilitySubjects.filter((subject) => subject.kind === "sign" && subject.keyFamily === "ed25519" && mpcMaterialActivationRefsEqual(subject.materialActivation, operation.value.materialActivation)).length === 1;
|
|
683
|
-
if (!exactSession || exactSession.record.walletId !== args.walletId || exactSession.record.authorityId !== selected.authority.authorityId || exactSession.record.authMethodId !== selected.authMethod.walletAuthMethodId || exactSession.record.authorityDigestB64u !== selected.authority.authorityDigestB64u || exactSession.record.authorityRevocationEpoch !== selected.authority.revocationEpoch || exactSession.record.expiresAtMs <= Date.now() || !hasSigningSubject) throw new Error("[SigningEngine][near] exact Wallet Session is unavailable for operation step-up");
|
|
684
|
-
return exactSession.operationCredential;
|
|
685
|
-
}
|
|
686
|
-
async function walletSessionStateFromExactEd25519Runtime(args) {
|
|
687
|
-
const authorization = await resolveBrowserActiveNearEd25519WalletSessionAuthorization(args.runtime.walletId, args.relayerUrl);
|
|
688
|
-
if (!authorization) throw new Error("[SigningEngine][near] active Wallet Session authorization is unavailable");
|
|
689
|
-
return await rebindRouterAbEd25519WalletSessionStateFromExactRuntime({
|
|
690
|
-
runtime: args.runtime,
|
|
691
|
-
authorization,
|
|
692
|
-
nowMs: Date.now()
|
|
693
|
-
});
|
|
694
|
-
}
|
|
695
|
-
async function preparePasskeyEd25519OperationMaterial(args) {
|
|
696
|
-
const { identity } = args;
|
|
697
|
-
if (identity.auth.kind !== WALLET_AUTH_METHODS.passkey) throw invalidWalletSigningMaterial("binding_mismatch");
|
|
698
|
-
const selected = await IndexedDBManager.resolveSelectedWalletAuthority(String(args.walletId));
|
|
699
|
-
if (selected.kind !== "resolved" || selected.selection.lockState !== "unlocked" || selected.selection.walletId !== args.walletId || selected.authMethod.kind !== WALLET_AUTH_METHODS.passkey || String(selected.authMethod.rpId) !== String(identity.auth.rpId) || selected.authMethod.credentialIdB64u !== identity.auth.credentialIdB64u) throw invalidWalletSigningMaterial("binding_mismatch");
|
|
700
|
-
const operation = await resolveWalletAuthorityOperation({
|
|
701
|
-
selected: {
|
|
702
|
-
authMethod: selected.authMethod,
|
|
703
|
-
authority: selected.authority
|
|
704
|
-
},
|
|
705
|
-
operation: {
|
|
706
|
-
kind: "near_sign",
|
|
707
|
-
operation: "sign",
|
|
708
|
-
keyFamily: "ed25519"
|
|
709
|
-
}
|
|
710
|
-
});
|
|
711
|
-
if (operation.kind !== "resolved") throw invalidWalletSigningMaterial("missing_capability");
|
|
712
|
-
const authority = await resolveBrowserExactPasskeyWalletAuthAuthorityRef({
|
|
713
|
-
walletId: args.walletId,
|
|
714
|
-
rpId: identity.auth.rpId,
|
|
715
|
-
credentialIdB64u: identity.auth.credentialIdB64u
|
|
716
|
-
});
|
|
717
|
-
if (!authority || authority.walletAuthMethodId !== selected.authMethod.walletAuthMethodId) throw invalidWalletSigningMaterial("binding_mismatch");
|
|
718
|
-
const local = await readPasskeyEd25519YaoLocalMaterialLocatorV1({
|
|
719
|
-
store: IndexedDBManager,
|
|
720
|
-
walletId: String(args.walletId),
|
|
721
|
-
nearAccountId: String(identity.signer.account.nearAccountId),
|
|
722
|
-
nearEd25519SigningKeyId: String(identity.signer.nearEd25519SigningKeyId),
|
|
723
|
-
signerSlot: identity.signer.signerSlot,
|
|
724
|
-
rpId: identity.auth.rpId,
|
|
725
|
-
credentialIdB64u: identity.auth.credentialIdB64u,
|
|
726
|
-
authority
|
|
727
|
-
});
|
|
728
|
-
if (local.kind !== "available") throw invalidWalletSigningMaterial("missing_runtime");
|
|
729
|
-
if (!mpcMaterialActivationRefsEqual(local.locator.materialActivation, operation.value.materialActivation)) throw invalidWalletSigningMaterial("binding_mismatch");
|
|
730
|
-
const scope = local.locator.stableServerScope;
|
|
731
|
-
const root = signingRootScopeFromRuntimePolicyScope(scope.runtimePolicyScope);
|
|
732
|
-
if (!root.signingRootVersion) throw invalidWalletSigningMaterial("binding_mismatch");
|
|
733
|
-
const localIdentity = {
|
|
734
|
-
walletId: String(args.walletId),
|
|
735
|
-
nearAccountId: String(identity.signer.account.nearAccountId),
|
|
736
|
-
nearEd25519SigningKeyId: String(identity.signer.nearEd25519SigningKeyId),
|
|
737
|
-
thresholdSessionId: String(identity.thresholdSessionId),
|
|
738
|
-
signerSlot: identity.signer.signerSlot,
|
|
739
|
-
rpId: identity.auth.rpId,
|
|
740
|
-
credentialIdB64u: identity.auth.credentialIdB64u,
|
|
741
|
-
signingRootId: root.signingRootId,
|
|
742
|
-
signingRootVersion: root.signingRootVersion,
|
|
743
|
-
signingWorkerId: scope.routerAbNormalSigning.signingWorkerId
|
|
744
|
-
};
|
|
745
|
-
const publicLocator = {
|
|
746
|
-
kind: "available",
|
|
747
|
-
walletId: localIdentity.walletId,
|
|
748
|
-
nearAccountId: localIdentity.nearAccountId,
|
|
749
|
-
signerSlot: localIdentity.signerSlot,
|
|
750
|
-
materialActivation: local.locator.materialActivation
|
|
751
|
-
};
|
|
752
|
-
const prepared = await prepareExactPasskeyEd25519YaoLocalMaterialRehydration({
|
|
753
|
-
store: IndexedDBManager,
|
|
754
|
-
identity: localIdentity,
|
|
755
|
-
authority,
|
|
756
|
-
publicLocator
|
|
757
|
-
});
|
|
758
|
-
if (prepared.kind === "blocked") throw walletSigningMaterialBlockError(prepared.plan.reason);
|
|
759
|
-
return {
|
|
760
|
-
prepared,
|
|
761
|
-
localIdentity,
|
|
762
|
-
authority,
|
|
763
|
-
publicLocator,
|
|
764
|
-
facts: {
|
|
765
|
-
thresholdSessionId: identity.thresholdSessionId,
|
|
766
|
-
signer: identity.signer,
|
|
767
|
-
signingRootId: root.signingRootId,
|
|
768
|
-
signingRootVersion: root.signingRootVersion,
|
|
769
|
-
routerAbNormalSigning: scope.routerAbNormalSigning,
|
|
770
|
-
runtimePolicyScope: scope.runtimePolicyScope,
|
|
771
|
-
relayerUrl: args.relayerUrl
|
|
772
|
-
},
|
|
773
|
-
participantIds: scope.participantIds
|
|
774
|
-
};
|
|
775
|
-
}
|
|
776
|
-
function passkeyEd25519LocalMaterialIdentityFromExactRuntime(runtime) {
|
|
777
|
-
if (runtime.factor.kind !== WALLET_AUTH_METHODS.passkey) throw invalidWalletSigningMaterial("binding_mismatch");
|
|
778
|
-
return {
|
|
779
|
-
walletId: String(runtime.walletId),
|
|
780
|
-
nearAccountId: String(runtime.nearAccountId),
|
|
781
|
-
nearEd25519SigningKeyId: String(runtime.nearEd25519SigningKeyId),
|
|
782
|
-
thresholdSessionId: String(runtime.thresholdSessionId),
|
|
783
|
-
signerSlot: runtime.signerSlot,
|
|
784
|
-
rpId: String(runtime.factor.rpId),
|
|
785
|
-
credentialIdB64u: runtime.factor.credentialIdB64u,
|
|
786
|
-
signingRootId: runtime.signingRootId,
|
|
787
|
-
signingRootVersion: runtime.signingRootVersion,
|
|
788
|
-
signingWorkerId: runtime.routerAbNormalSigning.signingWorkerId
|
|
789
|
-
};
|
|
790
|
-
}
|
|
791
|
-
async function prepareExactPasskeyEd25519YaoLocalMaterialRehydration(input) {
|
|
792
|
-
try {
|
|
793
|
-
return await preparePasskeyEd25519YaoLocalMaterialRehydrationV1(input);
|
|
794
|
-
} catch {
|
|
795
|
-
throw invalidWalletSigningMaterial("binding_mismatch");
|
|
796
|
-
}
|
|
797
|
-
}
|
|
798
|
-
async function hydrateExactPasskeyEd25519YaoLocalMaterial(input) {
|
|
799
|
-
try {
|
|
800
|
-
return await hydratePasskeyEd25519YaoLocalMaterialV1(input);
|
|
801
|
-
} catch {
|
|
802
|
-
throw invalidWalletSigningMaterial("corrupt");
|
|
803
|
-
}
|
|
804
|
-
}
|
|
805
|
-
function nearEd25519YaoRuntimeObservation(material) {
|
|
806
|
-
if (!material || material.activeClient.status().kind !== "active") return { kind: "absent" };
|
|
807
|
-
const materialActivation = nearEd25519YaoMaterialActivationFromMetadata(material.activeClient.metadata());
|
|
808
|
-
return {
|
|
809
|
-
kind: "live",
|
|
810
|
-
runtime: nearEd25519YaoRuntimeRef(materialActivation),
|
|
811
|
-
materialActivation
|
|
812
|
-
};
|
|
813
|
-
}
|
|
814
|
-
function nearEd25519MaterialIdentityFromBoundaryInput(input) {
|
|
815
|
-
if (input.laneIdentity !== void 0) return {
|
|
816
|
-
kind: "near_ed25519_material_identity",
|
|
817
|
-
signer: input.laneIdentity.signer,
|
|
818
|
-
auth: input.laneIdentity.auth,
|
|
819
|
-
thresholdSessionId: input.laneIdentity.thresholdSessionId
|
|
820
|
-
};
|
|
821
|
-
return input.materialIdentity;
|
|
822
|
-
}
|
|
823
|
-
function nearEd25519AuthFromBoundaryInput(input) {
|
|
824
|
-
return nearEd25519MaterialIdentityFromBoundaryInput(input).auth;
|
|
825
|
-
}
|
|
826
|
-
function nearEd25519PresentedAuthFromBoundaryInput(input) {
|
|
827
|
-
if (input.auth !== void 0) return input.auth;
|
|
828
|
-
return input.materialIdentity.auth;
|
|
829
|
-
}
|
|
830
|
-
function nearEd25519SignerFromBoundaryInput(input) {
|
|
831
|
-
return nearEd25519MaterialIdentityFromBoundaryInput(input).signer;
|
|
832
|
-
}
|
|
833
|
-
function nearEd25519ThresholdSessionIdFromBoundaryInput(input) {
|
|
834
|
-
return String(nearEd25519MaterialIdentityFromBoundaryInput(input).thresholdSessionId);
|
|
835
|
-
}
|
|
836
|
-
function requireAuthorizedNearEd25519BoundaryInput(input) {
|
|
837
|
-
if (input.laneIdentity === void 0 || input.auth === void 0) throw new Error("[SigningEngine][near] authorized lane identity is required");
|
|
838
|
-
return {
|
|
839
|
-
walletId: input.walletId,
|
|
840
|
-
nearAccountId: input.nearAccountId,
|
|
841
|
-
laneIdentity: input.laneIdentity,
|
|
842
|
-
auth: input.auth
|
|
843
|
-
};
|
|
844
|
-
}
|
|
845
|
-
function authNeutralNearEd25519BoundaryInput(input) {
|
|
846
|
-
return {
|
|
847
|
-
walletId: input.walletId,
|
|
848
|
-
nearAccountId: input.nearAccountId,
|
|
849
|
-
materialIdentity: nearEd25519MaterialIdentityFromBoundaryInput(input)
|
|
850
|
-
};
|
|
851
|
-
}
|
|
852
|
-
async function emailOtpWalletSessionStateFromPublicLane(args) {
|
|
853
|
-
if (args.reference.auth.kind !== WALLET_AUTH_METHODS.emailOtp) throw new Error("[SigningEngine][near] Email OTP public lane authority is required");
|
|
854
|
-
if (!nearEd25519SessionMatchesMaterialActivation({
|
|
855
|
-
session: args.authorization.session,
|
|
856
|
-
materialActivation: args.materialActivation
|
|
857
|
-
})) throw new Error("[SigningEngine][near] Email OTP Wallet Session material changed");
|
|
858
|
-
const authorizationId = parseWalletSessionAuthorizationId(args.authorization.session.authorizationId);
|
|
859
|
-
if (!authorizationId.ok || args.authorization.operationCredential.token.trim().length === 0) throw new Error("[SigningEngine][near] Email OTP Ed25519 Wallet Session credential is unavailable");
|
|
860
|
-
const authority = await walletAuthAuthorityRef({ authority: args.authorization.selectedFactorAuthority });
|
|
861
|
-
const facts = args.material.facts;
|
|
862
|
-
const signingWalletSession = buildRouterAbEd25519SigningWalletSession({
|
|
863
|
-
walletId: String(args.reference.walletId),
|
|
864
|
-
nearAccountId: String(args.reference.nearAccountId),
|
|
865
|
-
nearEd25519SigningKeyId: String(args.reference.nearEd25519SigningKeyId),
|
|
866
|
-
walletSessionId: args.authorization.operationCredential.walletSessionId,
|
|
867
|
-
authorizationId: authorizationId.value,
|
|
868
|
-
quotaId: args.authorization.session.quotaId,
|
|
869
|
-
thresholdSessionId: args.reference.thresholdSessionId,
|
|
870
|
-
remainingUses: args.authorization.status.remainingUses,
|
|
871
|
-
expiresAtMs: args.authorization.status.expiresAtMs,
|
|
872
|
-
runtimePolicyScope: facts.runtimePolicyScope,
|
|
873
|
-
signingRootId: facts.signingRootId,
|
|
874
|
-
signingRootVersion: facts.signingRootVersion,
|
|
875
|
-
routerAbNormalSigning: facts.routerAbNormalSigning,
|
|
876
|
-
walletSessionToken: args.authorization.operationCredential.token,
|
|
877
|
-
nowMs: Date.now()
|
|
878
|
-
});
|
|
879
|
-
if (!signingWalletSession.ok) throw new Error(`[SigningEngine][near] Email OTP Wallet Session is unusable (${signingWalletSession.reason})`);
|
|
880
|
-
return buildEmailOtpRouterAbEd25519WalletSessionState({
|
|
881
|
-
walletId: args.reference.walletId,
|
|
882
|
-
nearAccountId: args.reference.nearAccountId,
|
|
883
|
-
nearEd25519SigningKeyId: args.reference.nearEd25519SigningKeyId,
|
|
884
|
-
providerSubjectId: args.reference.auth.providerSubjectId,
|
|
885
|
-
signerSlot: args.reference.signerSlot,
|
|
886
|
-
relayerUrl: args.relayerUrl,
|
|
887
|
-
authority,
|
|
888
|
-
signingWalletSession: signingWalletSession.value
|
|
889
|
-
});
|
|
890
|
-
}
|
|
891
|
-
function nearEd25519AuthBindingsEqual(left, right) {
|
|
892
|
-
if (left.kind !== right.kind) return false;
|
|
893
|
-
switch (left.kind) {
|
|
894
|
-
case WALLET_AUTH_METHODS.passkey: return right.kind === WALLET_AUTH_METHODS.passkey && left.rpId === right.rpId && left.credentialIdB64u === right.credentialIdB64u;
|
|
895
|
-
case WALLET_AUTH_METHODS.emailOtp: return right.kind === WALLET_AUTH_METHODS.emailOtp && left.providerSubjectId === right.providerSubjectId;
|
|
896
|
-
default: throw new Error("[SigningEngine][near] unsupported Ed25519 material authority");
|
|
897
|
-
}
|
|
898
|
-
}
|
|
899
|
-
function nearEd25519RuntimeMatchesMaterialIdentity(args) {
|
|
900
|
-
const signer = args.identity.signer;
|
|
901
|
-
return String(args.runtime.walletId) === String(signer.account.wallet.walletId) && String(args.runtime.nearAccountId) === String(signer.account.nearAccountId) && String(args.runtime.nearEd25519SigningKeyId) === String(signer.nearEd25519SigningKeyId) && args.runtime.signerSlot === signer.signerSlot && String(args.runtime.thresholdSessionId) === String(args.identity.thresholdSessionId) && nearEd25519AuthBindingsEqual(args.runtime.auth, args.identity.auth);
|
|
902
|
-
}
|
|
903
|
-
function emailOtpEd25519OperationMaterialFacts(args) {
|
|
904
|
-
const signingRoot = signingRootScopeFromRuntimePolicyScope(args.publicLane.runtimePolicyScope);
|
|
905
|
-
if (!signingRoot.signingRootVersion) throw new Error("[SigningEngine][near] Email OTP lane requires a signing-root version");
|
|
906
|
-
return {
|
|
907
|
-
thresholdSessionId: args.publicLane.thresholdSessionId,
|
|
908
|
-
signer: nearEd25519SignerFromBoundaryInput(args.input),
|
|
909
|
-
signingRootId: signingRoot.signingRootId,
|
|
910
|
-
signingRootVersion: signingRoot.signingRootVersion,
|
|
911
|
-
routerAbNormalSigning: {
|
|
912
|
-
kind: ROUTER_AB_ED25519_NORMAL_SIGNING_STATE_KIND,
|
|
913
|
-
signingWorkerId: String(args.publicLane.materialActivation.signingWorker)
|
|
914
|
-
},
|
|
915
|
-
runtimePolicyScope: args.publicLane.runtimePolicyScope,
|
|
916
|
-
relayerUrl: args.relayerUrl
|
|
917
|
-
};
|
|
918
|
-
}
|
|
919
|
-
function assertNearEd25519YaoMaterialBoundaryAuth(input) {
|
|
920
|
-
const expected = nearEd25519AuthFromBoundaryInput(input);
|
|
921
|
-
const actual = nearEd25519PresentedAuthFromBoundaryInput(input);
|
|
922
|
-
if (expected.kind !== actual.kind) throw new Error("[SigningEngine][near] prepared material factor changed");
|
|
923
|
-
switch (actual.kind) {
|
|
924
|
-
case WALLET_AUTH_METHODS.passkey:
|
|
925
|
-
if (expected.kind !== WALLET_AUTH_METHODS.passkey || expected.rpId !== actual.rpId || expected.credentialIdB64u !== actual.credentialIdB64u) throw new Error("[SigningEngine][near] prepared Passkey material binding changed");
|
|
926
|
-
return;
|
|
927
|
-
case WALLET_AUTH_METHODS.emailOtp:
|
|
928
|
-
if (expected.kind !== WALLET_AUTH_METHODS.emailOtp || expected.providerSubjectId !== actual.providerSubjectId) throw new Error("[SigningEngine][near] prepared Email OTP material binding changed");
|
|
929
|
-
return;
|
|
930
|
-
default: throw new Error("[SigningEngine][near] unsupported Ed25519 material authority");
|
|
931
|
-
}
|
|
932
|
-
}
|
|
933
|
-
function validateExactNearEd25519YaoOperationMaterial(args) {
|
|
934
|
-
const facts = args.material.facts;
|
|
935
|
-
const metadata = args.material.activeClient.metadata();
|
|
936
|
-
const thresholdSessionId = nearEd25519ThresholdSessionIdFromBoundaryInput(args.input);
|
|
937
|
-
const expectedSigner = nearEd25519SignerFromBoundaryInput(args.input);
|
|
938
|
-
const actualSigner = facts.signer;
|
|
939
|
-
if (String(facts.thresholdSessionId) !== thresholdSessionId) throw new Error("[SigningEngine][near] active Ed25519 Yao capability session mismatch");
|
|
940
|
-
if (metadata.scope.threshold_session_id !== String(facts.thresholdSessionId)) throw new Error("[SigningEngine][near] active Ed25519 Yao metadata session mismatch");
|
|
941
|
-
if (metadata.scope.account_id !== String(args.input.walletId) || metadata.applicationBinding.wallet_id !== String(args.input.walletId)) throw new Error("[SigningEngine][near] active Ed25519 Yao capability subject mismatch");
|
|
942
|
-
if (String(actualSigner.account.wallet.walletId) !== String(expectedSigner.account.wallet.walletId) || String(actualSigner.account.nearAccountId) !== String(expectedSigner.account.nearAccountId) || actualSigner.signerSlot !== expectedSigner.signerSlot || String(actualSigner.nearEd25519SigningKeyId) !== String(expectedSigner.nearEd25519SigningKeyId)) throw new Error("[SigningEngine][near] active Ed25519 Yao capability signer mismatch");
|
|
943
|
-
const materialActivation = nearEd25519YaoMaterialActivationFromMetadata(metadata);
|
|
944
|
-
if (!mpcMaterialActivationRefsEqual(args.expectedActivation, materialActivation)) throw new Error("[SigningEngine][near] active Ed25519 Yao capability activation mismatch");
|
|
945
|
-
return args.material;
|
|
946
|
-
}
|
|
947
|
-
async function hydrateOwnerNearEd25519ExecutionLane(args) {
|
|
948
|
-
const materialActivation = nearEd25519YaoMaterialActivationFromMetadata(args.material.activeClient.metadata());
|
|
949
|
-
if (!nearEd25519SessionMatchesMaterialActivation({
|
|
950
|
-
session: args.authorization.session,
|
|
951
|
-
materialActivation
|
|
952
|
-
})) throw new Error("Owner Ed25519 execution-lane material changed");
|
|
953
|
-
const walletSessionToken = args.authorization.operationCredential.token;
|
|
954
|
-
const exactMaterial = validateExactNearEd25519YaoOperationMaterial({
|
|
955
|
-
material: args.material,
|
|
956
|
-
input: args.input,
|
|
957
|
-
expectedActivation: materialActivation
|
|
958
|
-
});
|
|
959
|
-
const authority = await ed25519SealedRuntimeAuthorityRef({
|
|
960
|
-
runtime: args.sealedRuntime,
|
|
961
|
-
walletAuthMethodId: args.authorization.selectedAuthMethod.walletAuthMethodId
|
|
962
|
-
});
|
|
963
|
-
const selectedFactorAuthority = await walletAuthAuthorityRef({ authority: args.authorization.selectedFactorAuthority });
|
|
964
|
-
if (authority.walletId !== selectedFactorAuthority.walletId || authority.walletAuthMethodId !== selectedFactorAuthority.walletAuthMethodId || authority.authorityDigest !== selectedFactorAuthority.authorityDigest) throw new Error("Owner Ed25519 execution-lane authority does not match sealed material");
|
|
965
|
-
const runtime = nearEd25519YaoRuntimeObservation(exactMaterial);
|
|
966
|
-
if (runtime.kind !== "live") throw new Error("Owner Ed25519 execution-lane preflight requires active Yao material");
|
|
967
|
-
const hydration = {
|
|
968
|
-
publicLocator: {
|
|
969
|
-
kind: "available",
|
|
970
|
-
walletId: String(exactMaterial.facts.signer.account.wallet.walletId),
|
|
971
|
-
nearAccountId: String(exactMaterial.facts.signer.account.nearAccountId),
|
|
972
|
-
signerSlot: exactMaterial.facts.signer.signerSlot,
|
|
973
|
-
materialActivation,
|
|
974
|
-
authority
|
|
975
|
-
},
|
|
976
|
-
sealed: { kind: "missing" },
|
|
977
|
-
runtime,
|
|
978
|
-
unlockSource: { kind: "unavailable" }
|
|
979
|
-
};
|
|
980
|
-
return assertOwnerNearEd25519ExecutionLaneProjection({
|
|
981
|
-
projection: await readOwnerWalletExecutionLaneProjectionV1({
|
|
982
|
-
relayerUrl: exactMaterial.facts.relayerUrl,
|
|
983
|
-
walletSessionToken,
|
|
984
|
-
curve: "ed25519",
|
|
985
|
-
expectedMaterialActivation: materialActivation
|
|
986
|
-
}),
|
|
987
|
-
material: exactMaterial,
|
|
988
|
-
hydration
|
|
989
|
-
});
|
|
990
|
-
}
|
|
991
|
-
function assertOwnerNearEd25519ExecutionLaneProjection(args) {
|
|
992
|
-
const hydrated = hydrateWalletExecutionLane({
|
|
993
|
-
walletKey: args.projection.walletKey,
|
|
994
|
-
lane: args.projection.lane,
|
|
995
|
-
material: {
|
|
996
|
-
keyFamily: "ed25519",
|
|
997
|
-
laneShareEpoch: args.projection.lane.laneShareEpoch,
|
|
998
|
-
metadata: args.material.activeClient.metadata(),
|
|
999
|
-
hydration: args.hydration
|
|
1000
|
-
}
|
|
1001
|
-
});
|
|
1002
|
-
if (hydrated.kind !== "active_wallet_execution_lane_v1") throw new Error(`Owner Ed25519 execution lane is ${hydrated.reason}`);
|
|
1003
|
-
if (!mpcMaterialActivationRefsEqual(hydrated.materialActivation, args.projection.materialActivation) || hydrated.activationReceiptDigestB64u !== String(args.projection.verifiedActivationReceiptDigestB64u)) throw new Error("Owner Ed25519 execution-lane projection activation changed");
|
|
1004
|
-
return hydrated;
|
|
1005
|
-
}
|
|
1006
|
-
function requireNearEd25519YaoPreparationActivation(preparation) {
|
|
1007
|
-
const materialActivation = preparation.hydration.materialActivation;
|
|
1008
|
-
if (!materialActivation) throw new Error("[SigningEngine][near] prepared material has no activation");
|
|
1009
|
-
return materialActivation;
|
|
1010
|
-
}
|
|
1011
|
-
function requireBoundNearEd25519YaoPreparationActivation(args) {
|
|
1012
|
-
const materialActivation = requireNearEd25519YaoPreparationActivation(args.preparation);
|
|
1013
|
-
if (!args.context.materialActivation || !mpcMaterialActivationRefsEqual(args.context.materialActivation, materialActivation)) throw new Error("[SigningEngine][near] prepared material boundary changed activation");
|
|
1014
|
-
return materialActivation;
|
|
1015
|
-
}
|
|
1016
|
-
function serializePreparedRegistrationCredential(credential) {
|
|
1017
|
-
return serializeRegistrationCredentialWithPRF({
|
|
1018
|
-
credential,
|
|
1019
|
-
firstPrfOutput: true,
|
|
1020
|
-
secondPrfOutput: true
|
|
1021
|
-
});
|
|
1022
|
-
}
|
|
1023
|
-
async function loadEcdsaRoleLocalReadyRecordFromRuntimePorts(runtimePortsRef, input) {
|
|
1024
|
-
if (!runtimePortsRef.current) return {
|
|
1025
|
-
ok: false,
|
|
1026
|
-
code: "unavailable",
|
|
1027
|
-
message: "Signing runtime storage is not initialized"
|
|
1028
|
-
};
|
|
1029
|
-
return await runtimePortsRef.current.storage.loadEcdsaRoleLocalReadyRecord(input);
|
|
1030
|
-
}
|
|
1031
|
-
function sdkLifecycleEventDeliveryKey(event) {
|
|
1032
|
-
const eventName = event.event;
|
|
1033
|
-
switch (eventName) {
|
|
1034
|
-
case "signing_session.expired": return `${String(event.walletId)}:${String(event.walletSessionId)}`;
|
|
1035
|
-
case "registration.near_provisioning_changed": return `${String(event.walletId)}:${event.state.status}:${event.state.updatedAtMs}`;
|
|
1036
|
-
default: return assertNeverSdkLifecycleEventName(eventName);
|
|
1037
|
-
}
|
|
1038
|
-
}
|
|
1039
|
-
function assertNeverSdkLifecycleEventName(value) {
|
|
1040
|
-
throw new Error(`Unsupported SDK lifecycle event: ${String(value)}`);
|
|
1041
|
-
}
|
|
1042
|
-
async function readBrowserPasskeyCustodySessionCache(key) {
|
|
1043
|
-
if (IndexedDBManager.isDisabled()) return void 0;
|
|
1044
|
-
return await IndexedDBManager.getAppState(key);
|
|
1045
|
-
}
|
|
1046
|
-
async function writeBrowserPasskeyCustodySessionCache(key, value) {
|
|
1047
|
-
if (IndexedDBManager.isDisabled()) return;
|
|
1048
|
-
await IndexedDBManager.setAppState(key, value);
|
|
1049
|
-
}
|
|
1050
|
-
const browserPasskeyCustodySessionCachePersistence = {
|
|
1051
|
-
readCacheEntry: readBrowserPasskeyCustodySessionCache,
|
|
1052
|
-
writeCacheEntry: writeBrowserPasskeyCustodySessionCache
|
|
1053
|
-
};
|
|
1054
|
-
var BrowserSigningSurface = class {
|
|
1055
|
-
readExactNearEd25519WalletSessionAuthorization(walletId) {
|
|
1056
|
-
return readBrowserExactNearEd25519WalletSessionAuthorization(String(this.seamsWebConfigs.network.relayer?.url || "").trim(), new WalletSessionStatusReadScope(), walletId);
|
|
1057
|
-
}
|
|
1058
|
-
resolveActiveNearEd25519WalletSessionAuthorization(walletId) {
|
|
1059
|
-
return resolveBrowserActiveNearEd25519WalletSessionAuthorization(walletId, String(this.seamsWebConfigs.network.relayer?.url || "").trim());
|
|
1060
|
-
}
|
|
1061
|
-
constructor(seamsWebConfigs, nearClient, deps) {
|
|
1062
|
-
this.workerBaseOrigin = "";
|
|
1063
|
-
this.thresholdEcdsaBootstrapQueueByWallet = /* @__PURE__ */ new Map();
|
|
1064
|
-
this.thresholdEcdsaSigningQueueByKey = /* @__PURE__ */ new Map();
|
|
1065
|
-
this.thresholdEd25519CommitQueueByKey = /* @__PURE__ */ new Map();
|
|
1066
|
-
this.nearEd25519CapabilityRehydrationBySubject = /* @__PURE__ */ new Map();
|
|
1067
|
-
this.hostWarmCriticalResourcesTask = null;
|
|
1068
|
-
this.sealedRefreshStartupParityError = null;
|
|
1069
|
-
this.sdkLifecycleEventListeners = /* @__PURE__ */ new Set();
|
|
1070
|
-
this.deliveredSdkLifecycleEventKeys = /* @__PURE__ */ new Set();
|
|
1071
|
-
this.walletAuthenticationState = { kind: "signed_out" };
|
|
1072
|
-
this.walletAuthenticationRestoreGeneration = 0;
|
|
1073
|
-
this.volatileWarmSigningMaterialCleanupInFlight = null;
|
|
1074
|
-
this.requestWorkerOperation = (args) => this.signerWorkerManager.getContext().requestWorkerOperation(args);
|
|
1075
|
-
configurePasskeyCustodySessionCachePersistence(browserPasskeyCustodySessionCachePersistence);
|
|
1076
|
-
this.seamsWebConfigs = seamsWebConfigs;
|
|
1077
|
-
this.ed25519YaoPublicCapabilityReferences = deps.ed25519YaoPublicCapabilityReferences;
|
|
1078
|
-
this.appearance = seamsWebConfigs.ui.appearance;
|
|
1079
|
-
this.nearClient = nearClient;
|
|
1080
|
-
this.ecdsaBootstrapStore = deps.signingEngineStores.walletProfileAndSignerRecords.ecdsaBootstrapStore;
|
|
1081
|
-
this.sealedRefreshStartupParityPromise = verifySealedRefreshStartupParity({ configs: this.seamsWebConfigs }).catch((error) => {
|
|
1082
|
-
this.sealedRefreshStartupParityError = error instanceof Error ? error : new Error(String(error || "sealed refresh parity check failed"));
|
|
1083
|
-
});
|
|
1084
|
-
const runtimePortsForUiConfirm = { current: null };
|
|
1085
|
-
const loadEcdsaRoleLocalReadyRecord = loadEcdsaRoleLocalReadyRecordFromRuntimePorts.bind(null, runtimePortsForUiConfirm);
|
|
1086
|
-
const assembly = createManagerAssembly({
|
|
1087
|
-
resolveActiveEcdsaCapabilityRuntime: resolveBrowserActiveEcdsaCapabilityRuntime,
|
|
1088
|
-
resolveOperationStepUpCredential: this.resolveOperationStepUpCredential.bind(this),
|
|
1089
|
-
stores: deps.managerStores,
|
|
1090
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1091
|
-
nearClient: this.nearClient,
|
|
1092
|
-
loadEcdsaRoleLocalReadyRecord,
|
|
1093
|
-
getTheme: () => this.appearance.theme.mode,
|
|
1094
|
-
getAppearance: () => this.appearance,
|
|
1095
|
-
thresholdEcdsaSigningQueueByKey: this.thresholdEcdsaSigningQueueByKey
|
|
1096
|
-
});
|
|
1097
|
-
this.touchIdPrompt = assembly.touchIdPrompt;
|
|
1098
|
-
this.userPreferencesManager = assembly.userPreferencesManager;
|
|
1099
|
-
this.nonceCoordinator = assembly.nonceCoordinator;
|
|
1100
|
-
this.signerWorkerManager = assembly.signerWorkerManager;
|
|
1101
|
-
const signingRuntime = deps.createRuntime({
|
|
1102
|
-
config: this.seamsWebConfigs,
|
|
1103
|
-
workerCtx: this.signerWorkerManager.getContext(),
|
|
1104
|
-
accountLifecycle: {
|
|
1105
|
-
accountStore: deps.signingEngineStores.walletProfileAndSignerRecords.accountStore,
|
|
1106
|
-
userPreferencesManager: this.userPreferencesManager,
|
|
1107
|
-
nonceCoordinator: this.nonceCoordinator
|
|
1108
|
-
},
|
|
1109
|
-
ecdsaBootstrapStore: this.ecdsaBootstrapStore,
|
|
1110
|
-
getWarmSessionMaterialWriter: () => this.passkeyMpcSession,
|
|
1111
|
-
getNearSigningDeps: () => this.enginePorts.nearSigningDeps,
|
|
1112
|
-
getEvmFamilySigningDeps: () => this.enginePorts.tempoSigningDeps
|
|
1113
|
-
});
|
|
1114
|
-
runtimePortsForUiConfirm.current = signingRuntime.runtimePorts;
|
|
1115
|
-
const ecdsaExportArtifactStore = signingRuntime.state.ecdsaSessions;
|
|
1116
|
-
this.runtimePorts = signingRuntime.runtimePorts;
|
|
1117
|
-
const stepUpRuntime = createBrowserStepUpRuntime({
|
|
1118
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1119
|
-
touchIdPrompt: this.touchIdPrompt,
|
|
1120
|
-
signerWorkerManager: this.signerWorkerManager,
|
|
1121
|
-
stores: deps.signingEngineStores,
|
|
1122
|
-
runtimePorts: this.runtimePorts,
|
|
1123
|
-
sealedSigningSessionStore: deps.sealedSigningSessionStore,
|
|
1124
|
-
baseTouchConfirm: assembly.touchConfirm,
|
|
1125
|
-
passkeyMpcSession: assembly.passkeyMpcSession,
|
|
1126
|
-
getEnginePorts: () => this.enginePorts,
|
|
1127
|
-
thresholdEcdsaBootstrapQueueByWallet: this.thresholdEcdsaBootstrapQueueByWallet,
|
|
1128
|
-
thresholdEcdsaSigningQueueByKey: this.thresholdEcdsaSigningQueueByKey,
|
|
1129
|
-
loadWalletCustodyEd25519Material: this.loadEmailOtpWalletCustodyEd25519Material.bind(this),
|
|
1130
|
-
restoreWalletCustodyEcdsaContinuity: this.restoreWalletCustodyEcdsaContinuity.bind(this),
|
|
1131
|
-
getWarmSigning: () => this.warmSigning,
|
|
1132
|
-
ensureSealedRefreshStartupParity: () => this.ensureSealedRefreshStartupParity(),
|
|
1133
|
-
listActiveEcdsaCapabilityManifestsForWallet: listBrowserActiveEcdsaCapabilityManifestsForWallet
|
|
1134
|
-
});
|
|
1135
|
-
this.emailOtpSessions = stepUpRuntime.emailOtpSessions;
|
|
1136
|
-
this.touchConfirm = stepUpRuntime.touchConfirm;
|
|
1137
|
-
this.passkeyMpcSession = stepUpRuntime.passkeyMpcSession;
|
|
1138
|
-
this.warmSigning = createWarmSigningPorts({
|
|
1139
|
-
resolveActiveEcdsaCapabilityRuntime: resolveBrowserActiveEcdsaCapabilityRuntime,
|
|
1140
|
-
resolveActiveEcdsaCapabilityRuntimeForChain: resolveBrowserActiveEcdsaCapabilityRuntimeForChain,
|
|
1141
|
-
touchConfirm: this.touchConfirm,
|
|
1142
|
-
passkeyMpcSession: this.passkeyMpcSession,
|
|
1143
|
-
getEmailOtpWarmSessionStatus: (target) => this.emailOtpSessions.readWarmSessionStatusOnly(target),
|
|
1144
|
-
signingSessionSeal: this.seamsWebConfigs.signing.sessionSeal,
|
|
1145
|
-
ecdsaExportArtifacts: ecdsaExportArtifactStore,
|
|
1146
|
-
resolveActiveEcdsaWalletSessionAuthorization: createBrowserActiveEcdsaWalletSessionAuthorizationResolver({
|
|
1147
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1148
|
-
touchIdPrompt: this.touchIdPrompt,
|
|
1149
|
-
stores: deps.signingEngineStores,
|
|
1150
|
-
emailOtpSessions: this.emailOtpSessions,
|
|
1151
|
-
sealedSigningSessionStore: deps.sealedSigningSessionStore
|
|
1152
|
-
}),
|
|
1153
|
-
resolveActiveEd25519WalletSessionAuthorization: this.resolveActiveNearEd25519WalletSessionAuthorization.bind(this)
|
|
1154
|
-
});
|
|
1155
|
-
this.listPreprocessingCapabilities = listBrowserEcdsaPreprocessingCapabilitiesForWallet.bind(null, {
|
|
1156
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1157
|
-
touchIdPrompt: this.touchIdPrompt,
|
|
1158
|
-
stores: deps.signingEngineStores,
|
|
1159
|
-
emailOtpSessions: this.emailOtpSessions,
|
|
1160
|
-
sealedSigningSessionStore: deps.sealedSigningSessionStore
|
|
1161
|
-
});
|
|
1162
|
-
this.sessionPublicDeps = createSessionPublicDeps({
|
|
1163
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1164
|
-
touchConfirm: this.touchConfirm,
|
|
1165
|
-
passkeyMpcSession: this.passkeyMpcSession,
|
|
1166
|
-
emailOtpSessions: this.emailOtpSessions,
|
|
1167
|
-
ed25519YaoPublicCapabilityLanes: deps.ed25519YaoPublicCapabilityReferences,
|
|
1168
|
-
isEd25519YaoPublicCapabilityActive: this.isEd25519YaoPublicCapabilityActive.bind(this),
|
|
1169
|
-
readActiveWalletSessionAuthorization: readBrowserExactNearEd25519WalletSessionAuthorization.bind(null, this.seamsWebConfigs.network.relayer.url),
|
|
1170
|
-
listEcdsaSigningCapabilitiesForWallet: (input, statusReads) => listBrowserEcdsaSigningCapabilitiesForWallet({
|
|
1171
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1172
|
-
touchIdPrompt: this.touchIdPrompt,
|
|
1173
|
-
stores: deps.signingEngineStores,
|
|
1174
|
-
emailOtpSessions: this.emailOtpSessions,
|
|
1175
|
-
sealedSigningSessionStore: deps.sealedSigningSessionStore
|
|
1176
|
-
}, input, statusReads),
|
|
1177
|
-
getWalletSessionStatus: createBrowserCanonicalWalletSessionStatusReader({
|
|
1178
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1179
|
-
touchIdPrompt: this.touchIdPrompt,
|
|
1180
|
-
stores: deps.signingEngineStores,
|
|
1181
|
-
emailOtpSessions: this.emailOtpSessions,
|
|
1182
|
-
sealedSigningSessionStore: deps.sealedSigningSessionStore
|
|
1183
|
-
})
|
|
1184
|
-
});
|
|
1185
|
-
this.emailOtpPublicDeps = {
|
|
1186
|
-
relayerUrl: this.seamsWebConfigs.network.relayer?.url || "",
|
|
1187
|
-
groupId: SIGNING_SESSION_SEAL_GROUP_ID,
|
|
1188
|
-
signingSessionAuthorityPorts: {
|
|
1189
|
-
resolveActiveEcdsaCapabilityRuntime: resolveBrowserActiveEcdsaCapabilityRuntime,
|
|
1190
|
-
factorStores: browserSigningSurfaceExactWalletAuthMethodStore,
|
|
1191
|
-
resolveSelectedWalletAuthority: IndexedDBManager.resolveSelectedWalletAuthority.bind(IndexedDBManager),
|
|
1192
|
-
readExactWalletSessionAuthorization: walletSessionAuthorizations.readExactWithOperationCredential.bind(walletSessionAuthorizations)
|
|
1193
|
-
},
|
|
1194
|
-
getSignerWorkerContext: () => this.enginePorts.walletSessionActivationDeps.getSignerWorkerContext(),
|
|
1195
|
-
withThresholdEcdsaSigningQueue: (queueArgs) => withThresholdEcdsaSigningQueue({
|
|
1196
|
-
queueByKey: this.thresholdEcdsaSigningQueueByKey,
|
|
1197
|
-
...queueArgs
|
|
1198
|
-
}),
|
|
1199
|
-
emailOtpSessions: this.emailOtpSessions
|
|
1200
|
-
};
|
|
1201
|
-
this.recoveryPublicDeps = createBrowserRecoveryPublicDeps({
|
|
1202
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1203
|
-
runtimePorts: this.runtimePorts,
|
|
1204
|
-
signerWorkerManager: this.signerWorkerManager,
|
|
1205
|
-
warmSigning: this.warmSigning,
|
|
1206
|
-
touchConfirm: this.touchConfirm,
|
|
1207
|
-
passkeyMpcSession: this.passkeyMpcSession,
|
|
1208
|
-
passkeyMpcExport: assembly.passkeyMpcExport,
|
|
1209
|
-
emailOtpSessions: this.emailOtpSessions,
|
|
1210
|
-
thresholdEcdsaBootstrapQueueByWallet: this.thresholdEcdsaBootstrapQueueByWallet,
|
|
1211
|
-
thresholdEcdsaSigningQueueByKey: this.thresholdEcdsaSigningQueueByKey,
|
|
1212
|
-
thresholdEd25519CommitQueueByKey: this.thresholdEd25519CommitQueueByKey,
|
|
1213
|
-
getWalletSessionActivationDeps: () => this.enginePorts.walletSessionActivationDeps,
|
|
1214
|
-
resolvePasskeyEd25519YaoExportContext: this.resolveExactPasskeyEd25519YaoExportContext.bind(this),
|
|
1215
|
-
resolveEmailOtpEd25519YaoExportContext: this.resolveEmailOtpEd25519YaoExportContext.bind(this),
|
|
1216
|
-
getSigningSessionCoordinator: () => this.enginePorts.signingSessionCoordinator,
|
|
1217
|
-
getTheme: () => this.appearance.theme.mode,
|
|
1218
|
-
ed25519YaoPublicCapabilityLanes: deps.ed25519YaoPublicCapabilityReferences,
|
|
1219
|
-
isEd25519YaoPublicCapabilityActive: this.isEd25519YaoPublicCapabilityActive.bind(this),
|
|
1220
|
-
readActiveWalletSessionAuthorization: readBrowserExactNearEd25519WalletSessionAuthorization.bind(null, this.seamsWebConfigs.network.relayer.url),
|
|
1221
|
-
listEcdsaSigningCapabilitiesForWallet: (input, statusReads) => listBrowserEcdsaSigningCapabilitiesForWallet({
|
|
1222
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1223
|
-
touchIdPrompt: this.touchIdPrompt,
|
|
1224
|
-
stores: deps.signingEngineStores,
|
|
1225
|
-
emailOtpSessions: this.emailOtpSessions,
|
|
1226
|
-
sealedSigningSessionStore: deps.sealedSigningSessionStore
|
|
1227
|
-
}, input, statusReads),
|
|
1228
|
-
resolveOwnerLaneScope: (walletId) => this.resolveSelectedOwnerLaneScope(walletId)
|
|
1229
|
-
});
|
|
1230
|
-
this.enginePorts = createBrowserSigningSurfaceEnginePorts({
|
|
1231
|
-
runtimePorts: this.runtimePorts,
|
|
1232
|
-
stores: deps.signingEngineStores,
|
|
1233
|
-
ed25519YaoPublicCapabilityReferences: deps.ed25519YaoPublicCapabilityReferences,
|
|
1234
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1235
|
-
nearClient: this.nearClient,
|
|
1236
|
-
touchIdPrompt: this.touchIdPrompt,
|
|
1237
|
-
userPreferencesManager: this.userPreferencesManager,
|
|
1238
|
-
nonceCoordinator: this.nonceCoordinator,
|
|
1239
|
-
touchConfirm: this.touchConfirm,
|
|
1240
|
-
passkeyMpcSession: this.passkeyMpcSession,
|
|
1241
|
-
passkeyMpcExport: assembly.passkeyMpcExport,
|
|
1242
|
-
signerWorkerManager: this.signerWorkerManager,
|
|
1243
|
-
emailOtpSessions: this.emailOtpSessions,
|
|
1244
|
-
warmSigning: this.warmSigning,
|
|
1245
|
-
sealedSigningSessionStore: deps.sealedSigningSessionStore,
|
|
1246
|
-
ecdsaBootstrapStore: this.ecdsaBootstrapStore,
|
|
1247
|
-
thresholdEcdsaBootstrapQueueByWallet: this.thresholdEcdsaBootstrapQueueByWallet,
|
|
1248
|
-
thresholdEcdsaSigningQueueByKey: this.thresholdEcdsaSigningQueueByKey,
|
|
1249
|
-
thresholdEd25519CommitQueueByKey: this.thresholdEd25519CommitQueueByKey,
|
|
1250
|
-
getWorkerBaseOrigin: () => this.workerBaseOrigin,
|
|
1251
|
-
workerWarmupPolicy: deps.workerWarmupPolicy,
|
|
1252
|
-
getTheme: () => this.appearance.theme.mode,
|
|
1253
|
-
ensureSealedRefreshStartupParity: () => this.ensureSealedRefreshStartupParity(),
|
|
1254
|
-
resolveOwnerLaneScope: (walletId) => this.resolveSelectedOwnerLaneScope(walletId),
|
|
1255
|
-
getEnginePorts: () => this.enginePorts,
|
|
1256
|
-
getRegistrationPublicDeps: () => this.registrationPublicDeps,
|
|
1257
|
-
prepareNearEd25519YaoMaterialBoundary: this.prepareExactNearEd25519YaoMaterialBoundary.bind(this)
|
|
1258
|
-
});
|
|
1259
|
-
this.signingSessionLifecycleSubscription = this.enginePorts.signingSessionCoordinator.subscribeLifecycle(this.publishSdkLifecycleEvent.bind(this));
|
|
1260
|
-
this.nearProvisioningUnsubscribe = subscribeToNearProvisioning(this.publishNearProvisioningLifecycleEvent.bind(this));
|
|
1261
|
-
this.ed25519YaoPageLifecycleOwner = new Ed25519YaoPageLifecycleOwner(typeof window === "undefined" ? null : window, this.enginePorts.ed25519YaoActiveClients);
|
|
1262
|
-
const warmSessionPublicDeps = createBrowserWarmSessionPublicDeps({
|
|
1263
|
-
seamsWebConfigs: this.seamsWebConfigs,
|
|
1264
|
-
stores: deps.signingEngineStores,
|
|
1265
|
-
touchIdPrompt: this.touchIdPrompt,
|
|
1266
|
-
touchConfirm: this.touchConfirm,
|
|
1267
|
-
passkeyMpcSession: this.passkeyMpcSession,
|
|
1268
|
-
warmSigning: this.warmSigning,
|
|
1269
|
-
runtimePorts: this.runtimePorts,
|
|
1270
|
-
thresholdEcdsaBootstrapQueueByWallet: this.thresholdEcdsaBootstrapQueueByWallet,
|
|
1271
|
-
ensureSealedRefreshStartupParity: () => this.ensureSealedRefreshStartupParity(),
|
|
1272
|
-
enginePorts: this.enginePorts
|
|
1273
|
-
});
|
|
1274
|
-
this.passkeyPublicDeps = warmSessionPublicDeps.passkeyPublicDeps;
|
|
1275
|
-
this.warmCapabilitiesPublicDeps = warmSessionPublicDeps.warmCapabilitiesPublicDeps;
|
|
1276
|
-
this.registrationPublicDeps = {
|
|
1277
|
-
accountLifecycle: this.enginePorts.registrationAccountLifecycleDeps,
|
|
1278
|
-
session: this.enginePorts.registrationSessionDeps
|
|
1279
|
-
};
|
|
1280
|
-
setUnlockedCustodyEnvelopeUpgradeSinkV1((upgrade) => {
|
|
1281
|
-
this.persistUpgradedWalletCustodyEnvelopeV1(upgrade);
|
|
1282
|
-
});
|
|
1283
|
-
deps.initializeRuntime({
|
|
1284
|
-
config: this.seamsWebConfigs,
|
|
1285
|
-
userPreferencesManager: this.userPreferencesManager,
|
|
1286
|
-
getWorkerBaseOrigin: () => this.workerBaseOrigin,
|
|
1287
|
-
setWorkerBaseOrigin: (origin) => {
|
|
1288
|
-
this.workerBaseOrigin = origin;
|
|
1289
|
-
this.signerWorkerManager.setWorkerBaseOrigin(origin);
|
|
1290
|
-
this.touchConfirm.setWorkerBaseOrigin?.(origin);
|
|
1291
|
-
assembly.passkeyMpcExport.setWorkerBaseOrigin(origin);
|
|
1292
|
-
this.passkeyMpcSession.setWorkerBaseOrigin(origin);
|
|
1293
|
-
}
|
|
1294
|
-
});
|
|
1295
|
-
}
|
|
1296
|
-
async resolveOperationStepUpCredential(args) {
|
|
1297
|
-
return {
|
|
1298
|
-
kind: "wallet_session_opaque",
|
|
1299
|
-
walletSessionToken: (await resolveExactNearEd25519WalletSessionOperationCredentialForStepUp({
|
|
1300
|
-
walletId: args.walletId,
|
|
1301
|
-
proof: args.proof
|
|
1302
|
-
})).token
|
|
1303
|
-
};
|
|
1304
|
-
}
|
|
1305
|
-
async ensureSealedRefreshStartupParity() {
|
|
1306
|
-
await this.sealedRefreshStartupParityPromise;
|
|
1307
|
-
if (this.sealedRefreshStartupParityError) throw this.sealedRefreshStartupParityError;
|
|
1308
|
-
}
|
|
1309
|
-
/**
|
|
1310
|
-
* Runs one wallet custody key set for NEAR, from the registration flow.
|
|
1311
|
-
*
|
|
1312
|
-
* The flow never touches the ceremony worker itself: a run's seed lives in
|
|
1313
|
-
* that worker's wasm state across three steps, so this is the one place the
|
|
1314
|
-
* channel is reached and the one place the Router round is wired to it.
|
|
1315
|
-
*
|
|
1316
|
-
* The Router round is performed through the same HTTP transport the
|
|
1317
|
-
* PRF-derived path used, so the execute request goes to the same endpoint
|
|
1318
|
-
* with the same trace context — only the root behind it changed.
|
|
1319
|
-
*/
|
|
1320
|
-
async establishWalletCustodyNearEd25519KeySet(args) {
|
|
1321
|
-
const transport = new RouterAbEd25519YaoHttpActivationTransportV1({
|
|
1322
|
-
routerOrigin: args.routerOrigin,
|
|
1323
|
-
authorization: {
|
|
1324
|
-
kind: "bearer",
|
|
1325
|
-
value: args.authorization
|
|
1326
|
-
},
|
|
1327
|
-
fetch: globalThis.fetch,
|
|
1328
|
-
...args.traceContext ? { traceContext: args.traceContext } : {}
|
|
1329
|
-
});
|
|
1330
|
-
let activationResultJson = null;
|
|
1331
|
-
const established = await establishNearEd25519CustodyV1({
|
|
1332
|
-
runStep: walletCustodyCeremonyStepRunner(this.walletCustodyCeremonyTransportV1()),
|
|
1333
|
-
walletId: args.walletId,
|
|
1334
|
-
factorJson: args.factorJson,
|
|
1335
|
-
factorSecret: args.factorSecret,
|
|
1336
|
-
nearEd25519SigningKeyId: args.nearEd25519SigningKeyId,
|
|
1337
|
-
registrationCeremonyId: args.registrationCeremonyId,
|
|
1338
|
-
yaoAdmission: args.admissionReceipt,
|
|
1339
|
-
yaoApplication: args.admissionRequest.application_binding,
|
|
1340
|
-
participantIds: args.participantIds,
|
|
1341
|
-
runRouterRound: async (yaoExecuteRequestJson) => {
|
|
1342
|
-
const response = await transport.send({
|
|
1343
|
-
kind: "execute",
|
|
1344
|
-
path: ROUTER_AB_ED25519_YAO_REGISTRATION_EXECUTE_PATH_V1,
|
|
1345
|
-
body: JSON.parse(yaoExecuteRequestJson)
|
|
1346
|
-
});
|
|
1347
|
-
if (!response.ok) throw new Error(`Router Ed25519 Yao execute failed: ${response.message}`);
|
|
1348
|
-
activationResultJson = JSON.stringify(response.value);
|
|
1349
|
-
return activationResultJson;
|
|
1350
|
-
}
|
|
1351
|
-
});
|
|
1352
|
-
if (!activationResultJson) throw new Error("the wallet custody NEAR run completed without a Router activation result");
|
|
1353
|
-
if (!established.localMaterial) throw new Error("the wallet custody NEAR run sealed no local material");
|
|
1354
|
-
return {
|
|
1355
|
-
recoveryCodes: established.recoveryCodes,
|
|
1356
|
-
commitPayload: established.commitPayload,
|
|
1357
|
-
activationReference: established.activationReference,
|
|
1358
|
-
localMaterial: established.localMaterial,
|
|
1359
|
-
metadata: walletCustodyEd25519ActiveClientMetadataV1({
|
|
1360
|
-
admissionRequest: args.admissionRequest,
|
|
1361
|
-
activationResultJson
|
|
1362
|
-
})
|
|
1363
|
-
};
|
|
1364
|
-
}
|
|
1365
|
-
async recoverWalletCustodyManifest(args) {
|
|
1366
|
-
return await recoverWalletCustodyManifestV1({
|
|
1367
|
-
...args,
|
|
1368
|
-
runStep: walletCustodyCeremonyStepRunner(this.walletCustodyCeremonyTransportV1()),
|
|
1369
|
-
workerCtx: this.signerWorkerManager.getContext()
|
|
1370
|
-
});
|
|
1371
|
-
}
|
|
1372
|
-
async createWalletRecoveryReplacementCredential(args) {
|
|
1373
|
-
const requestId = walletIframeRequestIdFromBoundary(`wallet-recovery:${args.registration.challengeId}`);
|
|
1374
|
-
const replacement = walletRecoveryReplacementCredentialFromRegistrationV1(serializePreparedRegistrationCredential(await this.touchIdPrompt.generateRegistrationCredentialsInternal({
|
|
1375
|
-
kind: "wallet_recovery",
|
|
1376
|
-
walletId: args.walletId,
|
|
1377
|
-
intendedUserName: args.walletId,
|
|
1378
|
-
recoveryRegistration: args.registration,
|
|
1379
|
-
prompt: {
|
|
1380
|
-
kind: "immediate",
|
|
1381
|
-
requestId,
|
|
1382
|
-
cancellation: args.cancellation
|
|
1383
|
-
}
|
|
1384
|
-
})));
|
|
1385
|
-
return {
|
|
1386
|
-
registration: redactedPasskeyRegistrationCredential(replacement.registration),
|
|
1387
|
-
credentialIdB64u: replacement.credentialIdB64u,
|
|
1388
|
-
factorSecret: replacement.factorSecret
|
|
1389
|
-
};
|
|
1390
|
-
}
|
|
1391
|
-
async joinWalletCustodyNearEd25519KeySet(args) {
|
|
1392
|
-
const transport = new RouterAbEd25519YaoHttpActivationTransportV1({
|
|
1393
|
-
routerOrigin: args.routerOrigin,
|
|
1394
|
-
authorization: {
|
|
1395
|
-
kind: "bearer",
|
|
1396
|
-
value: args.authorization
|
|
1397
|
-
},
|
|
1398
|
-
fetch: globalThis.fetch,
|
|
1399
|
-
...args.traceContext ? { traceContext: args.traceContext } : {}
|
|
1400
|
-
});
|
|
1401
|
-
let activationResultJson = null;
|
|
1402
|
-
const joined = await joinNearEd25519CustodyV1({
|
|
1403
|
-
runStep: walletCustodyCeremonyStepRunner(this.walletCustodyCeremonyTransportV1()),
|
|
1404
|
-
preparation: args.preparation,
|
|
1405
|
-
beforeRouterRound: args.beforeRouterRound,
|
|
1406
|
-
custodyJson: args.custodyJson,
|
|
1407
|
-
factorSecret: args.factorSecret,
|
|
1408
|
-
nearEd25519SigningKeyId: args.nearEd25519SigningKeyId,
|
|
1409
|
-
registrationCeremonyId: args.registrationCeremonyId,
|
|
1410
|
-
yaoAdmission: args.admissionReceipt,
|
|
1411
|
-
yaoApplication: args.admissionRequest.application_binding,
|
|
1412
|
-
participantIds: args.participantIds,
|
|
1413
|
-
runRouterRound: async (yaoExecuteRequestJson) => {
|
|
1414
|
-
const response = await transport.send({
|
|
1415
|
-
kind: "execute",
|
|
1416
|
-
path: ROUTER_AB_ED25519_YAO_REGISTRATION_EXECUTE_PATH_V1,
|
|
1417
|
-
body: JSON.parse(yaoExecuteRequestJson)
|
|
1418
|
-
});
|
|
1419
|
-
if (!response.ok) throw new Error(`Router Ed25519 Yao execute failed: ${response.message}`);
|
|
1420
|
-
activationResultJson = JSON.stringify(response.value);
|
|
1421
|
-
return activationResultJson;
|
|
1422
|
-
}
|
|
1423
|
-
});
|
|
1424
|
-
if (!activationResultJson || !joined.localMaterial) throw new Error("the wallet custody NEAR join produced no local signing material");
|
|
1425
|
-
return {
|
|
1426
|
-
commitPayload: joined.commitPayload,
|
|
1427
|
-
activationReference: joined.activationReference,
|
|
1428
|
-
localMaterial: joined.localMaterial,
|
|
1429
|
-
metadata: walletCustodyEd25519ActiveClientMetadataV1({
|
|
1430
|
-
admissionRequest: args.admissionRequest,
|
|
1431
|
-
activationResultJson
|
|
1432
|
-
})
|
|
1433
|
-
};
|
|
1434
|
-
}
|
|
1435
|
-
async rejoinWalletCustodyNearEd25519KeySet(args) {
|
|
1436
|
-
const transport = new RouterAbEd25519YaoHttpActivationTransportV1({
|
|
1437
|
-
routerOrigin: args.routerOrigin,
|
|
1438
|
-
authorization: {
|
|
1439
|
-
kind: "bearer",
|
|
1440
|
-
value: `Bearer ${args.walletSessionToken}`
|
|
1441
|
-
},
|
|
1442
|
-
fetch: globalThis.fetch
|
|
1443
|
-
});
|
|
1444
|
-
const recoveryRequest = await buildWalletSessionEd25519RecoveryAdmissionRequestV1({ basis: args.recoveryBasis });
|
|
1445
|
-
const admitted = await admitWalletRecoveryEd25519V1({
|
|
1446
|
-
request: recoveryRequest,
|
|
1447
|
-
transport
|
|
1448
|
-
});
|
|
1449
|
-
const rejoined = await rejoinNearEd25519CustodyV1({
|
|
1450
|
-
runStep: walletCustodyCeremonyStepRunner(this.walletCustodyCeremonyTransportV1()),
|
|
1451
|
-
walletId: args.walletId,
|
|
1452
|
-
custodyJson: args.custodyJson,
|
|
1453
|
-
factorSecret: args.factorSecret,
|
|
1454
|
-
nearEd25519SigningKeyId: args.nearEd25519SigningKeyId,
|
|
1455
|
-
recoveryLifecycleId: recoveryRequest.scope.lifecycle_id,
|
|
1456
|
-
yaoAdmission: admitted.receipt,
|
|
1457
|
-
yaoApplication: admitted.request.application_binding,
|
|
1458
|
-
participantIds: args.recoveryBasis.participantIds,
|
|
1459
|
-
registeredPublicKeyB64u: base64UrlEncode(Uint8Array.from(args.recoveryBasis.registeredPublicKey)),
|
|
1460
|
-
runRouterRound: (executeRequestJson) => executeWalletRecoveryEd25519RoundV1({
|
|
1461
|
-
executeRequestJson,
|
|
1462
|
-
transport
|
|
1463
|
-
}),
|
|
1464
|
-
activateRouterRecovery: (protocolResultJson) => activateWalletRecoveryEd25519V1({
|
|
1465
|
-
request: recoveryRequest,
|
|
1466
|
-
protocolResultJson,
|
|
1467
|
-
transport
|
|
1468
|
-
})
|
|
1469
|
-
});
|
|
1470
|
-
if (!rejoined.localMaterial) throw new Error("the wallet custody NEAR cold rejoin produced no local signing material");
|
|
1471
|
-
return {
|
|
1472
|
-
commitPayload: rejoined.commitPayload,
|
|
1473
|
-
activationReference: rejoined.activationReference,
|
|
1474
|
-
localMaterial: rejoined.localMaterial,
|
|
1475
|
-
metadata: walletRecoveryEd25519ActiveClientMetadataV1({
|
|
1476
|
-
admissionRequest: recoveryRequest,
|
|
1477
|
-
activationResultJson: rejoined.activationResultJson,
|
|
1478
|
-
activationReceipt: rejoined.activationReceipt
|
|
1479
|
-
})
|
|
1480
|
-
};
|
|
1481
|
-
}
|
|
1482
|
-
async establishWalletCustodyEvmFamilyKeySet(args) {
|
|
1483
|
-
return await establishEvmFamilyCustodyV1({
|
|
1484
|
-
...args,
|
|
1485
|
-
runStep: walletCustodyCeremonyStepRunner(this.walletCustodyCeremonyTransportV1())
|
|
1486
|
-
});
|
|
1487
|
-
}
|
|
1488
|
-
async joinWalletCustodyEvmFamilyKeySet(args) {
|
|
1489
|
-
return await joinEvmFamilyCustodyV1({
|
|
1490
|
-
...args,
|
|
1491
|
-
runStep: walletCustodyCeremonyStepRunner(this.walletCustodyCeremonyTransportV1())
|
|
1492
|
-
});
|
|
1493
|
-
}
|
|
1494
|
-
async rejoinWalletCustodyEvmFamilyKeySet(args) {
|
|
1495
|
-
return await rejoinEvmFamilyCustodyV1({
|
|
1496
|
-
...args,
|
|
1497
|
-
runStep: walletCustodyCeremonyStepRunner(this.walletCustodyCeremonyTransportV1())
|
|
1498
|
-
});
|
|
1499
|
-
}
|
|
1500
|
-
async restoreWalletCustodyEcdsaContinuity(args) {
|
|
1501
|
-
const imported = await importWalletCustodyEcdsaContinuity({
|
|
1502
|
-
...args,
|
|
1503
|
-
store: new IndexedDbEcdsaCapabilityManifestStore()
|
|
1504
|
-
});
|
|
1505
|
-
if (imported.kind !== "committed") throw new Error(`wallet custody ECDSA import returned ${imported.kind}`);
|
|
1506
|
-
const materialActivation = routerAbMpcMaterialActivationRefFromWire(args.publicCapability.material_activation);
|
|
1507
|
-
const opened = await openEcdsaRoleLocalSigningMaterialWasm({
|
|
1508
|
-
workerCtx: this.signerWorkerManager.getContext(),
|
|
1509
|
-
authority: args.authority,
|
|
1510
|
-
materialActivation
|
|
1511
|
-
});
|
|
1512
|
-
if (!opened.ok) throw new Error(`wallet custody ECDSA material open returned ${opened.reason}`);
|
|
1513
|
-
return {
|
|
1514
|
-
materialActivation,
|
|
1515
|
-
materialRef: opened.materialRef
|
|
1516
|
-
};
|
|
1517
|
-
}
|
|
1518
|
-
async persistWalletCustodyEd25519Material(args) {
|
|
1519
|
-
await persistWalletCustodyEd25519MaterialV1({
|
|
1520
|
-
store: this.signerWorkerManager.getContext().nearKeyMaterialStore,
|
|
1521
|
-
binding: args.binding,
|
|
1522
|
-
sealed: args.sealed
|
|
1523
|
-
});
|
|
1524
|
-
}
|
|
1525
|
-
async loadWalletCustodyEd25519Material(args) {
|
|
1526
|
-
return await loadWalletCustodyEd25519MaterialV1({
|
|
1527
|
-
store: this.signerWorkerManager.getContext().nearKeyMaterialStore,
|
|
1528
|
-
nearAccountId: args.nearAccountId,
|
|
1529
|
-
signerSlot: args.signerSlot,
|
|
1530
|
-
expectedRegisteredPublicKeyB64u: args.expectedRegisteredPublicKeyB64u
|
|
1531
|
-
});
|
|
1532
|
-
}
|
|
1533
|
-
async loadEmailOtpWalletCustodyEd25519Material(args) {
|
|
1534
|
-
const loaded = await this.loadWalletCustodyEd25519Material({
|
|
1535
|
-
nearAccountId: args.nearAccountId,
|
|
1536
|
-
signerSlot: args.signerSlot,
|
|
1537
|
-
expectedRegisteredPublicKeyB64u: ""
|
|
1538
|
-
});
|
|
1539
|
-
return loaded.kind === "found" ? loaded : { kind: "absent" };
|
|
1540
|
-
}
|
|
1541
|
-
async deleteWalletCustodyEd25519Material(args) {
|
|
1542
|
-
await deleteWalletCustodyEd25519MaterialV1({
|
|
1543
|
-
store: this.signerWorkerManager.getContext().nearKeyMaterialStore,
|
|
1544
|
-
nearAccountId: args.nearAccountId,
|
|
1545
|
-
signerSlot: args.signerSlot
|
|
1546
|
-
});
|
|
1547
|
-
}
|
|
1548
|
-
async assertSealedRefreshStartupParity() {
|
|
1549
|
-
await this.ensureSealedRefreshStartupParity();
|
|
1550
|
-
}
|
|
1551
|
-
async discoverPersistedSessionsForWallet(args) {
|
|
1552
|
-
return await discoverPersistedSessionsForWallet(this.sessionPublicDeps, args);
|
|
1553
|
-
}
|
|
1554
|
-
isEd25519YaoPublicCapabilityActive(reference) {
|
|
1555
|
-
switch (reference.auth.kind) {
|
|
1556
|
-
case WALLET_AUTH_METHODS.emailOtp: return true;
|
|
1557
|
-
case WALLET_AUTH_METHODS.passkey: return this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
1558
|
-
walletId: reference.walletId,
|
|
1559
|
-
nearAccountId: reference.nearAccountId,
|
|
1560
|
-
materialActivation: reference.materialActivation
|
|
1561
|
-
}) !== null;
|
|
1562
|
-
default:
|
|
1563
|
-
reference.auth;
|
|
1564
|
-
throw new Error("Unsupported Ed25519 public capability auth method");
|
|
1565
|
-
}
|
|
1566
|
-
}
|
|
1567
|
-
async readPersistedAvailableSigningLanes(args) {
|
|
1568
|
-
return await readPersistedAvailableSigningLanes(this.sessionPublicDeps, args);
|
|
1569
|
-
}
|
|
1570
|
-
async readOwnerScopedSigningLanes(args, statusReads) {
|
|
1571
|
-
return await readOwnerScopedSigningLanes(this.sessionPublicDeps, args, statusReads);
|
|
1572
|
-
}
|
|
1573
|
-
/**
|
|
1574
|
-
* Resolves the selected active Wallet Authority and auth method to one exact
|
|
1575
|
-
* owner scope. Session availability is resolved by the lane inventory so an
|
|
1576
|
-
* expired session can enter operation step-up.
|
|
1577
|
-
*/
|
|
1578
|
-
async resolveSelectedOwnerLaneScope(walletId) {
|
|
1579
|
-
const parsedWalletId = parseWalletId(walletId);
|
|
1580
|
-
if (!parsedWalletId.ok) throw new Error(parsedWalletId.error.message);
|
|
1581
|
-
const stores = {
|
|
1582
|
-
getWalletAuthMethodV2: (id) => IndexedDBManager.getWalletAuthMethodV2(id),
|
|
1583
|
-
listWalletAuthMethodsForWallet: (id) => IndexedDBManager.listWalletAuthMethodsForWallet(id),
|
|
1584
|
-
getWalletPasskeyAuthenticator: (input) => IndexedDBManager.getWalletPasskeyAuthenticator(input),
|
|
1585
|
-
readEmailOtpProviderSubjectForWallet: (id) => readEmailOtpProviderSubjectForWalletV1(IndexedDBManager, id)
|
|
1586
|
-
};
|
|
1587
|
-
const selected = await IndexedDBManager.resolveSelectedWalletAuthority(String(parsedWalletId.value));
|
|
1588
|
-
if (selected.kind === "resolved") {
|
|
1589
|
-
const { selection, authMethod, authority } = selected;
|
|
1590
|
-
if (selection.walletId !== parsedWalletId.value || selection.walletAuthMethodId !== authMethod.walletAuthMethodId || authMethod.walletId !== parsedWalletId.value || authMethod.walletAuthorityId !== authority.authorityId || authority.walletId !== parsedWalletId.value) throw new Error("[SigningEngine] selected Wallet Authority identity mismatch");
|
|
1591
|
-
if (selection.lockState !== "unlocked") throw fullWalletLoginRequired("wallet_locked");
|
|
1592
|
-
if (authMethod.status !== "active") throw fullWalletLoginRequired("method_unavailable");
|
|
1593
|
-
if (authority.state !== "active") throw fullWalletLoginRequired("authority_unavailable");
|
|
1594
|
-
if (authority.provenance.kind === "device_link" && authMethod.kind === "passkey" && authority.signerActivations.ed25519) return buildExactPasskeyOwnerLaneScope({
|
|
1595
|
-
authMethod,
|
|
1596
|
-
signerSlot: await resolveLinkedPasskeyOwnerSignerSlot({
|
|
1597
|
-
walletId: parsedWalletId.value,
|
|
1598
|
-
authMethod,
|
|
1599
|
-
signerMaterials: selected.signerMaterials,
|
|
1600
|
-
publicLaneStore: this.ed25519YaoPublicCapabilityReferences
|
|
1601
|
-
})
|
|
1602
|
-
});
|
|
1603
|
-
if (authority.provenance.kind === "device_link" && authMethod.kind === "passkey" && authority.signerActivations.ecdsa) return buildExactEcdsaPasskeyOwnerLaneScope({ authMethod });
|
|
1604
|
-
if (authority.provenance.kind === "device_link" && authMethod.kind === "email_otp" && authority.signerActivations.ecdsa) {
|
|
1605
|
-
const holderRuntime = resolveLinkedEcdsaHolderRuntimeV1({
|
|
1606
|
-
walletId: parsedWalletId.value,
|
|
1607
|
-
materialActivation: authority.signerActivations.ecdsa.materialActivation
|
|
1608
|
-
});
|
|
1609
|
-
if (!holderRuntime || holderRuntime.authorityId !== authority.authorityId || !isEmailOtpWalletAuthAuthority(holderRuntime.factorAuthority)) throw new Error("[SigningEngine] selected linked Email OTP authority has no exact ECDSA holder runtime");
|
|
1610
|
-
const authorityRef = await walletAuthAuthorityRef({ authority: holderRuntime.factorAuthority });
|
|
1611
|
-
if (authorityRef.walletId !== parsedWalletId.value || authorityRef.walletAuthMethodId !== authMethod.walletAuthMethodId) throw new Error("[SigningEngine] selected linked Email OTP authority has no exact ECDSA holder runtime");
|
|
1612
|
-
return buildExactLinkedEmailOtpOwnerLaneScope({
|
|
1613
|
-
authMethod,
|
|
1614
|
-
factorAuthority: holderRuntime.factorAuthority,
|
|
1615
|
-
authorityRef
|
|
1616
|
-
});
|
|
1617
|
-
}
|
|
1618
|
-
return await resolveExactOwnerLaneScope({
|
|
1619
|
-
authMethod,
|
|
1620
|
-
stores
|
|
1621
|
-
});
|
|
1622
|
-
}
|
|
1623
|
-
const reason = selected.kind === "integrity_error" ? `: ${selected.reason}` : "";
|
|
1624
|
-
throw new Error(`[SigningEngine] selected Wallet Authority is ${selected.kind}${reason}`);
|
|
1625
|
-
}
|
|
1626
|
-
readWalletAuthenticationState() {
|
|
1627
|
-
return this.walletAuthenticationState;
|
|
1628
|
-
}
|
|
1629
|
-
async retireActiveWalletSessionAuthorizationForLock(walletId) {
|
|
1630
|
-
const retiredAtMs = Date.now();
|
|
1631
|
-
if ((await walletSessionAuthorizations.retireExactActiveForWallet({
|
|
1632
|
-
walletId,
|
|
1633
|
-
reason: "wallet_locked",
|
|
1634
|
-
retiredAtMs
|
|
1635
|
-
})).length > 0) this.destroyUnlockedWalletEd25519ExportRootCapabilitiesV1({
|
|
1636
|
-
kind: "wallet",
|
|
1637
|
-
walletId: String(walletId)
|
|
1638
|
-
});
|
|
1639
|
-
}
|
|
1640
|
-
async advanceWalletLockGeneration(walletId) {
|
|
1641
|
-
return IndexedDBManager.advanceWalletLockGeneration({
|
|
1642
|
-
walletId,
|
|
1643
|
-
lockedAtMs: Date.now()
|
|
1644
|
-
});
|
|
1645
|
-
}
|
|
1646
|
-
async markWalletSelectionUnlocked(input) {
|
|
1647
|
-
await IndexedDBManager.markWalletSelectionUnlocked({
|
|
1648
|
-
walletId: input.walletId,
|
|
1649
|
-
walletAuthMethodId: input.walletAuthMethodId,
|
|
1650
|
-
unlockedAtMs: Date.now()
|
|
1651
|
-
});
|
|
1652
|
-
}
|
|
1653
|
-
async markSelectedEmailOtpWalletAuthorityUnlocked(input) {
|
|
1654
|
-
await this.markWalletSelectionUnlocked(input);
|
|
1655
|
-
}
|
|
1656
|
-
/**
|
|
1657
|
-
* Every route that lands a wallet in the authenticated state goes through
|
|
1658
|
-
* here — passkey unlock, email OTP login, the hosted auth menu, and session
|
|
1659
|
-
* restore. Binding the preferences manager at this choke point is what makes
|
|
1660
|
-
* per-wallet preferences real: without it the manager stays on "no last
|
|
1661
|
-
* user", so reads answer the built-in defaults while the wallet's persisted
|
|
1662
|
-
* choices sit unread, and writes stay memory-only and evaporate on reload —
|
|
1663
|
-
* the Confirmer UI toggle looked applied but silently reverted every page
|
|
1664
|
-
* load. setCurrentWallet also notifies, which pushes PREFERENCES_CHANGED to
|
|
1665
|
-
* the app origin so its mirrored uiMode follows the wallet too.
|
|
1666
|
-
*/
|
|
1667
|
-
applyAuthenticatedWalletState(state) {
|
|
1668
|
-
this.walletAuthenticationState = state;
|
|
1669
|
-
this.userPreferencesManager.setCurrentWallet(state.walletId);
|
|
1670
|
-
}
|
|
1671
|
-
setWalletAuthenticated(state) {
|
|
1672
|
-
const previous = this.walletAuthenticationState;
|
|
1673
|
-
if (previous.kind === "authenticated" && String(previous.walletId) !== String(state.walletId)) this.destroyUnlockedWalletEd25519ExportRootCapabilitiesV1({
|
|
1674
|
-
kind: "wallet",
|
|
1675
|
-
walletId: String(previous.walletId)
|
|
1676
|
-
});
|
|
1677
|
-
this.walletAuthenticationRestoreGeneration += 1;
|
|
1678
|
-
this.applyAuthenticatedWalletState(state);
|
|
1679
|
-
}
|
|
1680
|
-
clearWalletAuthentication() {
|
|
1681
|
-
this.walletAuthenticationRestoreGeneration += 1;
|
|
1682
|
-
this.walletAuthenticationState = { kind: "signed_out" };
|
|
1683
|
-
this.destroyUnlockedWalletEd25519ExportRootCapabilitiesV1({ kind: "all" });
|
|
1684
|
-
}
|
|
1685
|
-
clearWalletAuthenticationIfCurrent(expected) {
|
|
1686
|
-
if (this.walletAuthenticationState !== expected) return false;
|
|
1687
|
-
this.clearWalletAuthentication();
|
|
1688
|
-
return true;
|
|
1689
|
-
}
|
|
1690
|
-
/**
|
|
1691
|
-
* The wallet custody ceremony worker as the small structural port the
|
|
1692
|
-
* custody modules take, so they can be exercised without a worker.
|
|
1693
|
-
*/
|
|
1694
|
-
walletCustodyCeremonyTransportV1() {
|
|
1695
|
-
const workerContext = this.getSignerWorkerContext();
|
|
1696
|
-
return { requestOperation: requestWalletCustodyCeremonyOperation.bind(void 0, workerContext) };
|
|
1697
|
-
}
|
|
1698
|
-
/**
|
|
1699
|
-
* Parks the wallet custody seed inside the ceremony worker for the lifetime of
|
|
1700
|
-
* the just-activated owner Wallet Session, reusing the factor secret this
|
|
1701
|
-
* registration or unlock already collected. Failure is absorbed: the wallet
|
|
1702
|
-
* stays usable, and device linking fails closed with `wallet_unlock_required`
|
|
1703
|
-
* until the next unlock.
|
|
1704
|
-
*/
|
|
1705
|
-
async establishUnlockedWalletEd25519ExportRootCapabilityV1(input) {
|
|
1706
|
-
try {
|
|
1707
|
-
const binding = input.existingEnvelope.binding;
|
|
1708
|
-
if (!isWalletCustodySeedBinding(binding) && binding.kind !== "ed25519_yao_client_root_v1") return;
|
|
1709
|
-
if (input.existingEnvelope.factor.kind !== "passkey") throw new Error("unlocked export-root capability requires a passkey envelope factor");
|
|
1710
|
-
const existingFactorSecret = base64UrlDecode(input.passkeyPrfFirstB64u);
|
|
1711
|
-
try {
|
|
1712
|
-
await establishUnlockedWalletEd25519ExportRootCapabilityV1(this.walletCustodyCeremonyTransportV1(), {
|
|
1713
|
-
existingEnvelope: input.existingEnvelope,
|
|
1714
|
-
existingFactorSecret,
|
|
1715
|
-
walletId: input.walletId,
|
|
1716
|
-
walletAuthMethodId: input.walletAuthMethodId,
|
|
1717
|
-
walletSessionId: input.walletSessionId,
|
|
1718
|
-
expiresAtMs: input.expiresAtMs
|
|
1719
|
-
});
|
|
1720
|
-
} finally {
|
|
1721
|
-
existingFactorSecret.fill(0);
|
|
1722
|
-
}
|
|
1723
|
-
} catch (error) {
|
|
1724
|
-
console.warn("[BrowserSigningSurface] unlocked Ed25519 export-root capability was not established:", error instanceof Error ? error.message : String(error || "unknown error"));
|
|
1725
|
-
}
|
|
1726
|
-
}
|
|
1727
|
-
/**
|
|
1728
|
-
* Stores the reseal of an unbound envelope under the method that opened it.
|
|
1729
|
-
*
|
|
1730
|
-
* Absorbed the same way establishment is, and for the same reason: the V2 row
|
|
1731
|
-
* still opens the wallet, so a failure here costs a retry at the next unlock
|
|
1732
|
-
* and nothing else. Surfacing it would interrupt a user who has no action to
|
|
1733
|
-
* take.
|
|
1734
|
-
*/
|
|
1735
|
-
async persistUpgradedWalletCustodyEnvelopeV1(upgrade) {
|
|
1736
|
-
try {
|
|
1737
|
-
const relayerUrl = String(this.seamsWebConfigs.network.relayer?.url || "").trim();
|
|
1738
|
-
if (!relayerUrl) return;
|
|
1739
|
-
const parsedWalletId = parseWalletId(upgrade.walletId);
|
|
1740
|
-
if (!parsedWalletId.ok) return;
|
|
1741
|
-
const walletSessionToken = (await resolveActiveEd25519WalletSessionAuthorization(parsedWalletId.value, relayerUrl))?.operationCredential.token;
|
|
1742
|
-
if (!walletSessionToken) return;
|
|
1743
|
-
const outcome = await upgradeWalletCustodyEnvelopeOwnership({
|
|
1744
|
-
relayUrl: relayerUrl,
|
|
1745
|
-
walletId: upgrade.walletId,
|
|
1746
|
-
walletSessionToken: String(walletSessionToken),
|
|
1747
|
-
envelope: upgrade.envelope
|
|
1748
|
-
});
|
|
1749
|
-
if (outcome.kind === "upgraded" || outcome.kind === "already_owned") return;
|
|
1750
|
-
console.warn("[BrowserSigningSurface] the upgraded custody envelope was not stored:", outcome.message);
|
|
1751
|
-
} catch (error) {
|
|
1752
|
-
console.warn("[BrowserSigningSurface] the upgraded custody envelope was not stored:", error instanceof Error ? error.message : String(error || "unknown error"));
|
|
1753
|
-
}
|
|
1754
|
-
}
|
|
1755
|
-
async destroyUnlockedWalletEd25519ExportRootCapabilitiesV1(scope) {
|
|
1756
|
-
await destroyUnlockedWalletEd25519ExportRootCapabilitiesV1(this.walletCustodyCeremonyTransportV1(), scope);
|
|
1757
|
-
}
|
|
1758
|
-
async runWarmCriticalResources(accountContext) {
|
|
1759
|
-
try {
|
|
1760
|
-
await this.ensureSealedRefreshStartupParity();
|
|
1761
|
-
} catch (error) {
|
|
1762
|
-
if (!isRetryableSealedRefreshCapabilityFetchError(error)) throw error;
|
|
1763
|
-
console.warn("[BrowserSigningSurface] warmCriticalResources skipped retryable sealed-refresh capability fetch failure", error instanceof Error ? error.message : String(error || "unknown error"));
|
|
1764
|
-
}
|
|
1765
|
-
return await this.enginePorts.getManagerConveniencePorts().warmCriticalResources(accountContext);
|
|
1766
|
-
}
|
|
1767
|
-
async warmCriticalResources(accountContext) {
|
|
1768
|
-
if (__isWalletIframeHostMode() && accountContext === void 0) {
|
|
1769
|
-
const existing = this.hostWarmCriticalResourcesTask;
|
|
1770
|
-
if (existing) return await existing;
|
|
1771
|
-
const task = this.runWarmCriticalResources();
|
|
1772
|
-
this.hostWarmCriticalResourcesTask = task;
|
|
1773
|
-
task.catch(() => {
|
|
1774
|
-
if (this.hostWarmCriticalResourcesTask === task) this.hostWarmCriticalResourcesTask = null;
|
|
1775
|
-
});
|
|
1776
|
-
return await task;
|
|
1777
|
-
}
|
|
1778
|
-
return await this.runWarmCriticalResources(accountContext);
|
|
1779
|
-
}
|
|
1780
|
-
async prewarmEmailOtpYao(request) {
|
|
1781
|
-
return await this.signerWorkerManager.prewarmEmailOtpYao(request);
|
|
1782
|
-
}
|
|
1783
|
-
async prewarmEcdsaRegistrationCrypto() {
|
|
1784
|
-
return await this.signerWorkerManager.prewarmEcdsaRegistrationCrypto();
|
|
1785
|
-
}
|
|
1786
|
-
getRpId() {
|
|
1787
|
-
return this.touchIdPrompt.getRpId();
|
|
1788
|
-
}
|
|
1789
|
-
getSignerWorkerContext() {
|
|
1790
|
-
return this.enginePorts.walletSessionActivationDeps.getSignerWorkerContext();
|
|
1791
|
-
}
|
|
1792
|
-
getNonceCoordinator() {
|
|
1793
|
-
return this.nonceCoordinator;
|
|
1794
|
-
}
|
|
1795
|
-
setAppearance(appearance) {
|
|
1796
|
-
this.appearance = appearance;
|
|
1797
|
-
}
|
|
1798
|
-
setWalletIframeSurfaceMeasurementBinding(binding) {
|
|
1799
|
-
this.touchConfirm.getContext().surfaceMeasurementBinding = binding;
|
|
1800
|
-
}
|
|
1801
|
-
getWalletIframeSurfaceMeasurementBinding() {
|
|
1802
|
-
return this.touchConfirm.getContext().surfaceMeasurementBinding;
|
|
1803
|
-
}
|
|
1804
|
-
getUserPreferences() {
|
|
1805
|
-
return this.userPreferencesManager;
|
|
1806
|
-
}
|
|
1807
|
-
async signNear(request) {
|
|
1808
|
-
const walletId = request.args.commandSubject.walletSession.walletId;
|
|
1809
|
-
try {
|
|
1810
|
-
return await signNear(this.enginePorts.nearSigningDeps, request);
|
|
1811
|
-
} catch (error) {
|
|
1812
|
-
if (isWalletSigningStateFailure(error)) {
|
|
1813
|
-
await this.terminateWalletStateAfterSigningFailure(walletId);
|
|
1814
|
-
throw error;
|
|
1815
|
-
}
|
|
1816
|
-
throw error;
|
|
1817
|
-
}
|
|
1818
|
-
}
|
|
1819
|
-
async terminateWalletStateAfterSigningFailure(walletId) {
|
|
1820
|
-
const authentication = this.readWalletAuthenticationState();
|
|
1821
|
-
let authenticationCleared = false;
|
|
1822
|
-
try {
|
|
1823
|
-
await this.advanceWalletLockGeneration(walletId);
|
|
1824
|
-
} catch {}
|
|
1825
|
-
try {
|
|
1826
|
-
await this.retireActiveWalletSessionAuthorizationForLock(walletId);
|
|
1827
|
-
} catch {}
|
|
1828
|
-
try {
|
|
1829
|
-
authenticationCleared = this.clearWalletAuthenticationIfCurrent(authentication);
|
|
1830
|
-
} catch {}
|
|
1831
|
-
if (authenticationCleared) {
|
|
1832
|
-
try {
|
|
1833
|
-
this.nonceCoordinator.clearAll();
|
|
1834
|
-
} catch {}
|
|
1835
|
-
try {
|
|
1836
|
-
this.clearThresholdEcdsaSigningQueue();
|
|
1837
|
-
} catch {}
|
|
1838
|
-
}
|
|
1839
|
-
try {
|
|
1840
|
-
await this.clearVolatileWarmSigningMaterial(walletId);
|
|
1841
|
-
} catch {}
|
|
1842
|
-
}
|
|
1843
|
-
async ensureNearEd25519YaoCapabilityForSigning(subject) {
|
|
1844
|
-
const rehydrationKey = nearEd25519CapabilityRehydrationKey(subject);
|
|
1845
|
-
const existingRehydration = this.nearEd25519CapabilityRehydrationBySubject.get(rehydrationKey);
|
|
1846
|
-
if (existingRehydration) {
|
|
1847
|
-
const reboundSubject = await existingRehydration;
|
|
1848
|
-
const rehydrated = await this.resolveActiveNearEd25519YaoSigningLane(reboundSubject);
|
|
1849
|
-
if (rehydrated) return rehydrated;
|
|
1850
|
-
throw new Error("[SigningEngine][near] joined rehydration did not publish an active lane");
|
|
1851
|
-
}
|
|
1852
|
-
const rehydration = this.rehydrateNearEd25519YaoCapabilityForSigning(subject);
|
|
1853
|
-
this.nearEd25519CapabilityRehydrationBySubject.set(rehydrationKey, rehydration);
|
|
1854
|
-
try {
|
|
1855
|
-
const reboundSubject = await rehydration;
|
|
1856
|
-
const rehydrated = await this.resolveActiveNearEd25519YaoSigningLane(reboundSubject);
|
|
1857
|
-
if (rehydrated) return rehydrated;
|
|
1858
|
-
throw new Error("[SigningEngine][near] local material rehydration did not publish a lane");
|
|
1859
|
-
} finally {
|
|
1860
|
-
if (this.nearEd25519CapabilityRehydrationBySubject.get(rehydrationKey) === rehydration) this.nearEd25519CapabilityRehydrationBySubject.delete(rehydrationKey);
|
|
1861
|
-
}
|
|
1862
|
-
}
|
|
1863
|
-
async rehydrateExactPasskeyEd25519YaoCapabilityForSigning(args) {
|
|
1864
|
-
const identity = nearEd25519MaterialIdentityFromBoundaryInput(args);
|
|
1865
|
-
return await this.ensureNearEd25519YaoCapabilityForSigning(args.laneIdentity !== void 0 ? {
|
|
1866
|
-
kind: "exact_lane",
|
|
1867
|
-
laneIdentity: args.laneIdentity
|
|
1868
|
-
} : {
|
|
1869
|
-
kind: "material_identity",
|
|
1870
|
-
materialIdentity: identity
|
|
1871
|
-
});
|
|
1872
|
-
}
|
|
1873
|
-
async prepareMaterialIdentityNearEd25519YaoSigning(args) {
|
|
1874
|
-
const identity = args.materialIdentity;
|
|
1875
|
-
const activeForAccount = this.enginePorts.ed25519YaoActiveClients.resolveForWalletAccount({
|
|
1876
|
-
walletId: identity.signer.account.wallet.walletId,
|
|
1877
|
-
nearAccountId: identity.signer.account.nearAccountId
|
|
1878
|
-
});
|
|
1879
|
-
const publicCapabilityMaterialActivation = await resolveNearEd25519PublicCapabilityMaterialActivation({
|
|
1880
|
-
store: this.ed25519YaoPublicCapabilityReferences,
|
|
1881
|
-
identity
|
|
1882
|
-
});
|
|
1883
|
-
const passkeyAuthorizationRead = identity.auth.kind === WALLET_AUTH_METHODS.passkey ? await this.readExactNearEd25519WalletSessionAuthorization(args.walletId) : null;
|
|
1884
|
-
const passkeyAuthorization = passkeyAuthorizationRead ? classifyNearEd25519WalletSessionAuthorization(passkeyAuthorizationRead) : null;
|
|
1885
|
-
if (identity.auth.kind === WALLET_AUTH_METHODS.passkey && publicCapabilityMaterialActivation) {
|
|
1886
|
-
const activeMaterial = this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
1887
|
-
walletId: identity.signer.account.wallet.walletId,
|
|
1888
|
-
nearAccountId: identity.signer.account.nearAccountId,
|
|
1889
|
-
materialActivation: publicCapabilityMaterialActivation
|
|
1890
|
-
});
|
|
1891
|
-
const liveRuntime = nearEd25519YaoRuntimeObservation(activeMaterial);
|
|
1892
|
-
if (activeMaterial && liveRuntime.kind === "live") {
|
|
1893
|
-
if (passkeyAuthorization?.kind === "authorized") {
|
|
1894
|
-
const authorization = passkeyAuthorization.authorization;
|
|
1895
|
-
if (authorization.selectedAuthMethod.kind !== WALLET_AUTH_METHODS.passkey) throw new Error("[SigningEngine][near] active Wallet Session method is unavailable");
|
|
1896
|
-
return await buildAuthorizedNearEd25519YaoSigningPreparation({
|
|
1897
|
-
hydration: buildUseLiveRuntimeHydrationPlan({
|
|
1898
|
-
authority: await walletAuthAuthorityRef({ authority: authorization.selectedFactorAuthority }),
|
|
1899
|
-
runtime: liveRuntime.runtime,
|
|
1900
|
-
materialActivation: publicCapabilityMaterialActivation
|
|
1901
|
-
}),
|
|
1902
|
-
requirement: identity.auth,
|
|
1903
|
-
authorization
|
|
1904
|
-
});
|
|
1905
|
-
}
|
|
1906
|
-
if (passkeyAuthorization?.kind !== "operation_step_up") {
|
|
1907
|
-
if (passkeyAuthorization?.kind === "full_login_required") throw fullWalletLoginRequired(passkeyAuthorization.reason);
|
|
1908
|
-
throw new Error("[SigningEngine][near] Wallet Session status is temporarily unavailable");
|
|
1909
|
-
}
|
|
1910
|
-
}
|
|
1911
|
-
}
|
|
1912
|
-
if (passkeyAuthorization?.kind === "full_login_required") throw fullWalletLoginRequired(passkeyAuthorization.reason);
|
|
1913
|
-
if (passkeyAuthorization?.kind === "temporarily_unavailable") throw new Error("[SigningEngine][near] Wallet Session persistence is temporarily unavailable");
|
|
1914
|
-
if (identity.auth.kind === WALLET_AUTH_METHODS.passkey && passkeyAuthorization?.kind === "operation_step_up") return buildAuthorizationRequiredNearEd25519YaoSigningPreparation({
|
|
1915
|
-
hydration: (await preparePasskeyEd25519OperationMaterial({
|
|
1916
|
-
walletId: args.walletId,
|
|
1917
|
-
identity,
|
|
1918
|
-
relayerUrl: this.seamsWebConfigs.network.relayer.url
|
|
1919
|
-
})).prepared.plan,
|
|
1920
|
-
requirement: identity.auth
|
|
1921
|
-
});
|
|
1922
|
-
const sealedRuntime = identity.auth.kind === WALLET_AUTH_METHODS.passkey ? await requireExactEd25519SealedRuntimeForMaterialIdentity({
|
|
1923
|
-
walletId: args.walletId,
|
|
1924
|
-
identity
|
|
1925
|
-
}) : null;
|
|
1926
|
-
const materialActivation = sealedRuntime?.sealedRecord.ed25519Restore.materialActivation ?? (activeForAccount ? nearEd25519YaoMaterialActivationFromMetadata(activeForAccount.activeClient.metadata()) : publicCapabilityMaterialActivation);
|
|
1927
|
-
if (!materialActivation) throw invalidWalletSigningMaterial("missing_capability");
|
|
1928
|
-
const runtimeObservation = nearEd25519YaoRuntimeObservation(this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
1929
|
-
walletId: identity.signer.account.wallet.walletId,
|
|
1930
|
-
nearAccountId: identity.signer.account.nearAccountId,
|
|
1931
|
-
materialActivation
|
|
1932
|
-
}));
|
|
1933
|
-
let hydration;
|
|
1934
|
-
switch (identity.auth.kind) {
|
|
1935
|
-
case WALLET_AUTH_METHODS.passkey: {
|
|
1936
|
-
if (!sealedRuntime) throw invalidWalletSigningMaterial("missing_runtime");
|
|
1937
|
-
if (passkeyAuthorization?.kind !== "authorized") throw new Error("[SigningEngine][near] exact Passkey authorization is unavailable");
|
|
1938
|
-
const authorizationRead = {
|
|
1939
|
-
kind: "found",
|
|
1940
|
-
authorization: passkeyAuthorization.authorization
|
|
1941
|
-
};
|
|
1942
|
-
const walletSessionState = await rebindRouterAbEd25519WalletSessionStateFromExactRuntime({
|
|
1943
|
-
runtime: sealedRuntime,
|
|
1944
|
-
authorization: passkeyAuthorization.authorization,
|
|
1945
|
-
nowMs: Date.now()
|
|
1946
|
-
});
|
|
1947
|
-
const warmSessionClaim = await this.ensurePasskeyEd25519WarmSessionForSigning({
|
|
1948
|
-
runtime: sealedRuntime,
|
|
1949
|
-
walletSessionState,
|
|
1950
|
-
materialActivation
|
|
1951
|
-
});
|
|
1952
|
-
let authority;
|
|
1953
|
-
try {
|
|
1954
|
-
authority = await resolveBrowserNearEd25519PasskeyAuthorityForMaterial({
|
|
1955
|
-
walletId: args.walletId,
|
|
1956
|
-
runtime: sealedRuntime,
|
|
1957
|
-
authorizationRead
|
|
1958
|
-
});
|
|
1959
|
-
} catch {
|
|
1960
|
-
throw invalidWalletSigningMaterial("binding_mismatch");
|
|
1961
|
-
}
|
|
1962
|
-
const localMaterialIdentity = passkeyEd25519LocalMaterialIdentityFromExactRuntime(sealedRuntime);
|
|
1963
|
-
const localMaterial = await readPasskeyEd25519YaoLocalMaterialLocatorV1({
|
|
1964
|
-
store: IndexedDBManager,
|
|
1965
|
-
walletId: String(identity.signer.account.wallet.walletId),
|
|
1966
|
-
nearAccountId: String(identity.signer.account.nearAccountId),
|
|
1967
|
-
nearEd25519SigningKeyId: String(identity.signer.nearEd25519SigningKeyId),
|
|
1968
|
-
signerSlot: identity.signer.signerSlot,
|
|
1969
|
-
rpId: identity.auth.rpId,
|
|
1970
|
-
credentialIdB64u: identity.auth.credentialIdB64u,
|
|
1971
|
-
authority
|
|
1972
|
-
});
|
|
1973
|
-
const publicLocator = {
|
|
1974
|
-
kind: "available",
|
|
1975
|
-
walletId: String(identity.signer.account.wallet.walletId),
|
|
1976
|
-
nearAccountId: String(identity.signer.account.nearAccountId),
|
|
1977
|
-
signerSlot: identity.signer.signerSlot,
|
|
1978
|
-
materialActivation,
|
|
1979
|
-
authority
|
|
1980
|
-
};
|
|
1981
|
-
hydration = resolveNearEd25519YaoCapabilityHydrationV1({
|
|
1982
|
-
publicLocator,
|
|
1983
|
-
sealed: localMaterial.kind === "available" ? {
|
|
1984
|
-
kind: "available",
|
|
1985
|
-
authority: localMaterial.locator.authority,
|
|
1986
|
-
materialActivation: localMaterial.locator.materialActivation,
|
|
1987
|
-
sealedMaterial: localMaterial.locator.sealedMaterial
|
|
1988
|
-
} : { kind: "missing" },
|
|
1989
|
-
runtime: runtimeObservation,
|
|
1990
|
-
unlockSource: warmSessionClaim.ok ? {
|
|
1991
|
-
kind: "available",
|
|
1992
|
-
authority
|
|
1993
|
-
} : { kind: "unavailable" }
|
|
1994
|
-
});
|
|
1995
|
-
if (hydration.kind === "blocked" && hydration.reason === "missing_material") hydration = (await prepareExactPasskeyEd25519YaoLocalMaterialRehydration({
|
|
1996
|
-
store: IndexedDBManager,
|
|
1997
|
-
identity: localMaterialIdentity,
|
|
1998
|
-
authority,
|
|
1999
|
-
publicLocator
|
|
2000
|
-
})).plan;
|
|
2001
|
-
break;
|
|
2002
|
-
}
|
|
2003
|
-
case WALLET_AUTH_METHODS.emailOtp:
|
|
2004
|
-
hydration = await this.resolveWalletCustodyEmailOtpHydration({
|
|
2005
|
-
walletId: args.walletId,
|
|
2006
|
-
nearAccountId: args.nearAccountId,
|
|
2007
|
-
identity: requireEmailOtpNearEd25519MaterialIdentity(identity),
|
|
2008
|
-
signerSlot: identity.signer.signerSlot,
|
|
2009
|
-
materialActivation
|
|
2010
|
-
});
|
|
2011
|
-
break;
|
|
2012
|
-
default:
|
|
2013
|
-
identity.auth;
|
|
2014
|
-
throw new Error("[SigningEngine][near] unsupported Ed25519 material authority");
|
|
2015
|
-
}
|
|
2016
|
-
if (hydration.kind === "blocked") {
|
|
2017
|
-
if (hydration.reason === "persistence_unavailable") throw new Error("[SigningEngine][near] signing material persistence is unavailable");
|
|
2018
|
-
throw walletSigningMaterialBlockError(hydration.reason);
|
|
2019
|
-
}
|
|
2020
|
-
return buildAuthorizationRequiredNearEd25519YaoSigningPreparation({
|
|
2021
|
-
hydration,
|
|
2022
|
-
requirement: identity.auth
|
|
2023
|
-
});
|
|
2024
|
-
}
|
|
2025
|
-
async resolveWalletCustodyEmailOtpHydration(args) {
|
|
2026
|
-
const activeMaterial = this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
2027
|
-
walletId: args.walletId,
|
|
2028
|
-
nearAccountId: args.nearAccountId,
|
|
2029
|
-
materialActivation: args.materialActivation
|
|
2030
|
-
});
|
|
2031
|
-
const authorizationRead = await this.readExactNearEd25519WalletSessionAuthorization(args.walletId);
|
|
2032
|
-
let authority;
|
|
2033
|
-
if (authorizationRead.kind === "found") {
|
|
2034
|
-
if (authorizationRead.authorization.selectedAuthMethod.kind !== WALLET_AUTH_METHODS.emailOtp) return buildBlockedMpcCapabilityHydrationPlan({
|
|
2035
|
-
capability: args.materialActivation.capability,
|
|
2036
|
-
reason: "missing_material"
|
|
2037
|
-
});
|
|
2038
|
-
authority = await walletAuthAuthorityRef({ authority: authorizationRead.authorization.selectedFactorAuthority });
|
|
2039
|
-
if (activeMaterial) return buildUseLiveRuntimeHydrationPlan({
|
|
2040
|
-
authority,
|
|
2041
|
-
runtime: nearEd25519YaoRuntimeRef(args.materialActivation),
|
|
2042
|
-
materialActivation: args.materialActivation
|
|
2043
|
-
});
|
|
2044
|
-
} else if (authorizationRead.kind === "exhausted") {
|
|
2045
|
-
const exhaustedAuthority = await resolveBrowserNearEd25519EmailOtpAuthorityForMaterial({
|
|
2046
|
-
walletId: args.walletId,
|
|
2047
|
-
nearAccountId: args.nearAccountId,
|
|
2048
|
-
identity: args.identity,
|
|
2049
|
-
signerSlot: args.signerSlot,
|
|
2050
|
-
materialActivation: args.materialActivation,
|
|
2051
|
-
authorizationRead: { kind: "exhausted" }
|
|
2052
|
-
});
|
|
2053
|
-
if (!exhaustedAuthority) return buildBlockedMpcCapabilityHydrationPlan({
|
|
2054
|
-
capability: args.materialActivation.capability,
|
|
2055
|
-
reason: "missing_material"
|
|
2056
|
-
});
|
|
2057
|
-
authority = exhaustedAuthority;
|
|
2058
|
-
if (activeMaterial) try {
|
|
2059
|
-
validateExactNearEd25519YaoOperationMaterial({
|
|
2060
|
-
material: activeMaterial,
|
|
2061
|
-
input: {
|
|
2062
|
-
walletId: args.walletId,
|
|
2063
|
-
nearAccountId: args.nearAccountId,
|
|
2064
|
-
materialIdentity: args.identity
|
|
2065
|
-
},
|
|
2066
|
-
expectedActivation: args.materialActivation
|
|
2067
|
-
});
|
|
2068
|
-
} catch {
|
|
2069
|
-
return buildBlockedMpcCapabilityHydrationPlan({
|
|
2070
|
-
capability: args.materialActivation.capability,
|
|
2071
|
-
reason: "binding_mismatch"
|
|
2072
|
-
});
|
|
2073
|
-
}
|
|
2074
|
-
} else return buildBlockedMpcCapabilityHydrationPlan({
|
|
2075
|
-
capability: args.materialActivation.capability,
|
|
2076
|
-
reason: "missing_material"
|
|
2077
|
-
});
|
|
2078
|
-
if (activeMaterial) return buildUseLiveRuntimeHydrationPlan({
|
|
2079
|
-
authority,
|
|
2080
|
-
runtime: nearEd25519YaoRuntimeRef(args.materialActivation),
|
|
2081
|
-
materialActivation: args.materialActivation
|
|
2082
|
-
});
|
|
2083
|
-
const loaded = await this.loadEmailOtpWalletCustodyEd25519Material({
|
|
2084
|
-
nearAccountId: String(args.nearAccountId),
|
|
2085
|
-
signerSlot: args.signerSlot
|
|
2086
|
-
});
|
|
2087
|
-
if (loaded.kind === "found" && loaded.material.binding.walletId === String(args.walletId) && loaded.material.binding.nearAccountId === String(args.nearAccountId) && loaded.material.binding.signerSlot === args.signerSlot && String(args.materialActivation.materialOwner) === String(args.walletId) && (authorizationRead.kind === "found" || loaded.material.binding.nearEd25519SigningKeyId === String(args.identity.signer.nearEd25519SigningKeyId) && loaded.material.binding.signingWorkerId === String(args.materialActivation.signingWorker))) return buildRehydrateMaterialActivationHydrationPlan({
|
|
2088
|
-
authority,
|
|
2089
|
-
materialActivation: args.materialActivation,
|
|
2090
|
-
sealedMaterial: buildRestorableMpcMaterialRefForHydration(JSON.stringify([
|
|
2091
|
-
loaded.material.binding.walletId,
|
|
2092
|
-
loaded.material.binding.nearAccountId,
|
|
2093
|
-
loaded.material.binding.signerSlot,
|
|
2094
|
-
args.materialActivation.activationId
|
|
2095
|
-
]))
|
|
2096
|
-
});
|
|
2097
|
-
return buildBlockedMpcCapabilityHydrationPlan({
|
|
2098
|
-
capability: args.materialActivation.capability,
|
|
2099
|
-
reason: "missing_material"
|
|
2100
|
-
});
|
|
2101
|
-
}
|
|
2102
|
-
async rehydrateActiveEmailOtpEd25519YaoSessionMaterial(args) {
|
|
2103
|
-
const input = requireAuthorizedNearEd25519BoundaryInput(args.input);
|
|
2104
|
-
if (input.auth.kind !== WALLET_AUTH_METHODS.emailOtp) throw new Error("[SigningEngine][near] Email OTP session restore requires Email OTP material");
|
|
2105
|
-
const publicLane = await resolveExactEmailOtpPublicLaneReference({
|
|
2106
|
-
store: this.ed25519YaoPublicCapabilityReferences,
|
|
2107
|
-
laneIdentity: input.laneIdentity,
|
|
2108
|
-
materialActivation: args.materialActivation
|
|
2109
|
-
});
|
|
2110
|
-
const user = await this.getUserBySignerSlot(input.nearAccountId, input.laneIdentity.signer.signerSlot);
|
|
2111
|
-
if (!user || String(user.walletId) !== String(input.walletId) || String(user.nearAccountId) !== String(input.nearAccountId) || user.signerSlot !== input.laneIdentity.signer.signerSlot || user.authMethod !== WALLET_AUTH_METHODS.emailOtp) throw new Error("[SigningEngine][near] Email OTP signer record is unavailable");
|
|
2112
|
-
const sealed = await this.loadEmailOtpWalletCustodyEd25519Material({
|
|
2113
|
-
nearAccountId: String(input.nearAccountId),
|
|
2114
|
-
signerSlot: user.signerSlot
|
|
2115
|
-
});
|
|
2116
|
-
const operationCredential = args.authorization.operationCredential;
|
|
2117
|
-
if (sealed.kind !== "found") throw new Error("[SigningEngine][near] Email OTP session material is unavailable");
|
|
2118
|
-
const ecdsaManifest = requireEmailOtpEcdsaRehydrationManifest(await listBrowserActiveEcdsaCapabilityManifestsForWallet(String(input.walletId)), String((await walletAuthAuthorityRef({ authority: args.authorization.selectedFactorAuthority })).authorityDigest));
|
|
2119
|
-
const ecdsaSessionPolicy = buildEmailOtpEcdsaRehydrationPolicy({
|
|
2120
|
-
manifest: ecdsaManifest,
|
|
2121
|
-
remainingUses: args.remainingUses
|
|
2122
|
-
});
|
|
2123
|
-
const activated = await this.signerWorkerManager.requestWorkerOperation({
|
|
2124
|
-
kind: "emailOtp",
|
|
2125
|
-
request: {
|
|
2126
|
-
type: "rehydrateActiveEmailOtpEd25519YaoSessionMaterial",
|
|
2127
|
-
payload: {
|
|
2128
|
-
relayUrl: String(this.seamsWebConfigs.network.relayer?.url || "").trim(),
|
|
2129
|
-
walletId: String(input.walletId),
|
|
2130
|
-
walletAuthMethodId: String(args.authorization.selectedAuthMethod.walletAuthMethodId),
|
|
2131
|
-
orgId: publicLane.runtimePolicyScope.orgId,
|
|
2132
|
-
providerSubjectId: input.auth.providerSubjectId,
|
|
2133
|
-
nearAccountId: String(input.nearAccountId),
|
|
2134
|
-
signerSlot: user.signerSlot,
|
|
2135
|
-
remainingUses: args.remainingUses,
|
|
2136
|
-
expectedOperationalPublicKey: user.operationalPublicKey,
|
|
2137
|
-
expectedThresholdSessionId: publicLane.thresholdSessionId,
|
|
2138
|
-
operationCredential,
|
|
2139
|
-
ecdsa: {
|
|
2140
|
-
sessionHandleBinding: {
|
|
2141
|
-
operation: "wallet_unlock",
|
|
2142
|
-
keyHandle: String(ecdsaManifest.durableMaterial.roleLocalBinding.keyHandle),
|
|
2143
|
-
authSubjectId: input.auth.providerSubjectId,
|
|
2144
|
-
chainTarget: ecdsaManifest.signer.scope.targetMemberships[0]
|
|
2145
|
-
},
|
|
2146
|
-
runtimePolicyScope: ecdsaManifest.durableMaterial.runtimePolicyScope,
|
|
2147
|
-
sessionPolicy: ecdsaSessionPolicy
|
|
2148
|
-
},
|
|
2149
|
-
walletCustodyEd25519Material: sealed
|
|
2150
|
-
}
|
|
2151
|
-
}
|
|
2152
|
-
});
|
|
2153
|
-
await persistRehydratedEmailOtpEcdsaWalletSession({
|
|
2154
|
-
walletId: input.walletId,
|
|
2155
|
-
authorization: activated.walletSessionAuthorization,
|
|
2156
|
-
response: activated.ecdsaSession
|
|
2157
|
-
});
|
|
2158
|
-
await this.activateEmailOtpEd25519CustodyCapabilityInternal({
|
|
2159
|
-
commitQueue: "acquire",
|
|
2160
|
-
walletSession: {
|
|
2161
|
-
walletId: input.walletId,
|
|
2162
|
-
walletSessionUserId: String(input.walletId)
|
|
2163
|
-
},
|
|
2164
|
-
providerSubject: input.auth.providerSubjectId,
|
|
2165
|
-
emailHashHex: await sha256HexUtf8(user.loginDisplayName.trim().toLowerCase()),
|
|
2166
|
-
signerSlot: user.signerSlot,
|
|
2167
|
-
expectedOperationalPublicKey: user.operationalPublicKey,
|
|
2168
|
-
expectedThresholdSessionId: String(publicLane.thresholdSessionId),
|
|
2169
|
-
bootstrap: activated.bootstrap,
|
|
2170
|
-
activeClientHandle: activated.activeClientHandle,
|
|
2171
|
-
metadata: activated.metadata,
|
|
2172
|
-
exactAuthorization: activated.walletSessionAuthorization
|
|
2173
|
-
});
|
|
2174
|
-
return buildUseLiveRuntimeHydrationPlan({
|
|
2175
|
-
authority: await walletAuthAuthorityRef({ authority: args.authorization.selectedFactorAuthority }),
|
|
2176
|
-
runtime: nearEd25519YaoRuntimeRef(args.materialActivation),
|
|
2177
|
-
materialActivation: args.materialActivation
|
|
2178
|
-
});
|
|
2179
|
-
}
|
|
2180
|
-
async prepareExactNearEd25519YaoSigning(args) {
|
|
2181
|
-
if (args.laneIdentity !== void 0 && args.auth?.kind === WALLET_AUTH_METHODS.emailOtp) {
|
|
2182
|
-
let preparation = await this.prepareMaterialIdentityNearEd25519YaoSigning(authNeutralNearEd25519BoundaryInput(args));
|
|
2183
|
-
const authorizationRead = await this.readExactNearEd25519WalletSessionAuthorization(args.walletId);
|
|
2184
|
-
if (authorizationRead.kind !== "found" || authorizationRead.authorization.selectedAuthMethod.kind !== WALLET_AUTH_METHODS.emailOtp) return preparation;
|
|
2185
|
-
const authorization = authorizationRead.authorization;
|
|
2186
|
-
switch (preparation.hydration.kind) {
|
|
2187
|
-
case "use_live_runtime": break;
|
|
2188
|
-
case "rehydrate_material_activation":
|
|
2189
|
-
preparation = buildAuthorizationRequiredNearEd25519YaoSigningPreparation({
|
|
2190
|
-
hydration: await this.rehydrateActiveEmailOtpEd25519YaoSessionMaterial({
|
|
2191
|
-
input: args,
|
|
2192
|
-
materialActivation: preparation.hydration.materialActivation,
|
|
2193
|
-
authorization,
|
|
2194
|
-
remainingUses: authorization.status.remainingUses
|
|
2195
|
-
}),
|
|
2196
|
-
requirement: args.auth
|
|
2197
|
-
});
|
|
2198
|
-
break;
|
|
2199
|
-
case "reauthorize_public_anchor":
|
|
2200
|
-
case "blocked": return preparation;
|
|
2201
|
-
default:
|
|
2202
|
-
preparation.hydration;
|
|
2203
|
-
throw new Error("[SigningEngine][near] unsupported Email OTP hydration state");
|
|
2204
|
-
}
|
|
2205
|
-
const currentAuthorizationRead = await this.readExactNearEd25519WalletSessionAuthorization(args.walletId);
|
|
2206
|
-
if (currentAuthorizationRead.kind !== "found" || currentAuthorizationRead.authorization.selectedAuthMethod.kind !== WALLET_AUTH_METHODS.emailOtp) return preparation;
|
|
2207
|
-
return await buildAuthorizedNearEd25519YaoSigningPreparation({
|
|
2208
|
-
hydration: preparation.hydration,
|
|
2209
|
-
requirement: args.auth,
|
|
2210
|
-
authorization: currentAuthorizationRead.authorization
|
|
2211
|
-
});
|
|
2212
|
-
}
|
|
2213
|
-
if (args.laneIdentity === void 0) return await this.prepareMaterialIdentityNearEd25519YaoSigning(args);
|
|
2214
|
-
const authorizationRead = await this.readExactNearEd25519WalletSessionAuthorization(args.walletId);
|
|
2215
|
-
switch (authorizationRead.kind) {
|
|
2216
|
-
case "found": {
|
|
2217
|
-
const authorization = authorizationRead.authorization;
|
|
2218
|
-
if (authorization.selectedAuthMethod.kind !== args.auth.kind) return await this.prepareMaterialIdentityNearEd25519YaoSigning(authNeutralNearEd25519BoundaryInput(args));
|
|
2219
|
-
const sealedRuntimeResolution = await resolveExactEd25519SealedSessionRuntimeForLane({
|
|
2220
|
-
walletId: args.walletId,
|
|
2221
|
-
laneIdentity: args.laneIdentity
|
|
2222
|
-
});
|
|
2223
|
-
if (sealedRuntimeResolution.kind === "missing" && args.auth.kind === WALLET_AUTH_METHODS.passkey) {
|
|
2224
|
-
const publicLane = await resolveExactPasskeyPublicLaneReference({
|
|
2225
|
-
store: this.ed25519YaoPublicCapabilityReferences,
|
|
2226
|
-
laneIdentity: args.laneIdentity
|
|
2227
|
-
});
|
|
2228
|
-
const materialActivation = publicLane.materialActivation;
|
|
2229
|
-
const activeMaterial = this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
2230
|
-
walletId: args.walletId,
|
|
2231
|
-
nearAccountId: args.nearAccountId,
|
|
2232
|
-
materialActivation
|
|
2233
|
-
});
|
|
2234
|
-
if (!activeMaterial) throw new Error("[SigningEngine][near] active Passkey Ed25519 material is unavailable");
|
|
2235
|
-
const material = validateExactNearEd25519YaoOperationMaterial({
|
|
2236
|
-
material: activeMaterial,
|
|
2237
|
-
input: args,
|
|
2238
|
-
expectedActivation: materialActivation
|
|
2239
|
-
});
|
|
2240
|
-
const walletSessionState = await passkeyWalletSessionStateFromPublicLane({
|
|
2241
|
-
reference: publicLane,
|
|
2242
|
-
material,
|
|
2243
|
-
authorization,
|
|
2244
|
-
materialActivation,
|
|
2245
|
-
relayerUrl: String(this.seamsWebConfigs.network.relayer?.url || "").trim()
|
|
2246
|
-
});
|
|
2247
|
-
const runtime = nearEd25519YaoRuntimeObservation(material);
|
|
2248
|
-
if (runtime.kind !== "live") throw new Error("[SigningEngine][near] active Passkey Ed25519 material is unavailable");
|
|
2249
|
-
return await buildAuthorizedNearEd25519YaoSigningPreparation({
|
|
2250
|
-
hydration: buildUseLiveRuntimeHydrationPlan({
|
|
2251
|
-
authority: walletSessionState.authority,
|
|
2252
|
-
runtime: runtime.runtime,
|
|
2253
|
-
materialActivation
|
|
2254
|
-
}),
|
|
2255
|
-
requirement: args.auth,
|
|
2256
|
-
authorization
|
|
2257
|
-
});
|
|
2258
|
-
}
|
|
2259
|
-
if (sealedRuntimeResolution.kind !== "resolved") throw new Error(`[SigningEngine][near] exact persisted Ed25519 runtime is ${sealedRuntimeResolution.kind}`);
|
|
2260
|
-
const sealedRuntime = sealedRuntimeResolution.runtime;
|
|
2261
|
-
const materialActivation = sealedRuntime.sealedRecord.ed25519Restore.materialActivation;
|
|
2262
|
-
const walletSessionState = await walletSessionStateFromExactEd25519Runtime({
|
|
2263
|
-
runtime: sealedRuntime,
|
|
2264
|
-
relayerUrl: String(this.seamsWebConfigs.network.relayer?.url || "").trim()
|
|
2265
|
-
});
|
|
2266
|
-
const signer = walletSessionState.signingLane.identity.signer;
|
|
2267
|
-
const publicLocator = {
|
|
2268
|
-
kind: "available",
|
|
2269
|
-
walletId: String(signer.account.wallet.walletId),
|
|
2270
|
-
nearAccountId: String(signer.account.nearAccountId),
|
|
2271
|
-
signerSlot: signer.signerSlot,
|
|
2272
|
-
materialActivation
|
|
2273
|
-
};
|
|
2274
|
-
const activeMaterial = this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
2275
|
-
walletId: signer.account.wallet.walletId,
|
|
2276
|
-
nearAccountId: signer.account.nearAccountId,
|
|
2277
|
-
materialActivation
|
|
2278
|
-
});
|
|
2279
|
-
const warmSessionClaim = args.auth.kind === WALLET_AUTH_METHODS.passkey ? await this.passkeyMpcSession.claimWarmSessionMaterial({
|
|
2280
|
-
thresholdSessionId: sealedRuntime.thresholdSessionId,
|
|
2281
|
-
purpose: {
|
|
2282
|
-
curve: "ed25519",
|
|
2283
|
-
materialActivation
|
|
2284
|
-
},
|
|
2285
|
-
consume: false
|
|
2286
|
-
}) : null;
|
|
2287
|
-
let unlockSource = { kind: "unavailable" };
|
|
2288
|
-
if (warmSessionClaim?.ok === true) unlockSource = {
|
|
2289
|
-
kind: "available",
|
|
2290
|
-
passkeyPrfFirstB64u: warmSessionClaim.prfFirstB64u
|
|
2291
|
-
};
|
|
2292
|
-
const hydration = await this.resolveExactNearEd25519YaoSigningHydration({
|
|
2293
|
-
args,
|
|
2294
|
-
walletSessionState,
|
|
2295
|
-
publicLocator,
|
|
2296
|
-
runtime: nearEd25519YaoRuntimeObservation(activeMaterial),
|
|
2297
|
-
unlockSource
|
|
2298
|
-
});
|
|
2299
|
-
if (hydration.kind === "use_live_runtime") {
|
|
2300
|
-
if (!activeMaterial) throw new Error("[SigningEngine][near] live Ed25519 material is unavailable");
|
|
2301
|
-
await hydrateOwnerNearEd25519ExecutionLane({
|
|
2302
|
-
input: args,
|
|
2303
|
-
authorization,
|
|
2304
|
-
sealedRuntime,
|
|
2305
|
-
material: activeMaterial
|
|
2306
|
-
});
|
|
2307
|
-
}
|
|
2308
|
-
return await buildAuthorizedNearEd25519YaoSigningPreparation({
|
|
2309
|
-
hydration,
|
|
2310
|
-
requirement: args.auth,
|
|
2311
|
-
authorization
|
|
2312
|
-
});
|
|
2313
|
-
}
|
|
2314
|
-
case "missing":
|
|
2315
|
-
case "expired":
|
|
2316
|
-
case "exhausted":
|
|
2317
|
-
case "superseded":
|
|
2318
|
-
case "authority_unavailable":
|
|
2319
|
-
case "method_unavailable":
|
|
2320
|
-
case "capability_unavailable":
|
|
2321
|
-
case "unavailable": return await this.prepareMaterialIdentityNearEd25519YaoSigning(authNeutralNearEd25519BoundaryInput(args));
|
|
2322
|
-
case "upgrade_required": throw new WalletSessionAuthorizationUpgradeRequiredError("[SigningEngine][near] Wallet Session authorization requires a newer client");
|
|
2323
|
-
case "corrupt":
|
|
2324
|
-
case "persistence_unavailable": throw new Error(`[SigningEngine][near] Wallet Session authorization is ${authorizationRead.kind}`);
|
|
2325
|
-
default: throw new Error("[SigningEngine][near] unsupported Wallet Session authorization state");
|
|
2326
|
-
}
|
|
2327
|
-
}
|
|
2328
|
-
async prepareExactNearEd25519YaoMaterialBoundary(args) {
|
|
2329
|
-
assertNearEd25519YaoMaterialBoundaryAuth(args);
|
|
2330
|
-
const preparation = await this.prepareExactNearEd25519YaoSigning(args);
|
|
2331
|
-
const context = {
|
|
2332
|
-
input: args,
|
|
2333
|
-
materialActivation: preparation.hydration.materialActivation || null
|
|
2334
|
-
};
|
|
2335
|
-
return {
|
|
2336
|
-
preparation,
|
|
2337
|
-
executor: {
|
|
2338
|
-
resolveSigningKeyMaterial: this.resolveExactNearEd25519SigningKeyMaterial.bind(this, context),
|
|
2339
|
-
resolve: this.resolveExactNearEd25519YaoPreparedMaterial.bind(this, context),
|
|
2340
|
-
resolveWalletSessionState: this.resolveExactNearEd25519YaoWalletSessionState.bind(this, context),
|
|
2341
|
-
resolveFundingSession: this.resolveExactNearEd25519FundingSession.bind(this, context),
|
|
2342
|
-
preparePasskeyOperationStepUp: this.prepareExactNearEd25519YaoOperationStepUpAtBoundary.bind(this, context),
|
|
2343
|
-
prepareEmailOtpOperationStepUp: this.prepareExactNearEmailOtpEd25519YaoOperationStepUpAtBoundary.bind(this, context)
|
|
2344
|
-
}
|
|
2345
|
-
};
|
|
2346
|
-
}
|
|
2347
|
-
async resolveExactNearEd25519SigningKeyMaterial(context) {
|
|
2348
|
-
const identity = nearEd25519MaterialIdentityFromBoundaryInput(context.input);
|
|
2349
|
-
const signer = identity.signer;
|
|
2350
|
-
const auth = identity.auth;
|
|
2351
|
-
const materialActivation = context.materialActivation;
|
|
2352
|
-
if (!materialActivation) throw new Error("[SigningEngine][near] prepared material has no activation");
|
|
2353
|
-
if (String(signer.account.wallet.walletId) !== String(context.input.walletId) || String(signer.account.nearAccountId) !== String(context.input.nearAccountId)) throw new Error("[SigningEngine][near] selected Ed25519 lane identity changed");
|
|
2354
|
-
const selected = await IndexedDBManager.resolveSelectedWalletAuthority(String(context.input.walletId));
|
|
2355
|
-
if (selected.kind !== "resolved") {
|
|
2356
|
-
const detail = selected.kind === "integrity_error" ? `: ${selected.reason}` : "";
|
|
2357
|
-
throw new Error(`[SigningEngine][near] selected Wallet Authority is ${selected.kind}${detail}`);
|
|
2358
|
-
}
|
|
2359
|
-
const { selection, authMethod, authority, signerMaterials } = selected;
|
|
2360
|
-
let authMethodMatches;
|
|
2361
|
-
switch (auth.kind) {
|
|
2362
|
-
case WALLET_AUTH_METHODS.passkey:
|
|
2363
|
-
authMethodMatches = authMethod.kind === WALLET_AUTH_METHODS.passkey && String(authMethod.rpId) === String(auth.rpId) && authMethod.credentialIdB64u === auth.credentialIdB64u;
|
|
2364
|
-
break;
|
|
2365
|
-
case WALLET_AUTH_METHODS.emailOtp:
|
|
2366
|
-
authMethodMatches = authMethod.kind === WALLET_AUTH_METHODS.emailOtp;
|
|
2367
|
-
break;
|
|
2368
|
-
default: throw new Error("[SigningEngine][near] unsupported Ed25519 material authority");
|
|
2369
|
-
}
|
|
2370
|
-
if (selection.lockState !== "unlocked" || authority.state !== "active" || authMethod.status !== "active" || String(selection.walletId) !== String(context.input.walletId) || selection.walletAuthMethodId !== authMethod.walletAuthMethodId || authMethod.walletAuthorityId !== authority.authorityId || String(authMethod.walletId) !== String(context.input.walletId) || !authMethodMatches) throw new Error("[SigningEngine][near] selected Wallet Authority does not match the lane");
|
|
2371
|
-
const operation = await resolveWalletAuthorityOperation({
|
|
2372
|
-
selected: {
|
|
2373
|
-
authMethod,
|
|
2374
|
-
authority
|
|
2375
|
-
},
|
|
2376
|
-
operation: {
|
|
2377
|
-
kind: "near_sign",
|
|
2378
|
-
operation: "sign",
|
|
2379
|
-
keyFamily: "ed25519"
|
|
2380
|
-
}
|
|
2381
|
-
});
|
|
2382
|
-
if (operation.kind !== "resolved") throw new Error(`[SigningEngine][near] selected Wallet Authority rejected signing (${operation.reason.kind})`);
|
|
2383
|
-
const resolved = operation.value;
|
|
2384
|
-
if (resolved.keyFamily !== "ed25519" || String(resolved.walletId) !== String(context.input.walletId) || resolved.authMethodId !== authMethod.walletAuthMethodId || !mpcMaterialActivationRefsEqual(resolved.materialActivation, materialActivation)) throw new Error("[SigningEngine][near] selected Wallet Authority activation changed");
|
|
2385
|
-
if (authority.signerActivations.keyFamilies[0] !== "ed25519" || authority.signerActivations.ed25519 === void 0 || !mpcMaterialActivationRefsEqual(authority.signerActivations.ed25519.materialActivation, materialActivation) || authority.signerActivations.ed25519.signer.registeredPublicKeyB64u !== resolved.registeredPublicKeyB64u) throw new Error("[SigningEngine][near] selected Ed25519 authority activation changed");
|
|
2386
|
-
const registeredPublicKey = base64UrlDecode(resolved.registeredPublicKeyB64u);
|
|
2387
|
-
if (registeredPublicKey.byteLength !== 32) throw new Error("[SigningEngine][near] selected Ed25519 public key is invalid");
|
|
2388
|
-
const signingWorkerId = materialActivation.signingWorker;
|
|
2389
|
-
let participantIds = [1, 2];
|
|
2390
|
-
let linkedMaterial = null;
|
|
2391
|
-
if (authority.provenance.kind === "device_link") {
|
|
2392
|
-
await resolveExactNearEd25519PublicLaneReference({
|
|
2393
|
-
store: this.ed25519YaoPublicCapabilityReferences,
|
|
2394
|
-
identity,
|
|
2395
|
-
materialActivation
|
|
2396
|
-
});
|
|
2397
|
-
for (const candidate of signerMaterials) {
|
|
2398
|
-
if (!isLinkedEd25519SignerMaterial(candidate) || candidate.authorityId !== authority.authorityId || candidate.walletAuthMethodId !== authMethod.walletAuthMethodId || !mpcMaterialActivationRefsEqual(candidate.materialActivation, materialActivation)) continue;
|
|
2399
|
-
if (linkedMaterial) throw new Error("[SigningEngine][near] linked Ed25519 signer material is ambiguous");
|
|
2400
|
-
linkedMaterial = candidate;
|
|
2401
|
-
}
|
|
2402
|
-
if (!linkedMaterial) throw new Error("[SigningEngine][near] linked Ed25519 signer material is unavailable");
|
|
2403
|
-
const application = linkedMaterial.publicFacts.applicationBinding;
|
|
2404
|
-
const targetBinding = linkedMaterial.publicFacts.targetBinding;
|
|
2405
|
-
const targetLifecycle = targetBinding.lifecycle;
|
|
2406
|
-
const targetFactor = linkedMaterial.targetFactor;
|
|
2407
|
-
let targetFactorMatches;
|
|
2408
|
-
switch (auth.kind) {
|
|
2409
|
-
case WALLET_AUTH_METHODS.passkey:
|
|
2410
|
-
targetFactorMatches = targetFactor.kind === WALLET_AUTH_METHODS.passkey && targetFactor.walletAuthMethodId === authMethod.walletAuthMethodId && String(targetFactor.rpId) === String(auth.rpId) && targetFactor.credentialIdB64u === auth.credentialIdB64u;
|
|
2411
|
-
break;
|
|
2412
|
-
case WALLET_AUTH_METHODS.emailOtp:
|
|
2413
|
-
targetFactorMatches = targetFactor.kind === WALLET_AUTH_METHODS.emailOtp && authMethod.kind === WALLET_AUTH_METHODS.emailOtp && targetFactor.walletAuthMethodId === authMethod.walletAuthMethodId && targetFactor.emailHashHex === authMethod.emailHashHex;
|
|
2414
|
-
break;
|
|
2415
|
-
default: throw new Error("[SigningEngine][near] unsupported Ed25519 material authority");
|
|
2416
|
-
}
|
|
2417
|
-
if (application.wallet_id !== String(context.input.walletId) || application.near_ed25519_signing_key_id !== String(signer.nearEd25519SigningKeyId) || application.key_creation_signer_slot !== signer.signerSlot || targetLifecycle.account_id !== String(context.input.walletId) || targetLifecycle.session_id !== String(identity.thresholdSessionId) || targetLifecycle.selected_server_id !== String(signingWorkerId) || !mpcMaterialActivationRefsEqual(routerAbMpcMaterialActivationRefFromWire(targetBinding.material_activation), materialActivation) || !mpcMaterialActivationRefsEqual(routerAbMpcMaterialActivationRefFromWire(linkedMaterial.publicFacts.activationReceipt.material_activation), materialActivation) || base64UrlEncode(Uint8Array.from(linkedMaterial.publicFacts.activationReceipt.registered_public_key)) !== resolved.registeredPublicKeyB64u || !targetFactorMatches) throw new Error("[SigningEngine][near] linked Ed25519 signer identity changed");
|
|
2418
|
-
participantIds = linkedMaterial.publicFacts.participantIds;
|
|
2419
|
-
}
|
|
2420
|
-
const activeMaterial = this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
2421
|
-
walletId: context.input.walletId,
|
|
2422
|
-
nearAccountId: context.input.nearAccountId,
|
|
2423
|
-
materialActivation
|
|
2424
|
-
});
|
|
2425
|
-
if (activeMaterial) {
|
|
2426
|
-
const exactMaterial = validateExactNearEd25519YaoOperationMaterial({
|
|
2427
|
-
material: activeMaterial,
|
|
2428
|
-
input: context.input,
|
|
2429
|
-
expectedActivation: materialActivation
|
|
2430
|
-
});
|
|
2431
|
-
const metadata = exactMaterial.activeClient.metadata();
|
|
2432
|
-
const facts = exactMaterial.facts;
|
|
2433
|
-
if (base64UrlEncode(metadata.registeredPublicKey) !== resolved.registeredPublicKeyB64u || metadata.participantIds[0] !== participantIds[0] || metadata.participantIds[1] !== participantIds[1] || metadata.applicationBinding.wallet_id !== String(context.input.walletId) || metadata.applicationBinding.near_ed25519_signing_key_id !== String(signer.nearEd25519SigningKeyId) || metadata.applicationBinding.key_creation_signer_slot !== signer.signerSlot || metadata.scope.account_id !== String(context.input.walletId) || metadata.scope.threshold_session_id !== String(identity.thresholdSessionId) || metadata.scope.signing_worker_id !== String(signingWorkerId) || facts.routerAbNormalSigning.signingWorkerId !== String(signingWorkerId) || facts.signingRootId !== metadata.applicationBinding.signing_root_id || facts.signingRootVersion !== metadata.scope.root_share_epoch) throw new Error("[SigningEngine][near] active Ed25519 public material changed");
|
|
2434
|
-
if (linkedMaterial) {
|
|
2435
|
-
const application = linkedMaterial.publicFacts.applicationBinding;
|
|
2436
|
-
const targetLifecycle = linkedMaterial.publicFacts.targetBinding.lifecycle;
|
|
2437
|
-
if (metadata.applicationBinding.wallet_id !== application.wallet_id || metadata.applicationBinding.near_ed25519_signing_key_id !== application.near_ed25519_signing_key_id || metadata.applicationBinding.signing_root_id !== application.signing_root_id || metadata.applicationBinding.key_creation_signer_slot !== application.key_creation_signer_slot || metadata.scope.lifecycle_id !== targetLifecycle.lifecycle_id || metadata.scope.root_share_epoch !== targetLifecycle.root_share_epoch || metadata.scope.account_id !== targetLifecycle.account_id || metadata.scope.threshold_session_id !== targetLifecycle.session_id || metadata.scope.signing_worker_id !== targetLifecycle.selected_server_id) throw new Error("[SigningEngine][near] linked Ed25519 runtime identity changed");
|
|
2438
|
-
}
|
|
2439
|
-
}
|
|
2440
|
-
const publicKey = `ed25519:${base58Encode(registeredPublicKey)}`;
|
|
2441
|
-
return {
|
|
2442
|
-
nearAccountId: context.input.nearAccountId,
|
|
2443
|
-
signerSlot: signer.signerSlot,
|
|
2444
|
-
kind: "threshold_ed25519_v1",
|
|
2445
|
-
publicKey,
|
|
2446
|
-
relayerKeyId: signingWorkerId,
|
|
2447
|
-
keyVersion: NEAR_ED25519_YAO_KEY_VERSION_V1,
|
|
2448
|
-
participants: buildThresholdEd25519Participants2pV1({
|
|
2449
|
-
clientParticipantId: participantIds[0],
|
|
2450
|
-
relayerParticipantId: participantIds[1],
|
|
2451
|
-
relayerKeyId: signingWorkerId,
|
|
2452
|
-
clientShareDerivation: "prf_first_v1"
|
|
2453
|
-
}),
|
|
2454
|
-
timestamp: authority.activatedAtMs
|
|
2455
|
-
};
|
|
2456
|
-
}
|
|
2457
|
-
async resolveExactNearEd25519YaoPreparedMaterial(context, preparation) {
|
|
2458
|
-
const expectedActivation = requireBoundNearEd25519YaoPreparationActivation({
|
|
2459
|
-
context,
|
|
2460
|
-
preparation
|
|
2461
|
-
});
|
|
2462
|
-
switch (preparation.hydration.kind) {
|
|
2463
|
-
case "use_live_runtime": {
|
|
2464
|
-
const capability = this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
2465
|
-
walletId: context.input.walletId,
|
|
2466
|
-
nearAccountId: context.input.nearAccountId,
|
|
2467
|
-
materialActivation: expectedActivation
|
|
2468
|
-
});
|
|
2469
|
-
if (!capability) throw new Error("[SigningEngine][near] active Ed25519 Yao capability is unavailable");
|
|
2470
|
-
return validateExactNearEd25519YaoOperationMaterial({
|
|
2471
|
-
material: capability,
|
|
2472
|
-
input: context.input,
|
|
2473
|
-
expectedActivation
|
|
2474
|
-
});
|
|
2475
|
-
}
|
|
2476
|
-
case "rehydrate_material_activation": {
|
|
2477
|
-
const args = requireAuthorizedNearEd25519BoundaryInput(context.input);
|
|
2478
|
-
switch (args.auth.kind) {
|
|
2479
|
-
case WALLET_AUTH_METHODS.passkey: {
|
|
2480
|
-
const material = await this.rehydrateExactPasskeyEd25519YaoCapabilityForSigning(args);
|
|
2481
|
-
try {
|
|
2482
|
-
const authorizationRead = await this.readExactNearEd25519WalletSessionAuthorization(args.walletId);
|
|
2483
|
-
if (authorizationRead.kind !== "found" || authorizationRead.authorization.selectedAuthMethod.kind !== WALLET_AUTH_METHODS.passkey) throw new Error(`[SigningEngine][near] Wallet Session authorization is ${authorizationRead.kind}`);
|
|
2484
|
-
const sealedRuntime = await requireExactEd25519SealedRuntimeForLane({
|
|
2485
|
-
walletId: args.walletId,
|
|
2486
|
-
laneIdentity: args.laneIdentity
|
|
2487
|
-
});
|
|
2488
|
-
await hydrateOwnerNearEd25519ExecutionLane({
|
|
2489
|
-
input: args,
|
|
2490
|
-
authorization: authorizationRead.authorization,
|
|
2491
|
-
sealedRuntime,
|
|
2492
|
-
material
|
|
2493
|
-
});
|
|
2494
|
-
return validateExactNearEd25519YaoOperationMaterial({
|
|
2495
|
-
material,
|
|
2496
|
-
input: args,
|
|
2497
|
-
expectedActivation
|
|
2498
|
-
});
|
|
2499
|
-
} catch (error) {
|
|
2500
|
-
material.activeClient.dispose();
|
|
2501
|
-
throw error;
|
|
2502
|
-
}
|
|
2503
|
-
}
|
|
2504
|
-
case WALLET_AUTH_METHODS.emailOtp: throw new Error("[SigningEngine][near] Email OTP custody cache is unavailable; link the device before signing");
|
|
2505
|
-
default:
|
|
2506
|
-
args.auth;
|
|
2507
|
-
throw new Error("[SigningEngine][near] unsupported Ed25519 material authority");
|
|
2508
|
-
}
|
|
2509
|
-
}
|
|
2510
|
-
case "reauthorize_public_anchor": throw new Error("[SigningEngine][near] retired material requires reauthorization");
|
|
2511
|
-
case "blocked": throw new Error(`[SigningEngine][near] prepared material is blocked: ${preparation.hydration.reason}`);
|
|
2512
|
-
default:
|
|
2513
|
-
preparation.hydration;
|
|
2514
|
-
throw new Error("[SigningEngine][near] unsupported prepared material hydration");
|
|
2515
|
-
}
|
|
2516
|
-
}
|
|
2517
|
-
async resolveExactNearEd25519YaoWalletSessionState(context) {
|
|
2518
|
-
const args = requireAuthorizedNearEd25519BoundaryInput(context.input);
|
|
2519
|
-
if (args.auth.kind === WALLET_AUTH_METHODS.emailOtp) {
|
|
2520
|
-
if (!context.materialActivation) throw new Error("[SigningEngine][near] prepared material has no activation");
|
|
2521
|
-
const publicLane = await resolveExactEmailOtpPublicLaneReference({
|
|
2522
|
-
store: this.ed25519YaoPublicCapabilityReferences,
|
|
2523
|
-
laneIdentity: args.laneIdentity,
|
|
2524
|
-
materialActivation: context.materialActivation
|
|
2525
|
-
});
|
|
2526
|
-
const material = this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
2527
|
-
walletId: args.walletId,
|
|
2528
|
-
nearAccountId: args.nearAccountId,
|
|
2529
|
-
materialActivation: context.materialActivation
|
|
2530
|
-
});
|
|
2531
|
-
if (!material) throw new Error("[SigningEngine][near] active Email OTP Ed25519 material is unavailable");
|
|
2532
|
-
const authorizationRead = await this.readExactNearEd25519WalletSessionAuthorization(args.walletId);
|
|
2533
|
-
if (authorizationRead.kind !== "found" || authorizationRead.authorization.selectedAuthMethod.kind !== WALLET_AUTH_METHODS.emailOtp) throw new Error(`[SigningEngine][near] Wallet Session authorization is ${authorizationRead.kind}`);
|
|
2534
|
-
return await emailOtpWalletSessionStateFromPublicLane({
|
|
2535
|
-
reference: publicLane,
|
|
2536
|
-
material: validateExactNearEd25519YaoOperationMaterial({
|
|
2537
|
-
material,
|
|
2538
|
-
input: args,
|
|
2539
|
-
expectedActivation: context.materialActivation
|
|
2540
|
-
}),
|
|
2541
|
-
authorization: authorizationRead.authorization,
|
|
2542
|
-
materialActivation: context.materialActivation,
|
|
2543
|
-
relayerUrl: String(this.seamsWebConfigs.network.relayer?.url || "").trim()
|
|
2544
|
-
});
|
|
2545
|
-
}
|
|
2546
|
-
const runtimeResolution = await resolveExactEd25519SealedSessionRuntimeForLane({
|
|
2547
|
-
walletId: args.walletId,
|
|
2548
|
-
laneIdentity: args.laneIdentity
|
|
2549
|
-
});
|
|
2550
|
-
if (runtimeResolution.kind === "missing" && args.auth.kind === WALLET_AUTH_METHODS.passkey) {
|
|
2551
|
-
if (!context.materialActivation) throw new Error("[SigningEngine][near] prepared material has no activation");
|
|
2552
|
-
const publicLane = await resolveExactPasskeyPublicLaneReference({
|
|
2553
|
-
store: this.ed25519YaoPublicCapabilityReferences,
|
|
2554
|
-
laneIdentity: args.laneIdentity
|
|
2555
|
-
});
|
|
2556
|
-
if (!mpcMaterialActivationRefsEqual(publicLane.materialActivation, context.materialActivation)) throw new Error("[SigningEngine][near] Passkey public lane activation changed");
|
|
2557
|
-
const material = this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
2558
|
-
walletId: args.walletId,
|
|
2559
|
-
nearAccountId: args.nearAccountId,
|
|
2560
|
-
materialActivation: context.materialActivation
|
|
2561
|
-
});
|
|
2562
|
-
if (!material) throw new Error("[SigningEngine][near] active Passkey Ed25519 material is unavailable");
|
|
2563
|
-
const exactMaterial = validateExactNearEd25519YaoOperationMaterial({
|
|
2564
|
-
material,
|
|
2565
|
-
input: args,
|
|
2566
|
-
expectedActivation: context.materialActivation
|
|
2567
|
-
});
|
|
2568
|
-
const authorizationRead = await this.readExactNearEd25519WalletSessionAuthorization(args.walletId);
|
|
2569
|
-
if (authorizationRead.kind !== "found" || authorizationRead.authorization.selectedAuthMethod.kind !== WALLET_AUTH_METHODS.passkey) throw new Error(`[SigningEngine][near] Wallet Session authorization is ${authorizationRead.kind}`);
|
|
2570
|
-
return await passkeyWalletSessionStateFromPublicLane({
|
|
2571
|
-
reference: publicLane,
|
|
2572
|
-
material: exactMaterial,
|
|
2573
|
-
authorization: authorizationRead.authorization,
|
|
2574
|
-
materialActivation: context.materialActivation,
|
|
2575
|
-
relayerUrl: String(this.seamsWebConfigs.network.relayer?.url || "").trim()
|
|
2576
|
-
});
|
|
2577
|
-
}
|
|
2578
|
-
if (runtimeResolution.kind !== "resolved") throw new Error(`[SigningEngine][near] exact persisted Ed25519 runtime is ${runtimeResolution.kind}`);
|
|
2579
|
-
const runtime = runtimeResolution.runtime;
|
|
2580
|
-
return await walletSessionStateFromExactEd25519Runtime({
|
|
2581
|
-
runtime,
|
|
2582
|
-
relayerUrl: String(this.seamsWebConfigs.network.relayer?.url || "").trim()
|
|
2583
|
-
});
|
|
2584
|
-
}
|
|
2585
|
-
async resolveExactNearEd25519FundingSession(context) {
|
|
2586
|
-
const identity = nearEd25519MaterialIdentityFromBoundaryInput(context.input);
|
|
2587
|
-
const authorizationRead = await this.readExactNearEd25519WalletSessionAuthorization(identity.signer.account.wallet.walletId);
|
|
2588
|
-
if (authorizationRead.kind !== "found" || authorizationRead.authorization.selectedAuthMethod.kind !== identity.auth.kind) throw new Error("[SigningEngine][near] authenticated funding session is unavailable");
|
|
2589
|
-
if (!context.materialActivation) throw new Error("[SigningEngine][near] funding session material activation is unavailable");
|
|
2590
|
-
if (!nearEd25519SessionMatchesMaterialActivation({
|
|
2591
|
-
session: authorizationRead.authorization.session,
|
|
2592
|
-
materialActivation: context.materialActivation
|
|
2593
|
-
})) throw new Error("[SigningEngine][near] authenticated funding session material changed");
|
|
2594
|
-
const walletSessionToken = authorizationRead.authorization.operationCredential.token;
|
|
2595
|
-
if (authorizationRead.authorization.session.walletId !== identity.signer.account.wallet.walletId || authorizationRead.authorization.selectedAuthMethod.kind !== identity.auth.kind || !authorizationRead.authorization.operationCredential.walletSessionId || !authorizationRead.authorization.session.quotaId) throw new Error("[SigningEngine][near] funding session identity does not match");
|
|
2596
|
-
return {
|
|
2597
|
-
kind: "near_ed25519_funding_session",
|
|
2598
|
-
signer: identity.signer,
|
|
2599
|
-
thresholdSessionId: identity.thresholdSessionId,
|
|
2600
|
-
walletSessionToken
|
|
2601
|
-
};
|
|
2602
|
-
}
|
|
2603
|
-
async prepareExactNearEd25519YaoOperationStepUpAtBoundary(context, preparation) {
|
|
2604
|
-
if (nearEd25519PresentedAuthFromBoundaryInput(context.input).kind !== WALLET_AUTH_METHODS.passkey) throw new Error("[SigningEngine][near] Email OTP material cannot use Passkey rehydration");
|
|
2605
|
-
const expectedActivation = requireBoundNearEd25519YaoPreparationActivation({
|
|
2606
|
-
context,
|
|
2607
|
-
preparation
|
|
2608
|
-
});
|
|
2609
|
-
const prepared = await this.prepareExactPasskeyEd25519YaoOperationStepUpForSigning(context.input);
|
|
2610
|
-
if (!mpcMaterialActivationRefsEqual(expectedActivation, prepared.materialActivation)) throw new Error("[SigningEngine][near] operation step-up changed material activation");
|
|
2611
|
-
return prepared;
|
|
2612
|
-
}
|
|
2613
|
-
async prepareExactNearEmailOtpEd25519YaoOperationStepUpAtBoundary(context, preparation) {
|
|
2614
|
-
const identity = nearEd25519MaterialIdentityFromBoundaryInput(context.input);
|
|
2615
|
-
if (identity.auth.kind !== WALLET_AUTH_METHODS.emailOtp) throw new Error("[SigningEngine][near] Passkey material cannot use Email OTP rehydration");
|
|
2616
|
-
const expectedActivation = requireBoundNearEd25519YaoPreparationActivation({
|
|
2617
|
-
context,
|
|
2618
|
-
preparation
|
|
2619
|
-
});
|
|
2620
|
-
switch (preparation.hydration.kind) {
|
|
2621
|
-
case "use_live_runtime": return {
|
|
2622
|
-
kind: "live",
|
|
2623
|
-
materialActivation: expectedActivation,
|
|
2624
|
-
material: await this.resolveExactNearEd25519YaoPreparedMaterial(context, preparation)
|
|
2625
|
-
};
|
|
2626
|
-
case "rehydrate_material_activation": {
|
|
2627
|
-
const publicLane = await resolveExactEmailOtpPublicLaneReference({
|
|
2628
|
-
store: this.ed25519YaoPublicCapabilityReferences,
|
|
2629
|
-
laneIdentity: identity,
|
|
2630
|
-
materialActivation: expectedActivation
|
|
2631
|
-
});
|
|
2632
|
-
const user = await this.getUserBySignerSlot(context.input.nearAccountId, identity.signer.signerSlot);
|
|
2633
|
-
if (!user || String(user.walletId) !== String(context.input.walletId) || String(user.nearAccountId) !== String(context.input.nearAccountId) || user.signerSlot !== identity.signer.signerSlot || user.authMethod !== WALLET_AUTH_METHODS.emailOtp) throw new Error("[SigningEngine][near] Email OTP signer record is unavailable");
|
|
2634
|
-
const sealed = await this.loadEmailOtpWalletCustodyEd25519Material({
|
|
2635
|
-
nearAccountId: String(context.input.nearAccountId),
|
|
2636
|
-
signerSlot: user.signerSlot
|
|
2637
|
-
});
|
|
2638
|
-
if (sealed.kind !== "found") throw new Error("[SigningEngine][near] Email OTP custody material is unavailable");
|
|
2639
|
-
if (`ed25519:${base58Encode(base64UrlDecode(sealed.material.binding.registeredPublicKeyB64u))}` !== user.operationalPublicKey || sealed.material.binding.walletId !== String(context.input.walletId) || sealed.material.binding.nearAccountId !== String(context.input.nearAccountId) || sealed.material.binding.signerSlot !== user.signerSlot || sealed.material.binding.signingWorkerId !== String(expectedActivation.signingWorker)) throw new Error("[SigningEngine][near] Email OTP custody material binding changed");
|
|
2640
|
-
const relayerUrl = this.seamsWebConfigs.network.relayer?.url || "";
|
|
2641
|
-
if (!relayerUrl) throw new Error("[SigningEngine][near] Email OTP recovery requires a relay URL");
|
|
2642
|
-
const recoveryContext = {
|
|
2643
|
-
input: context.input,
|
|
2644
|
-
materialActivation: expectedActivation,
|
|
2645
|
-
facts: emailOtpEd25519OperationMaterialFacts({
|
|
2646
|
-
input: context.input,
|
|
2647
|
-
publicLane,
|
|
2648
|
-
relayerUrl
|
|
2649
|
-
}),
|
|
2650
|
-
publicLane,
|
|
2651
|
-
sealedMaterial: sealed.material,
|
|
2652
|
-
operationalPublicKey: user.operationalPublicKey,
|
|
2653
|
-
emailHashHex: await sha256HexUtf8(user.loginDisplayName.trim().toLowerCase())
|
|
2654
|
-
};
|
|
2655
|
-
return {
|
|
2656
|
-
kind: "sealed",
|
|
2657
|
-
materialActivation: expectedActivation,
|
|
2658
|
-
facts: recoveryContext.facts,
|
|
2659
|
-
authorizeAndRehydrate: this.authorizeAndRehydrateEmailOtpEd25519OperationMaterial.bind(this, recoveryContext)
|
|
2660
|
-
};
|
|
2661
|
-
}
|
|
2662
|
-
case "reauthorize_public_anchor": throw new Error("[SigningEngine][near] retired Email OTP material cannot sign");
|
|
2663
|
-
case "blocked": throw new Error(`[SigningEngine][near] Email OTP operation material is blocked: ${preparation.hydration.reason}`);
|
|
2664
|
-
default:
|
|
2665
|
-
preparation.hydration;
|
|
2666
|
-
throw new Error("[SigningEngine][near] unsupported Email OTP operation material");
|
|
2667
|
-
}
|
|
2668
|
-
}
|
|
2669
|
-
async authorizeAndRehydrateEmailOtpEd25519OperationMaterial(context, request) {
|
|
2670
|
-
const identity = nearEd25519MaterialIdentityFromBoundaryInput(context.input);
|
|
2671
|
-
if (identity.auth.kind !== WALLET_AUTH_METHODS.emailOtp || request.proof.providerSubjectId !== identity.auth.providerSubjectId) throw new Error("[SigningEngine][near] Email OTP operation authority changed");
|
|
2672
|
-
const operationCredential = await resolveExactNearEd25519WalletSessionOperationCredentialForStepUp({
|
|
2673
|
-
walletId: context.input.walletId,
|
|
2674
|
-
proof: request.proof
|
|
2675
|
-
});
|
|
2676
|
-
const operationSubject = {
|
|
2677
|
-
kind: "exact_ed25519_export_material",
|
|
2678
|
-
signer: identity.signer,
|
|
2679
|
-
auth: identity.auth,
|
|
2680
|
-
thresholdSessionId: identity.thresholdSessionId
|
|
2681
|
-
};
|
|
2682
|
-
const bootstrap = await resolveEmailOtpEd25519OperationRecoveryBootstrapV1({
|
|
2683
|
-
subject: operationSubject,
|
|
2684
|
-
expectedMaterialActivation: context.materialActivation,
|
|
2685
|
-
authorization: await this.readExactEmailOtpEd25519ExportAuthorization({
|
|
2686
|
-
subject: operationSubject,
|
|
2687
|
-
expectedMaterialActivation: context.materialActivation
|
|
2688
|
-
}),
|
|
2689
|
-
source: {
|
|
2690
|
-
signingWorkerId: context.sealedMaterial.binding.signingWorkerId,
|
|
2691
|
-
participantIds: context.sealedMaterial.binding.participantIds,
|
|
2692
|
-
registeredPublicKeyB64u: context.sealedMaterial.binding.registeredPublicKeyB64u
|
|
2693
|
-
},
|
|
2694
|
-
relayerUrl: context.facts.relayerUrl,
|
|
2695
|
-
fetch: globalThis.fetch.bind(globalThis)
|
|
2696
|
-
});
|
|
2697
|
-
const recovered = await requestRehydrateEmailOtpEd25519YaoOperationMaterial({
|
|
2698
|
-
workerCtx: this.signerWorkerManager.getContext(),
|
|
2699
|
-
payload: {
|
|
2700
|
-
relayUrl: context.facts.relayerUrl,
|
|
2701
|
-
walletId: String(context.input.walletId),
|
|
2702
|
-
orgId: context.publicLane.runtimePolicyScope.orgId,
|
|
2703
|
-
providerSubjectId: identity.auth.providerSubjectId,
|
|
2704
|
-
nearAccountId: String(context.input.nearAccountId),
|
|
2705
|
-
signerSlot: context.publicLane.signerSlot,
|
|
2706
|
-
expectedOperationalPublicKey: context.operationalPublicKey,
|
|
2707
|
-
expectedThresholdSessionId: context.publicLane.thresholdSessionId,
|
|
2708
|
-
expectedMaterialActivation: context.materialActivation,
|
|
2709
|
-
ed25519YaoRecovery: {
|
|
2710
|
-
kind: ROUTER_AB_ED25519_YAO_EMAIL_OTP_RECOVERY_BOOTSTRAP_KIND_V1,
|
|
2711
|
-
signerSlot: context.publicLane.signerSlot,
|
|
2712
|
-
remainingUses: DEFAULT_UNLOCK_REMAINING_USES,
|
|
2713
|
-
orgId: context.publicLane.runtimePolicyScope.orgId
|
|
2714
|
-
},
|
|
2715
|
-
walletCustodyEd25519Material: {
|
|
2716
|
-
kind: "found",
|
|
2717
|
-
material: context.sealedMaterial
|
|
2718
|
-
},
|
|
2719
|
-
bootstrap,
|
|
2720
|
-
normalSigningRequest: request.normalSigningRequest,
|
|
2721
|
-
displayDigest: request.displayDigest,
|
|
2722
|
-
proof: request.proof,
|
|
2723
|
-
operationCredential
|
|
2724
|
-
}
|
|
2725
|
-
});
|
|
2726
|
-
if (recovered.walletCustodyEd25519Material) try {
|
|
2727
|
-
await this.persistWalletCustodyEd25519Material(recovered.walletCustodyEd25519Material);
|
|
2728
|
-
} catch (error) {
|
|
2729
|
-
await disposeWalletCustodyEd25519ActiveClientV1({
|
|
2730
|
-
workerContext: this.signerWorkerManager.getContext(),
|
|
2731
|
-
activeClientHandle: recovered.activeClientHandle
|
|
2732
|
-
}).catch(() => void 0);
|
|
2733
|
-
throw error;
|
|
2734
|
-
}
|
|
2735
|
-
const activeClient = new WalletCustodyEd25519ActiveClientV1(this.signerWorkerManager.getContext(), recovered.activeClientHandle, recovered.metadata);
|
|
2736
|
-
let material;
|
|
2737
|
-
try {
|
|
2738
|
-
material = validateExactNearEd25519YaoOperationMaterial({
|
|
2739
|
-
material: {
|
|
2740
|
-
activeClient,
|
|
2741
|
-
facts: context.facts
|
|
2742
|
-
},
|
|
2743
|
-
input: context.input,
|
|
2744
|
-
expectedActivation: context.materialActivation
|
|
2745
|
-
});
|
|
2746
|
-
} catch (error) {
|
|
2747
|
-
activeClient.dispose();
|
|
2748
|
-
throw error;
|
|
2749
|
-
}
|
|
2750
|
-
return {
|
|
2751
|
-
material,
|
|
2752
|
-
issuedAuthorization: {
|
|
2753
|
-
kind: recovered.issuedAuthorization.kind,
|
|
2754
|
-
authorization: recovered.issuedAuthorization.authorization,
|
|
2755
|
-
expiresAtMs: recovered.issuedAuthorization.expiresAtMs
|
|
2756
|
-
}
|
|
2757
|
-
};
|
|
2758
|
-
}
|
|
2759
|
-
async resolveExactNearEd25519YaoSigningHydration(input) {
|
|
2760
|
-
const args = requireAuthorizedNearEd25519BoundaryInput(input.args);
|
|
2761
|
-
switch (args.auth.kind) {
|
|
2762
|
-
case WALLET_AUTH_METHODS.passkey: {
|
|
2763
|
-
const resolved = await this.resolvePasskeyEd25519YaoHydration({
|
|
2764
|
-
walletSessionState: input.walletSessionState,
|
|
2765
|
-
credentialIdB64u: args.auth.credentialIdB64u,
|
|
2766
|
-
publicLocator: input.publicLocator,
|
|
2767
|
-
unlockSource: input.unlockSource
|
|
2768
|
-
});
|
|
2769
|
-
let hydration;
|
|
2770
|
-
switch (resolved.kind) {
|
|
2771
|
-
case "live":
|
|
2772
|
-
case "blocked":
|
|
2773
|
-
hydration = resolved.plan;
|
|
2774
|
-
break;
|
|
2775
|
-
case "rehydrated":
|
|
2776
|
-
resolved.activeClient.dispose();
|
|
2777
|
-
hydration = resolved.plan;
|
|
2778
|
-
break;
|
|
2779
|
-
default: throw new Error("[SigningEngine][near] unsupported Passkey hydration result");
|
|
2780
|
-
}
|
|
2781
|
-
if (hydration.kind === "blocked" && hydration.reason === "missing_material") return (await preparePasskeyEd25519YaoLocalMaterialRehydrationV1({
|
|
2782
|
-
store: IndexedDBManager,
|
|
2783
|
-
identity: ed25519YaoLocalMaterialIdentityFromWalletSession(input.walletSessionState, args.auth.rpId, args.auth.credentialIdB64u),
|
|
2784
|
-
authority: input.walletSessionState.authority,
|
|
2785
|
-
publicLocator: input.publicLocator
|
|
2786
|
-
})).plan;
|
|
2787
|
-
return hydration;
|
|
2788
|
-
}
|
|
2789
|
-
case WALLET_AUTH_METHODS.emailOtp:
|
|
2790
|
-
if (input.publicLocator.kind !== "available") throw new Error("[SigningEngine][near] Email OTP custody locator is unavailable");
|
|
2791
|
-
return await this.resolveWalletCustodyEmailOtpHydration({
|
|
2792
|
-
walletId: args.walletId,
|
|
2793
|
-
nearAccountId: args.nearAccountId,
|
|
2794
|
-
identity: requireEmailOtpNearEd25519MaterialIdentity(nearEd25519MaterialIdentityFromBoundaryInput(args)),
|
|
2795
|
-
signerSlot: args.laneIdentity.signer.signerSlot,
|
|
2796
|
-
materialActivation: input.publicLocator.materialActivation
|
|
2797
|
-
});
|
|
2798
|
-
default:
|
|
2799
|
-
args.auth;
|
|
2800
|
-
throw new Error("[SigningEngine][near] unsupported Ed25519 material authority");
|
|
2801
|
-
}
|
|
2802
|
-
}
|
|
2803
|
-
async prepareExactPasskeyEd25519YaoOperationStepUpForSigning(args) {
|
|
2804
|
-
const identity = nearEd25519MaterialIdentityFromBoundaryInput(args);
|
|
2805
|
-
if (identity.auth.kind !== WALLET_AUTH_METHODS.passkey) throw new Error("[SigningEngine][near] Passkey operation step-up requires Passkey material");
|
|
2806
|
-
if (!await this.resolveNearEd25519YaoSigningLane({ ...args.laneIdentity !== void 0 ? {
|
|
2807
|
-
kind: "exact_lane",
|
|
2808
|
-
laneIdentity: args.laneIdentity
|
|
2809
|
-
} : {
|
|
2810
|
-
kind: "material_identity",
|
|
2811
|
-
materialIdentity: identity
|
|
2812
|
-
} })) throw new Error("[SigningEngine][near] sealed Ed25519 operation lane is unavailable");
|
|
2813
|
-
const material = await preparePasskeyEd25519OperationMaterial({
|
|
2814
|
-
walletId: args.walletId,
|
|
2815
|
-
identity,
|
|
2816
|
-
relayerUrl: this.seamsWebConfigs.network.relayer.url
|
|
2817
|
-
});
|
|
2818
|
-
return {
|
|
2819
|
-
materialActivation: material.prepared.plan.materialActivation,
|
|
2820
|
-
facts: material.facts,
|
|
2821
|
-
participantIds: [...material.participantIds],
|
|
2822
|
-
rehydrate: this.rehydratePreparedPasskeyEd25519YaoOperationStepUp.bind(this, {
|
|
2823
|
-
input: args,
|
|
2824
|
-
identity: material.localIdentity,
|
|
2825
|
-
facts: material.facts,
|
|
2826
|
-
authority: material.authority,
|
|
2827
|
-
rpId: identity.auth.rpId,
|
|
2828
|
-
credentialIdB64u: identity.auth.credentialIdB64u,
|
|
2829
|
-
publicLocator: material.publicLocator,
|
|
2830
|
-
materialActivation: material.prepared.plan.materialActivation
|
|
2831
|
-
})
|
|
2832
|
-
};
|
|
2833
|
-
}
|
|
2834
|
-
async rehydratePreparedPasskeyEd25519YaoOperationStepUp(prepared, credential) {
|
|
2835
|
-
if (String(credential.rawId || credential.id || "").trim() !== prepared.credentialIdB64u) throw invalidWalletSigningMaterial("binding_mismatch");
|
|
2836
|
-
const secretSource = buildThresholdEd25519WebAuthnPrfSecretSource({
|
|
2837
|
-
credential,
|
|
2838
|
-
rpId: prepared.rpId
|
|
2839
|
-
});
|
|
2840
|
-
const hydrated = await hydrateExactPasskeyEd25519YaoLocalMaterial({
|
|
2841
|
-
store: IndexedDBManager,
|
|
2842
|
-
identity: prepared.identity,
|
|
2843
|
-
authority: prepared.authority,
|
|
2844
|
-
publicLocator: prepared.publicLocator,
|
|
2845
|
-
unlockSource: {
|
|
2846
|
-
kind: "available",
|
|
2847
|
-
passkeyPrfFirstB64u: secretSource.secretSource.prfFirstB64u
|
|
2848
|
-
},
|
|
2849
|
-
liveMaterial: null
|
|
2850
|
-
});
|
|
2851
|
-
if (hydrated.kind === "blocked") throw walletSigningMaterialBlockError(hydrated.plan.reason);
|
|
2852
|
-
if (hydrated.kind !== "rehydrated") throw invalidWalletSigningMaterial("corrupt");
|
|
2853
|
-
if (!mpcMaterialActivationRefsEqual(prepared.materialActivation, hydrated.plan.materialActivation)) {
|
|
2854
|
-
hydrated.activeClient.dispose();
|
|
2855
|
-
throw invalidWalletSigningMaterial("binding_mismatch");
|
|
2856
|
-
}
|
|
2857
|
-
const material = {
|
|
2858
|
-
activeClient: hydrated.activeClient,
|
|
2859
|
-
facts: prepared.facts
|
|
2860
|
-
};
|
|
2861
|
-
try {
|
|
2862
|
-
return validateExactNearEd25519YaoOperationMaterial({
|
|
2863
|
-
material,
|
|
2864
|
-
input: prepared.input,
|
|
2865
|
-
expectedActivation: prepared.materialActivation
|
|
2866
|
-
});
|
|
2867
|
-
} catch {
|
|
2868
|
-
material.activeClient.dispose();
|
|
2869
|
-
throw invalidWalletSigningMaterial("binding_mismatch");
|
|
2870
|
-
}
|
|
2871
|
-
}
|
|
2872
|
-
async resolveExactPasskeyEd25519YaoExportContext(args) {
|
|
2873
|
-
const relayerUrl = String(this.seamsWebConfigs.network.relayer?.url || "").trim();
|
|
2874
|
-
if (!relayerUrl) throw new Error("[SigningEngine][ed25519-export] passkey export requires relayerUrl");
|
|
2875
|
-
const walletId = toWalletId(String(args.laneIdentity.signer.account.wallet.walletId));
|
|
2876
|
-
if (!await readExactEd25519SealedSession(ed25519DurableMaterialLocator({
|
|
2877
|
-
authMethod: args.laneIdentity.auth.kind,
|
|
2878
|
-
materialActivation: args.materialActivation
|
|
2879
|
-
}))) return await this.resolveLinkedPasskeyEd25519YaoExportContext({
|
|
2880
|
-
...args,
|
|
2881
|
-
walletId,
|
|
2882
|
-
relayerUrl
|
|
2883
|
-
});
|
|
2884
|
-
const runtime = await requireExactEd25519SealedRuntimeForMaterialActivation({
|
|
2885
|
-
walletId,
|
|
2886
|
-
laneIdentity: args.laneIdentity,
|
|
2887
|
-
materialActivation: args.materialActivation
|
|
2888
|
-
});
|
|
2889
|
-
let thresholdSessionId = args.laneIdentity.thresholdSessionId;
|
|
2890
|
-
if (await resolveActiveEd25519WalletSessionAuthorization(runtime.walletId, relayerUrl)) {
|
|
2891
|
-
const walletSessionState = await walletSessionStateFromExactEd25519Runtime({
|
|
2892
|
-
runtime,
|
|
2893
|
-
relayerUrl: String(this.seamsWebConfigs.network.relayer?.url || "").trim()
|
|
2894
|
-
});
|
|
2895
|
-
if ((await this.ensurePasskeyEd25519WarmSessionForSigning({
|
|
2896
|
-
runtime,
|
|
2897
|
-
walletSessionState,
|
|
2898
|
-
materialActivation: args.materialActivation
|
|
2899
|
-
})).ok) thresholdSessionId = walletSessionState.thresholdSessionId;
|
|
2900
|
-
}
|
|
2901
|
-
return await resolvePasskeyEd25519YaoExportContextV1({
|
|
2902
|
-
subject: {
|
|
2903
|
-
kind: "owner_sealed_runtime",
|
|
2904
|
-
walletId: toWalletId(String(args.laneIdentity.signer.account.wallet.walletId)),
|
|
2905
|
-
nearAccountId: String(args.laneIdentity.signer.account.nearAccountId),
|
|
2906
|
-
nearEd25519SigningKeyId: String(args.laneIdentity.signer.nearEd25519SigningKeyId),
|
|
2907
|
-
signerSlot: args.laneIdentity.signer.signerSlot,
|
|
2908
|
-
thresholdSessionId,
|
|
2909
|
-
materialActivation: args.materialActivation
|
|
2910
|
-
},
|
|
2911
|
-
relayerUrl,
|
|
2912
|
-
fetch: fetchWithGlobalThis
|
|
2913
|
-
}, {
|
|
2914
|
-
readExactEd25519SealedSession,
|
|
2915
|
-
readPasskeyCustodySessionEnvelope,
|
|
2916
|
-
resolveSelectedWalletAuthority: IndexedDBManager.resolveSelectedWalletAuthority.bind(IndexedDBManager),
|
|
2917
|
-
readExactWalletSessionAuthorization: walletSessionAuthorizations.readExactActiveForWallet.bind(walletSessionAuthorizations),
|
|
2918
|
-
resolveExactPasskeyWalletAuthAuthorityRef: resolveBrowserExactPasskeyWalletAuthAuthorityRef,
|
|
2919
|
-
nowMs: this.runtimePorts.clock.nowMs
|
|
2920
|
-
});
|
|
2921
|
-
}
|
|
2922
|
-
async resolveLinkedPasskeyEd25519YaoExportContext(args) {
|
|
2923
|
-
if (args.laneIdentity.auth.kind !== WALLET_AUTH_METHODS.passkey) throw new Error("[SigningEngine][ed25519-export] linked export requires a Passkey lane");
|
|
2924
|
-
const selected = await IndexedDBManager.resolveSelectedWalletAuthority(String(args.walletId));
|
|
2925
|
-
if (selected.kind !== "resolved") {
|
|
2926
|
-
const detail = selected.kind === "integrity_error" ? `: ${selected.reason}` : "";
|
|
2927
|
-
throw new Error(`[SigningEngine][ed25519-export] selected Wallet Authority is ${selected.kind}${detail}`);
|
|
2928
|
-
}
|
|
2929
|
-
const { selection, authMethod, authority, signerMaterials, exportRoot } = selected;
|
|
2930
|
-
if (selection.lockState !== "unlocked" || authMethod.kind !== WALLET_AUTH_METHODS.passkey || authMethod.status !== "active" || authority.state !== "active" || authority.provenance.kind !== "device_link" || String(authMethod.walletId) !== String(args.walletId) || authMethod.walletAuthorityId !== authority.authorityId || authMethod.walletAuthMethodId !== selection.walletAuthMethodId || String(authMethod.rpId) !== String(args.laneIdentity.auth.rpId) || authMethod.credentialIdB64u !== args.laneIdentity.auth.credentialIdB64u) throw new Error("[SigningEngine][ed25519-export] selected linked Passkey authority is unavailable");
|
|
2931
|
-
const authorityActivation = authority.signerActivations.ed25519;
|
|
2932
|
-
if (!authority.permissions.includes("export_keys") || !authorityActivation || !mpcMaterialActivationRefsEqual(authorityActivation.materialActivation, args.materialActivation) || !exportRoot) throw new Error("[SigningEngine][ed25519-export] selected authority has no exact Ed25519 export capability");
|
|
2933
|
-
let linkedMaterial = null;
|
|
2934
|
-
for (const candidate of signerMaterials) {
|
|
2935
|
-
if (!isLinkedEd25519SignerMaterial(candidate) || candidate.authorityId !== authority.authorityId || candidate.walletAuthMethodId !== authMethod.walletAuthMethodId || !mpcMaterialActivationRefsEqual(candidate.materialActivation, args.materialActivation)) continue;
|
|
2936
|
-
if (linkedMaterial) throw new Error("[SigningEngine][ed25519-export] linked Ed25519 material is ambiguous");
|
|
2937
|
-
linkedMaterial = candidate;
|
|
2938
|
-
}
|
|
2939
|
-
if (!linkedMaterial) throw new Error("[SigningEngine][ed25519-export] linked Ed25519 material is unavailable");
|
|
2940
|
-
const targetFactor = linkedMaterial.targetFactor;
|
|
2941
|
-
if (targetFactor.kind !== WALLET_AUTH_METHODS.passkey || targetFactor.walletAuthMethodId !== authMethod.walletAuthMethodId || targetFactor.rpId !== authMethod.rpId || targetFactor.credentialIdB64u !== authMethod.credentialIdB64u) throw new Error("[SigningEngine][ed25519-export] linked Ed25519 factor binding changed");
|
|
2942
|
-
const exactSession = exactWalletSessionWithOperationCredentialOrThrow(await walletSessionAuthorizations.readExactWithOperationCredential({
|
|
2943
|
-
walletId: args.walletId,
|
|
2944
|
-
authorityId: authority.authorityId,
|
|
2945
|
-
authMethodId: authMethod.walletAuthMethodId
|
|
2946
|
-
}), "[SigningEngine][ed25519-export] exact linked Wallet Session requires a newer client");
|
|
2947
|
-
let exactExportSubject = false;
|
|
2948
|
-
if (exactSession) {
|
|
2949
|
-
for (const subject of exactSession.record.capabilitySubjects) if (subject.kind === "export_keys" && subject.keyFamily === "ed25519" && mpcMaterialActivationRefsEqual(subject.materialActivation, args.materialActivation)) {
|
|
2950
|
-
exactExportSubject = true;
|
|
2951
|
-
break;
|
|
2952
|
-
}
|
|
2953
|
-
}
|
|
2954
|
-
if (!exactSession || !exactExportSubject || exactSession.record.authorityDigestB64u !== authority.authorityDigestB64u || exactSession.record.authorityRevocationEpoch !== authority.revocationEpoch || exactSession.record.expiresAtMs <= Date.now()) throw new Error("[SigningEngine][ed25519-export] exact linked Wallet Session is unavailable");
|
|
2955
|
-
const publicLane = await resolveExactPasskeyPublicLaneReference({
|
|
2956
|
-
store: this.ed25519YaoPublicCapabilityReferences,
|
|
2957
|
-
laneIdentity: args.laneIdentity
|
|
2958
|
-
});
|
|
2959
|
-
if (!mpcMaterialActivationRefsEqual(publicLane.materialActivation, args.materialActivation)) throw new Error("[SigningEngine][ed25519-export] linked public lane activation changed");
|
|
2960
|
-
const factorAuthority = await walletAuthAuthorityRef({ authority: {
|
|
2961
|
-
walletId: authMethod.walletId,
|
|
2962
|
-
factor: {
|
|
2963
|
-
kind: WALLET_AUTH_METHODS.passkey,
|
|
2964
|
-
credentialIdB64u: authMethod.credentialIdB64u
|
|
2965
|
-
},
|
|
2966
|
-
verifier: {
|
|
2967
|
-
kind: "webauthn",
|
|
2968
|
-
rpId: authMethod.rpId
|
|
2969
|
-
},
|
|
2970
|
-
bindingId: authMethod.walletAuthMethodId
|
|
2971
|
-
} });
|
|
2972
|
-
if (factorAuthority.walletAuthMethodId !== authMethod.walletAuthMethodId) throw new Error("[SigningEngine][ed25519-export] Passkey Wallet Session authority changed");
|
|
2973
|
-
const activeMaterial = this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
2974
|
-
walletId: args.walletId,
|
|
2975
|
-
nearAccountId: args.laneIdentity.signer.account.nearAccountId,
|
|
2976
|
-
materialActivation: args.materialActivation
|
|
2977
|
-
});
|
|
2978
|
-
if (!activeMaterial || activeMaterial.activeClient.status().kind !== "active") throw new Error("[SigningEngine][ed25519-export] linked Ed25519 runtime is unavailable");
|
|
2979
|
-
const metadata = activeMaterial.activeClient.metadata();
|
|
2980
|
-
const metadataActivation = nearEd25519YaoMaterialActivationFromMetadata(metadata);
|
|
2981
|
-
const facts = activeMaterial.facts;
|
|
2982
|
-
const signer = args.laneIdentity.signer;
|
|
2983
|
-
const application = linkedMaterial.publicFacts.applicationBinding;
|
|
2984
|
-
const registeredPublicKeyB64u = base64UrlEncode(metadata.registeredPublicKey);
|
|
2985
|
-
const stateEpoch = Number(metadata.stateEpoch);
|
|
2986
|
-
const parsedThresholdSessionId = parseThresholdEd25519SessionId(metadata.scope.threshold_session_id);
|
|
2987
|
-
const runtimeScope = facts.runtimePolicyScope;
|
|
2988
|
-
const laneScope = publicLane.runtimePolicyScope;
|
|
2989
|
-
if (!parsedThresholdSessionId.ok || !Number.isSafeInteger(stateEpoch) || stateEpoch < 1 || !mpcMaterialActivationRefsEqual(metadataActivation, args.materialActivation) || String(facts.thresholdSessionId) !== String(args.laneIdentity.thresholdSessionId) || String(facts.signer.account.wallet.walletId) !== String(args.walletId) || String(facts.signer.account.nearAccountId) !== String(signer.account.nearAccountId) || String(facts.signer.nearEd25519SigningKeyId) !== String(signer.nearEd25519SigningKeyId) || facts.signer.signerSlot !== signer.signerSlot || application.wallet_id !== String(args.walletId) || application.near_ed25519_signing_key_id !== String(signer.nearEd25519SigningKeyId) || application.key_creation_signer_slot !== signer.signerSlot || metadata.applicationBinding.wallet_id !== application.wallet_id || metadata.applicationBinding.near_ed25519_signing_key_id !== application.near_ed25519_signing_key_id || metadata.applicationBinding.signing_root_id !== application.signing_root_id || metadata.applicationBinding.key_creation_signer_slot !== application.key_creation_signer_slot || metadata.scope.lifecycle_id !== linkedMaterial.publicFacts.targetBinding.lifecycle.lifecycle_id || metadata.scope.root_share_epoch !== linkedMaterial.publicFacts.targetBinding.lifecycle.root_share_epoch || metadata.scope.account_id !== String(args.walletId) || metadata.scope.threshold_session_id !== String(args.laneIdentity.thresholdSessionId) || metadata.scope.signing_worker_id !== facts.routerAbNormalSigning.signingWorkerId || facts.signingRootId !== application.signing_root_id || facts.signingRootVersion !== metadata.scope.root_share_epoch || runtimeScope.orgId !== laneScope.orgId || runtimeScope.projectId !== laneScope.projectId || runtimeScope.envId !== laneScope.envId || runtimeScope.signingRootVersion !== laneScope.signingRootVersion || linkedMaterial.publicFacts.participantIds[0] !== metadata.participantIds[0] || linkedMaterial.publicFacts.participantIds[1] !== metadata.participantIds[1] || base64UrlEncode(Uint8Array.from(linkedMaterial.publicFacts.activationReceipt.registered_public_key)) !== registeredPublicKeyB64u || authorityActivation.signer.registeredPublicKeyB64u !== registeredPublicKeyB64u) throw new Error("[SigningEngine][ed25519-export] linked Ed25519 runtime identity changed");
|
|
2990
|
-
const material = {
|
|
2991
|
-
authority: factorAuthority,
|
|
2992
|
-
walletId: signer.account.wallet.walletId,
|
|
2993
|
-
nearAccountId: signer.account.nearAccountId,
|
|
2994
|
-
nearEd25519SigningKeyId: String(signer.nearEd25519SigningKeyId),
|
|
2995
|
-
signerSlot: signer.signerSlot,
|
|
2996
|
-
operationalPublicKey: `ed25519:${base58Encode(metadata.registeredPublicKey)}`,
|
|
2997
|
-
relayerKeyId: metadata.scope.signing_worker_id,
|
|
2998
|
-
credentialIdB64u: authMethod.credentialIdB64u,
|
|
2999
|
-
capability: {
|
|
3000
|
-
materialActivation: metadataActivation,
|
|
3001
|
-
activeCapabilityBinding: [...metadata.activeCapabilityBinding],
|
|
3002
|
-
registeredPublicKey: [...metadata.registeredPublicKey],
|
|
3003
|
-
nearAccountId: signer.account.nearAccountId,
|
|
3004
|
-
applicationBinding: metadata.applicationBinding,
|
|
3005
|
-
participantIds: metadata.participantIds,
|
|
3006
|
-
runtimePolicyScope: facts.runtimePolicyScope,
|
|
3007
|
-
lifecycle: {
|
|
3008
|
-
lifecycleId: metadata.scope.lifecycle_id,
|
|
3009
|
-
rootShareEpoch: metadata.scope.root_share_epoch,
|
|
3010
|
-
accountId: metadata.scope.account_id,
|
|
3011
|
-
thresholdSessionId: parsedThresholdSessionId.value,
|
|
3012
|
-
signerSetId: metadata.scope.signer_set_id,
|
|
3013
|
-
signingWorkerId: metadata.scope.signing_worker_id
|
|
3014
|
-
},
|
|
3015
|
-
stateEpoch
|
|
3016
|
-
}
|
|
3017
|
-
};
|
|
3018
|
-
return {
|
|
3019
|
-
kind: "ready",
|
|
3020
|
-
context: {
|
|
3021
|
-
kind: "passkey_ed25519_yao_export_context_v1",
|
|
3022
|
-
selectedLaneMaterialActivation: args.materialActivation,
|
|
3023
|
-
material,
|
|
3024
|
-
authorization: exactSession,
|
|
3025
|
-
relayerUrl: args.relayerUrl,
|
|
3026
|
-
rpId: authMethod.rpId,
|
|
3027
|
-
walletCustodyEnvelope: exportRoot.envelope
|
|
3028
|
-
}
|
|
3029
|
-
};
|
|
3030
|
-
}
|
|
3031
|
-
readExactEmailOtpEd25519ExportAuthorization(args) {
|
|
3032
|
-
return readExactEmailOtpEd25519ExportAuthorization({
|
|
3033
|
-
subject: args.subject,
|
|
3034
|
-
relayerUrl: String(this.seamsWebConfigs.network.relayer?.url || "").trim()
|
|
3035
|
-
});
|
|
3036
|
-
}
|
|
3037
|
-
async activateRecoveredEmailOtpEd25519ExportCapability(lane, request) {
|
|
3038
|
-
const activation = request.activation;
|
|
3039
|
-
await this.activateEmailOtpEd25519CustodyCapabilityWithExactCredential({
|
|
3040
|
-
commitQueue: "acquire",
|
|
3041
|
-
walletSession: {
|
|
3042
|
-
walletId: lane.signer.account.wallet.walletId,
|
|
3043
|
-
walletSessionUserId: String(lane.signer.account.wallet.walletId)
|
|
3044
|
-
},
|
|
3045
|
-
providerSubject: lane.auth.providerSubjectId,
|
|
3046
|
-
emailHashHex: activation.emailHashHex,
|
|
3047
|
-
signerSlot: lane.signer.signerSlot,
|
|
3048
|
-
expectedOperationalPublicKey: `ed25519:${base58Encode(activation.metadata.registeredPublicKey)}`,
|
|
3049
|
-
expectedThresholdSessionId: String(lane.thresholdSessionId),
|
|
3050
|
-
bootstrap: activation.bootstrap,
|
|
3051
|
-
activeClientHandle: activation.activeClientHandle,
|
|
3052
|
-
metadata: activation.metadata,
|
|
3053
|
-
credentialExpectation: {
|
|
3054
|
-
kind: "expect_exact_operation_credential",
|
|
3055
|
-
operationCredential: request.operationCredential
|
|
3056
|
-
}
|
|
3057
|
-
});
|
|
3058
|
-
}
|
|
3059
|
-
async resolveEmailOtpEd25519YaoExportContext(args) {
|
|
3060
|
-
return await resolveWalletCustodyEd25519ExportContextV1({
|
|
3061
|
-
subject: args.laneIdentity,
|
|
3062
|
-
expectedMaterialActivation: args.materialActivation,
|
|
3063
|
-
readExactWalletSessionAuthorization: this.readExactEmailOtpEd25519ExportAuthorization.bind(this),
|
|
3064
|
-
resolveActiveCapability: (walletId, nearAccountId, materialActivation) => this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
3065
|
-
walletId,
|
|
3066
|
-
nearAccountId: toAccountId(nearAccountId),
|
|
3067
|
-
materialActivation
|
|
3068
|
-
}),
|
|
3069
|
-
resolveEd25519YaoClientRootEnvelope: async ({ subject, capability, selectedMaterialActivation }) => resolveSelectedEmailOtpEd25519ExportRootV1({
|
|
3070
|
-
selected: await IndexedDBManager.resolveSelectedWalletAuthority(String(subject.signer.account.wallet.walletId)),
|
|
3071
|
-
subject,
|
|
3072
|
-
expectedMaterialActivation: selectedMaterialActivation,
|
|
3073
|
-
activeCapability: capability
|
|
3074
|
-
}),
|
|
3075
|
-
loadWalletCustodyMaterial: () => this.loadEmailOtpWalletCustodyEd25519Material({
|
|
3076
|
-
nearAccountId: String(args.laneIdentity.signer.account.nearAccountId),
|
|
3077
|
-
signerSlot: args.laneIdentity.signer.signerSlot
|
|
3078
|
-
}),
|
|
3079
|
-
relayerUrl: this.seamsWebConfigs.network.relayer?.url || "",
|
|
3080
|
-
fetch: fetchWithGlobalThis,
|
|
3081
|
-
activateRecoveredCapability: this.activateRecoveredEmailOtpEd25519ExportCapability.bind(this, args.laneIdentity)
|
|
3082
|
-
});
|
|
3083
|
-
}
|
|
3084
|
-
async resolveActiveNearEd25519YaoSigningLane(subject) {
|
|
3085
|
-
if (!await this.resolveNearEd25519YaoSigningLane(subject)) return null;
|
|
3086
|
-
const identity = nearEd25519CapabilityRehydrationMaterialIdentity(subject);
|
|
3087
|
-
const capability = subject.kind === "export_exact_lane" ? this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
3088
|
-
walletId: identity.signer.account.wallet.walletId,
|
|
3089
|
-
nearAccountId: identity.signer.account.nearAccountId,
|
|
3090
|
-
materialActivation: subject.materialActivation
|
|
3091
|
-
}) : this.enginePorts.ed25519YaoActiveClients.resolveForWalletAccount({
|
|
3092
|
-
walletId: identity.signer.account.wallet.walletId,
|
|
3093
|
-
nearAccountId: identity.signer.account.nearAccountId
|
|
3094
|
-
});
|
|
3095
|
-
return capability?.activeClient.status().kind === "active" ? capability : null;
|
|
3096
|
-
}
|
|
3097
|
-
async resolveNearEd25519YaoSigningLane(subject) {
|
|
3098
|
-
const walletId = nearEd25519CapabilityRehydrationMaterialIdentity(subject).signer.account.wallet.walletId;
|
|
3099
|
-
const availableLanes = await this.readPersistedAvailableSigningLanes({
|
|
3100
|
-
walletId,
|
|
3101
|
-
ownerScope: await this.resolveSelectedOwnerLaneScope(walletId)
|
|
3102
|
-
});
|
|
3103
|
-
const matches = [];
|
|
3104
|
-
for (const lane of availableLanes.candidates.ed25519.near) {
|
|
3105
|
-
if (!nearEd25519LaneMatchesCapabilityRehydrationSubject(lane, subject)) continue;
|
|
3106
|
-
if (!isConcreteAvailableSigningLane(lane) || lane.curve !== "ed25519") continue;
|
|
3107
|
-
matches.push(lane);
|
|
3108
|
-
}
|
|
3109
|
-
if (matches.length > 1) throw new Error("[SigningEngine][near] local Ed25519 material lane is ambiguous");
|
|
3110
|
-
return matches[0] || null;
|
|
3111
|
-
}
|
|
3112
|
-
async ensurePasskeyEd25519WarmSessionForSigning(args) {
|
|
3113
|
-
const claim = await ensurePasskeyEd25519WarmSessionForSigning({
|
|
3114
|
-
...args,
|
|
3115
|
-
claimWarmSessionMaterial: this.passkeyMpcSession.claimWarmSessionMaterial.bind(this.passkeyMpcSession),
|
|
3116
|
-
rehydrateWarmSessionMaterial: this.passkeyMpcSession.rehydrateWarmSessionMaterial.bind(this.passkeyMpcSession)
|
|
3117
|
-
});
|
|
3118
|
-
if (claim.ok && args.runtime.factor.kind === "passkey" && String(args.runtime.thresholdSessionId) !== String(args.walletSessionState.thresholdSessionId)) await persistPasskeyEd25519YaoSessionForRefresh({
|
|
3119
|
-
persistence: this,
|
|
3120
|
-
session: args.walletSessionState,
|
|
3121
|
-
prfFirstB64u: claim.prfFirstB64u,
|
|
3122
|
-
ed25519Restore: buildPasskeyEd25519RestoreMetadata({
|
|
3123
|
-
rpId: args.runtime.factor.rpId,
|
|
3124
|
-
nearAccountId: args.runtime.nearAccountId,
|
|
3125
|
-
nearEd25519SigningKeyId: args.runtime.nearEd25519SigningKeyId,
|
|
3126
|
-
relayerKeyId: args.runtime.relayerKeyId,
|
|
3127
|
-
participantIds: args.runtime.participantIds,
|
|
3128
|
-
runtimePolicyScope: args.runtime.runtimePolicyScope,
|
|
3129
|
-
signerSlot: args.runtime.signerSlot,
|
|
3130
|
-
routerAbNormalSigning: args.runtime.routerAbNormalSigning,
|
|
3131
|
-
credentialIdB64u: args.runtime.factor.credentialIdB64u,
|
|
3132
|
-
materialActivation: args.materialActivation
|
|
3133
|
-
}),
|
|
3134
|
-
materialActivation: args.materialActivation
|
|
3135
|
-
});
|
|
3136
|
-
return claim;
|
|
3137
|
-
}
|
|
3138
|
-
async rehydrateNearEd25519YaoCapabilityForSigning(subject) {
|
|
3139
|
-
const identity = nearEd25519CapabilityRehydrationMaterialIdentity(subject);
|
|
3140
|
-
const lane = await this.resolveNearEd25519YaoSigningLane(subject);
|
|
3141
|
-
if (!lane) throw new Error("[SigningEngine][near] local Ed25519 material lane is unavailable");
|
|
3142
|
-
let runtime;
|
|
3143
|
-
if (subject.kind === "export_exact_lane") runtime = await requireExactEd25519SealedRuntimeForMaterialActivation({
|
|
3144
|
-
walletId: identity.signer.account.wallet.walletId,
|
|
3145
|
-
laneIdentity: subject.laneIdentity,
|
|
3146
|
-
materialActivation: subject.materialActivation
|
|
3147
|
-
});
|
|
3148
|
-
else {
|
|
3149
|
-
const laneIdentity = subject.kind === "exact_lane" ? subject.laneIdentity : exactEd25519LaneIdentityFromAvailableLane(lane);
|
|
3150
|
-
runtime = await requireExactEd25519SealedRuntimeForLane({
|
|
3151
|
-
walletId: identity.signer.account.wallet.walletId,
|
|
3152
|
-
laneIdentity
|
|
3153
|
-
});
|
|
3154
|
-
}
|
|
3155
|
-
const walletSessionState = await walletSessionStateFromExactEd25519Runtime({
|
|
3156
|
-
runtime,
|
|
3157
|
-
relayerUrl: String(this.seamsWebConfigs.network.relayer?.url || "").trim()
|
|
3158
|
-
});
|
|
3159
|
-
if (runtime.factor.kind !== "passkey") throw new Error("[SigningEngine][near] persisted Ed25519 credential is unavailable");
|
|
3160
|
-
const credentialIdB64u = runtime.factor.credentialIdB64u;
|
|
3161
|
-
const materialActivation = runtime.sealedRecord.ed25519Restore.materialActivation;
|
|
3162
|
-
if (!mpcMaterialActivationRefsEqual(materialActivation, lane.materialActivation)) throw new Error("[SigningEngine][near] persisted Ed25519 material activation mismatch");
|
|
3163
|
-
const warmSessionClaim = await this.ensurePasskeyEd25519WarmSessionForSigning({
|
|
3164
|
-
runtime,
|
|
3165
|
-
walletSessionState,
|
|
3166
|
-
materialActivation
|
|
3167
|
-
});
|
|
3168
|
-
const publicLocator = {
|
|
3169
|
-
kind: "available",
|
|
3170
|
-
walletId: String(walletSessionState.signingLane.identity.signer.account.wallet.walletId),
|
|
3171
|
-
nearAccountId: String(walletSessionState.signingLane.identity.signer.account.nearAccountId),
|
|
3172
|
-
signerSlot: walletSessionState.signingLane.identity.signer.signerSlot,
|
|
3173
|
-
materialActivation
|
|
3174
|
-
};
|
|
3175
|
-
const liveHydration = await this.resolvePasskeyEd25519YaoHydration({
|
|
3176
|
-
walletSessionState,
|
|
3177
|
-
credentialIdB64u,
|
|
3178
|
-
publicLocator,
|
|
3179
|
-
unlockSource: warmSessionClaim.ok ? {
|
|
3180
|
-
kind: "available",
|
|
3181
|
-
passkeyPrfFirstB64u: warmSessionClaim.prfFirstB64u
|
|
3182
|
-
} : { kind: "unavailable" }
|
|
3183
|
-
});
|
|
3184
|
-
if (liveHydration.kind === "live") return subject;
|
|
3185
|
-
if (liveHydration.kind === "rehydrated") {
|
|
3186
|
-
if (!warmSessionClaim.ok) {
|
|
3187
|
-
liveHydration.activeClient.dispose();
|
|
3188
|
-
throw new Error("[SigningEngine][near] local material rehydration lost the PRF secret");
|
|
3189
|
-
}
|
|
3190
|
-
try {
|
|
3191
|
-
await persistPasskeyEd25519YaoSessionForRefresh({
|
|
3192
|
-
persistence: this,
|
|
3193
|
-
session: walletSessionState,
|
|
3194
|
-
prfFirstB64u: warmSessionClaim.prfFirstB64u,
|
|
3195
|
-
ed25519Restore: buildPasskeyEd25519RestoreMetadata({
|
|
3196
|
-
rpId: runtime.factor.rpId,
|
|
3197
|
-
nearAccountId: runtime.nearAccountId,
|
|
3198
|
-
nearEd25519SigningKeyId: runtime.nearEd25519SigningKeyId,
|
|
3199
|
-
relayerKeyId: runtime.relayerKeyId,
|
|
3200
|
-
participantIds: runtime.participantIds,
|
|
3201
|
-
runtimePolicyScope: runtime.runtimePolicyScope,
|
|
3202
|
-
signerSlot: runtime.signerSlot,
|
|
3203
|
-
routerAbNormalSigning: runtime.routerAbNormalSigning,
|
|
3204
|
-
credentialIdB64u,
|
|
3205
|
-
materialActivation
|
|
3206
|
-
}),
|
|
3207
|
-
materialActivation
|
|
3208
|
-
});
|
|
3209
|
-
await this.enginePorts.ed25519YaoActiveClients.activate({
|
|
3210
|
-
activeClient: liveHydration.activeClient,
|
|
3211
|
-
facts: nearEd25519YaoOperationMaterialFacts(walletSessionState)
|
|
3212
|
-
});
|
|
3213
|
-
const reboundSubject = currentNearEd25519CapabilityRehydrationSubject({
|
|
3214
|
-
subject,
|
|
3215
|
-
walletSessionState
|
|
3216
|
-
});
|
|
3217
|
-
if (!await this.resolveActiveNearEd25519YaoSigningLane(reboundSubject)) throw new Error("[SigningEngine][near] local material rehydration did not publish an active lane");
|
|
3218
|
-
return reboundSubject;
|
|
3219
|
-
} catch (error) {
|
|
3220
|
-
liveHydration.activeClient.dispose();
|
|
3221
|
-
throw error;
|
|
3222
|
-
}
|
|
3223
|
-
}
|
|
3224
|
-
if (liveHydration.plan.reason !== "missing_material") throw new Error(`[SigningEngine][near] local threshold Ed25519 hydration blocked: ${liveHydration.plan.reason}`);
|
|
3225
|
-
throw new Error("[SigningEngine][near] local threshold Ed25519 material requires Passkey reauthorization");
|
|
3226
|
-
}
|
|
3227
|
-
async resolvePasskeyEd25519YaoHydration(args) {
|
|
3228
|
-
const signer = args.walletSessionState.signingLane.identity.signer;
|
|
3229
|
-
return hydratePasskeyEd25519YaoLocalMaterialV1({
|
|
3230
|
-
store: IndexedDBManager,
|
|
3231
|
-
identity: ed25519YaoLocalMaterialIdentityFromWalletSession(args.walletSessionState, this.getRpId(), args.credentialIdB64u),
|
|
3232
|
-
authority: args.walletSessionState.authority,
|
|
3233
|
-
publicLocator: args.publicLocator,
|
|
3234
|
-
unlockSource: args.unlockSource,
|
|
3235
|
-
liveMaterial: args.publicLocator.kind === "available" ? this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
3236
|
-
walletId: signer.account.wallet.walletId,
|
|
3237
|
-
nearAccountId: signer.account.nearAccountId,
|
|
3238
|
-
materialActivation: args.publicLocator.materialActivation
|
|
3239
|
-
}) : null
|
|
3240
|
-
});
|
|
3241
|
-
}
|
|
3242
|
-
async signEvmFamily(args) {
|
|
3243
|
-
return await signEvmFamily(this.enginePorts.tempoSigningDeps, args);
|
|
3244
|
-
}
|
|
3245
|
-
async reportTempoBroadcastAccepted(args) {
|
|
3246
|
-
await reportTempoBroadcastAccepted(this.enginePorts.tempoSigningDeps, args);
|
|
3247
|
-
}
|
|
3248
|
-
async reportTempoBroadcastRejected(args) {
|
|
3249
|
-
await reportTempoBroadcastRejected(this.enginePorts.tempoSigningDeps, args);
|
|
3250
|
-
}
|
|
3251
|
-
async reportTempoFinalized(args) {
|
|
3252
|
-
await reportTempoFinalized(this.enginePorts.tempoSigningDeps, args);
|
|
3253
|
-
}
|
|
3254
|
-
async reportTempoDroppedOrReplaced(args) {
|
|
3255
|
-
await reportTempoDroppedOrReplaced(this.enginePorts.tempoSigningDeps, args);
|
|
3256
|
-
}
|
|
3257
|
-
async reconcileTempoNonceLane(args) {
|
|
3258
|
-
return await reconcileTempoNonceLane(this.enginePorts.tempoSigningDeps, args);
|
|
3259
|
-
}
|
|
3260
|
-
storeUserData(userData) {
|
|
3261
|
-
return storeUserData(this.registrationPublicDeps, userData);
|
|
3262
|
-
}
|
|
3263
|
-
async storeNearThresholdKeyMaterial(input) {
|
|
3264
|
-
await storeNearThresholdKeyMaterial({
|
|
3265
|
-
clientDB: IndexedDBManager,
|
|
3266
|
-
keyMaterialStore: IndexedDBManager
|
|
3267
|
-
}, input);
|
|
3268
|
-
}
|
|
3269
|
-
getAllUsers() {
|
|
3270
|
-
return getAllUsers(this.registrationPublicDeps);
|
|
3271
|
-
}
|
|
3272
|
-
getUserBySignerSlot(nearAccountId, signerSlot) {
|
|
3273
|
-
return getUserBySignerSlot(this.registrationPublicDeps, nearAccountId, signerSlot);
|
|
3274
|
-
}
|
|
3275
|
-
getLastUser() {
|
|
3276
|
-
return getLastUser(this.registrationPublicDeps);
|
|
3277
|
-
}
|
|
3278
|
-
nearAuthenticatorsByAccount(nearAccountId) {
|
|
3279
|
-
return nearAuthenticatorsByAccount(this.registrationPublicDeps, nearAccountId);
|
|
3280
|
-
}
|
|
3281
|
-
setLastUser(walletId, signerSlot) {
|
|
3282
|
-
return setLastUser(this.registrationPublicDeps, walletId, signerSlot);
|
|
3283
|
-
}
|
|
3284
|
-
activateAuthenticatedWalletState(args) {
|
|
3285
|
-
return activateAuthenticatedWalletState(this.registrationPublicDeps, args);
|
|
3286
|
-
}
|
|
3287
|
-
async upsertEd25519YaoPublicCapabilityReference(identity) {
|
|
3288
|
-
await this.ed25519YaoPublicCapabilityReferences.upsert(identity);
|
|
3289
|
-
}
|
|
3290
|
-
async upsertEd25519YaoPublicCapabilityLaneReference(reference) {
|
|
3291
|
-
await publishEd25519YaoPublicCapabilityReferenceAndLane(this.ed25519YaoPublicCapabilityReferences, reference);
|
|
3292
|
-
}
|
|
3293
|
-
setWalletNearProvisioningState(write) {
|
|
3294
|
-
return setWalletNearProvisioningState(this.registrationPublicDeps, write);
|
|
3295
|
-
}
|
|
3296
|
-
getWalletNearProvisioningState(walletId) {
|
|
3297
|
-
return getWalletNearProvisioningState(this.registrationPublicDeps, walletId);
|
|
3298
|
-
}
|
|
3299
|
-
storeAuthenticator(authenticatorData) {
|
|
3300
|
-
return storeAuthenticator(this.registrationPublicDeps, authenticatorData);
|
|
3301
|
-
}
|
|
3302
|
-
rollbackUserRegistration(nearAccountId) {
|
|
3303
|
-
return rollbackUserRegistration(this.registrationPublicDeps, nearAccountId);
|
|
3304
|
-
}
|
|
3305
|
-
hasPasskeyCredential(nearAccountId) {
|
|
3306
|
-
return hasPasskeyCredential(this.registrationPublicDeps, nearAccountId);
|
|
3307
|
-
}
|
|
3308
|
-
storeWalletEd25519RegistrationData(input) {
|
|
3309
|
-
return storeWalletEd25519RegistrationData(this.registrationPublicDeps, input);
|
|
3310
|
-
}
|
|
3311
|
-
storeWalletMixedRegistrationData(input) {
|
|
3312
|
-
return storeWalletMixedRegistrationData(this.registrationPublicDeps, input);
|
|
3313
|
-
}
|
|
3314
|
-
storeWalletEd25519RecoveryRegistrationData(input) {
|
|
3315
|
-
return storeWalletEd25519RecoveryRegistrationData(this.registrationPublicDeps, input);
|
|
3316
|
-
}
|
|
3317
|
-
storeWalletEmailOtpEd25519RegistrationData(input) {
|
|
3318
|
-
return storeWalletEmailOtpEd25519RegistrationData(this.registrationPublicDeps, input);
|
|
3319
|
-
}
|
|
3320
|
-
storeWalletEmailOtpMixedRegistrationData(input) {
|
|
3321
|
-
return storeWalletEmailOtpMixedRegistrationData(this.registrationPublicDeps, input);
|
|
3322
|
-
}
|
|
3323
|
-
finalizeWalletEd25519SignerRegistration(input) {
|
|
3324
|
-
return finalizeWalletEd25519SignerRegistration(this.registrationPublicDeps, input);
|
|
3325
|
-
}
|
|
3326
|
-
rollbackWalletEd25519SignerRegistration(receipt) {
|
|
3327
|
-
return rollbackWalletEd25519SignerRegistration(this.registrationPublicDeps, receipt);
|
|
3328
|
-
}
|
|
3329
|
-
createRouterAbEcdsaRegistrationCeremony(input) {
|
|
3330
|
-
return this.runtimePorts.signerCrypto.createRouterAbEcdsaRegistrationCeremony(input);
|
|
3331
|
-
}
|
|
3332
|
-
verifyRouterAbEcdsaRegistrationClientProofs(input) {
|
|
3333
|
-
return this.runtimePorts.signerCrypto.verifyRouterAbEcdsaRegistrationClientProofs(input);
|
|
3334
|
-
}
|
|
3335
|
-
persistInitialCanonicalEcdsaActivation(input) {
|
|
3336
|
-
return this.runtimePorts.signerCrypto.persistInitialCanonicalEcdsaActivation(input);
|
|
3337
|
-
}
|
|
3338
|
-
finalizeRouterAbEcdsaRegistrationActivation(input) {
|
|
3339
|
-
return this.runtimePorts.signerCrypto.finalizeRouterAbEcdsaRegistrationActivation(input);
|
|
3340
|
-
}
|
|
3341
|
-
closeRouterAbEcdsaRegistrationCeremony(input) {
|
|
3342
|
-
return this.runtimePorts.signerCrypto.closeRouterAbEcdsaRegistrationCeremony(input);
|
|
3343
|
-
}
|
|
3344
|
-
finalizeWalletRegistrationEcdsaSessions(input) {
|
|
3345
|
-
return finalizeWalletRegistrationEcdsaSessions(input);
|
|
3346
|
-
}
|
|
3347
|
-
storeWalletEcdsaSignerRecords(input) {
|
|
3348
|
-
return storeWalletEcdsaSignerRecords(this.registrationPublicDeps, input);
|
|
3349
|
-
}
|
|
3350
|
-
storeWalletEcdsaRecoverySignerRecords(input) {
|
|
3351
|
-
return storeWalletEcdsaRecoverySignerRecords(this.registrationPublicDeps, input);
|
|
3352
|
-
}
|
|
3353
|
-
storeWalletEmailOtpEcdsaSignerRecords(input) {
|
|
3354
|
-
return storeWalletEmailOtpEcdsaSignerRecords(this.registrationPublicDeps, input);
|
|
3355
|
-
}
|
|
3356
|
-
finalizeWalletEcdsaRegistration(input) {
|
|
3357
|
-
return finalizeWalletEcdsaRegistration(this.registrationPublicDeps, input);
|
|
3358
|
-
}
|
|
3359
|
-
async activateVerifiedNearEd25519YaoMaterial(material) {
|
|
3360
|
-
return await this.enginePorts.ed25519YaoActiveClients.activate(material);
|
|
3361
|
-
}
|
|
3362
|
-
async withExactEd25519MaterialOwner(args) {
|
|
3363
|
-
return await withThresholdEd25519CommitQueue({
|
|
3364
|
-
queueByKey: this.thresholdEd25519CommitQueueByKey,
|
|
3365
|
-
queueKey: resolveThresholdEd25519CommitQueueKey({ materialActivation: args.materialActivation }),
|
|
3366
|
-
nearAccountId: args.nearAccountId,
|
|
3367
|
-
enabled: true,
|
|
3368
|
-
task: args.task
|
|
3369
|
-
});
|
|
3370
|
-
}
|
|
3371
|
-
storeWalletEmailOtpEcdsaRegistrationData(input) {
|
|
3372
|
-
return storeWalletEmailOtpEcdsaRegistrationData(this.registrationPublicDeps, input);
|
|
3373
|
-
}
|
|
3374
|
-
prepareSigningSessionHydration(input) {
|
|
3375
|
-
return this.passkeyMpcSession.prepareSigningSessionHydration(input);
|
|
3376
|
-
}
|
|
3377
|
-
readPreparedSigningSessionHydration(input) {
|
|
3378
|
-
return this.passkeyMpcSession.readPreparedSigningSessionHydration(input);
|
|
3379
|
-
}
|
|
3380
|
-
discardSigningSessionHydration(input) {
|
|
3381
|
-
return this.passkeyMpcSession.discardSigningSessionHydration(input);
|
|
3382
|
-
}
|
|
3383
|
-
hydrateSigningSession(input) {
|
|
3384
|
-
return hydrateSigningSession(this.warmCapabilitiesPublicDeps, input);
|
|
3385
|
-
}
|
|
3386
|
-
persistSigningSessionSealForThresholdSession(input) {
|
|
3387
|
-
return this.passkeyMpcSession.persistSigningSessionSealForThresholdSession(input);
|
|
3388
|
-
}
|
|
3389
|
-
/**
|
|
3390
|
-
* Collects the one-time email code inside the wallet.
|
|
3391
|
-
*
|
|
3392
|
-
* Built on the same confirmation channel key export uses, so the code is
|
|
3393
|
-
* typed into the wallet's own surface and never passes through the host
|
|
3394
|
-
* application — the reason `addEmailOtp` takes an address and not a code.
|
|
3395
|
-
*/
|
|
3396
|
-
async requestEmailOtpEnrollmentConfirmation(params) {
|
|
3397
|
-
let currentChallengeId = params.challengeId;
|
|
3398
|
-
const emailOtpPrompt = {
|
|
3399
|
-
challengeId: params.challengeId,
|
|
3400
|
-
...params.emailHint ? { emailHint: params.emailHint } : {},
|
|
3401
|
-
title: params.confirmerText?.title || "Enter email code to add sign-in",
|
|
3402
|
-
body: params.confirmerText?.body || `This one-time code confirms ${params.emailAddress} can unlock this wallet.`,
|
|
3403
|
-
helperText: "Enter the 6-digit code sent to your email",
|
|
3404
|
-
onResend: async () => {
|
|
3405
|
-
const resent = await params.onResend();
|
|
3406
|
-
currentChallengeId = resent.challengeId;
|
|
3407
|
-
return {
|
|
3408
|
-
challengeId: resent.challengeId,
|
|
3409
|
-
...resent.emailHint ? { emailHint: resent.emailHint } : {},
|
|
3410
|
-
delivery: { mode: "email_provider" }
|
|
3411
|
-
};
|
|
3412
|
-
}
|
|
3413
|
-
};
|
|
3414
|
-
const decision = await this.touchConfirm.requestUserConfirmation({
|
|
3415
|
-
requestId: secureRandomId("add-auth-method-email-otp", 32, "Email OTP enrollment UI ids"),
|
|
3416
|
-
type: UserConfirmationType.SIGN_INTENT_DIGEST,
|
|
3417
|
-
summary: {
|
|
3418
|
-
type: "add_auth_method",
|
|
3419
|
-
operation: "Add email code sign-in",
|
|
3420
|
-
title: emailOtpPrompt.title,
|
|
3421
|
-
body: emailOtpPrompt.body,
|
|
3422
|
-
warning: "Security note: Adding email code lowers this wallet’s security because your inbox becomes another way to unlock it."
|
|
3423
|
-
},
|
|
3424
|
-
payload: {
|
|
3425
|
-
signingSubject: {
|
|
3426
|
-
kind: "evm_wallet",
|
|
3427
|
-
walletId: params.walletId
|
|
3428
|
-
},
|
|
3429
|
-
challengeB64u: params.challengeId,
|
|
3430
|
-
signingAuthPlan: {
|
|
3431
|
-
kind: SigningAuthPlanKind.EmailOtpReauth,
|
|
3432
|
-
method: "email_otp",
|
|
3433
|
-
emailOtpPrompt
|
|
3434
|
-
},
|
|
3435
|
-
emailOtpPrompt
|
|
3436
|
-
},
|
|
3437
|
-
intentDigest: `add-auth-method:${params.walletId}:email-otp`,
|
|
3438
|
-
...params.confirmationConfigOverride ? { confirmationConfigOverride: params.confirmationConfigOverride } : {}
|
|
3439
|
-
});
|
|
3440
|
-
if (!decision.confirmed) throw new Error(decision.error || "Adding an email code was cancelled");
|
|
3441
|
-
const otpCode = String(decision.otpCode || "").replace(/\D/g, "").slice(0, 6);
|
|
3442
|
-
if (otpCode.length !== 6) throw new Error("Adding an email code requires a 6-digit code");
|
|
3443
|
-
return {
|
|
3444
|
-
challengeId: String(decision.emailOtpChallengeId || currentChallengeId).trim(),
|
|
3445
|
-
otpCode
|
|
3446
|
-
};
|
|
3447
|
-
}
|
|
3448
|
-
requestRegistrationCredentialConfirmation(params) {
|
|
3449
|
-
return requestRegistrationCredentialConfirmation(this.registrationPublicDeps, params);
|
|
3450
|
-
}
|
|
3451
|
-
openRegistrationPreparationModal(params) {
|
|
3452
|
-
return this.touchConfirm.openRegistrationPreparationModal(params);
|
|
3453
|
-
}
|
|
3454
|
-
closeRegistrationPreparationModal() {
|
|
3455
|
-
this.touchConfirm.closeRegistrationPreparationModal();
|
|
3456
|
-
}
|
|
3457
|
-
startPreparedPasskeyRegistrationCredential(args) {
|
|
3458
|
-
if (this.touchIdPrompt.getRpId() !== args.expectedRpId) throw new Error("Prepared registration rpId does not match the wallet runtime");
|
|
3459
|
-
return this.touchIdPrompt.generateRegistrationCredentialsInternal({
|
|
3460
|
-
kind: "wallet_registration",
|
|
3461
|
-
walletId: args.walletId,
|
|
3462
|
-
challengeB64u: args.challengeB64u,
|
|
3463
|
-
signerSlot: args.signerSlot,
|
|
3464
|
-
intendedUserName: args.walletId,
|
|
3465
|
-
prompt: {
|
|
3466
|
-
kind: "reserved",
|
|
3467
|
-
reservation: args.reservation,
|
|
3468
|
-
owner: args.owner,
|
|
3469
|
-
cancellation: args.cancellation
|
|
3470
|
-
}
|
|
3471
|
-
}).then(serializePreparedRegistrationCredential);
|
|
3472
|
-
}
|
|
3473
|
-
getAuthenticationCredentialsSerialized(args) {
|
|
3474
|
-
if (args.cancellation) return this.touchIdPrompt.getAuthenticationCredentialsSerializedForChallengeB64u(args);
|
|
3475
|
-
return getAuthenticationCredentialsSerialized(this.registrationPublicDeps, args);
|
|
3476
|
-
}
|
|
3477
|
-
async exportKeypairWithUI(input) {
|
|
3478
|
-
return await exportKeypairWithUI(this.recoveryPublicDeps, input);
|
|
3479
|
-
}
|
|
3480
|
-
async resolveExactKeyExportLane(input) {
|
|
3481
|
-
return await resolveExactKeyExportLane(this.recoveryPublicDeps, input);
|
|
3482
|
-
}
|
|
3483
|
-
async connectEd25519Session(args) {
|
|
3484
|
-
return await connectEd25519Session(this.passkeyPublicDeps, args);
|
|
3485
|
-
}
|
|
3486
|
-
async bootstrapEcdsaSession(args) {
|
|
3487
|
-
return await bootstrapEcdsaSession(this.passkeyPublicDeps, args);
|
|
3488
|
-
}
|
|
3489
|
-
async loginWithEmailOtpEcdsaCapabilityInternal(args) {
|
|
3490
|
-
return await loginWithEmailOtpEcdsaCapabilityInternal(this.emailOtpPublicDeps, args);
|
|
3491
|
-
}
|
|
3492
|
-
async resolveEmailOtpEd25519CustodyProjectionInternal(args) {
|
|
3493
|
-
const walletId = String(args.walletSession.walletId);
|
|
3494
|
-
let activation;
|
|
3495
|
-
switch (args.selector.kind) {
|
|
3496
|
-
case "material_activation":
|
|
3497
|
-
activation = args.selector.materialActivation;
|
|
3498
|
-
break;
|
|
3499
|
-
case "wallet_auth_method": {
|
|
3500
|
-
const selected = await IndexedDBManager.resolveWalletAuthorityForMethod(walletId, args.selector.walletAuthMethodId);
|
|
3501
|
-
activation = selected.kind === "resolved" && selected.authority.state === "active" ? selected.authority.signerActivations.ed25519?.materialActivation : void 0;
|
|
3502
|
-
break;
|
|
3503
|
-
}
|
|
3504
|
-
case "selected_wallet_authority": {
|
|
3505
|
-
const selected = await IndexedDBManager.resolveSelectedWalletAuthority(walletId);
|
|
3506
|
-
activation = selected.kind === "resolved" && selected.authority.state === "active" ? selected.authority.signerActivations.ed25519?.materialActivation : void 0;
|
|
3507
|
-
break;
|
|
3508
|
-
}
|
|
3509
|
-
default: args.selector;
|
|
3510
|
-
}
|
|
3511
|
-
if (!activation) return null;
|
|
3512
|
-
return await resolveWalletCustodyEd25519ProjectionV1({
|
|
3513
|
-
listPublicCapabilityReferences: this.ed25519YaoPublicCapabilityReferences.list.bind(this.ed25519YaoPublicCapabilityReferences),
|
|
3514
|
-
listUsers: this.getAllUsers.bind(this)
|
|
3515
|
-
}, args.walletSession, args.providerSubjectId, activation);
|
|
3516
|
-
}
|
|
3517
|
-
/**
|
|
3518
|
-
* What an owner authority needs to have its Ed25519 runtime built inside the
|
|
3519
|
-
* unlock that verifies its factor.
|
|
3520
|
-
*
|
|
3521
|
-
* Assembled here rather than by the caller because every field is read off
|
|
3522
|
-
* the exact authority projection - the identity, its runtime policy scope,
|
|
3523
|
-
* and the custody material cached against that signer. A caller assembling
|
|
3524
|
-
* them independently could pair one authority's identity with another's
|
|
3525
|
-
* material.
|
|
3526
|
-
*/
|
|
3527
|
-
async resolveOwnerAuthorityEd25519UnlockRequestInternal(args) {
|
|
3528
|
-
const projection = await this.resolveEmailOtpEd25519CustodyProjectionInternal({
|
|
3529
|
-
walletSession: args.walletSession,
|
|
3530
|
-
providerSubjectId: args.providerSubjectId,
|
|
3531
|
-
selector: {
|
|
3532
|
-
kind: "wallet_auth_method",
|
|
3533
|
-
walletAuthMethodId: args.walletAuthMethodId
|
|
3534
|
-
}
|
|
3535
|
-
});
|
|
3536
|
-
if (!projection) return null;
|
|
3537
|
-
const signerSlot = projection.user.signerSlot;
|
|
3538
|
-
return {
|
|
3539
|
-
kind: "owner_authority",
|
|
3540
|
-
signerSlot,
|
|
3541
|
-
remainingUses: args.remainingUses,
|
|
3542
|
-
recovery: {
|
|
3543
|
-
ed25519YaoRecovery: {
|
|
3544
|
-
kind: ROUTER_AB_ED25519_YAO_EMAIL_OTP_RECOVERY_BOOTSTRAP_KIND_V1,
|
|
3545
|
-
signerSlot,
|
|
3546
|
-
remainingUses: args.remainingUses,
|
|
3547
|
-
orgId: projection.identity.runtimePolicyScope.orgId
|
|
3548
|
-
},
|
|
3549
|
-
providerSubject: projection.providerSubject,
|
|
3550
|
-
nearAccountId: String(projection.identity.nearAccountId),
|
|
3551
|
-
expectedOperationalPublicKey: projection.user.operationalPublicKey,
|
|
3552
|
-
expectedThresholdSessionId: String(projection.identity.thresholdSessionId),
|
|
3553
|
-
walletCustodyEd25519Material: await this.loadEmailOtpWalletCustodyEd25519Material({
|
|
3554
|
-
nearAccountId: String(projection.identity.nearAccountId),
|
|
3555
|
-
signerSlot
|
|
3556
|
-
})
|
|
3557
|
-
}
|
|
3558
|
-
};
|
|
3559
|
-
}
|
|
3560
|
-
/**
|
|
3561
|
-
* Activate the runtime an owner authority's unlock built.
|
|
3562
|
-
*
|
|
3563
|
-
* The identity it is checked against comes from the same authority projection
|
|
3564
|
-
* that produced the unlock request, not from the bootstrap being checked -
|
|
3565
|
-
* comparing a value against itself proves nothing, and the projection is what
|
|
3566
|
-
* says which signer this authority owns.
|
|
3567
|
-
*/
|
|
3568
|
-
async activateOwnerAuthorityEd25519RuntimeInternal(args) {
|
|
3569
|
-
const projection = await this.resolveEmailOtpEd25519CustodyProjectionInternal({
|
|
3570
|
-
walletSession: args.walletSession,
|
|
3571
|
-
providerSubjectId: args.providerSubjectId,
|
|
3572
|
-
selector: {
|
|
3573
|
-
kind: "wallet_auth_method",
|
|
3574
|
-
walletAuthMethodId: args.walletAuthMethodId
|
|
3575
|
-
}
|
|
3576
|
-
});
|
|
3577
|
-
if (!projection) throw new Error("Owner Email OTP Ed25519 activation has no signer projection");
|
|
3578
|
-
await this.activateEmailOtpEd25519CustodyCapabilityInternal({
|
|
3579
|
-
walletSession: args.walletSession,
|
|
3580
|
-
providerSubject: projection.providerSubject,
|
|
3581
|
-
emailHashHex: args.emailHashHex,
|
|
3582
|
-
signerSlot: projection.user.signerSlot,
|
|
3583
|
-
expectedOperationalPublicKey: projection.user.operationalPublicKey,
|
|
3584
|
-
expectedThresholdSessionId: String(projection.identity.thresholdSessionId),
|
|
3585
|
-
bootstrap: args.bootstrap,
|
|
3586
|
-
activeClientHandle: args.activeClientHandle,
|
|
3587
|
-
metadata: args.metadata,
|
|
3588
|
-
authority: args.authority,
|
|
3589
|
-
commitQueue: "acquire"
|
|
3590
|
-
});
|
|
3591
|
-
}
|
|
3592
|
-
async activateEmailOtpEd25519RegistrationMaterialInternal(args) {
|
|
3593
|
-
const activated = await this.signerWorkerManager.requestWorkerOperation({
|
|
3594
|
-
kind: "emailOtp",
|
|
3595
|
-
request: {
|
|
3596
|
-
type: "activateEmailOtpEd25519YaoRegistrationMaterial",
|
|
3597
|
-
payload: {
|
|
3598
|
-
material: args.material,
|
|
3599
|
-
bootstrap: args.bootstrap,
|
|
3600
|
-
envelope: args.envelope,
|
|
3601
|
-
factorSecret32: args.factorSecret32
|
|
3602
|
-
},
|
|
3603
|
-
transfer: [args.factorSecret32]
|
|
3604
|
-
}
|
|
3605
|
-
});
|
|
3606
|
-
try {
|
|
3607
|
-
const signer = await this.activateEmailOtpEd25519CustodyCapabilityInternal({
|
|
3608
|
-
commitQueue: "acquire",
|
|
3609
|
-
walletSession: args.walletSession,
|
|
3610
|
-
providerSubject: args.providerSubject,
|
|
3611
|
-
emailHashHex: args.emailHashHex,
|
|
3612
|
-
signerSlot: args.signerSlot,
|
|
3613
|
-
expectedOperationalPublicKey: args.expectedOperationalPublicKey,
|
|
3614
|
-
expectedThresholdSessionId: args.expectedThresholdSessionId,
|
|
3615
|
-
bootstrap: args.bootstrap,
|
|
3616
|
-
activeClientHandle: activated.activeClientHandle,
|
|
3617
|
-
metadata: activated.metadata
|
|
3618
|
-
});
|
|
3619
|
-
await resolveExactEmailOtpEd25519ActivationAuthorization({
|
|
3620
|
-
walletId: args.walletSession.walletId,
|
|
3621
|
-
emailHashHex: args.emailHashHex,
|
|
3622
|
-
providerSubject: args.providerSubject,
|
|
3623
|
-
bootstrap: args.bootstrap
|
|
3624
|
-
});
|
|
3625
|
-
return signer;
|
|
3626
|
-
} catch (error) {
|
|
3627
|
-
try {
|
|
3628
|
-
await requestClearEmailOtpWarmSessionMaterial({
|
|
3629
|
-
worker: this.signerWorkerManager.getContext(),
|
|
3630
|
-
target: {
|
|
3631
|
-
kind: "ed25519_yao",
|
|
3632
|
-
thresholdSessionId: args.bootstrap.session.thresholdSessionId,
|
|
3633
|
-
materialActivation: activated.metadata.materialActivation
|
|
3634
|
-
}
|
|
3635
|
-
});
|
|
3636
|
-
} catch {}
|
|
3637
|
-
try {
|
|
3638
|
-
await disposeWalletCustodyEd25519ActiveClientV1({
|
|
3639
|
-
workerContext: this.signerWorkerManager.getContext(),
|
|
3640
|
-
activeClientHandle: activated.activeClientHandle
|
|
3641
|
-
});
|
|
3642
|
-
} catch {}
|
|
3643
|
-
throw error;
|
|
3644
|
-
}
|
|
3645
|
-
}
|
|
3646
|
-
async activateEmailOtpEd25519CustodyCapabilityInternal(args) {
|
|
3647
|
-
return await this.activateEmailOtpEd25519CustodyCapabilityWithExactCredential({
|
|
3648
|
-
...args,
|
|
3649
|
-
credentialExpectation: { kind: "resolve_exact_operation_credential" }
|
|
3650
|
-
});
|
|
3651
|
-
}
|
|
3652
|
-
async activateEmailOtpEd25519CustodyCapabilityWithExactCredential(args) {
|
|
3653
|
-
const exactAuthorization = await resolveExactEmailOtpEd25519ActivationAuthorization({
|
|
3654
|
-
walletId: args.walletSession.walletId,
|
|
3655
|
-
emailHashHex: args.emailHashHex,
|
|
3656
|
-
providerSubject: args.providerSubject,
|
|
3657
|
-
bootstrap: args.bootstrap,
|
|
3658
|
-
...args.authority ? { verifiedAuthority: args.authority } : {},
|
|
3659
|
-
...args.exactAuthorization ? { exactAuthorization: args.exactAuthorization } : {}
|
|
3660
|
-
});
|
|
3661
|
-
if (args.credentialExpectation.kind === "expect_exact_operation_credential" && (args.credentialExpectation.operationCredential.walletSessionId !== exactAuthorization.operationCredential.walletSessionId || args.credentialExpectation.operationCredential.token !== exactAuthorization.operationCredential.token)) throw new Error("[SigningEngine][near] expected Email OTP operation credential changed");
|
|
3662
|
-
return await withThresholdEd25519CommitQueue({
|
|
3663
|
-
queueByKey: this.thresholdEd25519CommitQueueByKey,
|
|
3664
|
-
queueKey: resolveThresholdEd25519CommitQueueKey({ materialActivation: args.metadata.materialActivation }),
|
|
3665
|
-
nearAccountId: toAccountId(args.bootstrap.session.nearAccountId),
|
|
3666
|
-
enabled: args.commitQueue === "acquire",
|
|
3667
|
-
task: async () => {
|
|
3668
|
-
const activated = await activateWalletCustodyEd25519CapabilityV1({
|
|
3669
|
-
walletSession: args.walletSession,
|
|
3670
|
-
nearAccountId: args.bootstrap.session.nearAccountId,
|
|
3671
|
-
providerSubject: args.providerSubject,
|
|
3672
|
-
relayerUrl: this.seamsWebConfigs.network.relayer?.url || "",
|
|
3673
|
-
authority: exactAuthorization.authority,
|
|
3674
|
-
signerSlot: args.signerSlot,
|
|
3675
|
-
expectedOperationalPublicKey: args.expectedOperationalPublicKey,
|
|
3676
|
-
expectedThresholdSessionId: args.expectedThresholdSessionId,
|
|
3677
|
-
bootstrap: args.bootstrap,
|
|
3678
|
-
operationCredential: exactAuthorization.operationCredential,
|
|
3679
|
-
activeClientHandle: args.activeClientHandle,
|
|
3680
|
-
metadata: args.metadata,
|
|
3681
|
-
workerContext: this.signerWorkerManager.getContext(),
|
|
3682
|
-
activateCapability: this.enginePorts.ed25519YaoActiveClients.activate.bind(this.enginePorts.ed25519YaoActiveClients)
|
|
3683
|
-
});
|
|
3684
|
-
const state = activated.walletSessionState;
|
|
3685
|
-
await this.upsertEd25519YaoPublicCapabilityLaneReference(emailOtpEd25519YaoLaneReferenceFromRecovery({
|
|
3686
|
-
walletSessionState: state,
|
|
3687
|
-
materialActivation: activated.material.activeClient.metadata().materialActivation
|
|
3688
|
-
}));
|
|
3689
|
-
if (!this.enginePorts.ed25519YaoActiveClients.resolve({
|
|
3690
|
-
walletId: state.signingLane.identity.signer.account.wallet.walletId,
|
|
3691
|
-
nearAccountId: state.signingLane.identity.signer.account.nearAccountId,
|
|
3692
|
-
materialActivation: activated.material.activeClient.metadata().materialActivation
|
|
3693
|
-
})) throw new Error("[SigningEngine][near] wallet custody activation was superseded");
|
|
3694
|
-
return state.signingLane.identity.signer;
|
|
3695
|
-
}
|
|
3696
|
-
});
|
|
3697
|
-
}
|
|
3698
|
-
async loginWithEmailOtpWalletCustodyEd25519Internal(args) {
|
|
3699
|
-
if (args.authoritySelector.kind !== "wallet_auth_method") throw new Error("Email OTP Ed25519 unlock requires an exact wallet auth method");
|
|
3700
|
-
const walletAuthMethodId = args.authoritySelector.walletAuthMethodId;
|
|
3701
|
-
const selection = args.ed25519Selection;
|
|
3702
|
-
const unlock = await unlockEmailOtpEd25519YaoCapability({
|
|
3703
|
-
walletSession: args.walletSession,
|
|
3704
|
-
authoritySelector: args.authoritySelector,
|
|
3705
|
-
relayUrl: this.seamsWebConfigs.network.relayer?.url || "",
|
|
3706
|
-
groupId: SIGNING_SESSION_SEAL_GROUP_ID,
|
|
3707
|
-
verification: {
|
|
3708
|
-
kind: "otp",
|
|
3709
|
-
challengeId: args.challengeId,
|
|
3710
|
-
otpCode: args.otpCode
|
|
3711
|
-
},
|
|
3712
|
-
routePlan: buildFreshEmailOtpRoutePlan({
|
|
3713
|
-
freshRouteFamily: "login",
|
|
3714
|
-
operation: WALLET_EMAIL_OTP_UNLOCK_OPERATION
|
|
3715
|
-
}),
|
|
3716
|
-
workerCtx: this.signerWorkerManager.getContext(),
|
|
3717
|
-
providerSubject: args.providerSubjectId,
|
|
3718
|
-
signerSlot: selection.signerSlot,
|
|
3719
|
-
remainingUses: args.remainingUses,
|
|
3720
|
-
orgId: selection.runtimePolicyScope.orgId,
|
|
3721
|
-
nearAccountId: selection.nearAccountId,
|
|
3722
|
-
expectedOperationalPublicKey: selection.operationalPublicKey,
|
|
3723
|
-
expectedThresholdSessionId: selection.thresholdSessionId,
|
|
3724
|
-
walletCustodyEd25519Material: await this.loadEmailOtpWalletCustodyEd25519Material({
|
|
3725
|
-
nearAccountId: selection.nearAccountId,
|
|
3726
|
-
signerSlot: selection.signerSlot
|
|
3727
|
-
})
|
|
3728
|
-
});
|
|
3729
|
-
if (unlock.kind === "wallet_custody_cache_absent") throw new Error("Email OTP wallet custody material is unavailable; recover with a recovery code");
|
|
3730
|
-
try {
|
|
3731
|
-
await persistVerifiedEmailOtpAuthorityAfterUnlock({
|
|
3732
|
-
walletId: String(args.walletSession.walletId),
|
|
3733
|
-
walletAuthMethodId,
|
|
3734
|
-
projection: unlock.recovery.verifiedAuthorityProjection
|
|
3735
|
-
});
|
|
3736
|
-
const authority = await walletAuthAuthorityRefForVerifiedEmailOtpUnlock({
|
|
3737
|
-
walletId: String(args.walletSession.walletId),
|
|
3738
|
-
walletAuthMethodId,
|
|
3739
|
-
providerSubject: args.providerSubjectId,
|
|
3740
|
-
emailHashHex: args.emailHashHex,
|
|
3741
|
-
projection: unlock.recovery.verifiedAuthorityProjection
|
|
3742
|
-
});
|
|
3743
|
-
if (unlock.walletCustodyEd25519Material) await this.persistWalletCustodyEd25519Material(unlock.walletCustodyEd25519Material);
|
|
3744
|
-
await walletSessionAuthorizations.replaceExactActive({
|
|
3745
|
-
active: unlock.walletSessionAuthorization.record,
|
|
3746
|
-
operationCredential: unlock.walletSessionAuthorization.operationCredential
|
|
3747
|
-
});
|
|
3748
|
-
const signer = await this.activateEmailOtpEd25519CustodyCapabilityInternal({
|
|
3749
|
-
commitQueue: "acquire",
|
|
3750
|
-
walletSession: args.walletSession,
|
|
3751
|
-
providerSubject: args.providerSubjectId,
|
|
3752
|
-
emailHashHex: args.emailHashHex,
|
|
3753
|
-
signerSlot: selection.signerSlot,
|
|
3754
|
-
expectedOperationalPublicKey: selection.operationalPublicKey,
|
|
3755
|
-
expectedThresholdSessionId: selection.thresholdSessionId,
|
|
3756
|
-
bootstrap: unlock.ed25519YaoCapability,
|
|
3757
|
-
activeClientHandle: unlock.activeClientHandle,
|
|
3758
|
-
metadata: unlock.metadata,
|
|
3759
|
-
authority,
|
|
3760
|
-
exactAuthorization: unlock.walletSessionAuthorization
|
|
3761
|
-
});
|
|
3762
|
-
await establishUnlockedWalletEd25519ExportRootCapabilityV1(this.walletCustodyCeremonyTransportV1(), {
|
|
3763
|
-
existingEnvelope: unlock.ed25519ExportRootCustody.existingEnvelope,
|
|
3764
|
-
existingFactorSecret: unlock.ed25519ExportRootCustody.factorSecret32,
|
|
3765
|
-
walletId: String(args.walletSession.walletId),
|
|
3766
|
-
walletAuthMethodId: String(unlock.walletSessionAuthorization.record.authMethodId),
|
|
3767
|
-
walletSessionId: String(unlock.walletSessionAuthorization.operationCredential.walletSessionId),
|
|
3768
|
-
expiresAtMs: unlock.walletSessionAuthorization.record.expiresAtMs
|
|
3769
|
-
});
|
|
3770
|
-
return signer;
|
|
3771
|
-
} catch (error) {
|
|
3772
|
-
await disposeWalletCustodyEd25519ActiveClientV1({
|
|
3773
|
-
workerContext: this.signerWorkerManager.getContext(),
|
|
3774
|
-
activeClientHandle: unlock.activeClientHandle
|
|
3775
|
-
}).catch(() => void 0);
|
|
3776
|
-
throw error;
|
|
3777
|
-
} finally {
|
|
3778
|
-
unlock.ed25519ExportRootCustody.factorSecret32.fill(0);
|
|
3779
|
-
}
|
|
3780
|
-
}
|
|
3781
|
-
async requestEmailOtpSigningSessionChallenge(args) {
|
|
3782
|
-
return await requestEmailOtpSigningSessionChallenge(this.emailOtpPublicDeps, args);
|
|
3783
|
-
}
|
|
3784
|
-
async refreshEmailOtpSigningSession(args) {
|
|
3785
|
-
return await refreshEmailOtpSigningSession(this.emailOtpPublicDeps, args);
|
|
3786
|
-
}
|
|
3787
|
-
async enrollEmailOtpInternal(args) {
|
|
3788
|
-
return await enrollEmailOtpInternal(this.emailOtpPublicDeps, args);
|
|
3789
|
-
}
|
|
3790
|
-
async prepareEmailOtpRegistrationEnrollmentMaterialInternal(args) {
|
|
3791
|
-
return await prepareEmailOtpRegistrationEnrollmentMaterialInternal(this.emailOtpPublicDeps, args);
|
|
3792
|
-
}
|
|
3793
|
-
async getWarmThresholdEd25519SessionStatus(args) {
|
|
3794
|
-
const walletId = toWalletId(args.walletId);
|
|
3795
|
-
const resolution = await resolveExactEd25519SealedSessionRuntimeForWalletSubject({
|
|
3796
|
-
walletId,
|
|
3797
|
-
nearAccountId: toAccountId(args.nearAccountId),
|
|
3798
|
-
nearEd25519SigningKeyId: nearEd25519SigningKeyIdFromString(args.nearEd25519SigningKeyId)
|
|
3799
|
-
});
|
|
3800
|
-
if (resolution.kind === "missing") return null;
|
|
3801
|
-
if (resolution.kind !== "resolved") throw new Error(`[WarmSessionStore] Ed25519 sealed runtime is ${resolution.kind}`);
|
|
3802
|
-
const authorization = await this.resolveActiveNearEd25519WalletSessionAuthorization(walletId);
|
|
3803
|
-
return await getWarmThresholdEd25519SessionStatus(this.warmCapabilitiesPublicDeps, {
|
|
3804
|
-
runtime: resolution.runtime,
|
|
3805
|
-
authorization,
|
|
3806
|
-
nowMs: Date.now()
|
|
3807
|
-
});
|
|
3808
|
-
}
|
|
3809
|
-
async scheduleRouterAbEcdsaDerivationLoginPresignaturePrefill(args, statusReads) {
|
|
3810
|
-
const capabilities = await this.listPreprocessingCapabilities({
|
|
3811
|
-
walletId: args.walletId,
|
|
3812
|
-
chainTargets: [args.chainTarget]
|
|
3813
|
-
}, statusReads);
|
|
3814
|
-
const authorized = capabilities.length === 1 ? capabilities[0] : null;
|
|
3815
|
-
if (!authorized) return {
|
|
3816
|
-
status: "skipped",
|
|
3817
|
-
reason: "exact_wallet_session_unavailable",
|
|
3818
|
-
walletSessionId: null
|
|
3819
|
-
};
|
|
3820
|
-
return await scheduleRouterAbEcdsaDerivationLoginPresignaturePrefill(this.warmCapabilitiesPublicDeps, {
|
|
3821
|
-
capability: authorized,
|
|
3822
|
-
waitForPoolReady: args.waitForPoolReady
|
|
3823
|
-
});
|
|
3824
|
-
}
|
|
3825
|
-
async clearVolatileWarmSigningMaterial(walletId) {
|
|
3826
|
-
const cleanup = this.clearVolatileWarmSigningMaterialInternal(walletId);
|
|
3827
|
-
this.volatileWarmSigningMaterialCleanupInFlight = cleanup;
|
|
3828
|
-
try {
|
|
3829
|
-
await cleanup;
|
|
3830
|
-
} finally {
|
|
3831
|
-
if (this.volatileWarmSigningMaterialCleanupInFlight === cleanup) this.volatileWarmSigningMaterialCleanupInFlight = null;
|
|
3832
|
-
}
|
|
3833
|
-
}
|
|
3834
|
-
async deleteDurableEcdsaPresignatures(target) {
|
|
3835
|
-
return await new IndexedDbEcdsaCapabilityManifestStore().deleteClientPresignatures(target);
|
|
3836
|
-
}
|
|
3837
|
-
async clearVolatileWarmSigningMaterialInternal(walletId) {
|
|
3838
|
-
try {
|
|
3839
|
-
if (walletId) this.enginePorts.ed25519YaoActiveClients.disposeWallet(walletId);
|
|
3840
|
-
else this.enginePorts.ed25519YaoActiveClients.dispose();
|
|
3841
|
-
} finally {
|
|
3842
|
-
try {
|
|
3843
|
-
await clearVolatileWarmSigningMaterial(this.warmCapabilitiesPublicDeps, walletId);
|
|
3844
|
-
} finally {
|
|
3845
|
-
try {
|
|
3846
|
-
if (walletId === void 0) await this.clearLinkedEcdsaHolderMaterials();
|
|
3847
|
-
else await this.clearLinkedEcdsaHolderMaterialsForWallet(walletId);
|
|
3848
|
-
} finally {
|
|
3849
|
-
await this.signerWorkerManager.clearEcdsaClientWorkerState(walletId === void 0 ? { kind: "all" } : {
|
|
3850
|
-
kind: "wallet",
|
|
3851
|
-
walletId
|
|
3852
|
-
});
|
|
3853
|
-
}
|
|
3854
|
-
}
|
|
3855
|
-
}
|
|
3856
|
-
}
|
|
3857
|
-
onSdkLifecycleEvent(listener) {
|
|
3858
|
-
this.sdkLifecycleEventListeners.add(listener);
|
|
3859
|
-
return this.removeSdkLifecycleEventListener.bind(this, listener);
|
|
3860
|
-
}
|
|
3861
|
-
publishSdkLifecycleEvent(event) {
|
|
3862
|
-
const deliveryKey = sdkLifecycleEventDeliveryKey(event);
|
|
3863
|
-
if (this.deliveredSdkLifecycleEventKeys.has(deliveryKey)) return;
|
|
3864
|
-
this.deliveredSdkLifecycleEventKeys.add(deliveryKey);
|
|
3865
|
-
for (const listener of Array.from(this.sdkLifecycleEventListeners)) listener(event);
|
|
3866
|
-
}
|
|
3867
|
-
publishNearProvisioningLifecycleEvent(walletId, state) {
|
|
3868
|
-
this.publishSdkLifecycleEvent(createNearProvisioningStateChangedEvent({
|
|
3869
|
-
walletId,
|
|
3870
|
-
state
|
|
3871
|
-
}));
|
|
3872
|
-
}
|
|
3873
|
-
removeSdkLifecycleEventListener(listener) {
|
|
3874
|
-
this.sdkLifecycleEventListeners.delete(listener);
|
|
3875
|
-
}
|
|
3876
|
-
dispose() {
|
|
3877
|
-
this.signingSessionLifecycleSubscription.unsubscribe();
|
|
3878
|
-
this.nearProvisioningUnsubscribe();
|
|
3879
|
-
this.sdkLifecycleEventListeners.clear();
|
|
3880
|
-
this.deliveredSdkLifecycleEventKeys.clear();
|
|
3881
|
-
this.ed25519YaoPageLifecycleOwner.dispose();
|
|
3882
|
-
}
|
|
3883
|
-
clearThresholdEcdsaSigningQueue() {
|
|
3884
|
-
clearThresholdEcdsaSigningQueue(this.thresholdEcdsaSigningQueueByKey);
|
|
3885
|
-
}
|
|
3886
|
-
async clearLinkedEcdsaHolderMaterials() {
|
|
3887
|
-
await clearLinkedDeviceEcdsaHolderMaterialsWasm({ workerCtx: this.signerWorkerManager.getContext() });
|
|
3888
|
-
clearLinkedEcdsaHolderRuntimesV1();
|
|
3889
|
-
}
|
|
3890
|
-
async clearLinkedEcdsaHolderMaterialsForWallet(walletId) {
|
|
3891
|
-
const runtimes = listLinkedEcdsaHolderRuntimesV1(walletId);
|
|
3892
|
-
let firstError;
|
|
3893
|
-
for (const runtime of runtimes) try {
|
|
3894
|
-
await destroyLinkedDeviceEcdsaHolderMaterialsWasm({
|
|
3895
|
-
holderHandleIds: [runtime.holderHandleId],
|
|
3896
|
-
workerCtx: this.signerWorkerManager.getContext()
|
|
3897
|
-
});
|
|
3898
|
-
removeLinkedEcdsaHolderRuntimeV1(runtime);
|
|
3899
|
-
} catch (error) {
|
|
3900
|
-
firstError ??= error;
|
|
3901
|
-
}
|
|
3902
|
-
if (firstError !== void 0) throw firstError;
|
|
3903
|
-
}
|
|
3904
|
-
};
|
|
3905
|
-
//#endregion
|
|
3906
|
-
export { BrowserSigningSurface };
|
|
3907
|
-
|
|
3908
|
-
//# sourceMappingURL=BrowserSigningSurface.js.map
|