@seams/wallet 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +140 -254
- package/THIRD_PARTY_NOTICES.md +7 -1
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +98 -1825
- package/dist/esm/SeamsWeb/assembly/createWalletIframeRouter.js +4 -15
- package/dist/esm/SeamsWeb/index.js +2 -2
- package/dist/esm/SeamsWeb/operations/devices/scanDevice.js +3 -361
- package/dist/esm/SeamsWeb/operations/near/delegateAction.js +18 -106
- package/dist/esm/SeamsWeb/operations/recovery/walletRecovery.js +3 -3
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +8 -209
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +5 -5
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryJournal.js +2 -64
- package/dist/esm/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +1 -1
- package/dist/esm/SeamsWeb/operations/tempo/index.js +1 -13
- package/dist/esm/SeamsWeb/publicApi/auth.js +3 -19
- package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +59 -94
- package/dist/esm/SeamsWeb/publicApi/currentWallet.js +1 -1
- package/dist/esm/SeamsWeb/publicApi/devices.js +33 -64
- package/dist/esm/SeamsWeb/publicApi/evm.js +28 -93
- package/dist/esm/SeamsWeb/publicApi/keyExport.js +26 -52
- package/dist/esm/SeamsWeb/publicApi/near.js +140 -435
- package/dist/esm/SeamsWeb/publicApi/placement.js +206 -0
- package/dist/esm/SeamsWeb/publicApi/session.js +13 -0
- package/dist/esm/SeamsWeb/publicApi/tempo.js +64 -221
- package/dist/esm/SeamsWeb/publicApi/waitForNearAccount.js +72 -0
- package/dist/esm/SeamsWeb/walletIframe/client/deviceCommands.js +50 -0
- package/dist/esm/SeamsWeb/walletIframe/client/emailOtpCommands.js +25 -0
- package/dist/esm/SeamsWeb/walletIframe/client/evmFamilyCommands.js +118 -0
- package/dist/esm/SeamsWeb/walletIframe/client/inboundMessages.js +223 -0
- package/dist/esm/SeamsWeb/walletIframe/client/nearCommands.js +153 -0
- package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +2 -2
- package/dist/esm/SeamsWeb/walletIframe/client/placementCommands.js +65 -0
- package/dist/esm/SeamsWeb/walletIframe/client/preferenceState.js +93 -0
- package/dist/esm/SeamsWeb/walletIframe/client/preferences.js +117 -0
- package/dist/esm/SeamsWeb/walletIframe/client/registrationCommands.js +92 -0
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +241 -583
- package/dist/esm/SeamsWeb/walletIframe/client/sessionCommands.js +61 -0
- package/dist/esm/SeamsWeb/walletIframe/coordinator.js +175 -134
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +13 -1
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +1 -1
- package/dist/esm/SeamsWeb/walletIframe/shared/configuration.js +37 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +31 -11
- package/dist/esm/SeamsWeb/walletIframe/shared/facadeBoundary.js +96 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +6 -32
- package/dist/esm/advanced.js +3 -3
- package/dist/esm/build-paths.js +0 -4
- package/dist/esm/core/accountData/near/accountProjection.js +3 -3
- package/dist/esm/core/accountData/near/keyMaterial.js +2 -2
- package/dist/esm/core/config/chains.js +1 -28
- package/dist/esm/core/config/configBuilder.js +3 -14
- package/dist/esm/core/config/defaultConfigs.js +4 -6
- package/dist/esm/core/config/presignatures.js +6 -0
- package/dist/esm/core/diagnostics/registration.js +8 -0
- package/dist/esm/core/indexedDB/accountKeyMaterial.js +1 -1
- package/dist/esm/core/indexedDB/linkedAuthoritySignerMaterial.js +4 -125
- package/dist/esm/core/indexedDB/normalization.js +7 -1
- package/dist/esm/core/indexedDB/pendingWalletRecoveryCommit.js +1 -1
- package/dist/esm/core/indexedDB/pendingWalletRegistrationCommit.js +3 -41
- package/dist/esm/core/indexedDB/seamsWalletDB/accountSignerRows.js +261 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.js +2 -201
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +5 -736
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +6 -1084
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +20 -138
- package/dist/esm/core/indexedDB/seamsWalletDB/manager.js +100 -4
- package/dist/esm/core/indexedDB/seamsWalletDB/nonceLeaseRows.js +156 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/registrationSetup.js +4 -11
- package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +91 -547
- package/dist/esm/core/indexedDB/seamsWalletDB/signerOutboxRows.js +90 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +7 -92
- package/dist/esm/core/indexedDB/seamsWalletDB/walletOwnershipGeneration.js +43 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +103 -157
- package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +2 -1
- package/dist/esm/core/indexedDB/walletCustodyEd25519MaterialRecord.js +1 -1
- package/dist/esm/core/rpcClients/evm/nonceBackend.js +1 -176
- package/dist/esm/core/rpcClients/near/accountExists.js +34 -0
- package/dist/esm/core/rpcClients/relayer/ecdsaPrepareSession.js +42 -0
- package/dist/esm/core/rpcClients/relayer/relayerHttp.js +31 -1
- package/dist/esm/core/rpcClients/relayer/routerAbNormalSigning.js +47 -11
- package/dist/esm/core/rpcClients/relayer/walletRecoveryFinalize.js +2 -48
- package/dist/esm/core/rpcClients/relayer/walletRecoveryPrepare.js +9 -9
- package/dist/esm/core/rpcClients/relayer/walletRecoveryRotate.js +1 -223
- package/dist/esm/core/rpcClients/relayer/walletRegistration.js +36 -2197
- package/dist/esm/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +145 -14
- package/dist/esm/core/signingEngine/chains/evm/bytes.js +1 -15
- package/dist/esm/core/signingEngine/chains/evm/evmAdapter.js +1 -1
- package/dist/esm/core/signingEngine/chains/near/display.js +1 -27
- package/dist/esm/core/signingEngine/chains/near/nearSignerWasm.js +2 -2
- package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +6 -39
- package/dist/esm/core/signingEngine/flows/shared/signingConfirmation.js +2 -2
- package/dist/esm/core/signingEngine/flows/shared/signingStateMachine.js +1 -11
- package/dist/esm/core/signingEngine/flows/signEvmFamily/authPlanning.js +2 -2
- package/dist/esm/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +3 -3
- package/dist/esm/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +3 -136
- package/dist/esm/core/signingEngine/flows/signEvmFamily/freshWalletSessionRetry.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/operationIds.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/preparedSigning.js +2 -3
- package/dist/esm/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +40 -5
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +4 -4
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +27 -53
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +5 -5
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +40 -33
- package/dist/esm/core/signingEngine/flows/signEvmFamily/thresholdAdmission.js +8 -2
- package/dist/esm/core/signingEngine/flows/signNear/implicitAccountFunding.js +1 -1
- package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +94 -31
- package/dist/esm/core/signingEngine/flows/signNear/shared/implicitAccountFundingPort.js +1 -8
- package/dist/esm/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.js +1 -38
- package/dist/esm/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +53 -8
- package/dist/esm/core/signingEngine/flows/signNear/signDelegate.js +5 -5
- package/dist/esm/core/signingEngine/flows/signNear/signNear.js +30 -44
- package/dist/esm/core/signingEngine/flows/signNear/signNep413.js +21 -12
- package/dist/esm/core/signingEngine/flows/signNear/signTransactions.js +10 -9
- package/dist/esm/core/signingEngine/interfaces/ecdsaChainTarget.js +1 -1
- package/dist/esm/core/signingEngine/nonce/nonceLaneKeys.js +1 -35
- package/dist/esm/core/signingEngine/nonce/nonceTypes.js +2 -26
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/httpRequest.js +4 -3
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +5 -1
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +112 -162
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePoolPolicy.js +31 -0
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +1 -1
- package/dist/esm/core/signingEngine/session/availability/availableSigningLanes.js +3 -913
- package/dist/esm/core/signingEngine/session/emailOtp/challengeDelivery.js +1 -45
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaSigningSessionAuthority.js +1 -81
- package/dist/esm/core/signingEngine/session/identity/clientSessionPersistenceState.js +1 -43
- package/dist/esm/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.js +1 -9
- package/dist/esm/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +3 -125
- package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +3 -19
- package/dist/esm/core/signingEngine/session/identity/laneIdentity.js +2 -106
- package/dist/esm/core/signingEngine/session/keyMaterialBrands.js +1 -1
- package/dist/esm/core/signingEngine/session/lifecycle/walletSessionFailure.js +1 -1
- package/dist/esm/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.js +1 -114
- package/dist/esm/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +2 -2
- package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +2 -187
- package/dist/esm/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +2 -18
- package/dist/esm/core/signingEngine/session/material/ecdsaSigningCapability.js +2 -130
- package/dist/esm/core/signingEngine/session/material/linkedEcdsaHolderRuntime.js +1 -25
- package/dist/esm/core/signingEngine/session/material/nearEd25519YaoMaterialActivation.js +1 -73
- package/dist/esm/core/signingEngine/session/material/walletSigningStateFailure.js +1 -69
- package/dist/esm/core/signingEngine/session/operationState/preparedOperation.js +1 -5
- package/dist/esm/core/signingEngine/session/operationState/transactionState.js +0 -1
- package/dist/esm/core/signingEngine/session/passkey/prfCache.js +1 -5
- package/dist/esm/core/signingEngine/session/persistence/durableSealedSessionCommands.js +1 -9
- package/dist/esm/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.js +3 -202
- package/dist/esm/core/signingEngine/session/persistence/sealedSessionRecords.js +4 -83
- package/dist/esm/core/signingEngine/session/persistence/sealedSessionStore.js +2 -2
- package/dist/esm/core/signingEngine/session/planning/planner.js +2 -13
- package/dist/esm/core/signingEngine/session/sealedRecovery/materialActivationKey.js +1 -8
- package/dist/esm/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +2 -1
- package/dist/esm/core/signingEngine/session/warmCapabilities/sealedRefreshParity.js +2 -41
- package/dist/esm/core/signingEngine/stepUpConfirmation/intentDigestPreparation.js +1 -14
- package/dist/esm/core/signingEngine/stepUpConfirmation/types.js +1 -7
- package/dist/esm/core/signingEngine/threshold/commitQueueShared.js +1 -127
- package/dist/esm/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +3 -297
- package/dist/esm/core/signingEngine/threshold/ecdsa/operationStepUp.js +10 -24
- package/dist/esm/core/signingEngine/threshold/ed25519/walletSession.js +7 -209
- package/dist/esm/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.js +5 -208
- package/dist/esm/core/signingEngine/threshold/sessionPolicy.js +3 -9
- package/dist/esm/core/signingEngine/uiConfirm/nearFundingNotice.js +1 -17
- package/dist/esm/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +2 -173
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +3 -3
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +2 -2
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +1 -1
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +5 -4
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +2 -2
- package/dist/esm/core/signingEngine/uiConfirm/ui/surface-resize-events.js +1 -6
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/formatters.js +1 -10
- package/dist/esm/core/signingEngine/webauthnAuth/credentials/credentialExtensions.js +1 -19
- package/dist/esm/core/signingEngine/webauthnAuth/credentials/helpers.js +2 -170
- package/dist/esm/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.js +27 -5
- package/dist/esm/core/signingEngine/workerManager/validation.js +1 -104
- package/dist/esm/core/signingEngine/workerManager/workerTypes.js +1 -33
- package/dist/esm/core/types/rpc.js +1 -4
- package/dist/esm/core/types/sdkSentEvents.js +1 -24
- package/dist/esm/core/walletRuntimePaths/base.js +1 -28
- package/dist/esm/externalEvm/controller.js +7 -7
- package/dist/esm/index.js +8 -7
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +9 -9
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +1 -2
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +9 -185
- package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +303 -0
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +31 -5
- package/dist/esm/react/components/AccountMenuButton/index.js +21 -13
- package/dist/esm/react/components/AccountMenuButton/types.js +2 -1
- package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +5 -17
- package/dist/esm/react/components/QRCodeScanner.js +5 -5
- package/dist/esm/react/components/ShowQRCode.js +13 -13
- package/dist/esm/react/context/SeamsWebProvider.js +1 -2
- package/dist/esm/react/context/index.js +8 -10
- package/dist/esm/react/context/seamsManagerSingleton.js +1 -1
- package/dist/esm/react/context/useLoginStateRefresher.js +10 -13
- package/dist/esm/react/context/useNearProvisioningStateRefresh.js +3 -3
- package/dist/esm/react/context/useSeamsContextValue.js +33 -81
- package/dist/esm/react/context/useSeamsWithSdkFlow.js +22 -51
- package/dist/esm/react/context/useWalletIframeLifecycle.js +20 -110
- package/dist/esm/react/hooks/useAccountInput.js +10 -13
- package/dist/esm/react/hooks/useDeviceLinking.js +1 -1
- package/dist/esm/react/hooks/useNearClient.js +1 -1
- package/dist/esm/react/hooks/useQRCamera.js +2 -8
- package/dist/esm/react/hooks/useWallet.js +5 -6
- package/dist/esm/react/hooks/useWalletAuth.js +3 -4
- package/dist/esm/react/hooks/useWalletDevices.js +2 -2
- package/dist/esm/react/index.js +4 -4
- package/dist/esm/react/transactionReview/TransactionReviewHost.js +1 -1
- package/dist/esm/react/transactionReview/boundCalls.js +5 -39
- package/dist/esm/react/transactionReview/controller.js +3 -4
- package/dist/esm/react/transactionReview/snapshot.js +1 -1
- package/dist/esm/react/utils/walletIframe.js +11 -52
- package/dist/esm/sdk/ConfirmationDrawer-DY0_yeUV.js +1 -0
- package/dist/esm/sdk/NonceCoordinator-CFFq8-Q9.js +1 -0
- package/dist/esm/sdk/accountLifecycle-CAMVowDl.js +1 -0
- package/dist/esm/sdk/activeWalletSession-DiZcKjB_.js +1 -0
- package/dist/esm/sdk/adapters-DdDOQzl4.js +2 -0
- package/dist/esm/sdk/appearance-ZGVLwA4N.js +1 -0
- package/dist/esm/sdk/authenticatorOptions-DMLnDWT2.js +1 -0
- package/dist/esm/sdk/authorizationAdmission-Ckx6q6tp.js +1 -0
- package/dist/esm/sdk/bytes-BBYkulRB.js +1 -0
- package/dist/esm/sdk/canonicalPrimitives-CKPGgpxg.js +1 -0
- package/dist/esm/sdk/canonicalSignerErrorCode-DEHsPxNm.js +1 -0
- package/dist/esm/sdk/capabilityKinds-CKQ4Uqnv.js +1 -0
- package/dist/esm/sdk/chains-CiYQT1K4.js +1 -0
- package/dist/esm/sdk/challengeDelivery-DxXAkOfS.js +1 -0
- package/dist/esm/sdk/clientSessionPersistenceState-CImFWDj6.js +1 -0
- package/dist/esm/sdk/commitQueue-iBNUt9Bz.js +1 -0
- package/dist/esm/sdk/configBuilder-ZiZwFKt4.js +1 -0
- package/dist/esm/sdk/configHelpers-D8Ivi6p8.js +1 -0
- package/dist/esm/sdk/digestEncoding-Dzc1rzWV.js +1 -0
- package/dist/esm/sdk/display-ClqZq-Xt.js +1 -0
- package/dist/esm/sdk/ecdsaCapabilityManifest-BlzJAQF8.js +1 -0
- package/dist/esm/sdk/ecdsaChainTarget-C8ZtMZ8l.js +1 -0
- package/dist/esm/sdk/ecdsaDerivationClientWasm-CVeNEou2.js +1 -0
- package/dist/esm/sdk/ecdsaDerivationExport-BZFHSMCv.js +1 -0
- package/dist/esm/sdk/ecdsaWalletRecords-D4WeYc7H.js +1 -0
- package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-B8HzTh4T.js +1 -0
- package/dist/esm/sdk/enrichDisplayModelWithAbi-69bNckvi.js +1 -0
- package/dist/esm/sdk/evmCryptoWasm-BXsIyRon.js +1 -0
- package/dist/esm/sdk/export-viewer-host-CsFeiIhd.js +1 -0
- package/dist/esm/sdk/exportKeypairOperation-DGQIYML3.js +1 -0
- package/dist/esm/sdk/helpers-Ddy72ULN.js +1 -0
- package/dist/esm/sdk/host-B1CdRGoI.js +1 -0
- package/dist/esm/sdk/intentDigest-CE-tLw87.js +1 -0
- package/dist/esm/sdk/jsxRuntime.module-BcZNe_OA.js +2 -0
- package/dist/esm/sdk/lanes-DnBwWv4l.js +1 -0
- package/dist/esm/sdk/localOnly-ClCo6602.js +1 -0
- package/dist/esm/sdk/messages-vxz27Way.js +1 -0
- package/dist/esm/sdk/mountExportPrivateKeySurface-CBZ0wRYj.js +1 -0
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-B1qhFF6G.js +2 -0
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-fWQI3rYj.js +1 -0
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-B0d1AG3u.js +1 -0
- package/dist/esm/sdk/nonceLaneKeys-Fkvk2UPy.js +1 -0
- package/dist/esm/sdk/normalization-CpLZcL2f.js +1 -0
- package/dist/esm/sdk/normalization-DCvuCvh0.js +1 -0
- package/dist/esm/sdk/normalize-kUDm5zfS.js +1 -0
- package/dist/esm/sdk/operationFingerprint-CTR9G1NT.js +1 -0
- package/dist/esm/sdk/passkey-custody-BQj44jEM.js +1 -0
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-yJN8VAHn.js +1 -0
- package/dist/esm/sdk/presignaturePool-DwlTReFO.js +1 -0
- package/dist/esm/sdk/presignatures-DB2IPD-A.js +1 -0
- package/dist/esm/sdk/prfCache-BMpqZZ-v.js +1 -0
- package/dist/esm/sdk/primitives-CAcl7ON7.js +1 -0
- package/dist/esm/sdk/promptText-D2f5Rg0h.js +1 -0
- package/dist/esm/sdk/recovery-entrypoint-Bl5GgbW9.js +1 -0
- package/dist/esm/sdk/registration-C4sALQZO.js +1 -0
- package/dist/esm/sdk/registration-CEqVAgNJ.js +1 -0
- package/dist/esm/sdk/registrationAccounts-D4RVetMz.js +1 -0
- package/dist/esm/sdk/registrationAuthMethodInput-6ccY2Vuh.js +1 -0
- package/dist/esm/sdk/registrationIds-CdPqm-Ya.js +1 -0
- package/dist/esm/sdk/registrationIntent-DOkZcKSP.js +1 -0
- package/dist/esm/sdk/registrationSignerPlan-B9GCvpTV.js +1 -0
- package/dist/esm/sdk/requireStepUpAuth-DCVqmeee.js +1 -0
- package/dist/esm/sdk/routerAbNormalSigning-BG75eyI2.js +1 -0
- package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/esm/sdk/runtime-auth-tgfe70hU.js +1 -0
- package/dist/esm/sdk/runtime-device-link-BUxuQupR.js +1 -0
- package/dist/esm/sdk/runtime-ecdsa-tempo-DOBk_EtI.js +1 -0
- package/dist/esm/sdk/runtime-email-otp-CsAJKvYC.js +1 -0
- package/dist/esm/sdk/runtime-export-7REbcnBl.js +1 -0
- package/dist/esm/sdk/runtime-near-BA0DQf6H.js +1 -0
- package/dist/esm/sdk/runtime-preferences-cRViPE8a.js +1 -0
- package/dist/esm/sdk/runtime-recovery-RRc8Yz1y.js +1 -0
- package/dist/esm/sdk/runtime-recovery-codes-BZMiAR_5.js +1 -0
- package/dist/esm/sdk/sdkSentEvents-D3q1h-Uo.js +1 -0
- package/dist/esm/sdk/secp256k1-DSLttQND.js +1 -0
- package/dist/esm/sdk/secureRandomId-BIekT8bE.js +1 -0
- package/dist/esm/sdk/sessionPolicy-J-RrlPZQ.js +1 -0
- package/dist/esm/sdk/shared-DdfxBUGY.js +6 -0
- package/dist/esm/sdk/signEvmFamily-KUNWKVeh.js +1 -0
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-Dc57bJ3V.js +1 -0
- package/dist/esm/sdk/signEvmWithUiConfirm-CqxL7UbT.js +1 -0
- package/dist/esm/sdk/signNear-CO5bx24Z.js +1 -0
- package/dist/esm/sdk/signatureUses-CjJ233KX.js +1 -0
- package/dist/esm/sdk/signerDomain-vQmlnsbF.js +1 -0
- package/dist/esm/sdk/signingFlow-vrXxrhlG.js +2 -0
- package/dist/esm/sdk/signingQueue-BrGJXBqe.js +1 -0
- package/dist/esm/sdk/signingSessionSeal-CDLUmAFY.js +1 -0
- package/dist/esm/sdk/singletons-8UH3gOnZ.js +1 -0
- package/dist/esm/sdk/theme-_AUTWLS_.js +1 -0
- package/dist/esm/sdk/thresholdEcdsa-CO7xo1So.js +1 -0
- package/dist/esm/sdk/trace-BvbCxdXF.js +1 -0
- package/dist/esm/sdk/transaction-activity-D40ih2j-.js +1 -0
- package/dist/esm/sdk/transactionReviewAdmission-C-a3ctCJ.js +1 -0
- package/dist/esm/sdk/transactionState-DVinJk4K.js +1 -0
- package/dist/esm/sdk/tx-confirm-ui.js +7 -11
- package/dist/esm/sdk/types-BNUuaUtl.js +1 -0
- package/dist/esm/sdk/types-D3GM-uHR.js +1 -0
- package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/esm/sdk/wallet-recovery-C1kesLCF.js +1 -0
- package/dist/esm/sdk/wallet-ui.css +1 -1
- package/dist/esm/sdk/walletAuthMethodRecord-CXedSgpV.js +1 -0
- package/dist/esm/sdk/walletAuthority-B5hXHWpK.js +1 -0
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-abNZ_dvX.js +1 -0
- package/dist/esm/sdk/walletIframeIdentity-DJ0KOBHg.js +1 -0
- package/dist/esm/sdk/walletOwnershipGeneration-DoXVMDWe.js +1 -0
- package/dist/esm/sdk/walletRecoveryCommit-Cc9AqHr0.js +1 -0
- package/dist/esm/sdk/walletRecoveryRotate-DWTAFYiv.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationProjection-DWBksIJR.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationStatus-o1VgsLhA.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationStore-gEYPmu-G.js +1 -0
- package/dist/esm/sdk/walletSessionFailure-Bu4VPKTz.js +1 -0
- package/dist/esm/sdk/warmSessionHydration-DgjuUacN.js +1 -0
- package/dist/esm/sdk/webauthnP256-BEz4DEAs.js +1 -0
- package/dist/esm/sdk/webauthnPromptCoordinator-BEudHQBr.js +1 -0
- package/dist/esm/shared-ts/src/authorization/capabilityKinds.js +1 -7
- package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +2 -20
- package/dist/esm/shared-ts/src/authorization/index.js +1 -2
- package/dist/esm/shared-ts/src/authorization/operationFingerprint.js +1 -20
- package/dist/esm/shared-ts/src/authorization/walletAuthority.js +4 -51
- package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +1 -112
- package/dist/esm/shared-ts/src/device-linking/activeWalletSession.js +13 -3
- package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +6 -116
- package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +3 -270
- package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +2 -2
- package/dist/esm/shared-ts/src/device-linking/deviceManagement.js +1 -12
- package/dist/esm/shared-ts/src/device-linking/digests.js +1 -109
- package/dist/esm/shared-ts/src/device-linking/index.js +0 -2
- package/dist/esm/shared-ts/src/device-linking/parsers.js +7 -921
- package/dist/esm/shared-ts/src/device-linking/requestProof.js +1 -19
- package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +5 -358
- package/dist/esm/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +1 -172
- package/dist/esm/shared-ts/src/device-linking/wireFields.js +4 -5
- package/dist/esm/shared-ts/src/near/actions.js +1 -13
- package/dist/esm/shared-ts/src/near/nearClient.js +1 -1
- package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +3 -59
- package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +4 -8
- package/dist/esm/shared-ts/src/passkey-custody/index.js +0 -1
- package/dist/esm/shared-ts/src/signing-lanes/index.js +0 -1
- package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +0 -59
- package/dist/esm/shared-ts/src/threshold/ed25519OperationFingerprint.js +1 -1
- package/dist/esm/shared-ts/src/threshold/keyMaterialBrands.js +1 -4
- package/dist/esm/shared-ts/src/threshold/participants.js +1 -2
- package/dist/esm/shared-ts/src/threshold/signingRootScope.js +1 -4
- package/dist/esm/shared-ts/src/utils/authenticatorOptions.js +1 -12
- package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +2 -5
- package/dist/esm/shared-ts/src/utils/domainIds.js +1 -7
- package/dist/esm/shared-ts/src/utils/ecdsaCapabilityActivation.js +1 -16
- package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +6 -1
- package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +1 -23
- package/dist/esm/shared-ts/src/utils/emailOtpRecoveryKey.js +1 -42
- package/dist/esm/shared-ts/src/utils/errors.js +1 -43
- package/dist/esm/shared-ts/src/utils/index.js +18 -22
- package/dist/esm/shared-ts/src/utils/near.js +2 -74
- package/dist/esm/shared-ts/src/utils/normalize.js +1 -22
- package/dist/esm/shared-ts/src/utils/registrationAuthMethodInput.js +1 -74
- package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +6 -275
- package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -203
- package/dist/esm/shared-ts/src/utils/registrationIntent.js +1 -389
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +2 -434
- package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +6 -414
- package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +1 -334
- package/dist/esm/shared-ts/src/utils/routerAbEd25519YaoDigests.js +2 -40
- package/dist/esm/shared-ts/src/utils/routerAbNormalSigningIdentity.js +1 -1
- package/dist/esm/shared-ts/src/utils/signingSessionSeal.js +1 -6
- package/dist/esm/shared-ts/src/utils/thresholdEcdsaKeyHandle.js +1 -6
- package/dist/esm/shared-ts/src/utils/validation.js +2 -17
- package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +1 -28
- package/dist/esm/shared-ts/src/utils/walletAuthMethodRecord.js +1 -11
- package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +1 -7
- package/dist/esm/shared-ts/src/wallet-recovery/index.js +3 -5
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeIssuance.js +1 -35
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -32
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +1 -15
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -11
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -1
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +2 -42
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +3 -53
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryRotation.js +2 -63
- package/dist/esm/threshold.js +1 -1
- package/dist/esm/utils/intentDigest.js +1 -62
- 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_bg.wasm +0 -0
- 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-DY0_yeUV.js +1 -0
- package/dist/public/sdk/NonceCoordinator-CFFq8-Q9.js +1 -0
- package/dist/public/sdk/accountLifecycle-CAMVowDl.js +1 -0
- package/dist/public/sdk/activeWalletSession-DiZcKjB_.js +1 -0
- package/dist/public/sdk/adapters-DdDOQzl4.js +2 -0
- package/dist/public/sdk/appearance-ZGVLwA4N.js +1 -0
- package/dist/public/sdk/authenticatorOptions-DMLnDWT2.js +1 -0
- package/dist/public/sdk/authorizationAdmission-Ckx6q6tp.js +1 -0
- package/dist/public/sdk/bytes-BBYkulRB.js +1 -0
- package/dist/public/sdk/canonicalPrimitives-CKPGgpxg.js +1 -0
- package/dist/public/sdk/canonicalSignerErrorCode-DEHsPxNm.js +1 -0
- package/dist/public/sdk/capabilityKinds-CKQ4Uqnv.js +1 -0
- package/dist/public/sdk/chains-CiYQT1K4.js +1 -0
- package/dist/public/sdk/challengeDelivery-DxXAkOfS.js +1 -0
- package/dist/public/sdk/clientSessionPersistenceState-CImFWDj6.js +1 -0
- package/dist/public/sdk/commitQueue-iBNUt9Bz.js +1 -0
- package/dist/public/sdk/configBuilder-ZiZwFKt4.js +1 -0
- package/dist/public/sdk/configHelpers-D8Ivi6p8.js +1 -0
- package/dist/public/sdk/digestEncoding-Dzc1rzWV.js +1 -0
- package/dist/public/sdk/display-ClqZq-Xt.js +1 -0
- package/dist/public/sdk/ecdsaCapabilityManifest-BlzJAQF8.js +1 -0
- package/dist/public/sdk/ecdsaChainTarget-C8ZtMZ8l.js +1 -0
- package/dist/public/sdk/ecdsaDerivationClientWasm-CVeNEou2.js +1 -0
- package/dist/public/sdk/ecdsaDerivationExport-BZFHSMCv.js +1 -0
- package/dist/public/sdk/ecdsaWalletRecords-D4WeYc7H.js +1 -0
- package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-B8HzTh4T.js +1 -0
- package/dist/public/sdk/enrichDisplayModelWithAbi-69bNckvi.js +1 -0
- package/dist/public/sdk/evmCryptoWasm-BXsIyRon.js +1 -0
- package/dist/public/sdk/export-viewer-host-CsFeiIhd.js +1 -0
- package/dist/public/sdk/exportKeypairOperation-DGQIYML3.js +1 -0
- package/dist/public/sdk/helpers-Ddy72ULN.js +1 -0
- package/dist/public/sdk/host-B1CdRGoI.js +1 -0
- package/dist/public/sdk/intentDigest-CE-tLw87.js +1 -0
- package/dist/public/sdk/jsxRuntime.module-BcZNe_OA.js +2 -0
- package/dist/public/sdk/lanes-DnBwWv4l.js +1 -0
- package/dist/public/sdk/localOnly-ClCo6602.js +1 -0
- package/dist/public/sdk/messages-vxz27Way.js +1 -0
- package/dist/public/sdk/mountExportPrivateKeySurface-CBZ0wRYj.js +1 -0
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-B1qhFF6G.js +2 -0
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-fWQI3rYj.js +1 -0
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-B0d1AG3u.js +1 -0
- package/dist/public/sdk/nonceLaneKeys-Fkvk2UPy.js +1 -0
- package/dist/public/sdk/normalization-CpLZcL2f.js +1 -0
- package/dist/public/sdk/normalization-DCvuCvh0.js +1 -0
- package/dist/public/sdk/normalize-kUDm5zfS.js +1 -0
- package/dist/public/sdk/operationFingerprint-CTR9G1NT.js +1 -0
- package/dist/public/sdk/passkey-custody-BQj44jEM.js +1 -0
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-yJN8VAHn.js +1 -0
- package/dist/public/sdk/presignaturePool-DwlTReFO.js +1 -0
- package/dist/public/sdk/presignatures-DB2IPD-A.js +1 -0
- package/dist/public/sdk/prfCache-BMpqZZ-v.js +1 -0
- package/dist/public/sdk/primitives-CAcl7ON7.js +1 -0
- package/dist/public/sdk/promptText-D2f5Rg0h.js +1 -0
- package/dist/public/sdk/recovery-entrypoint-Bl5GgbW9.js +1 -0
- package/dist/public/sdk/registration-C4sALQZO.js +1 -0
- package/dist/public/sdk/registration-CEqVAgNJ.js +1 -0
- package/dist/public/sdk/registrationAccounts-D4RVetMz.js +1 -0
- package/dist/public/sdk/registrationAuthMethodInput-6ccY2Vuh.js +1 -0
- package/dist/public/sdk/registrationIds-CdPqm-Ya.js +1 -0
- package/dist/public/sdk/registrationIntent-DOkZcKSP.js +1 -0
- package/dist/public/sdk/registrationSignerPlan-B9GCvpTV.js +1 -0
- package/dist/public/sdk/requireStepUpAuth-DCVqmeee.js +1 -0
- package/dist/public/sdk/routerAbNormalSigning-BG75eyI2.js +1 -0
- package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/runtime-auth-tgfe70hU.js +1 -0
- package/dist/public/sdk/runtime-device-link-BUxuQupR.js +1 -0
- package/dist/public/sdk/runtime-ecdsa-tempo-DOBk_EtI.js +1 -0
- package/dist/public/sdk/runtime-email-otp-CsAJKvYC.js +1 -0
- package/dist/public/sdk/runtime-export-7REbcnBl.js +1 -0
- package/dist/public/sdk/runtime-near-BA0DQf6H.js +1 -0
- package/dist/public/sdk/runtime-preferences-cRViPE8a.js +1 -0
- package/dist/public/sdk/runtime-recovery-RRc8Yz1y.js +1 -0
- package/dist/public/sdk/runtime-recovery-codes-BZMiAR_5.js +1 -0
- package/dist/public/sdk/sdkSentEvents-D3q1h-Uo.js +1 -0
- package/dist/public/sdk/secp256k1-DSLttQND.js +1 -0
- package/dist/public/sdk/secureRandomId-BIekT8bE.js +1 -0
- package/dist/public/sdk/sessionPolicy-J-RrlPZQ.js +1 -0
- package/dist/public/sdk/shared-DdfxBUGY.js +6 -0
- package/dist/public/sdk/signEvmFamily-KUNWKVeh.js +1 -0
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-Dc57bJ3V.js +1 -0
- package/dist/public/sdk/signEvmWithUiConfirm-CqxL7UbT.js +1 -0
- package/dist/public/sdk/signNear-CO5bx24Z.js +1 -0
- package/dist/public/sdk/signatureUses-CjJ233KX.js +1 -0
- package/dist/public/sdk/signerDomain-vQmlnsbF.js +1 -0
- package/dist/public/sdk/signingFlow-vrXxrhlG.js +2 -0
- package/dist/public/sdk/signingQueue-BrGJXBqe.js +1 -0
- package/dist/public/sdk/signingSessionSeal-CDLUmAFY.js +1 -0
- package/dist/public/sdk/singletons-8UH3gOnZ.js +1 -0
- package/dist/public/sdk/theme-_AUTWLS_.js +1 -0
- package/dist/public/sdk/thresholdEcdsa-CO7xo1So.js +1 -0
- package/dist/public/sdk/trace-BvbCxdXF.js +1 -0
- package/dist/public/sdk/transaction-activity-D40ih2j-.js +1 -0
- package/dist/public/sdk/transactionReviewAdmission-C-a3ctCJ.js +1 -0
- package/dist/public/sdk/transactionState-DVinJk4K.js +1 -0
- package/dist/public/sdk/tx-confirm-ui.js +7 -11
- package/dist/public/sdk/types-BNUuaUtl.js +1 -0
- package/dist/public/sdk/types-D3GM-uHR.js +1 -0
- package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/public/sdk/wallet-recovery-C1kesLCF.js +1 -0
- package/dist/public/sdk/wallet-ui.css +1 -1
- package/dist/public/sdk/walletAuthMethodRecord-CXedSgpV.js +1 -0
- package/dist/public/sdk/walletAuthority-B5hXHWpK.js +1 -0
- package/dist/public/sdk/walletCustodyEcdsaContinuity-abNZ_dvX.js +1 -0
- package/dist/public/sdk/walletIframeIdentity-DJ0KOBHg.js +1 -0
- package/dist/public/sdk/walletOwnershipGeneration-DoXVMDWe.js +1 -0
- package/dist/public/sdk/walletRecoveryCommit-Cc9AqHr0.js +1 -0
- package/dist/public/sdk/walletRecoveryRotate-DWTAFYiv.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationProjection-DWBksIJR.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationStatus-o1VgsLhA.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationStore-gEYPmu-G.js +1 -0
- package/dist/public/sdk/walletSessionFailure-Bu4VPKTz.js +1 -0
- package/dist/public/sdk/warmSessionHydration-DgjuUacN.js +1 -0
- package/dist/public/sdk/webauthnP256-BEz4DEAs.js +1 -0
- package/dist/public/sdk/webauthnPromptCoordinator-BEudHQBr.js +1 -0
- package/dist/public/sdk/workers/device-linking-key.worker.js +18 -0
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +1490 -1268
- package/dist/public/sdk/workers/ecdsa-online-client.worker.js +96 -0
- package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +101 -1
- package/dist/public/sdk/workers/email-otp.worker.js +267 -237
- package/dist/public/sdk/workers/evm-crypto.worker.js +12 -8
- package/dist/public/sdk/workers/passkey-mpc-export.worker.js +30 -1
- 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 +10 -8
- package/dist/public/sdk/workers/tempo-signer.worker.js +12 -8
- package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +3 -1
- 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 +391 -295
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/shared-ts/src/device-linking/activeWalletSession.d.ts +2 -1
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +10 -0
- package/dist/types/shared-ts/src/threshold/ed25519OperationFingerprint.d.ts +2 -1
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +3 -1
- package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +0 -9
- package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +1 -1
- package/dist/types/wallet/build-paths.d.ts +0 -4
- package/dist/types/wallet/src/SeamsWeb/SeamsWeb.d.ts +26 -146
- package/dist/types/wallet/src/SeamsWeb/assembly/browserSigningSurfaceAssembly.d.ts +7 -6
- package/dist/types/wallet/src/SeamsWeb/assembly/browserSigningSurfacePorts.d.ts +2 -4
- package/dist/types/wallet/src/SeamsWeb/assembly/createWalletIframeRouter.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/assembly/initializeBrowserSigningRuntime.d.ts +0 -2
- package/dist/types/wallet/src/SeamsWeb/index.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/operations/auth/login.d.ts +2 -8
- package/dist/types/wallet/src/SeamsWeb/operations/auth/unlockCompletion.d.ts +26 -0
- package/dist/types/wallet/src/SeamsWeb/operations/auth/unlockPendingRegistration.d.ts +14 -0
- package/dist/types/wallet/src/SeamsWeb/operations/auth/unlockSessionPolicy.d.ts +16 -0
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/challenge.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.d.ts +3 -2
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/revokeAuthMethod.d.ts +17 -1
- package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDevice.d.ts +0 -7
- package/dist/types/wallet/src/SeamsWeb/operations/devices/walletHostComposition.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/operations/near/actions.d.ts +4 -21
- package/dist/types/wallet/src/SeamsWeb/operations/near/delegateAction.d.ts +4 -14
- package/dist/types/wallet/src/SeamsWeb/operations/near/signDelegateAction.d.ts +14 -0
- package/dist/types/wallet/src/SeamsWeb/operations/near/signNEP413.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecovery.d.ts +11 -11
- package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryValidation.d.ts +18 -4
- package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +4 -20
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registration.d.ts +10 -4
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationEd25519Yao.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationSignerSet.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationTerminalCommit.d.ts +0 -4
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationTiming.d.ts +2 -3
- package/dist/types/wallet/src/SeamsWeb/operations/tempo/index.d.ts +0 -3
- package/dist/types/wallet/src/SeamsWeb/publicApi/auth.d.ts +4 -13
- package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +22 -43
- package/dist/types/wallet/src/SeamsWeb/publicApi/devices.d.ts +3 -21
- package/dist/types/wallet/src/SeamsWeb/publicApi/evm.d.ts +10 -16
- package/dist/types/wallet/src/SeamsWeb/publicApi/evmFamilyCommands.d.ts +6 -0
- package/dist/types/wallet/src/SeamsWeb/publicApi/index.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/publicApi/keyExport.d.ts +8 -16
- package/dist/types/wallet/src/SeamsWeb/publicApi/near.d.ts +10 -10
- package/dist/types/wallet/src/SeamsWeb/publicApi/nearCommands.d.ts +17 -0
- package/dist/types/wallet/src/SeamsWeb/publicApi/placement.d.ts +90 -0
- package/dist/types/wallet/src/SeamsWeb/publicApi/placement.typecheck.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/publicApi/session.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/publicApi/tempo.d.ts +11 -11
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +106 -243
- package/dist/types/wallet/src/SeamsWeb/publicApi/waitForNearAccount.d.ts +27 -0
- package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +33 -78
- package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +8 -31
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/deviceCommands.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/emailOtpCommands.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/evmFamilyCommands.d.ts +6 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/inboundMessages.d.ts +62 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/nearCommands.d.ts +6 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/placementCommands.d.ts +31 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/preferenceState.d.ts +35 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/preferences.d.ts +10 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/registrationCommands.d.ts +6 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +36 -121
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/sessionCommands.d.ts +6 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +29 -35
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/WalletHostRuntime.d.ts +98 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/controller.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/context.d.ts +11 -9
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createDeviceDomain.d.ts +20 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createEmailOtpCommands.d.ts +11 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createEvmFamilyCommands.d.ts +8 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createNearCommands.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createPlacementCommands.d.ts +11 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createRegistrationCommands.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createSessionCommands.d.ts +16 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/handlers/placement.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/handlers/walletIframeHandler.types.d.ts +7 -3
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/hostedWalletSeamsSession.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/reconcileWalletPlacement.d.ts +10 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +4 -4
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestWalletMove.d.ts +11 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeContext.d.ts +5 -3
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeLoader.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/sessionObserver.d.ts +39 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/walletMoveLocator.d.ts +5 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/walletMutationGuard.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/configuration.d.ts +30 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/emailOtpLifecycle.d.ts +43 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/exactSessionState.d.ts +15 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/facadeBoundary.d.ts +14 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +35 -100
- package/dist/types/wallet/src/core/config/chains.d.ts +1 -3
- package/dist/types/wallet/src/core/config/configBuilder.d.ts +16 -6
- package/dist/types/wallet/src/core/config/defaultConfigs.d.ts +3 -4
- package/dist/types/wallet/src/core/config/defineConfig.d.ts +3 -6
- package/dist/types/wallet/src/core/config/presignatures.d.ts +3 -0
- package/dist/types/wallet/src/core/diagnostics/registration.d.ts +2 -0
- package/dist/types/wallet/src/core/indexedDB/normalization.d.ts +5 -0
- package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +2 -2
- package/dist/types/wallet/src/core/indexedDB/pendingWalletRegistrationCommit.d.ts +0 -10
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/accountSignerRows.d.ts +44 -0
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.d.ts +0 -2
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.d.ts +0 -5
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/manager.d.ts +11 -0
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/nonceLeaseRows.d.ts +23 -0
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/repositories.d.ts +1 -0
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/signerOutboxRows.d.ts +15 -0
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletOwnershipGeneration.d.ts +6 -0
- package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -1
- package/dist/types/wallet/src/core/rpcClients/near/accountExists.d.ts +3 -0
- package/dist/types/wallet/src/core/rpcClients/near/rpcCalls.d.ts +1 -14
- package/dist/types/wallet/src/core/rpcClients/relayer/ecdsaPrepareSession.d.ts +13 -0
- package/dist/types/wallet/src/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.d.ts +3 -3
- package/dist/types/wallet/src/core/rpcClients/relayer/relayerHttp.d.ts +17 -0
- package/dist/types/wallet/src/core/rpcClients/relayer/routerAbNormalSigning.d.ts +19 -3
- package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +29 -40
- package/dist/types/wallet/src/core/rpcClients/relayer/walletSessionAuthorizationStatus.d.ts +34 -0
- package/dist/types/wallet/src/core/signingEngine/assembly/ports/shared.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/assembly/ports/warmSigning.d.ts +2 -1
- package/dist/types/wallet/src/core/signingEngine/assembly/warmup.d.ts +2 -14
- package/dist/types/wallet/src/core/signingEngine/chains/near/nearSignerWasm.d.ts +2 -6
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/public.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/emailOtpPublic.d.ts +1 -32
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.d.ts +3 -82
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.d.ts +62 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/requireEvmFamilyStepUpAuth.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/secp256k1.d.ts +4 -55
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signingFlow.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/thresholdAdmission.d.ts +3 -2
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.d.ts +33 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signatureOnlySigning.d.ts +16 -2
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/signNear.d.ts +1 -2
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/signNep413.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/interfaces/ecdsaChainTarget.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/interfaces/near.d.ts +3 -0
- package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.d.ts +9 -5
- package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/presignaturePoolPolicy.d.ts +5 -0
- package/dist/types/wallet/src/core/signingEngine/session/SigningSessionCoordinator.d.ts +1 -7
- 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 -17
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaSigningSessionAuthority.d.ts +2 -33
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/exportRecovery.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/exportRecoveryRuntime.d.ts +14 -3
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/publicTypes.d.ts +1 -2
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/workerEnrollment.d.ts +0 -12
- package/dist/types/wallet/src/core/signingEngine/session/lanes/walletExecutionLaneHydration.d.ts +11 -25
- package/dist/types/wallet/src/core/signingEngine/session/lifecycle/walletSessionStatus.d.ts +0 -8
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/session/operationState/preparedOperation.d.ts +0 -8
- package/dist/types/wallet/src/core/signingEngine/session/operationState/trace.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/operationState/transactionState.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.d.ts +2 -0
- package/dist/types/wallet/src/core/signingEngine/session/public.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/routerAbSigningWalletSession.d.ts +2 -0
- package/dist/types/wallet/src/core/signingEngine/session/userPreferences.d.ts +8 -11
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/capabilityReader.d.ts +2 -1
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/capabilityReaderCore.d.ts +2 -1
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.d.ts +6 -12
- package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/operationStepUp.d.ts +6 -5
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +6 -17
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/walletCustody/ceremonyDriver.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/walletCustody/walletRegistrationEd25519.d.ts +17 -0
- package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaPresignLifecycle.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.d.ts +9 -0
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTransport.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +15 -27
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/enrollment.d.ts +1 -17
- package/dist/types/wallet/src/core/types/rpc.d.ts +0 -1
- package/dist/types/wallet/src/core/types/sdkPublicResults.d.ts +1 -0
- package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +2 -0
- package/dist/types/wallet/src/core/types/seams.d.ts +12 -9
- package/dist/types/wallet/src/core/types/signer-worker.d.ts +2 -1
- package/dist/types/wallet/src/externalEvm/controller.d.ts +5 -1
- package/dist/types/wallet/src/index.d.ts +5 -2
- package/dist/types/wallet/src/react/components/AccountMenuButton/WalletRegionSection.d.ts +54 -0
- package/dist/types/wallet/src/react/components/AccountMenuButton/WalletSettingsLayout.d.ts +7 -2
- package/dist/types/wallet/src/react/components/AccountMenuButton/index.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/types.d.ts +1 -0
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/public.d.ts +1 -1
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/types.d.ts +2 -5
- package/dist/types/wallet/src/react/context/SeamsWebProvider.d.ts +0 -5
- package/dist/types/wallet/src/react/context/useLoginStateRefresher.d.ts +1 -1
- package/dist/types/wallet/src/react/context/useNearProvisioningStateRefresh.d.ts +1 -1
- package/dist/types/wallet/src/react/context/useSeamsContextValue.d.ts +2 -2
- package/dist/types/wallet/src/react/context/useWalletIframeLifecycle.d.ts +4 -2
- package/dist/types/wallet/src/react/hooks/useQRCamera.d.ts +1 -7
- package/dist/types/wallet/src/react/hooks/useWallet.d.ts +5 -6
- package/dist/types/wallet/src/react/hooks/useWalletAuth.d.ts +1 -1
- package/dist/types/wallet/src/react/hooks/useWalletDevices.d.ts +1 -1
- package/dist/types/wallet/src/react/index.d.ts +2 -2
- package/dist/types/wallet/src/react/transactionReview/boundCalls.d.ts +0 -26
- package/dist/types/wallet/src/react/types.d.ts +12 -20
- package/dist/types/wallet/src/react/utils/walletIframe.d.ts +2 -6
- package/dist/workers/device-linking-key.worker.js +18 -0
- package/dist/workers/ecdsa-derivation-client.worker.js +1490 -1268
- package/dist/workers/ecdsa-online-client.worker.js +96 -0
- package/dist/workers/ecdsa-presign-client.worker.js +101 -1
- package/dist/workers/email-otp.worker.js +267 -237
- package/dist/workers/evm-crypto.worker.js +12 -8
- package/dist/workers/passkey-mpc-export.worker.js +30 -1
- 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 +10 -8
- package/dist/workers/tempo-signer.worker.js +12 -8
- package/dist/workers/wallet-custody-ceremony.worker.js +3 -1
- package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
- package/package.json +1 -1
- package/dist/esm/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +0 -817
- package/dist/esm/SeamsWeb/assembly/browserWorkerWarmupPolicy.js +0 -31
- package/dist/esm/SeamsWeb/assembly/configureBrowserIndexedDB.js +0 -10
- package/dist/esm/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +0 -95
- package/dist/esm/SeamsWeb/assembly/createBrowserSigningRuntime.js +0 -34
- package/dist/esm/SeamsWeb/assembly/createBrowserSigningStores.js +0 -39
- package/dist/esm/SeamsWeb/assembly/createBrowserStepUpRuntime.js +0 -34
- package/dist/esm/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -29
- package/dist/esm/SeamsWeb/assembly/initializeBrowserSigningRuntime.js +0 -19
- package/dist/esm/SeamsWeb/assembly/runtimeConfig.js +0 -12
- package/dist/esm/SeamsWeb/operations/auth/login.js +0 -4383
- package/dist/esm/SeamsWeb/operations/auth/scheduleEcdsaSessionPresignaturePrefill.js +0 -41
- package/dist/esm/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.js +0 -64
- package/dist/esm/SeamsWeb/operations/auth/walletAuth.js +0 -142
- package/dist/esm/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +0 -33
- package/dist/esm/SeamsWeb/operations/auth/walletUnlockSubject.js +0 -288
- package/dist/esm/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.js +0 -72
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +0 -191
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/challenge.js +0 -247
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +0 -568
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/localEmailOtpProjection.js +0 -69
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/registrationAuthority.js +0 -62
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/registrationOffer.js +0 -69
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/walletActivation.js +0 -95
- package/dist/esm/SeamsWeb/operations/authMethods/passkey/addPasskey.js +0 -260
- package/dist/esm/SeamsWeb/operations/authMethods/passkey/ecdsaBootstrap.js +0 -17
- package/dist/esm/SeamsWeb/operations/authMethods/passkey/exactPasskeyAuthority.js +0 -34
- package/dist/esm/SeamsWeb/operations/authMethods/passkey/localUnlock.js +0 -16
- package/dist/esm/SeamsWeb/operations/authMethods/passkey/loginAssertion.js +0 -25
- package/dist/esm/SeamsWeb/operations/authMethods/passkey/registrationAuthority.js +0 -84
- package/dist/esm/SeamsWeb/operations/authMethods/revokeAuthMethod.js +0 -205
- package/dist/esm/SeamsWeb/operations/authMethods/sourcePasskeyProof.js +0 -12
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.js +0 -444
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingComposition.js +0 -106
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingEd25519ExportRoot.js +0 -194
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +0 -524
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingOwnerTransport.js +0 -135
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingResume.js +0 -212
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingTargetCredential.js +0 -63
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingTargetEd25519ExportRoot.js +0 -61
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +0 -337
- package/dist/esm/SeamsWeb/operations/devices/linkDevice.js +0 -75
- package/dist/esm/SeamsWeb/operations/devices/linkDeviceFlow.js +0 -1383
- package/dist/esm/SeamsWeb/operations/devices/linkDeviceFlowSupport.js +0 -143
- package/dist/esm/SeamsWeb/operations/devices/linkDeviceTargetActivation.js +0 -119
- package/dist/esm/SeamsWeb/operations/devices/walletHostComposition.js +0 -130
- package/dist/esm/SeamsWeb/operations/devices/walletHostOwnerAuthority.js +0 -191
- package/dist/esm/SeamsWeb/operations/evm/index.js +0 -35
- package/dist/esm/SeamsWeb/operations/near/actions.js +0 -484
- package/dist/esm/SeamsWeb/operations/near/commandSubject.js +0 -14
- package/dist/esm/SeamsWeb/operations/near/index.js +0 -37
- package/dist/esm/SeamsWeb/operations/near/signNEP413.js +0 -116
- package/dist/esm/SeamsWeb/operations/recovery/accountSync.js +0 -21
- package/dist/esm/SeamsWeb/operations/recovery/recoveryWalletBinding.js +0 -43
- package/dist/esm/SeamsWeb/operations/recovery/syncAccount.js +0 -912
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCodeBackup.js +0 -100
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryRotation.js +0 -213
- package/dist/esm/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecovery.js +0 -184
- package/dist/esm/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryUnlock.js +0 -247
- package/dist/esm/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryValidation.js +0 -134
- package/dist/esm/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +0 -354
- package/dist/esm/SeamsWeb/operations/registration/registration.js +0 -3818
- package/dist/esm/SeamsWeb/operations/registration/registrationEd25519Yao.js +0 -166
- package/dist/esm/SeamsWeb/operations/registration/registrationSignerSet.js +0 -60
- package/dist/esm/SeamsWeb/operations/registration/registrationStrictEcdsa.js +0 -343
- package/dist/esm/SeamsWeb/operations/registration/registrationTerminalCommit.js +0 -296
- package/dist/esm/SeamsWeb/operations/registration/registrationTiming.js +0 -682
- package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +0 -36
- package/dist/esm/SeamsWeb/operations/session/thresholdWarmSessionBootstrap.js +0 -20
- package/dist/esm/SeamsWeb/publicApi/awaitNearReady.js +0 -72
- package/dist/esm/SeamsWeb/publicApi/preferences.js +0 -61
- package/dist/esm/SeamsWeb/publicApi/recovery.js +0 -19
- package/dist/esm/SeamsWeb/publicApi/types.js +0 -10
- package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +0 -3917
- package/dist/esm/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.js +0 -29
- package/dist/esm/core/browser/walletIframe/events.js +0 -6
- package/dist/esm/core/browser/walletIframe/host-mode.js +0 -9
- package/dist/esm/core/config/managedRuntimeScope.js +0 -16
- package/dist/esm/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -144
- package/dist/esm/core/platform/browser/createBrowserPlatformRuntime.js +0 -535
- package/dist/esm/core/platform/secretSources.js +0 -111
- package/dist/esm/core/platform/signerCoreCommandAdapters.js +0 -122
- package/dist/esm/core/rpcClients/near/rpcCalls.js +0 -376
- package/dist/esm/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.js +0 -67
- package/dist/esm/core/rpcClients/relayer/passkeyCustodyEnvelope.js +0 -218
- package/dist/esm/core/rpcClients/relayer/sealedRefreshCapabilities.js +0 -148
- package/dist/esm/core/rpcClients/relayer/thresholdEcdsa.js +0 -235
- package/dist/esm/core/rpcClients/relayer/walletRecoveryGoogleEmailOtp.js +0 -161
- package/dist/esm/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +0 -718
- package/dist/esm/core/signingEngine/assembly/createManagers.js +0 -80
- package/dist/esm/core/signingEngine/assembly/createPorts.js +0 -54
- package/dist/esm/core/signingEngine/assembly/ports/emailOtp.js +0 -30
- package/dist/esm/core/signingEngine/assembly/ports/evmFamily.js +0 -73
- package/dist/esm/core/signingEngine/assembly/ports/near.js +0 -21
- package/dist/esm/core/signingEngine/assembly/ports/recovery.js +0 -75
- package/dist/esm/core/signingEngine/assembly/ports/registration.js +0 -22
- package/dist/esm/core/signingEngine/assembly/ports/session.js +0 -25
- package/dist/esm/core/signingEngine/assembly/ports/shared.js +0 -39
- package/dist/esm/core/signingEngine/assembly/ports/stepUpRuntime.js +0 -67
- package/dist/esm/core/signingEngine/assembly/ports/warmSigning.js +0 -92
- package/dist/esm/core/signingEngine/assembly/warmup.js +0 -64
- package/dist/esm/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -427
- package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportFlow.js +0 -660
- package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +0 -249
- package/dist/esm/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +0 -353
- package/dist/esm/core/signingEngine/flows/recovery/exportKeypairOperation.js +0 -213
- package/dist/esm/core/signingEngine/flows/recovery/exportLaneSelection.js +0 -283
- package/dist/esm/core/signingEngine/flows/recovery/keyExportConfirmation.js +0 -325
- package/dist/esm/core/signingEngine/flows/recovery/keyExportFlow.js +0 -81
- package/dist/esm/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +0 -192
- package/dist/esm/core/signingEngine/flows/recovery/public.js +0 -26
- package/dist/esm/core/signingEngine/flows/recovery/stepUpAuthorization.js +0 -139
- package/dist/esm/core/signingEngine/flows/registration/nearProvisioningRegistry.js +0 -79
- package/dist/esm/core/signingEngine/flows/registration/public.js +0 -85
- package/dist/esm/core/signingEngine/flows/registration/services/ecdsaRegistrationSessions.js +0 -77
- package/dist/esm/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +0 -82
- package/dist/esm/core/signingEngine/flows/registration/session.js +0 -24
- package/dist/esm/core/signingEngine/flows/signEvmFamily/emailOtpPublic.js +0 -123
- package/dist/esm/core/signingEngine/nonce/NonceCoordinator.js +0 -1026
- package/dist/esm/core/signingEngine/nonce/evmNonceLane.js +0 -182
- package/dist/esm/core/signingEngine/nonce/nearNonceLane.js +0 -669
- package/dist/esm/core/signingEngine/nonce/nonceDiagnostics.js +0 -232
- package/dist/esm/core/signingEngine/nonce/nonceLeaseState.js +0 -128
- package/dist/esm/core/signingEngine/nonce/nonceUtils.js +0 -33
- package/dist/esm/core/signingEngine/session/SigningSessionCoordinator.js +0 -344
- package/dist/esm/core/signingEngine/session/authority/authorityOperationResolver.js +0 -114
- package/dist/esm/core/signingEngine/session/availability/canonicalLaneInventory.js +0 -127
- package/dist/esm/core/signingEngine/session/availability/clientSessionExpiryInvalidator.js +0 -72
- package/dist/esm/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +0 -214
- package/dist/esm/core/signingEngine/session/availability/readiness.js +0 -464
- package/dist/esm/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -130
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +0 -106
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -47
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLogin.js +0 -930
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaPublication.js +0 -414
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaRecovery.js +0 -264
- package/dist/esm/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -373
- package/dist/esm/core/signingEngine/session/emailOtp/exportRecovery.js +0 -284
- package/dist/esm/core/signingEngine/session/emailOtp/exportRecoveryRuntime.js +0 -50
- package/dist/esm/core/signingEngine/session/emailOtp/persistedSnapshot.js +0 -22
- package/dist/esm/core/signingEngine/session/emailOtp/publicTypes.js +0 -38
- package/dist/esm/core/signingEngine/session/emailOtp/routePlan.js +0 -60
- package/dist/esm/core/signingEngine/session/emailOtp/runtimeConfig.js +0 -24
- package/dist/esm/core/signingEngine/session/emailOtp/sealedRefreshPolicy.js +0 -49
- package/dist/esm/core/signingEngine/session/emailOtp/sealedRestoreOrchestrator.js +0 -234
- package/dist/esm/core/signingEngine/session/emailOtp/sealedRuntimePurpose.js +0 -16
- package/dist/esm/core/signingEngine/session/emailOtp/sealedSessionRegistry.js +0 -40
- package/dist/esm/core/signingEngine/session/emailOtp/status.js +0 -72
- package/dist/esm/core/signingEngine/session/emailOtp/walletUnlock.js +0 -168
- package/dist/esm/core/signingEngine/session/emailOtp/warmSessionRuntime.js +0 -70
- package/dist/esm/core/signingEngine/session/emailOtp/workerEnrollment.js +0 -159
- package/dist/esm/core/signingEngine/session/emailOtp/workerRequests.js +0 -84
- package/dist/esm/core/signingEngine/session/emailOtp/zeroize.js +0 -9
- package/dist/esm/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -104
- package/dist/esm/core/signingEngine/session/identity/exactWalletSessionReader.js +0 -54
- package/dist/esm/core/signingEngine/session/identity/ownerLaneScope.js +0 -185
- package/dist/esm/core/signingEngine/session/lanes/walletExecutionLaneHydration.js +0 -194
- package/dist/esm/core/signingEngine/session/lifecycle/canonicalWalletSessionStatus.js +0 -32
- package/dist/esm/core/signingEngine/session/lifecycle/walletSessionStatus.js +0 -123
- package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityHydration.js +0 -75
- package/dist/esm/core/signingEngine/session/material/ecdsaSealedRuntime.js +0 -197
- package/dist/esm/core/signingEngine/session/material/mpcCapabilityHydration.js +0 -79
- package/dist/esm/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.js +0 -122
- package/dist/esm/core/signingEngine/session/material/restorableMpcMaterialRef.internal.js +0 -21
- package/dist/esm/core/signingEngine/session/passkey/ecdsaBootstrap.js +0 -184
- package/dist/esm/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -205
- package/dist/esm/core/signingEngine/session/passkey/ecdsaRecovery.js +0 -84
- package/dist/esm/core/signingEngine/session/passkey/ecdsaSessionProvision.js +0 -224
- package/dist/esm/core/signingEngine/session/passkey/ecdsaWarmCapabilityBootstrap.js +0 -147
- package/dist/esm/core/signingEngine/session/passkey/ed25519Provisioner.js +0 -55
- package/dist/esm/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -228
- package/dist/esm/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +0 -536
- package/dist/esm/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +0 -94
- package/dist/esm/core/signingEngine/session/passkey/ed25519YaoSealedSession.js +0 -57
- package/dist/esm/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +0 -281
- package/dist/esm/core/signingEngine/session/passkey/passkeyCustodySessionCache.js +0 -90
- package/dist/esm/core/signingEngine/session/passkey/public.js +0 -15
- package/dist/esm/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.js +0 -247
- package/dist/esm/core/signingEngine/session/persistence/clientSessionPersistence.js +0 -135
- package/dist/esm/core/signingEngine/session/persistence/walletSessionAuthorizationProjection.js +0 -51
- package/dist/esm/core/signingEngine/session/planning/operationIdBinding.js +0 -36
- package/dist/esm/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -163
- package/dist/esm/core/signingEngine/session/public.js +0 -44
- package/dist/esm/core/signingEngine/session/routerAbSigningWalletSession.js +0 -119
- package/dist/esm/core/signingEngine/session/sealedRecovery/exactRecordLookup.js +0 -148
- package/dist/esm/core/signingEngine/session/sealedRecovery/recoveryRecord.js +0 -248
- package/dist/esm/core/signingEngine/session/sealedRecovery/restoreCoordinator.js +0 -229
- package/dist/esm/core/signingEngine/session/userPreferences.js +0 -212
- package/dist/esm/core/signingEngine/session/warmCapabilities/capabilityReader.js +0 -62
- package/dist/esm/core/signingEngine/session/warmCapabilities/capabilityReaderCore.js +0 -293
- package/dist/esm/core/signingEngine/session/warmCapabilities/clearVolatileWarmSigningMaterial.js +0 -44
- package/dist/esm/core/signingEngine/session/warmCapabilities/ecdsaBootstrapPersistence.js +0 -107
- package/dist/esm/core/signingEngine/session/warmCapabilities/ecdsaBootstrapQueue.js +0 -22
- package/dist/esm/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefill.js +0 -93
- package/dist/esm/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +0 -50
- package/dist/esm/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.js +0 -9
- package/dist/esm/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.js +0 -251
- package/dist/esm/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +0 -98
- package/dist/esm/core/signingEngine/session/warmCapabilities/public.js +0 -31
- package/dist/esm/core/signingEngine/session/warmCapabilities/readModel.js +0 -155
- package/dist/esm/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.js +0 -256
- package/dist/esm/core/signingEngine/session/warmCapabilities/statusReader.js +0 -100
- package/dist/esm/core/signingEngine/session/warmCapabilities/transitions.js +0 -47
- package/dist/esm/core/signingEngine/session/warmCapabilities/types.js +0 -122
- package/dist/esm/core/signingEngine/session/warmCapabilities/volatileWarmMaterialCommands.js +0 -45
- package/dist/esm/core/signingEngine/stepUpConfirmation/channel/confirmCommon.js +0 -89
- package/dist/esm/core/signingEngine/stepUpConfirmation/channel/confirmTypes.js +0 -12
- package/dist/esm/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -31
- package/dist/esm/core/signingEngine/stepUpConfirmation/otpPrompt/exportAuthorization.js +0 -108
- package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +0 -271
- package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -167
- package/dist/esm/core/signingEngine/stepUpConfirmation/userConfirmationType.js +0 -15
- package/dist/esm/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -67
- package/dist/esm/core/signingEngine/threshold/ecdsa/activation.js +0 -267
- package/dist/esm/core/signingEngine/threshold/ecdsa/bootstrapSession.js +0 -115
- package/dist/esm/core/signingEngine/threshold/ecdsa/postRegistrationSessionActivation.js +0 -132
- package/dist/esm/core/signingEngine/threshold/ecdsa/signingQueue.js +0 -16
- package/dist/esm/core/signingEngine/threshold/ed25519/commitQueue.js +0 -16
- package/dist/esm/core/signingEngine/threshold/ed25519/connectSession.js +0 -137
- package/dist/esm/core/signingEngine/threshold/ed25519/yaoActiveClientRegistry.js +0 -146
- package/dist/esm/core/signingEngine/threshold/ed25519/yaoClient.js +0 -563
- package/dist/esm/core/signingEngine/threshold/ed25519/yaoPageLifecycleOwner.js +0 -23
- package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcExportManager.js +0 -233
- package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +0 -493
- package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +0 -746
- package/dist/esm/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -599
- package/dist/esm/core/signingEngine/uiConfirm/confirmationReadinessRegistry.js +0 -41
- package/dist/esm/core/signingEngine/uiConfirm/exportConfirmRequest.js +0 -149
- package/dist/esm/core/signingEngine/uiConfirm/handlers/determineConfirmationConfig.js +0 -82
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flowOrchestrator.js +0 -363
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +0 -337
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/adapters/request.js +0 -120
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -149
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/registration.js +0 -235
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.js +0 -178
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/signing.js +0 -684
- package/dist/esm/core/signingEngine/uiConfirm/handlers/handlePromptFromWorker.js +0 -90
- package/dist/esm/core/signingEngine/uiConfirm/ui/appearance.js +0 -27
- package/dist/esm/core/signingEngine/uiConfirm/ui/confirm-ui.js +0 -516
- package/dist/esm/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +0 -155
- package/dist/esm/core/signingEngine/uiConfirm/ui/export-viewer-host.js +0 -207
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +0 -318
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +0 -518
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/confirmation-controller.js +0 -80
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +0 -86
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +0 -82
- package/dist/esm/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +0 -12
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-activity.js +0 -46
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +0 -315
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/abi/enrichDisplayModelWithAbi.js +0 -77
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/confirmation-tree.js +0 -27
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/fallback.js +0 -52
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/types.js +0 -62
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +0 -249
- package/dist/esm/core/signingEngine/uiConfirm/warmSessionUiConfirm.js +0 -65
- package/dist/esm/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -122
- package/dist/esm/core/signingEngine/walletCustody/ceremonyActiveClientMetadata.js +0 -94
- package/dist/esm/core/signingEngine/walletCustody/ceremonyDriver.js +0 -171
- package/dist/esm/core/signingEngine/walletCustody/ceremonyStepRunner.js +0 -20
- package/dist/esm/core/signingEngine/walletCustody/ed25519ActiveClient.js +0 -100
- package/dist/esm/core/signingEngine/walletCustody/ed25519Projection.js +0 -32
- package/dist/esm/core/signingEngine/walletCustody/ed25519SeedMaterial.js +0 -92
- package/dist/esm/core/signingEngine/walletCustody/emailOtpLink.js +0 -132
- package/dist/esm/core/signingEngine/walletCustody/joinCustodyWire.js +0 -64
- package/dist/esm/core/signingEngine/walletCustody/openCustodyCache.js +0 -126
- package/dist/esm/core/signingEngine/walletCustody/passkeyLink.js +0 -180
- package/dist/esm/core/signingEngine/walletCustody/recoveryReplacementEnvelope.js +0 -60
- package/dist/esm/core/signingEngine/walletCustody/registrationCeremony.js +0 -460
- package/dist/esm/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +0 -258
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -23
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -75
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEd25519.js +0 -129
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -178
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -102
- package/dist/esm/core/signingEngine/webauthnAuth/credentials/collectAuthenticationCredentialForChallengeB64u.js +0 -154
- package/dist/esm/core/signingEngine/webauthnAuth/device/signerSlot.js +0 -25
- package/dist/esm/core/signingEngine/webauthnAuth/walletOriginWebAuthn.js +0 -109
- package/dist/esm/core/signingEngine/workerManager/SignerWorkerManager.js +0 -68
- package/dist/esm/core/signingEngine/workerManager/deviceLinkingPorts.js +0 -342
- package/dist/esm/core/signingEngine/workerManager/deviceLinkingSourceContribution.js +0 -158
- package/dist/esm/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -13
- package/dist/esm/core/signingEngine/workerManager/ecdsaPresignLifecycle.js +0 -6
- package/dist/esm/core/signingEngine/workerManager/workerTransport.js +0 -734
- package/dist/esm/core/types/confirmationConfig.js +0 -39
- package/dist/esm/core/types/secure-confirm-worker.js +0 -22
- package/dist/esm/core/walletRuntimePaths/emailOtpWorker.js +0 -12
- package/dist/esm/core/walletRuntimePaths/multichainWorkers.js +0 -25
- package/dist/esm/core/walletRuntimePaths/walletCustodyCeremonyWorker.js +0 -18
- package/dist/esm/core/walletRuntimePaths/workers.js +0 -93
- package/dist/esm/react/context/useEagerPrewarm.js +0 -38
- package/dist/esm/sdk/ConfirmationDrawer-DrsREojk.js +0 -1
- package/dist/esm/sdk/EvmClient-DoxytQaJ.js +0 -1
- package/dist/esm/sdk/NearClient-vJ65Wjrq.js +0 -1
- package/dist/esm/sdk/NonceCoordinator-BBeadCSq.js +0 -1
- package/dist/esm/sdk/accountLifecycle-EyfYPnuT.js +0 -1
- package/dist/esm/sdk/actions-DZLxCcrU.js +0 -1
- package/dist/esm/sdk/adapters-DtAyuoiA.js +0 -2
- package/dist/esm/sdk/base-Xtd32asf.js +0 -1
- package/dist/esm/sdk/bytes-t5S5mkat.js +0 -1
- package/dist/esm/sdk/canonicalPrimitives-MPGET2cl.js +0 -1
- package/dist/esm/sdk/canonicalSignerErrorCode-C0hh_SVi.js +0 -1
- package/dist/esm/sdk/capabilityKinds-XaXXiD2B.js +0 -1
- package/dist/esm/sdk/chains-yAls2d9X.js +0 -1
- package/dist/esm/sdk/challengeDelivery-cAsaUC6U.js +0 -1
- package/dist/esm/sdk/configHelpers-CseiVoZD.js +0 -1
- package/dist/esm/sdk/csp-stylesheet-B1fAhrGB.js +0 -2
- package/dist/esm/sdk/defaultConfigs-CWpApkMq.js +0 -1
- package/dist/esm/sdk/display-jK7_hYho.js +0 -1
- package/dist/esm/sdk/domainIds-GDzjOs6i.js +0 -1
- package/dist/esm/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +0 -1
- package/dist/esm/sdk/ecdsaChainTarget-CRcRR78w.js +0 -1
- package/dist/esm/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +0 -1
- package/dist/esm/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +0 -1
- package/dist/esm/sdk/ecdsaWalletRecords-Cm1DdexN.js +0 -1
- package/dist/esm/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +0 -1
- package/dist/esm/sdk/evmCryptoWasm-CwEXiLrC.js +0 -1
- package/dist/esm/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +0 -1
- package/dist/esm/sdk/exactSessionState-CjD8gekO.js +0 -210
- package/dist/esm/sdk/exactSigningLaneIdentity-olheZx_n.js +0 -1
- package/dist/esm/sdk/export-viewer-host-jo7h_0wl.js +0 -1
- package/dist/esm/sdk/helpers-D4QckQhq.js +0 -1
- package/dist/esm/sdk/host-BAqOYnju.js +0 -1
- package/dist/esm/sdk/intentDigest-CB6zy3lN.js +0 -1
- package/dist/esm/sdk/jsxRuntime.module-CoHsKD_3.js +0 -1
- package/dist/esm/sdk/keyMaterialBrands-uVZHfAh3.js +0 -1
- package/dist/esm/sdk/localOnly-DBQRG6Qh.js +0 -1
- package/dist/esm/sdk/messages-Cv2j4SKI.js +0 -1
- package/dist/esm/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +0 -1
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +0 -2
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +0 -1
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +0 -1
- package/dist/esm/sdk/nearRpcResults--cBcfmp4.js +0 -1
- package/dist/esm/sdk/nonceLaneKeys-BBYi4g51.js +0 -1
- package/dist/esm/sdk/normalization-BGPR6osg.js +0 -1
- package/dist/esm/sdk/operationFingerprint-5-wH2Ht8.js +0 -1
- package/dist/esm/sdk/operationFingerprint-DtQb0pdp.js +0 -1
- package/dist/esm/sdk/passkey-custody-LP4UTFbn.js +0 -1
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +0 -1
- package/dist/esm/sdk/prfCache-Mbo7_USg.js +0 -1
- package/dist/esm/sdk/promptText-s8TQ6ckX.js +0 -1
- package/dist/esm/sdk/recovery-entrypoint-DkT8sFO5.js +0 -1
- package/dist/esm/sdk/registration-Btozh7uh.js +0 -1
- package/dist/esm/sdk/registration-CSAG_h4Y.js +0 -1
- package/dist/esm/sdk/registrationAccounts-DIeEVy6W.js +0 -1
- package/dist/esm/sdk/registrationIds-BIel5S0i.js +0 -1
- package/dist/esm/sdk/registrationIntent-DV1GYZ3K.js +0 -1
- package/dist/esm/sdk/registrationPreparationPreload-vOCqNuG4.js +0 -1
- package/dist/esm/sdk/registrationSignerPlan-FzD3TwxB.js +0 -1
- package/dist/esm/sdk/relayerHttp-DaPeS929.js +0 -1
- package/dist/esm/sdk/routePlan-B_KJaPtm.js +0 -1
- package/dist/esm/sdk/router-Dd3fFHk3.js +0 -1
- package/dist/esm/sdk/routerAbNormalSigning-D_fHjq5l.js +0 -1
- package/dist/esm/sdk/runtime-auth-B2M91rSx.js +0 -1
- package/dist/esm/sdk/runtime-device-link-ojjPSRaG.js +0 -1
- package/dist/esm/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +0 -1
- package/dist/esm/sdk/runtime-email-otp-DDwtKVAe.js +0 -1
- package/dist/esm/sdk/runtime-export-JXYk8sQ-.js +0 -1
- package/dist/esm/sdk/runtime-near-BB8AG6dV.js +0 -1
- package/dist/esm/sdk/runtime-preferences-DKFZYccW.js +0 -1
- package/dist/esm/sdk/runtime-recovery-C_XjsDBg.js +0 -1
- package/dist/esm/sdk/runtime-recovery-codes-CWp839mH.js +0 -1
- package/dist/esm/sdk/runtimeContext-BpObgzbj.js +0 -6
- package/dist/esm/sdk/runtimeLoader-DjgBf_yF.js +0 -1
- package/dist/esm/sdk/sdkSentEvents-_RGAEeld.js +0 -1
- package/dist/esm/sdk/secp256k1-B_6W9QDJ.js +0 -1
- package/dist/esm/sdk/secureRandomId-CTdlJ5Mx.js +0 -1
- package/dist/esm/sdk/sessionPolicy-CNVK7nJ6.js +0 -1
- package/dist/esm/sdk/shared-j_KsFbCT.js +0 -1
- package/dist/esm/sdk/signEvmFamily-CcLVBm0f.js +0 -1
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +0 -1
- package/dist/esm/sdk/signEvmWithUiConfirm-ChreN7aZ.js +0 -1
- package/dist/esm/sdk/signNear-mWbTE2Dl.js +0 -1
- package/dist/esm/sdk/signatureUses-CQkkUcwT.js +0 -1
- package/dist/esm/sdk/signerDomain-BhUTzDmF.js +0 -1
- package/dist/esm/sdk/signerLoader-By0IY24G.js +0 -1
- package/dist/esm/sdk/signingFlow-LUWrZi2d.js +0 -2
- package/dist/esm/sdk/signingSessionSeal-Mr2Xp44o.js +0 -1
- package/dist/esm/sdk/trace-M34pNGuF.js +0 -1
- package/dist/esm/sdk/transaction-activity-BbDod7ji.js +0 -1
- package/dist/esm/sdk/transactionReview-CBE5oH4c.js +0 -1
- package/dist/esm/sdk/transactionReviewAdmission-0ZgWs6q3.js +0 -1
- package/dist/esm/sdk/transactionState-9d7f3xVj.js +0 -1
- package/dist/esm/sdk/types-M7vxrYtJ.js +0 -1
- package/dist/esm/sdk/validation-dC1-_uyG.js +0 -1
- package/dist/esm/sdk/wallet-recovery-CcDZ1hMH.js +0 -1
- package/dist/esm/sdk/walletAuthority-CoWSeqvQ.js +0 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +0 -1
- package/dist/esm/sdk/walletIframeIdentity-C0b0XMQF.js +0 -1
- package/dist/esm/sdk/walletRecoveryCommit-ljxVeo-d.js +0 -1
- package/dist/esm/sdk/walletRecoveryRotate-HztDcDaY.js +0 -1
- package/dist/esm/sdk/warmSessionHydration-BPGM0YRU.js +0 -1
- package/dist/esm/sdk/webauthnP256-qu06GNFm.js +0 -1
- package/dist/esm/sdk/webauthnPromptCoordinator-DO-qfECu.js +0 -1
- package/dist/esm/shared-ts/src/authorization/walletCustodyOperation.js +0 -16
- package/dist/esm/shared-ts/src/device-linking/contracts.js +0 -8
- package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +0 -167
- package/dist/esm/shared-ts/src/passkey-custody/ceremonyCommitPayload.js +0 -43
- package/dist/esm/shared-ts/src/signing-lanes/participants.js +0 -256
- package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +0 -479
- package/dist/esm/shared-ts/src/threshold/secp256k1.js +0 -6
- package/dist/esm/shared-ts/src/utils/addAuthMethodRegistration.js +0 -103
- package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -43
- package/dist/esm/shared-ts/src/utils/exactKeys.js +0 -17
- package/dist/esm/shared-ts/src/utils/routerAbTraceContext.js +0 -36
- package/dist/esm/shared-ts/src/utils/walletAddSignerActivation.js +0 -32
- package/dist/public/sdk/ConfirmationDrawer-DrsREojk.js +0 -1
- package/dist/public/sdk/EvmClient-DoxytQaJ.js +0 -1
- package/dist/public/sdk/NearClient-vJ65Wjrq.js +0 -1
- package/dist/public/sdk/NonceCoordinator-BBeadCSq.js +0 -1
- package/dist/public/sdk/accountLifecycle-EyfYPnuT.js +0 -1
- package/dist/public/sdk/actions-DZLxCcrU.js +0 -1
- package/dist/public/sdk/adapters-DtAyuoiA.js +0 -2
- package/dist/public/sdk/base-Xtd32asf.js +0 -1
- package/dist/public/sdk/bytes-t5S5mkat.js +0 -1
- package/dist/public/sdk/canonicalPrimitives-MPGET2cl.js +0 -1
- package/dist/public/sdk/canonicalSignerErrorCode-C0hh_SVi.js +0 -1
- package/dist/public/sdk/capabilityKinds-XaXXiD2B.js +0 -1
- package/dist/public/sdk/chains-yAls2d9X.js +0 -1
- package/dist/public/sdk/challengeDelivery-cAsaUC6U.js +0 -1
- package/dist/public/sdk/configHelpers-CseiVoZD.js +0 -1
- package/dist/public/sdk/csp-stylesheet-B1fAhrGB.js +0 -2
- package/dist/public/sdk/defaultConfigs-CWpApkMq.js +0 -1
- package/dist/public/sdk/display-jK7_hYho.js +0 -1
- package/dist/public/sdk/domainIds-GDzjOs6i.js +0 -1
- package/dist/public/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +0 -1
- package/dist/public/sdk/ecdsaChainTarget-CRcRR78w.js +0 -1
- package/dist/public/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +0 -1
- package/dist/public/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +0 -1
- package/dist/public/sdk/ecdsaWalletRecords-Cm1DdexN.js +0 -1
- package/dist/public/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +0 -1
- package/dist/public/sdk/evmCryptoWasm-CwEXiLrC.js +0 -1
- package/dist/public/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +0 -1
- package/dist/public/sdk/exactSessionState-CjD8gekO.js +0 -210
- package/dist/public/sdk/exactSigningLaneIdentity-olheZx_n.js +0 -1
- package/dist/public/sdk/export-viewer-host-jo7h_0wl.js +0 -1
- package/dist/public/sdk/helpers-D4QckQhq.js +0 -1
- package/dist/public/sdk/host-BAqOYnju.js +0 -1
- package/dist/public/sdk/intentDigest-CB6zy3lN.js +0 -1
- package/dist/public/sdk/jsxRuntime.module-CoHsKD_3.js +0 -1
- package/dist/public/sdk/keyMaterialBrands-uVZHfAh3.js +0 -1
- package/dist/public/sdk/localOnly-DBQRG6Qh.js +0 -1
- package/dist/public/sdk/messages-Cv2j4SKI.js +0 -1
- package/dist/public/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +0 -1
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +0 -2
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +0 -1
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +0 -1
- package/dist/public/sdk/nearRpcResults--cBcfmp4.js +0 -1
- package/dist/public/sdk/nonceLaneKeys-BBYi4g51.js +0 -1
- package/dist/public/sdk/normalization-BGPR6osg.js +0 -1
- package/dist/public/sdk/operationFingerprint-5-wH2Ht8.js +0 -1
- package/dist/public/sdk/operationFingerprint-DtQb0pdp.js +0 -1
- package/dist/public/sdk/passkey-custody-LP4UTFbn.js +0 -1
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +0 -1
- package/dist/public/sdk/prfCache-Mbo7_USg.js +0 -1
- package/dist/public/sdk/promptText-s8TQ6ckX.js +0 -1
- package/dist/public/sdk/recovery-entrypoint-DkT8sFO5.js +0 -1
- package/dist/public/sdk/registration-Btozh7uh.js +0 -1
- package/dist/public/sdk/registration-CSAG_h4Y.js +0 -1
- package/dist/public/sdk/registrationAccounts-DIeEVy6W.js +0 -1
- package/dist/public/sdk/registrationIds-BIel5S0i.js +0 -1
- package/dist/public/sdk/registrationIntent-DV1GYZ3K.js +0 -1
- package/dist/public/sdk/registrationPreparationPreload-vOCqNuG4.js +0 -1
- package/dist/public/sdk/registrationSignerPlan-FzD3TwxB.js +0 -1
- package/dist/public/sdk/relayerHttp-DaPeS929.js +0 -1
- package/dist/public/sdk/routePlan-B_KJaPtm.js +0 -1
- package/dist/public/sdk/router-Dd3fFHk3.js +0 -1
- package/dist/public/sdk/routerAbNormalSigning-D_fHjq5l.js +0 -1
- package/dist/public/sdk/runtime-auth-B2M91rSx.js +0 -1
- package/dist/public/sdk/runtime-device-link-ojjPSRaG.js +0 -1
- package/dist/public/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +0 -1
- package/dist/public/sdk/runtime-email-otp-DDwtKVAe.js +0 -1
- package/dist/public/sdk/runtime-export-JXYk8sQ-.js +0 -1
- package/dist/public/sdk/runtime-near-BB8AG6dV.js +0 -1
- package/dist/public/sdk/runtime-preferences-DKFZYccW.js +0 -1
- package/dist/public/sdk/runtime-recovery-C_XjsDBg.js +0 -1
- package/dist/public/sdk/runtime-recovery-codes-CWp839mH.js +0 -1
- package/dist/public/sdk/runtimeContext-BpObgzbj.js +0 -6
- package/dist/public/sdk/runtimeLoader-DjgBf_yF.js +0 -1
- package/dist/public/sdk/sdkSentEvents-_RGAEeld.js +0 -1
- package/dist/public/sdk/secp256k1-B_6W9QDJ.js +0 -1
- package/dist/public/sdk/secureRandomId-CTdlJ5Mx.js +0 -1
- package/dist/public/sdk/sessionPolicy-CNVK7nJ6.js +0 -1
- package/dist/public/sdk/shared-j_KsFbCT.js +0 -1
- package/dist/public/sdk/signEvmFamily-CcLVBm0f.js +0 -1
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +0 -1
- package/dist/public/sdk/signEvmWithUiConfirm-ChreN7aZ.js +0 -1
- package/dist/public/sdk/signNear-mWbTE2Dl.js +0 -1
- package/dist/public/sdk/signatureUses-CQkkUcwT.js +0 -1
- package/dist/public/sdk/signerDomain-BhUTzDmF.js +0 -1
- package/dist/public/sdk/signerLoader-By0IY24G.js +0 -1
- package/dist/public/sdk/signingFlow-LUWrZi2d.js +0 -2
- package/dist/public/sdk/signingSessionSeal-Mr2Xp44o.js +0 -1
- package/dist/public/sdk/trace-M34pNGuF.js +0 -1
- package/dist/public/sdk/transaction-activity-BbDod7ji.js +0 -1
- package/dist/public/sdk/transactionReview-CBE5oH4c.js +0 -1
- package/dist/public/sdk/transactionReviewAdmission-0ZgWs6q3.js +0 -1
- package/dist/public/sdk/transactionState-9d7f3xVj.js +0 -1
- package/dist/public/sdk/types-M7vxrYtJ.js +0 -1
- package/dist/public/sdk/validation-dC1-_uyG.js +0 -1
- package/dist/public/sdk/wallet-recovery-CcDZ1hMH.js +0 -1
- package/dist/public/sdk/walletAuthority-CoWSeqvQ.js +0 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +0 -1
- package/dist/public/sdk/walletIframeIdentity-C0b0XMQF.js +0 -1
- package/dist/public/sdk/walletRecoveryCommit-ljxVeo-d.js +0 -1
- package/dist/public/sdk/walletRecoveryRotate-HztDcDaY.js +0 -1
- package/dist/public/sdk/warmSessionHydration-BPGM0YRU.js +0 -1
- package/dist/public/sdk/webauthnP256-qu06GNFm.js +0 -1
- package/dist/public/sdk/webauthnPromptCoordinator-DO-qfECu.js +0 -1
- package/dist/public/sdk/workers/evm_crypto.wasm +0 -0
- package/dist/public/sdk/workers/near_signer.wasm +0 -0
- package/dist/public/sdk/workers/tempo_signer.wasm +0 -0
- package/dist/types/wallet/src/SeamsWeb/assembly/browserWorkerWarmupPolicy.d.ts +0 -4
- package/dist/types/wallet/src/SeamsWeb/assembly/configureBrowserIndexedDB.d.ts +0 -3
- package/dist/types/wallet/src/SeamsWeb/operations/auth/walletAuth.d.ts +0 -56
- package/dist/types/wallet/src/SeamsWeb/operations/evm/index.d.ts +0 -9
- package/dist/types/wallet/src/SeamsWeb/operations/near/index.d.ts +0 -11
- package/dist/types/wallet/src/SeamsWeb/operations/recovery/accountSync.d.ts +0 -19
- package/dist/types/wallet/src/SeamsWeb/publicApi/awaitNearReady.d.ts +0 -27
- package/dist/types/wallet/src/SeamsWeb/publicApi/devices.typecheck.d.ts +0 -2
- package/dist/types/wallet/src/SeamsWeb/publicApi/preferences.d.ts +0 -8
- package/dist/types/wallet/src/SeamsWeb/publicApi/recovery.d.ts +0 -14
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/config-guards.d.ts +0 -15
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/registrationPreparationPreload.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/flows/registration/public.d.ts +0 -68
- package/dist/types/wallet/src/react/context/useEagerPrewarm.d.ts +0 -3
- package/dist/workers/evm_crypto.wasm +0 -0
- package/dist/workers/near_signer.wasm +0 -0
- package/dist/workers/tempo_signer.wasm +0 -0
- /package/dist/esm/sdk/{accountIds-C3Ihsd2c.js → accountIds-BzZs7YoX.js} +0 -0
- /package/dist/esm/sdk/{base64-ojm5DKcF.js → base64-CsEj-_bC.js} +0 -0
- /package/dist/esm/sdk/{browser-CsOGMbMy.js → browser-D4wUl_77.js} +0 -0
- /package/dist/esm/sdk/{errors-DfbnsXjO.js → errors-BZO3LF6G.js} +0 -0
- /package/dist/esm/sdk/{events-BJyVcnsn.js → events-DsQJQ0Cl.js} +0 -0
- /package/dist/esm/sdk/{executeWorkerOperation-CrFf3FkL.js → executeWorkerOperation-BInr8RYN.js} +0 -0
- /package/dist/esm/sdk/{jsonRpc-C85RYR0A.js → jsonRpc-DrCYQIM9.js} +0 -0
- /package/dist/esm/sdk/{keccak-zexutGfG.js → keccak-B02Fekdh.js} +0 -0
- /package/dist/esm/sdk/{profileAccountProjection-DHCaMtOu.js → profileAccountProjection-DmmfMood.js} +0 -0
- /package/dist/esm/sdk/{signerSlot-BQ1g5JNV.js → signerSlot-Dto7dObP.js} +0 -0
- /package/dist/esm/sdk/{surface-measurement-reporter-OICExWKE.js → surface-measurement-reporter-IlPOI3QK.js} +0 -0
- /package/dist/public/sdk/{accountIds-C3Ihsd2c.js → accountIds-BzZs7YoX.js} +0 -0
- /package/dist/public/sdk/{base64-ojm5DKcF.js → base64-CsEj-_bC.js} +0 -0
- /package/dist/public/sdk/{browser-CsOGMbMy.js → browser-D4wUl_77.js} +0 -0
- /package/dist/public/sdk/{errors-DfbnsXjO.js → errors-BZO3LF6G.js} +0 -0
- /package/dist/public/sdk/{events-BJyVcnsn.js → events-DsQJQ0Cl.js} +0 -0
- /package/dist/public/sdk/{executeWorkerOperation-CrFf3FkL.js → executeWorkerOperation-BInr8RYN.js} +0 -0
- /package/dist/public/sdk/{jsonRpc-C85RYR0A.js → jsonRpc-DrCYQIM9.js} +0 -0
- /package/dist/public/sdk/{keccak-zexutGfG.js → keccak-B02Fekdh.js} +0 -0
- /package/dist/public/sdk/{profileAccountProjection-DHCaMtOu.js → profileAccountProjection-DmmfMood.js} +0 -0
- /package/dist/public/sdk/{signerSlot-BQ1g5JNV.js → signerSlot-Dto7dObP.js} +0 -0
- /package/dist/public/sdk/{surface-measurement-reporter-OICExWKE.js → surface-measurement-reporter-IlPOI3QK.js} +0 -0
|
@@ -1843,6 +1843,47 @@ var SERVER_ALLOCATED_WALLET_NOUNS = [
|
|
|
1843
1843
|
var SERVER_ALLOCATED_WALLET_ADJECTIVE_SET = new Set(SERVER_ALLOCATED_WALLET_ADJECTIVES);
|
|
1844
1844
|
var SERVER_ALLOCATED_WALLET_NOUN_SET = new Set(SERVER_ALLOCATED_WALLET_NOUNS);
|
|
1845
1845
|
|
|
1846
|
+
// ../shared-ts/src/utils/exactRecord.ts
|
|
1847
|
+
var SECRET_BEARING_FIELD_SUBSTRINGS = [
|
|
1848
|
+
"prf",
|
|
1849
|
+
"kek",
|
|
1850
|
+
"seed",
|
|
1851
|
+
"scalar",
|
|
1852
|
+
"secretkey",
|
|
1853
|
+
"privatekey",
|
|
1854
|
+
"plaintext",
|
|
1855
|
+
"recoverycode",
|
|
1856
|
+
"clientroot",
|
|
1857
|
+
"holdershare"
|
|
1858
|
+
];
|
|
1859
|
+
function rejectUnknownFields(record, allowed, label, knownOnOtherBranches = []) {
|
|
1860
|
+
const allowedSet = new Set(allowed);
|
|
1861
|
+
const knownSet = new Set(knownOnOtherBranches);
|
|
1862
|
+
for (const field of Object.keys(record)) {
|
|
1863
|
+
if (allowedSet.has(field))
|
|
1864
|
+
continue;
|
|
1865
|
+
if (knownSet.has(field)) {
|
|
1866
|
+
throw new Error(`${label}.${field} is not part of ${label}`);
|
|
1867
|
+
}
|
|
1868
|
+
const normalized = field.toLowerCase().replace(/_/g, "");
|
|
1869
|
+
const namesAPublicKey = normalized.includes("publickey");
|
|
1870
|
+
if (!namesAPublicKey && SECRET_BEARING_FIELD_SUBSTRINGS.some((substring) => normalized.includes(substring))) {
|
|
1871
|
+
throw new Error(`${label}.${field} must never carry plaintext custody material`);
|
|
1872
|
+
}
|
|
1873
|
+
throw new Error(`${label}.${field} is not part of ${label}`);
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1876
|
+
function exactRecord(raw, fields, label) {
|
|
1877
|
+
const record = requireRecord(raw, label);
|
|
1878
|
+
rejectUnknownFields(record, fields, label);
|
|
1879
|
+
for (const field of fields) {
|
|
1880
|
+
if (!Object.prototype.hasOwnProperty.call(record, field) || record[field] === undefined) {
|
|
1881
|
+
throw new Error(`${label}.${field} is required`);
|
|
1882
|
+
}
|
|
1883
|
+
}
|
|
1884
|
+
return record;
|
|
1885
|
+
}
|
|
1886
|
+
|
|
1846
1887
|
// ../shared-ts/src/passkey-custody/custodySecretBinding.ts
|
|
1847
1888
|
var LANE_SCOPE_FIELDS = ["kind", "walletKeyId", "laneId", "laneShareEpoch"];
|
|
1848
1889
|
var ALLOWED_FIELDS_BY_KIND = {
|
|
@@ -2162,6 +2203,47 @@ function parseAuthorizationId(value, fieldName) {
|
|
|
2162
2203
|
return { ok: true, value: normalized };
|
|
2163
2204
|
}
|
|
2164
2205
|
|
|
2206
|
+
// ../shared-ts/src/utils/wireSchema.ts
|
|
2207
|
+
function wireLiteral(...literals) {
|
|
2208
|
+
const parse = (raw, label) => {
|
|
2209
|
+
if (!literals.includes(raw))
|
|
2210
|
+
throw new Error(`${label} is invalid`);
|
|
2211
|
+
return raw;
|
|
2212
|
+
};
|
|
2213
|
+
return Object.assign(parse, { literals });
|
|
2214
|
+
}
|
|
2215
|
+
function wireObject(shape, refine) {
|
|
2216
|
+
const keys = Object.keys(shape);
|
|
2217
|
+
const order = [
|
|
2218
|
+
...keys.filter((key) => ("literals" in shape[key])),
|
|
2219
|
+
...keys.filter((key) => !("literals" in shape[key]))
|
|
2220
|
+
];
|
|
2221
|
+
const parse = (raw, label) => {
|
|
2222
|
+
const record = exactRecord(raw, keys, label);
|
|
2223
|
+
const parsed = new Map;
|
|
2224
|
+
for (const key of order)
|
|
2225
|
+
parsed.set(key, shape[key](record[key], `${label}.${key}`));
|
|
2226
|
+
const value = Object.fromEntries(keys.map((key) => [key, parsed.get(key)]));
|
|
2227
|
+
refine?.(value, label);
|
|
2228
|
+
return value;
|
|
2229
|
+
};
|
|
2230
|
+
return Object.assign(parse, { shape });
|
|
2231
|
+
}
|
|
2232
|
+
function wireUnion(tag, variants) {
|
|
2233
|
+
const byTag = new Map;
|
|
2234
|
+
for (const variant of variants) {
|
|
2235
|
+
for (const literal of variant.shape[tag].literals)
|
|
2236
|
+
byTag.set(literal, variant);
|
|
2237
|
+
}
|
|
2238
|
+
return (raw, label) => {
|
|
2239
|
+
const record = requireRecord(raw, label);
|
|
2240
|
+
const variant = byTag.get(record[tag]);
|
|
2241
|
+
if (!variant)
|
|
2242
|
+
throw new Error(`${label}.${tag} is invalid`);
|
|
2243
|
+
return variant(record, label);
|
|
2244
|
+
};
|
|
2245
|
+
}
|
|
2246
|
+
|
|
2165
2247
|
// ../shared-ts/src/authorization/delegatedAuthority.ts
|
|
2166
2248
|
var FULL_OWNER_PERMISSIONS = Object.freeze([
|
|
2167
2249
|
"export_keys",
|
|
@@ -2181,6 +2263,12 @@ var DELEGATED_WALLET_PERMISSION_VALUES = [
|
|
|
2181
2263
|
var DELEGATED_WALLET_PERMISSION_VALUE_SET = new Set(DELEGATED_WALLET_PERMISSION_VALUES);
|
|
2182
2264
|
var canonicalPermissionSetBrand = Symbol("canonicalPermissionSetBrand");
|
|
2183
2265
|
|
|
2266
|
+
// ../shared-ts/src/device-linking/activeWalletSession.ts
|
|
2267
|
+
var walletSessionHome = wireUnion("kind", [
|
|
2268
|
+
wireObject({ kind: wireLiteral("direct") }),
|
|
2269
|
+
wireObject({ kind: wireLiteral("regional"), region: wireLiteral("US", "WEUR", "APAC", "OC") })
|
|
2270
|
+
]);
|
|
2271
|
+
|
|
2184
2272
|
// ../shared-ts/src/utils/routerAbEcdsaDerivation.ts
|
|
2185
2273
|
var ROUTER_AB_ECDSA_PRESIGN_CEREMONY_MAX_LIFETIME_MS = 5 * 60000;
|
|
2186
2274
|
var ROUTER_AB_ECDSA_DERIVATION_NORMAL_SIGNING_STATE_KIND_V1 = "router_ab_ecdsa_derivation_normal_signing_v1";
|
|
@@ -3996,858 +4084,231 @@ function parseEcdsaRoleLocalWorkerHandle(value) {
|
|
|
3996
4084
|
};
|
|
3997
4085
|
}
|
|
3998
4086
|
|
|
3999
|
-
//
|
|
4000
|
-
var
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4087
|
+
// ../../node_modules/idb/build/index.js
|
|
4088
|
+
var instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);
|
|
4089
|
+
var idbProxyableTypes;
|
|
4090
|
+
var cursorAdvanceMethods;
|
|
4091
|
+
function getIdbProxyableTypes() {
|
|
4092
|
+
return idbProxyableTypes || (idbProxyableTypes = [
|
|
4093
|
+
IDBDatabase,
|
|
4094
|
+
IDBObjectStore,
|
|
4095
|
+
IDBIndex,
|
|
4096
|
+
IDBCursor,
|
|
4097
|
+
IDBTransaction
|
|
4098
|
+
]);
|
|
4008
4099
|
}
|
|
4009
|
-
function
|
|
4010
|
-
return
|
|
4100
|
+
function getCursorAdvanceMethods() {
|
|
4101
|
+
return cursorAdvanceMethods || (cursorAdvanceMethods = [
|
|
4102
|
+
IDBCursor.prototype.advance,
|
|
4103
|
+
IDBCursor.prototype.continue,
|
|
4104
|
+
IDBCursor.prototype.continuePrimaryKey
|
|
4105
|
+
]);
|
|
4011
4106
|
}
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4107
|
+
var transactionDoneMap = new WeakMap;
|
|
4108
|
+
var transformCache = new WeakMap;
|
|
4109
|
+
var reverseTransformCache = new WeakMap;
|
|
4110
|
+
function promisifyRequest(request) {
|
|
4111
|
+
const promise = new Promise((resolve, reject) => {
|
|
4112
|
+
const unlisten = () => {
|
|
4113
|
+
request.removeEventListener("success", success);
|
|
4114
|
+
request.removeEventListener("error", error);
|
|
4115
|
+
};
|
|
4116
|
+
const success = () => {
|
|
4117
|
+
resolve(wrap(request.result));
|
|
4118
|
+
unlisten();
|
|
4119
|
+
};
|
|
4120
|
+
const error = () => {
|
|
4121
|
+
reject(request.error);
|
|
4122
|
+
unlisten();
|
|
4123
|
+
};
|
|
4124
|
+
request.addEventListener("success", success);
|
|
4125
|
+
request.addEventListener("error", error);
|
|
4126
|
+
});
|
|
4127
|
+
reverseTransformCache.set(promise, request);
|
|
4128
|
+
return promise;
|
|
4015
4129
|
}
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
const
|
|
4020
|
-
|
|
4130
|
+
function cacheDonePromiseForTransaction(tx) {
|
|
4131
|
+
if (transactionDoneMap.has(tx))
|
|
4132
|
+
return;
|
|
4133
|
+
const done = new Promise((resolve, reject) => {
|
|
4134
|
+
const unlisten = () => {
|
|
4135
|
+
tx.removeEventListener("complete", complete);
|
|
4136
|
+
tx.removeEventListener("error", error);
|
|
4137
|
+
tx.removeEventListener("abort", error);
|
|
4138
|
+
};
|
|
4139
|
+
const complete = () => {
|
|
4140
|
+
resolve();
|
|
4141
|
+
unlisten();
|
|
4142
|
+
};
|
|
4143
|
+
const error = () => {
|
|
4144
|
+
reject(tx.error || new DOMException("AbortError", "AbortError"));
|
|
4145
|
+
unlisten();
|
|
4146
|
+
};
|
|
4147
|
+
tx.addEventListener("complete", complete);
|
|
4148
|
+
tx.addEventListener("error", error);
|
|
4149
|
+
tx.addEventListener("abort", error);
|
|
4150
|
+
});
|
|
4151
|
+
transactionDoneMap.set(tx, done);
|
|
4021
4152
|
}
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4153
|
+
var idbProxyTraps = {
|
|
4154
|
+
get(target, prop, receiver) {
|
|
4155
|
+
if (target instanceof IDBTransaction) {
|
|
4156
|
+
if (prop === "done")
|
|
4157
|
+
return transactionDoneMap.get(target);
|
|
4158
|
+
if (prop === "store") {
|
|
4159
|
+
return receiver.objectStoreNames[1] ? undefined : receiver.objectStore(receiver.objectStoreNames[0]);
|
|
4160
|
+
}
|
|
4161
|
+
}
|
|
4162
|
+
return wrap(target[prop]);
|
|
4163
|
+
},
|
|
4164
|
+
set(target, prop, value) {
|
|
4165
|
+
target[prop] = value;
|
|
4166
|
+
return true;
|
|
4167
|
+
},
|
|
4168
|
+
has(target, prop) {
|
|
4169
|
+
if (target instanceof IDBTransaction && (prop === "done" || prop === "store")) {
|
|
4170
|
+
return true;
|
|
4171
|
+
}
|
|
4172
|
+
return prop in target;
|
|
4026
4173
|
}
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
|
|
4030
|
-
return kind === "tempo" ? `tempo-${chainId}` : `evm-${chainId}`;
|
|
4174
|
+
};
|
|
4175
|
+
function replaceTraps(callback) {
|
|
4176
|
+
idbProxyTraps = callback(idbProxyTraps);
|
|
4031
4177
|
}
|
|
4032
|
-
function
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
|
|
4178
|
+
function wrapFunction(func) {
|
|
4179
|
+
if (getCursorAdvanceMethods().includes(func)) {
|
|
4180
|
+
return function(...args) {
|
|
4181
|
+
func.apply(unwrap(this), args);
|
|
4182
|
+
return wrap(this.request);
|
|
4183
|
+
};
|
|
4036
4184
|
}
|
|
4037
|
-
return
|
|
4185
|
+
return function(...args) {
|
|
4186
|
+
return wrap(func.apply(unwrap(this), args));
|
|
4187
|
+
};
|
|
4038
4188
|
}
|
|
4039
|
-
function
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
if (
|
|
4043
|
-
|
|
4189
|
+
function transformCachableValue(value) {
|
|
4190
|
+
if (typeof value === "function")
|
|
4191
|
+
return wrapFunction(value);
|
|
4192
|
+
if (value instanceof IDBTransaction)
|
|
4193
|
+
cacheDonePromiseForTransaction(value);
|
|
4194
|
+
if (instanceOfAny(value, getIdbProxyableTypes()))
|
|
4195
|
+
return new Proxy(value, idbProxyTraps);
|
|
4196
|
+
return value;
|
|
4197
|
+
}
|
|
4198
|
+
function wrap(value) {
|
|
4199
|
+
if (value instanceof IDBRequest)
|
|
4200
|
+
return promisifyRequest(value);
|
|
4201
|
+
if (transformCache.has(value))
|
|
4202
|
+
return transformCache.get(value);
|
|
4203
|
+
const newValue = transformCachableValue(value);
|
|
4204
|
+
if (newValue !== value) {
|
|
4205
|
+
transformCache.set(value, newValue);
|
|
4206
|
+
reverseTransformCache.set(newValue, value);
|
|
4044
4207
|
}
|
|
4045
|
-
return
|
|
4208
|
+
return newValue;
|
|
4046
4209
|
}
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
|
|
4050
|
-
|
|
4210
|
+
var unwrap = (value) => reverseTransformCache.get(value);
|
|
4211
|
+
function openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {
|
|
4212
|
+
const request = indexedDB.open(name, version);
|
|
4213
|
+
const openPromise = wrap(request);
|
|
4214
|
+
if (upgrade) {
|
|
4215
|
+
request.addEventListener("upgradeneeded", (event) => {
|
|
4216
|
+
upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);
|
|
4217
|
+
});
|
|
4051
4218
|
}
|
|
4052
|
-
if (
|
|
4053
|
-
|
|
4054
|
-
if (namespace !== "eip155") {
|
|
4055
|
-
throw new Error("[threshold-ecdsa] EVM chain target namespace must be eip155");
|
|
4056
|
-
}
|
|
4219
|
+
if (blocked) {
|
|
4220
|
+
request.addEventListener("blocked", (event) => blocked(event.oldVersion, event.newVersion, event));
|
|
4057
4221
|
}
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
}
|
|
4064
|
-
|
|
4065
|
-
// ../shared-ts/src/threshold/participants.ts
|
|
4066
|
-
function normalizeThresholdEd25519ParticipantId(id) {
|
|
4067
|
-
const n = Number(id);
|
|
4068
|
-
if (!Number.isSafeInteger(n) || n < 1 || n > 65535)
|
|
4069
|
-
return null;
|
|
4070
|
-
return n;
|
|
4071
|
-
}
|
|
4072
|
-
function normalizeThresholdEd25519ParticipantIds(input) {
|
|
4073
|
-
if (!Array.isArray(input) || input.length === 0)
|
|
4074
|
-
return null;
|
|
4075
|
-
const out = [];
|
|
4076
|
-
const seen = new Set;
|
|
4077
|
-
for (const v of input) {
|
|
4078
|
-
const id = normalizeThresholdEd25519ParticipantId(v);
|
|
4079
|
-
if (!id)
|
|
4080
|
-
return null;
|
|
4081
|
-
if (!seen.has(id)) {
|
|
4082
|
-
seen.add(id);
|
|
4083
|
-
out.push(id);
|
|
4222
|
+
openPromise.then((db) => {
|
|
4223
|
+
if (terminated)
|
|
4224
|
+
db.addEventListener("close", () => terminated());
|
|
4225
|
+
if (blocking) {
|
|
4226
|
+
db.addEventListener("versionchange", (event) => blocking(event.oldVersion, event.newVersion, event));
|
|
4084
4227
|
}
|
|
4228
|
+
}).catch(() => {});
|
|
4229
|
+
return openPromise;
|
|
4230
|
+
}
|
|
4231
|
+
var readMethods = ["get", "getKey", "getAll", "getAllKeys", "count"];
|
|
4232
|
+
var writeMethods = ["put", "add", "delete", "clear"];
|
|
4233
|
+
var cachedMethods = new Map;
|
|
4234
|
+
function getMethod(target, prop) {
|
|
4235
|
+
if (!(target instanceof IDBDatabase && !(prop in target) && typeof prop === "string")) {
|
|
4236
|
+
return;
|
|
4085
4237
|
}
|
|
4086
|
-
|
|
4087
|
-
|
|
4238
|
+
if (cachedMethods.get(prop))
|
|
4239
|
+
return cachedMethods.get(prop);
|
|
4240
|
+
const targetFuncName = prop.replace(/FromIndex$/, "");
|
|
4241
|
+
const useIndex = prop !== targetFuncName;
|
|
4242
|
+
const isWrite = writeMethods.includes(targetFuncName);
|
|
4243
|
+
if (!(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) || !(isWrite || readMethods.includes(targetFuncName))) {
|
|
4244
|
+
return;
|
|
4245
|
+
}
|
|
4246
|
+
const method = async function(storeName, ...args) {
|
|
4247
|
+
const tx = this.transaction(storeName, isWrite ? "readwrite" : "readonly");
|
|
4248
|
+
let target = tx.store;
|
|
4249
|
+
if (useIndex)
|
|
4250
|
+
target = target.index(args.shift());
|
|
4251
|
+
return (await Promise.all([
|
|
4252
|
+
target[targetFuncName](...args),
|
|
4253
|
+
isWrite && tx.done
|
|
4254
|
+
]))[0];
|
|
4255
|
+
};
|
|
4256
|
+
cachedMethods.set(prop, method);
|
|
4257
|
+
return method;
|
|
4088
4258
|
}
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
var
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
var
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
}
|
|
4107
|
-
|
|
4108
|
-
|
|
4109
|
-
}
|
|
4110
|
-
async function deriveThresholdEcdsaKeyHandle(input) {
|
|
4111
|
-
const canonical = alphabetizeStringify({
|
|
4112
|
-
domain: "seams.threshold_ecdsa.key_handle.v1",
|
|
4113
|
-
ecdsaThresholdKeyId: requiredString(input.ecdsaThresholdKeyId, "ecdsaThresholdKeyId"),
|
|
4114
|
-
signingRootId: requiredString(input.signingRootId, "signingRootId"),
|
|
4115
|
-
signingRootVersion: normalizedSigningRootVersion(input.signingRootVersion)
|
|
4116
|
-
});
|
|
4117
|
-
const digest = await sha256BytesUtf8(canonical);
|
|
4118
|
-
return `ederivation-key-${base64UrlEncode(digest)}`;
|
|
4119
|
-
}
|
|
4120
|
-
// ../shared-ts/src/utils/digestEncoding.ts
|
|
4121
|
-
var TEXT_ENCODER = new TextEncoder;
|
|
4122
|
-
// src/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.ts
|
|
4123
|
-
function requiredString2(value, field) {
|
|
4124
|
-
const normalized = String(value ?? "").trim();
|
|
4125
|
-
if (!normalized)
|
|
4126
|
-
throw new Error(`[evm-family-ecdsa] ${field} is required`);
|
|
4127
|
-
return normalized;
|
|
4128
|
-
}
|
|
4129
|
-
function normalizeThresholdOwnerAddress(value) {
|
|
4130
|
-
const normalized = String(value ?? "").trim().toLowerCase();
|
|
4131
|
-
if (!/^0x[0-9a-f]{40}$/.test(normalized)) {
|
|
4132
|
-
throw new Error("[evm-family-ecdsa] thresholdOwnerAddress must be an EVM address");
|
|
4259
|
+
replaceTraps((oldTraps) => ({
|
|
4260
|
+
...oldTraps,
|
|
4261
|
+
get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),
|
|
4262
|
+
has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop)
|
|
4263
|
+
}));
|
|
4264
|
+
var advanceMethodProps = ["continue", "continuePrimaryKey", "advance"];
|
|
4265
|
+
var methodMap = {};
|
|
4266
|
+
var advanceResults = new WeakMap;
|
|
4267
|
+
var ittrProxiedCursorToOriginalProxy = new WeakMap;
|
|
4268
|
+
var cursorIteratorTraps = {
|
|
4269
|
+
get(target, prop) {
|
|
4270
|
+
if (!advanceMethodProps.includes(prop))
|
|
4271
|
+
return target[prop];
|
|
4272
|
+
let cachedFunc = methodMap[prop];
|
|
4273
|
+
if (!cachedFunc) {
|
|
4274
|
+
cachedFunc = methodMap[prop] = function(...args) {
|
|
4275
|
+
advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));
|
|
4276
|
+
};
|
|
4277
|
+
}
|
|
4278
|
+
return cachedFunc;
|
|
4133
4279
|
}
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
function toThresholdEcdsaPublicKeyB64u(value) {
|
|
4140
|
-
const normalized = requiredString2(value, "thresholdEcdsaPublicKeyB64u");
|
|
4141
|
-
let bytes;
|
|
4142
|
-
try {
|
|
4143
|
-
bytes = base64UrlDecode(normalized);
|
|
4144
|
-
} catch {
|
|
4145
|
-
throw new Error("[evm-family-ecdsa] thresholdEcdsaPublicKeyB64u must be base64url");
|
|
4280
|
+
};
|
|
4281
|
+
async function* iterate(...args) {
|
|
4282
|
+
let cursor = this;
|
|
4283
|
+
if (!(cursor instanceof IDBCursor)) {
|
|
4284
|
+
cursor = await cursor.openCursor(...args);
|
|
4146
4285
|
}
|
|
4147
|
-
if (
|
|
4148
|
-
|
|
4286
|
+
if (!cursor)
|
|
4287
|
+
return;
|
|
4288
|
+
cursor = cursor;
|
|
4289
|
+
const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);
|
|
4290
|
+
ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);
|
|
4291
|
+
reverseTransformCache.set(proxiedCursor, unwrap(cursor));
|
|
4292
|
+
while (cursor) {
|
|
4293
|
+
yield proxiedCursor;
|
|
4294
|
+
cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());
|
|
4295
|
+
advanceResults.delete(proxiedCursor);
|
|
4149
4296
|
}
|
|
4150
|
-
return normalized;
|
|
4151
4297
|
}
|
|
4152
|
-
function
|
|
4153
|
-
|
|
4154
|
-
if (!Number.isSafeInteger(normalized) || normalized < 1 || normalized > 65535) {
|
|
4155
|
-
throw new Error("[evm-family-ecdsa] participantId must be a positive safe integer");
|
|
4156
|
-
}
|
|
4157
|
-
return normalized;
|
|
4298
|
+
function isIteratorProp(target, prop) {
|
|
4299
|
+
return prop === Symbol.asyncIterator && instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor]) || prop === "iterate" && instanceOfAny(target, [IDBIndex, IDBObjectStore]);
|
|
4158
4300
|
}
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4301
|
+
replaceTraps((oldTraps) => ({
|
|
4302
|
+
...oldTraps,
|
|
4303
|
+
get(target, prop, receiver) {
|
|
4304
|
+
if (isIteratorProp(target, prop))
|
|
4305
|
+
return iterate;
|
|
4306
|
+
return oldTraps.get(target, prop, receiver);
|
|
4307
|
+
},
|
|
4308
|
+
has(target, prop) {
|
|
4309
|
+
return isIteratorProp(target, prop) || oldTraps.has(target, prop);
|
|
4163
4310
|
}
|
|
4164
|
-
|
|
4165
|
-
}
|
|
4166
|
-
function buildVerifiedEcdsaPublicFacts(input) {
|
|
4167
|
-
return {
|
|
4168
|
-
kind: "verified_ecdsa_public_facts",
|
|
4169
|
-
keyHandle: input.keyHandle,
|
|
4170
|
-
publicKeyB64u: toThresholdEcdsaPublicKeyB64u(input.publicKeyB64u),
|
|
4171
|
-
participantIds: normalizeParticipantIds(input.participantIds),
|
|
4172
|
-
thresholdOwnerAddress: normalizeThresholdOwnerAddress(input.thresholdOwnerAddress)
|
|
4173
|
-
};
|
|
4174
|
-
}
|
|
4175
|
-
|
|
4176
|
-
// src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.ts
|
|
4177
|
-
function toEcdsaDerivationThresholdKeyId(value) {
|
|
4178
|
-
return parseSdkEcdsaDerivationThresholdKeyId(value);
|
|
4179
|
-
}
|
|
4180
|
-
function toEcdsaDerivationSigningRootId(value) {
|
|
4181
|
-
return parseSdkEcdsaDerivationSigningRootId(value);
|
|
4182
|
-
}
|
|
4183
|
-
function toEcdsaDerivationSigningRootVersion(value) {
|
|
4184
|
-
return parseSdkEcdsaDerivationSigningRootVersion(value);
|
|
4185
|
-
}
|
|
4186
|
-
|
|
4187
|
-
// src/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.ts
|
|
4188
|
-
function requiredString3(value, field) {
|
|
4189
|
-
if (typeof value !== "string" || !value.trim()) {
|
|
4190
|
-
throw new Error(`[platform][ecdsa-role-local] ${field} is required`);
|
|
4191
|
-
}
|
|
4192
|
-
return value.trim();
|
|
4193
|
-
}
|
|
4194
|
-
function parseBase64UrlBytes(value, field, byteLength) {
|
|
4195
|
-
const normalized = requiredString3(value, field);
|
|
4196
|
-
const decoded = base64UrlDecode(normalized);
|
|
4197
|
-
if (decoded.length !== byteLength) {
|
|
4198
|
-
throw new Error(`[platform][ecdsa-role-local] ${field} must decode to ${byteLength} bytes`);
|
|
4199
|
-
}
|
|
4200
|
-
return normalized;
|
|
4201
|
-
}
|
|
4202
|
-
function parseCompressedSecp256k1PublicKey(value, field) {
|
|
4203
|
-
const normalized = requiredString3(value, field);
|
|
4204
|
-
const decoded = base64UrlDecode(normalized);
|
|
4205
|
-
if (decoded.length !== 33) {
|
|
4206
|
-
throw new Error(`[platform][ecdsa-role-local] ${field} must decode to 33 bytes`);
|
|
4207
|
-
}
|
|
4208
|
-
if (decoded[0] !== 2 && decoded[0] !== 3) {
|
|
4209
|
-
throw new Error(`[platform][ecdsa-role-local] ${field} must be a compressed SEC1 key`);
|
|
4210
|
-
}
|
|
4211
|
-
return normalized;
|
|
4212
|
-
}
|
|
4213
|
-
function parseEcdsaDerivationClientSharePublicKey(value) {
|
|
4214
|
-
return parseCompressedSecp256k1PublicKey(value, "derivationClientSharePublicKey33B64u");
|
|
4215
|
-
}
|
|
4216
|
-
function parseRelayerEcdsaDerivationPublicKey(value) {
|
|
4217
|
-
return parseCompressedSecp256k1PublicKey(value, "relayerPublicKey33B64u");
|
|
4218
|
-
}
|
|
4219
|
-
function parseGroupPublicKey(value) {
|
|
4220
|
-
return parseCompressedSecp256k1PublicKey(value, "groupPublicKey33B64u");
|
|
4221
|
-
}
|
|
4222
|
-
function parseEthereumAddress2(value) {
|
|
4223
|
-
const normalized = requiredString3(value, "ethereumAddress").toLowerCase();
|
|
4224
|
-
if (!/^0x[0-9a-f]{40}$/.test(normalized)) {
|
|
4225
|
-
throw new Error("[platform][ecdsa-role-local] ethereumAddress must be an EVM address");
|
|
4226
|
-
}
|
|
4227
|
-
return normalized;
|
|
4228
|
-
}
|
|
4229
|
-
function parseParticipantIds(value) {
|
|
4230
|
-
if (!Array.isArray(value) || value.length !== 2 || value[0] !== 1 || value[1] !== 2) {
|
|
4231
|
-
throw new Error("[platform][ecdsa-role-local] participantIds must be [1, 2]");
|
|
4232
|
-
}
|
|
4233
|
-
return [1, 2];
|
|
4234
|
-
}
|
|
4235
|
-
function parseChainTarget(input) {
|
|
4236
|
-
if (input === null || typeof input !== "object" || Array.isArray(input)) {
|
|
4237
|
-
throw new Error("[platform][ecdsa-role-local] chainTarget must be an object");
|
|
4238
|
-
}
|
|
4239
|
-
const kind = requiredString3(Reflect.get(input, "kind"), "chainTarget.kind").toLowerCase();
|
|
4240
|
-
switch (kind) {
|
|
4241
|
-
case "evm": {
|
|
4242
|
-
const fields = Object.keys(input).sort();
|
|
4243
|
-
if (fields.join(",") !== "chainId,kind,namespace,networkSlug") {
|
|
4244
|
-
throw new Error("[platform][ecdsa-role-local] EVM chainTarget fields are invalid");
|
|
4245
|
-
}
|
|
4246
|
-
return thresholdEcdsaChainTargetFromRequest({
|
|
4247
|
-
kind: Reflect.get(input, "kind"),
|
|
4248
|
-
namespace: Reflect.get(input, "namespace"),
|
|
4249
|
-
chainId: Reflect.get(input, "chainId"),
|
|
4250
|
-
networkSlug: Reflect.get(input, "networkSlug")
|
|
4251
|
-
});
|
|
4252
|
-
}
|
|
4253
|
-
case "tempo": {
|
|
4254
|
-
const fields = Object.keys(input).sort();
|
|
4255
|
-
if (fields.join(",") !== "chainId,kind,networkSlug") {
|
|
4256
|
-
throw new Error("[platform][ecdsa-role-local] Tempo chainTarget fields are invalid");
|
|
4257
|
-
}
|
|
4258
|
-
return thresholdEcdsaChainTargetFromRequest({
|
|
4259
|
-
kind: Reflect.get(input, "kind"),
|
|
4260
|
-
chainId: Reflect.get(input, "chainId"),
|
|
4261
|
-
networkSlug: Reflect.get(input, "networkSlug")
|
|
4262
|
-
});
|
|
4263
|
-
}
|
|
4264
|
-
default:
|
|
4265
|
-
throw new Error("[platform][ecdsa-role-local] chainTarget kind is invalid");
|
|
4266
|
-
}
|
|
4267
|
-
}
|
|
4268
|
-
function parsePublicFacts(input) {
|
|
4269
|
-
if (input === null || typeof input !== "object" || Array.isArray(input)) {
|
|
4270
|
-
throw new Error("[platform][ecdsa-role-local] publicFacts must be an object");
|
|
4271
|
-
}
|
|
4272
|
-
const fields = Object.keys(input).sort();
|
|
4273
|
-
if (fields.join(",") !== "applicationBindingDigestB64u,chainTarget,clientParticipantId,contextBinding32B64u,derivationClientSharePublicKey33B64u,ecdsaThresholdKeyId,ethereumAddress,groupPublicKey33B64u,keyHandle,participantIds,publicCapability,relayerParticipantId,relayerPublicKey33B64u,signingRootId,signingRootVersion,walletId") {
|
|
4274
|
-
throw new Error("[platform][ecdsa-role-local] publicFacts fields are invalid");
|
|
4275
|
-
}
|
|
4276
|
-
if (Reflect.get(input, "clientParticipantId") !== 1) {
|
|
4277
|
-
throw new Error("[platform][ecdsa-role-local] clientParticipantId must be 1");
|
|
4278
|
-
}
|
|
4279
|
-
if (Reflect.get(input, "relayerParticipantId") !== 2) {
|
|
4280
|
-
throw new Error("[platform][ecdsa-role-local] relayerParticipantId must be 2");
|
|
4281
|
-
}
|
|
4282
|
-
const derivationClientSharePublicKey33B64u = parseEcdsaDerivationClientSharePublicKey(Reflect.get(input, "derivationClientSharePublicKey33B64u"));
|
|
4283
|
-
const relayerPublicKey33B64u = parseRelayerEcdsaDerivationPublicKey(Reflect.get(input, "relayerPublicKey33B64u"));
|
|
4284
|
-
if (String(derivationClientSharePublicKey33B64u) === String(relayerPublicKey33B64u)) {
|
|
4285
|
-
throw new Error("[platform][ecdsa-role-local] relayerPublicKey33B64u must differ from derivationClientSharePublicKey33B64u");
|
|
4286
|
-
}
|
|
4287
|
-
return {
|
|
4288
|
-
walletId: toWalletId(Reflect.get(input, "walletId")),
|
|
4289
|
-
chainTarget: parseChainTarget(Reflect.get(input, "chainTarget")),
|
|
4290
|
-
keyHandle: requiredString3(Reflect.get(input, "keyHandle"), "keyHandle"),
|
|
4291
|
-
ecdsaThresholdKeyId: toEcdsaDerivationThresholdKeyId(Reflect.get(input, "ecdsaThresholdKeyId")),
|
|
4292
|
-
signingRootId: toEcdsaDerivationSigningRootId(Reflect.get(input, "signingRootId")),
|
|
4293
|
-
signingRootVersion: toEcdsaDerivationSigningRootVersion(Reflect.get(input, "signingRootVersion")),
|
|
4294
|
-
applicationBindingDigestB64u: parseBase64UrlBytes(Reflect.get(input, "applicationBindingDigestB64u"), "applicationBindingDigestB64u", 32),
|
|
4295
|
-
clientParticipantId: 1,
|
|
4296
|
-
relayerParticipantId: 2,
|
|
4297
|
-
participantIds: parseParticipantIds(Reflect.get(input, "participantIds")),
|
|
4298
|
-
contextBinding32B64u: parseBase64UrlBytes(Reflect.get(input, "contextBinding32B64u"), "contextBinding32B64u", 32),
|
|
4299
|
-
derivationClientSharePublicKey33B64u,
|
|
4300
|
-
relayerPublicKey33B64u,
|
|
4301
|
-
groupPublicKey33B64u: parseGroupPublicKey(Reflect.get(input, "groupPublicKey33B64u")),
|
|
4302
|
-
ethereumAddress: parseEthereumAddress2(Reflect.get(input, "ethereumAddress")),
|
|
4303
|
-
publicCapability: parseRouterAbEcdsaDerivationPublicCapabilityV1(Reflect.get(input, "publicCapability"))
|
|
4304
|
-
};
|
|
4305
|
-
}
|
|
4306
|
-
function buildEcdsaRoleLocalPublicFacts(input) {
|
|
4307
|
-
return parsePublicFacts(input);
|
|
4308
|
-
}
|
|
4309
|
-
|
|
4310
|
-
// src/core/signingEngine/session/material/ecdsaCapabilityManifest.ts
|
|
4311
|
-
class EcdsaCapabilityManifestProof {
|
|
4312
|
-
retainProof() {
|
|
4313
|
-
return true;
|
|
4314
|
-
}
|
|
4315
|
-
constructor() {
|
|
4316
|
-
this.retainProof();
|
|
4317
|
-
}
|
|
4318
|
-
}
|
|
4319
|
-
|
|
4320
|
-
class EcdsaCapabilityScopeProof extends EcdsaCapabilityManifestProof {
|
|
4321
|
-
constructor(targetMemberships) {
|
|
4322
|
-
super();
|
|
4323
|
-
this.kind = "evm_family";
|
|
4324
|
-
this.targetMemberships = targetMemberships;
|
|
4325
|
-
}
|
|
4326
|
-
}
|
|
4327
|
-
|
|
4328
|
-
class EcdsaManifestIdentityProof extends EcdsaCapabilityManifestProof {
|
|
4329
|
-
constructor(fields) {
|
|
4330
|
-
super();
|
|
4331
|
-
this.manifestId = fields.manifestId;
|
|
4332
|
-
this.manifestRevision = fields.manifestRevision;
|
|
4333
|
-
}
|
|
4334
|
-
}
|
|
4335
|
-
|
|
4336
|
-
class NoCurrentEcdsaManifestExpectationProof extends EcdsaCapabilityManifestProof {
|
|
4337
|
-
constructor() {
|
|
4338
|
-
super(...arguments);
|
|
4339
|
-
this.kind = "no_current_manifest";
|
|
4340
|
-
}
|
|
4341
|
-
}
|
|
4342
|
-
|
|
4343
|
-
class ExactEcdsaManifestExpectationProof extends EcdsaCapabilityManifestProof {
|
|
4344
|
-
constructor(identity) {
|
|
4345
|
-
super();
|
|
4346
|
-
this.kind = "exact_manifest";
|
|
4347
|
-
this.manifestId = identity.manifestId;
|
|
4348
|
-
this.manifestRevision = identity.manifestRevision;
|
|
4349
|
-
}
|
|
4350
|
-
}
|
|
4351
|
-
|
|
4352
|
-
class NoCurrentEcdsaServerGenerationExpectationProof extends EcdsaCapabilityManifestProof {
|
|
4353
|
-
constructor() {
|
|
4354
|
-
super(...arguments);
|
|
4355
|
-
this.kind = "no_current_generation";
|
|
4356
|
-
}
|
|
4357
|
-
}
|
|
4358
|
-
|
|
4359
|
-
class ExactEcdsaServerGenerationExpectationProof extends EcdsaCapabilityManifestProof {
|
|
4360
|
-
constructor(serverGeneration) {
|
|
4361
|
-
super();
|
|
4362
|
-
this.kind = "exact_generation";
|
|
4363
|
-
this.serverGeneration = serverGeneration;
|
|
4364
|
-
}
|
|
4365
|
-
}
|
|
4366
|
-
|
|
4367
|
-
class EcdsaRoleLocalMaterialBindingProof extends EcdsaCapabilityManifestProof {
|
|
4368
|
-
constructor(fields) {
|
|
4369
|
-
super();
|
|
4370
|
-
this.kind = "ecdsa_role_local_material_binding";
|
|
4371
|
-
this.keyHandle = fields.keyHandle;
|
|
4372
|
-
this.ecdsaThresholdKeyId = fields.ecdsaThresholdKeyId;
|
|
4373
|
-
this.clientVerifyingPublicKey33B64u = fields.clientVerifyingPublicKey33B64u;
|
|
4374
|
-
this.participantIds = fields.participantIds;
|
|
4375
|
-
this.relayerKeyId = fields.relayerKeyId;
|
|
4376
|
-
}
|
|
4377
|
-
}
|
|
4378
|
-
|
|
4379
|
-
class PreparedEvmFamilySignerProof extends EcdsaCapabilityManifestProof {
|
|
4380
|
-
constructor(fields) {
|
|
4381
|
-
super();
|
|
4382
|
-
this.kind = "prepared_evm_family_signer";
|
|
4383
|
-
this.capability = fields.capability;
|
|
4384
|
-
this.signerId = fields.signerId;
|
|
4385
|
-
this.walletId = fields.authority.walletId;
|
|
4386
|
-
this.authority = fields.authority;
|
|
4387
|
-
this.scope = fields.scope;
|
|
4388
|
-
this.materialOwner = fields.materialOwner;
|
|
4389
|
-
this.signingRootId = fields.signingRootId;
|
|
4390
|
-
this.signingRootVersion = fields.signingRootVersion;
|
|
4391
|
-
}
|
|
4392
|
-
}
|
|
4393
|
-
|
|
4394
|
-
class RegisteredEvmFamilySignerProof extends EcdsaCapabilityManifestProof {
|
|
4395
|
-
constructor(fields) {
|
|
4396
|
-
super();
|
|
4397
|
-
this.kind = "registered_evm_family_signer";
|
|
4398
|
-
this.capability = fields.preparedSigner.capability;
|
|
4399
|
-
this.signerId = fields.preparedSigner.signerId;
|
|
4400
|
-
this.walletId = fields.preparedSigner.walletId;
|
|
4401
|
-
this.authority = fields.preparedSigner.authority;
|
|
4402
|
-
this.scope = fields.preparedSigner.scope;
|
|
4403
|
-
this.materialOwner = fields.preparedSigner.materialOwner;
|
|
4404
|
-
this.signingRootId = fields.preparedSigner.signingRootId;
|
|
4405
|
-
this.signingRootVersion = fields.preparedSigner.signingRootVersion;
|
|
4406
|
-
this.registeredPublicFacts = fields.registeredPublicFacts;
|
|
4407
|
-
}
|
|
4408
|
-
}
|
|
4409
|
-
|
|
4410
|
-
class EncryptedEcdsaPendingCandidateProof extends EcdsaCapabilityManifestProof {
|
|
4411
|
-
constructor(fields) {
|
|
4412
|
-
super();
|
|
4413
|
-
this.kind = "encrypted_ecdsa_pending_candidate";
|
|
4414
|
-
this.sealingKeyId = fields.sealingKeyId;
|
|
4415
|
-
this.iv12B64u = fields.iv12B64u;
|
|
4416
|
-
this.ciphertextB64u = fields.ciphertextB64u;
|
|
4417
|
-
this.ciphertextDigest = fields.ciphertextDigest;
|
|
4418
|
-
}
|
|
4419
|
-
}
|
|
4420
|
-
|
|
4421
|
-
class EcdsaActivationBindingProof extends EcdsaCapabilityManifestProof {
|
|
4422
|
-
constructor(fields) {
|
|
4423
|
-
super();
|
|
4424
|
-
this.kind = "ecdsa_activation_binding";
|
|
4425
|
-
this.targetManifest = fields.targetManifest;
|
|
4426
|
-
this.signer = fields.signer;
|
|
4427
|
-
this.roleLocalBinding = fields.roleLocalBinding;
|
|
4428
|
-
this.bindingDigest = fields.bindingDigest;
|
|
4429
|
-
this.durableMaterialRef = fields.durableMaterialRef;
|
|
4430
|
-
}
|
|
4431
|
-
}
|
|
4432
|
-
|
|
4433
|
-
class PreparedEcdsaActivationCandidateProof extends EcdsaCapabilityManifestProof {
|
|
4434
|
-
constructor(fields) {
|
|
4435
|
-
super();
|
|
4436
|
-
this.kind = "prepared_ecdsa_activation_candidate";
|
|
4437
|
-
this.activationBinding = fields.activationBinding;
|
|
4438
|
-
this.encryptedPending = fields.encryptedPending;
|
|
4439
|
-
}
|
|
4440
|
-
}
|
|
4441
|
-
|
|
4442
|
-
class EcdsaServerActivationCommandProof extends EcdsaCapabilityManifestProof {
|
|
4443
|
-
constructor(fields) {
|
|
4444
|
-
super();
|
|
4445
|
-
this.kind = "ecdsa_server_activation_command";
|
|
4446
|
-
this.correlationId = fields.correlationId;
|
|
4447
|
-
this.expectedGeneration = fields.expectedGeneration;
|
|
4448
|
-
this.requestDigest = fields.requestDigest;
|
|
4449
|
-
this.canonicalRequest = fields.canonicalRequest;
|
|
4450
|
-
}
|
|
4451
|
-
}
|
|
4452
|
-
|
|
4453
|
-
class EcdsaServerActivationReceiptProof extends EcdsaCapabilityManifestProof {
|
|
4454
|
-
constructor(fields) {
|
|
4455
|
-
super();
|
|
4456
|
-
this.kind = "ecdsa_server_activation_receipt";
|
|
4457
|
-
this.lifecycleId = fields.lifecycleId;
|
|
4458
|
-
this.activationDigest = fields.activationDigest;
|
|
4459
|
-
this.activatedAt = fields.activatedAt;
|
|
4460
|
-
this.protocolReceipt = fields.protocolReceipt;
|
|
4461
|
-
}
|
|
4462
|
-
}
|
|
4463
|
-
|
|
4464
|
-
class EcdsaServerActivationCommitProof extends EcdsaCapabilityManifestProof {
|
|
4465
|
-
constructor(fields) {
|
|
4466
|
-
super();
|
|
4467
|
-
this.kind = "ecdsa_server_activation_commit";
|
|
4468
|
-
this.correlationId = fields.correlationId;
|
|
4469
|
-
this.activationRequestDigest = fields.activationRequestDigest;
|
|
4470
|
-
this.serverGeneration = fields.serverGeneration;
|
|
4471
|
-
this.serverActivationReceipt = fields.serverActivationReceipt;
|
|
4472
|
-
}
|
|
4473
|
-
}
|
|
4474
|
-
|
|
4475
|
-
class PreparedEcdsaActivationJournalProof extends EcdsaCapabilityManifestProof {
|
|
4476
|
-
constructor(fields) {
|
|
4477
|
-
super();
|
|
4478
|
-
this.kind = "activation_prepared";
|
|
4479
|
-
this.journalId = fields.journalId;
|
|
4480
|
-
this.expectedManifest = fields.expectedManifest;
|
|
4481
|
-
this.activationCommand = fields.activationCommand;
|
|
4482
|
-
this.candidate = fields.candidate;
|
|
4483
|
-
this.createdAt = fields.createdAt;
|
|
4484
|
-
}
|
|
4485
|
-
}
|
|
4486
|
-
|
|
4487
|
-
class ServerCommittedEcdsaActivationJournalProof extends EcdsaCapabilityManifestProof {
|
|
4488
|
-
constructor(fields) {
|
|
4489
|
-
super();
|
|
4490
|
-
this.kind = "server_activation_committed";
|
|
4491
|
-
this.journalId = fields.journalId;
|
|
4492
|
-
this.expectedManifest = fields.expectedManifest;
|
|
4493
|
-
this.activationCommand = fields.activationCommand;
|
|
4494
|
-
this.candidate = fields.candidate;
|
|
4495
|
-
this.createdAt = fields.createdAt;
|
|
4496
|
-
this.serverActivation = fields.serverActivation;
|
|
4497
|
-
}
|
|
4498
|
-
}
|
|
4499
|
-
|
|
4500
|
-
class DurableEcdsaMaterialBindingProof extends EcdsaCapabilityManifestProof {
|
|
4501
|
-
constructor(fields) {
|
|
4502
|
-
super();
|
|
4503
|
-
this.kind = "durable_ecdsa_material";
|
|
4504
|
-
this.materialActivation = fields.materialActivation;
|
|
4505
|
-
this.routerAbEcdsaDerivationNormalSigning = fields.routerAbEcdsaDerivationNormalSigning;
|
|
4506
|
-
this.roleLocalPublicFacts = fields.roleLocalPublicFacts;
|
|
4507
|
-
this.roleLocalBinding = fields.roleLocalBinding;
|
|
4508
|
-
this.durableMaterialRef = fields.durableMaterialRef;
|
|
4509
|
-
this.bindingDigest = fields.bindingDigest;
|
|
4510
|
-
this.lifecycleId = fields.lifecycleId;
|
|
4511
|
-
this.ciphertextDigest = fields.ciphertextDigest;
|
|
4512
|
-
this.activationDigest = fields.activationDigest;
|
|
4513
|
-
this.activatedAt = fields.activatedAt;
|
|
4514
|
-
this.runtimePolicyScope = fields.runtimePolicyScope;
|
|
4515
|
-
}
|
|
4516
|
-
}
|
|
4517
|
-
|
|
4518
|
-
class ValidatedEncryptedEcdsaReadyMaterialProof extends EcdsaCapabilityManifestProof {
|
|
4519
|
-
constructor(fields) {
|
|
4520
|
-
super();
|
|
4521
|
-
this.kind = "encrypted_ecdsa_ready_material";
|
|
4522
|
-
this.binding = fields.binding;
|
|
4523
|
-
this.sealingKeyId = fields.sealingKeyId;
|
|
4524
|
-
this.iv12B64u = fields.iv12B64u;
|
|
4525
|
-
this.ciphertextB64u = fields.ciphertextB64u;
|
|
4526
|
-
}
|
|
4527
|
-
}
|
|
4528
|
-
|
|
4529
|
-
class ActiveEcdsaCapabilityManifestProof extends EcdsaCapabilityManifestProof {
|
|
4530
|
-
constructor(fields) {
|
|
4531
|
-
super();
|
|
4532
|
-
this.kind = "active_ecdsa_capability_manifest";
|
|
4533
|
-
this.identity = fields.identity;
|
|
4534
|
-
this.signer = fields.signer;
|
|
4535
|
-
this.activation = fields.activation;
|
|
4536
|
-
this.durableMaterial = fields.durableMaterial;
|
|
4537
|
-
this.committedAt = fields.committedAt;
|
|
4538
|
-
}
|
|
4539
|
-
}
|
|
4540
|
-
|
|
4541
|
-
class ReplacedEcdsaCapabilityManifestProof extends EcdsaCapabilityManifestProof {
|
|
4542
|
-
constructor(fields) {
|
|
4543
|
-
super();
|
|
4544
|
-
this.kind = "replaced_ecdsa_capability_manifest";
|
|
4545
|
-
this.identity = fields.identity;
|
|
4546
|
-
this.signer = fields.signer;
|
|
4547
|
-
this.retirement = fields.retirement;
|
|
4548
|
-
}
|
|
4549
|
-
}
|
|
4550
|
-
function unwrapDomainId(result) {
|
|
4551
|
-
if (!result.ok)
|
|
4552
|
-
throw new Error(result.error.message);
|
|
4553
|
-
return result.value;
|
|
4554
|
-
}
|
|
4555
|
-
function buildEcdsaCapabilityScope(input) {
|
|
4556
|
-
assertUniqueEcdsaTargetMemberships(input.targetMemberships);
|
|
4557
|
-
return new EcdsaCapabilityScopeProof([...input.targetMemberships]);
|
|
4558
|
-
}
|
|
4559
|
-
function buildEcdsaManifestIdentity(input) {
|
|
4560
|
-
return new EcdsaManifestIdentityProof(input);
|
|
4561
|
-
}
|
|
4562
|
-
function buildNoCurrentEcdsaManifestExpectation() {
|
|
4563
|
-
return new NoCurrentEcdsaManifestExpectationProof;
|
|
4564
|
-
}
|
|
4565
|
-
function buildExactEcdsaManifestExpectation(identity) {
|
|
4566
|
-
return new ExactEcdsaManifestExpectationProof(identity);
|
|
4567
|
-
}
|
|
4568
|
-
function buildNoCurrentEcdsaServerGenerationExpectation() {
|
|
4569
|
-
return new NoCurrentEcdsaServerGenerationExpectationProof;
|
|
4570
|
-
}
|
|
4571
|
-
function buildExactEcdsaServerGenerationExpectation(serverGeneration) {
|
|
4572
|
-
return new ExactEcdsaServerGenerationExpectationProof(serverGeneration);
|
|
4573
|
-
}
|
|
4574
|
-
function buildEcdsaRoleLocalMaterialBinding(input) {
|
|
4575
|
-
assertUniqueParticipantIds(input.participantIds);
|
|
4576
|
-
return new EcdsaRoleLocalMaterialBindingProof({
|
|
4577
|
-
keyHandle: input.keyHandle,
|
|
4578
|
-
ecdsaThresholdKeyId: input.ecdsaThresholdKeyId,
|
|
4579
|
-
clientVerifyingPublicKey33B64u: input.clientVerifyingPublicKey33B64u,
|
|
4580
|
-
participantIds: [...input.participantIds],
|
|
4581
|
-
relayerKeyId: input.relayerKeyId
|
|
4582
|
-
});
|
|
4583
|
-
}
|
|
4584
|
-
function buildPreparedEvmFamilySigner(input) {
|
|
4585
|
-
return new PreparedEvmFamilySignerProof(input);
|
|
4586
|
-
}
|
|
4587
|
-
function buildEncryptedEcdsaPendingCandidate(input) {
|
|
4588
|
-
return new EncryptedEcdsaPendingCandidateProof(input);
|
|
4589
|
-
}
|
|
4590
|
-
function buildEcdsaActivationBinding(input) {
|
|
4591
|
-
return new EcdsaActivationBindingProof(input);
|
|
4592
|
-
}
|
|
4593
|
-
function buildPreparedEcdsaActivationCandidate(input) {
|
|
4594
|
-
return new PreparedEcdsaActivationCandidateProof(input);
|
|
4595
|
-
}
|
|
4596
|
-
function buildPreparedEcdsaActivationJournal(input) {
|
|
4597
|
-
assertTargetManifestTransition(input.expectedManifest, input.candidate.activationBinding.targetManifest);
|
|
4598
|
-
assertExpectedStatePair(input.expectedManifest, input.expectedGeneration);
|
|
4599
|
-
const activationCommand = new EcdsaServerActivationCommandProof({
|
|
4600
|
-
correlationId: input.journalId,
|
|
4601
|
-
expectedGeneration: input.expectedGeneration,
|
|
4602
|
-
requestDigest: input.requestDigest,
|
|
4603
|
-
canonicalRequest: input.canonicalRequest
|
|
4604
|
-
});
|
|
4605
|
-
return new PreparedEcdsaActivationJournalProof({
|
|
4606
|
-
journalId: input.journalId,
|
|
4607
|
-
expectedManifest: input.expectedManifest,
|
|
4608
|
-
activationCommand,
|
|
4609
|
-
candidate: input.candidate,
|
|
4610
|
-
createdAt: input.createdAt
|
|
4611
|
-
});
|
|
4612
|
-
}
|
|
4613
|
-
function buildEcdsaServerActivationCommit(input) {
|
|
4614
|
-
const protocolReceipt = parseRouterAbEcdsaRegistrationActivationReceiptV1(input.serverCommit.protocolReceipt);
|
|
4615
|
-
assertProtocolReceiptMatchesServerCommit(protocolReceipt, input.serverCommit);
|
|
4616
|
-
assertProtocolReceiptMatchesActivationBinding(protocolReceipt, input.activationBinding);
|
|
4617
|
-
const serverActivationReceipt = new EcdsaServerActivationReceiptProof({
|
|
4618
|
-
lifecycleId: lifecycleIdFromProtocolReceipt(protocolReceipt),
|
|
4619
|
-
activationDigest: activationDigestFromProtocolReceipt(protocolReceipt),
|
|
4620
|
-
activatedAt: isoTimestampFromUnixMs(protocolReceipt.ecdsa_activation.activated_at_ms),
|
|
4621
|
-
protocolReceipt
|
|
4622
|
-
});
|
|
4623
|
-
return new EcdsaServerActivationCommitProof({
|
|
4624
|
-
correlationId: input.serverCommit.correlationId,
|
|
4625
|
-
activationRequestDigest: input.serverCommit.activationRequestDigest,
|
|
4626
|
-
serverGeneration: input.serverCommit.serverGeneration,
|
|
4627
|
-
serverActivationReceipt
|
|
4628
|
-
});
|
|
4629
|
-
}
|
|
4630
|
-
function buildServerCommittedEcdsaActivationJournal(input) {
|
|
4631
|
-
assertServerCommitMatchesPreparedCommand(input.serverCommit, input.preparedJournal);
|
|
4632
|
-
const serverActivation = buildEcdsaServerActivationCommit({
|
|
4633
|
-
activationBinding: input.preparedJournal.candidate.activationBinding,
|
|
4634
|
-
serverCommit: input.serverCommit
|
|
4635
|
-
});
|
|
4636
|
-
return new ServerCommittedEcdsaActivationJournalProof({
|
|
4637
|
-
journalId: input.preparedJournal.journalId,
|
|
4638
|
-
expectedManifest: input.preparedJournal.expectedManifest,
|
|
4639
|
-
activationCommand: input.preparedJournal.activationCommand,
|
|
4640
|
-
candidate: input.preparedJournal.candidate,
|
|
4641
|
-
createdAt: input.preparedJournal.createdAt,
|
|
4642
|
-
serverActivation
|
|
4643
|
-
});
|
|
4644
|
-
}
|
|
4645
|
-
function buildDurableEcdsaMaterialBinding(input) {
|
|
4646
|
-
assertServerActivationMatchesBinding(input.serverActivation, input.activationBinding);
|
|
4647
|
-
const facts = input.roleLocalPublicFacts;
|
|
4648
|
-
const binding = input.activationBinding;
|
|
4649
|
-
const runtimePolicyScope = normalizeRuntimePolicyScope(input.runtimePolicyScope);
|
|
4650
|
-
if (facts.walletId !== binding.signer.walletId || facts.keyHandle !== binding.roleLocalBinding.keyHandle || facts.ecdsaThresholdKeyId !== binding.roleLocalBinding.ecdsaThresholdKeyId || facts.signingRootId !== binding.signer.signingRootId || facts.signingRootVersion !== binding.signer.signingRootVersion || deriveSigningRootId(runtimePolicyScope) !== binding.signer.signingRootId || runtimePolicyScope.signingRootVersion !== binding.signer.signingRootVersion || facts.contextBinding32B64u !== binding.bindingDigest || !participantIdsMatch(facts.participantIds, binding.roleLocalBinding.participantIds) || !binding.signer.scope.targetMemberships.some((target) => ecdsaTargetMembershipKey(target) === ecdsaTargetMembershipKey(facts.chainTarget))) {
|
|
4651
|
-
throw new Error("ECDSA role-local public facts do not match their activation");
|
|
4652
|
-
}
|
|
4653
|
-
const receipt = input.serverActivation.serverActivationReceipt;
|
|
4654
|
-
assertNormalSigningMatchesActivation({
|
|
4655
|
-
normalSigning: input.routerAbEcdsaDerivationNormalSigning,
|
|
4656
|
-
activationBinding: binding,
|
|
4657
|
-
roleLocalPublicFacts: facts,
|
|
4658
|
-
receipt: receipt.protocolReceipt
|
|
4659
|
-
});
|
|
4660
|
-
return new DurableEcdsaMaterialBindingProof({
|
|
4661
|
-
materialActivation: materialActivationFromCommit(receipt.protocolReceipt),
|
|
4662
|
-
routerAbEcdsaDerivationNormalSigning: input.routerAbEcdsaDerivationNormalSigning,
|
|
4663
|
-
roleLocalPublicFacts: input.roleLocalPublicFacts,
|
|
4664
|
-
roleLocalBinding: input.activationBinding.roleLocalBinding,
|
|
4665
|
-
durableMaterialRef: input.activationBinding.durableMaterialRef,
|
|
4666
|
-
bindingDigest: input.activationBinding.bindingDigest,
|
|
4667
|
-
lifecycleId: receipt.lifecycleId,
|
|
4668
|
-
ciphertextDigest: input.ciphertextDigest,
|
|
4669
|
-
activationDigest: receipt.activationDigest,
|
|
4670
|
-
activatedAt: receipt.activatedAt,
|
|
4671
|
-
runtimePolicyScope
|
|
4672
|
-
});
|
|
4673
|
-
}
|
|
4674
|
-
function buildValidatedEncryptedEcdsaReadyMaterial(input) {
|
|
4675
|
-
return new ValidatedEncryptedEcdsaReadyMaterialProof({
|
|
4676
|
-
binding: input.binding,
|
|
4677
|
-
sealingKeyId: input.sealingKeyId,
|
|
4678
|
-
iv12B64u: input.iv12B64u,
|
|
4679
|
-
ciphertextB64u: input.ciphertextB64u
|
|
4680
|
-
});
|
|
4681
|
-
}
|
|
4682
|
-
function buildActiveEcdsaCapabilityManifest(input) {
|
|
4683
|
-
assertRegisteredPublicFactsMatchBinding(input.registeredPublicFacts, input.activationBinding.roleLocalBinding, input.serverActivation);
|
|
4684
|
-
assertDurableMaterialMatchesActivation(input.durableMaterial, input.activationBinding, input.serverActivation);
|
|
4685
|
-
const signer = new RegisteredEvmFamilySignerProof({
|
|
4686
|
-
preparedSigner: input.activationBinding.signer,
|
|
4687
|
-
registeredPublicFacts: input.registeredPublicFacts
|
|
4688
|
-
});
|
|
4689
|
-
const activation = {
|
|
4690
|
-
kind: "active_ecdsa_material_activation",
|
|
4691
|
-
materialActivation: input.durableMaterial.materialActivation,
|
|
4692
|
-
serverActivation: input.serverActivation,
|
|
4693
|
-
retention: "retained"
|
|
4694
|
-
};
|
|
4695
|
-
return new ActiveEcdsaCapabilityManifestProof({
|
|
4696
|
-
identity: input.activationBinding.targetManifest,
|
|
4697
|
-
signer,
|
|
4698
|
-
activation,
|
|
4699
|
-
durableMaterial: input.durableMaterial,
|
|
4700
|
-
committedAt: input.committedAt
|
|
4701
|
-
});
|
|
4702
|
-
}
|
|
4703
|
-
function buildReplacedEcdsaCapabilityManifest(input) {
|
|
4704
|
-
assertValidEcdsaReplacement(input.activeManifest, input.replacementManifest);
|
|
4705
|
-
return new ReplacedEcdsaCapabilityManifestProof({
|
|
4706
|
-
identity: input.activeManifest.identity,
|
|
4707
|
-
signer: input.activeManifest.signer,
|
|
4708
|
-
retirement: {
|
|
4709
|
-
kind: "replaced",
|
|
4710
|
-
replacementManifest: input.replacementManifest.identity,
|
|
4711
|
-
replacementActivation: input.replacementManifest.activation.serverActivation
|
|
4712
|
-
}
|
|
4713
|
-
});
|
|
4714
|
-
}
|
|
4715
|
-
function assertUniqueEcdsaTargetMemberships(targetMemberships) {
|
|
4716
|
-
const targetKeys = targetMemberships.map(ecdsaTargetMembershipKey);
|
|
4717
|
-
if (new Set(targetKeys).size !== targetKeys.length) {
|
|
4718
|
-
throw new Error("ECDSA capability target memberships must be unique");
|
|
4719
|
-
}
|
|
4720
|
-
}
|
|
4721
|
-
function ecdsaTargetMembershipKey(target) {
|
|
4722
|
-
switch (target.kind) {
|
|
4723
|
-
case "evm":
|
|
4724
|
-
return `evm:${target.namespace}:${target.chainId}:${target.networkSlug}`;
|
|
4725
|
-
case "tempo":
|
|
4726
|
-
return `tempo:${target.chainId}:${target.networkSlug}`;
|
|
4727
|
-
default:
|
|
4728
|
-
return assertNever(target);
|
|
4729
|
-
}
|
|
4730
|
-
}
|
|
4731
|
-
function assertUniqueParticipantIds(participantIds) {
|
|
4732
|
-
const normalizedIds = participantIds.map(Number);
|
|
4733
|
-
if (normalizedIds.some((participantId) => !Number.isSafeInteger(participantId) || participantId < 1) || new Set(normalizedIds).size !== normalizedIds.length) {
|
|
4734
|
-
throw new Error("ECDSA participant ids must be unique positive integers");
|
|
4735
|
-
}
|
|
4736
|
-
}
|
|
4737
|
-
function assertTargetManifestTransition(expected, target) {
|
|
4738
|
-
switch (expected.kind) {
|
|
4739
|
-
case "no_current_manifest":
|
|
4740
|
-
if (Number(target.manifestRevision) !== 1) {
|
|
4741
|
-
throw new Error("Initial ECDSA manifest revision must be 1");
|
|
4742
|
-
}
|
|
4743
|
-
return;
|
|
4744
|
-
case "exact_manifest":
|
|
4745
|
-
if (target.manifestId === expected.manifestId || Number(target.manifestRevision) !== Number(expected.manifestRevision) + 1) {
|
|
4746
|
-
throw new Error("Replacement ECDSA manifest must use a fresh id and next revision");
|
|
4747
|
-
}
|
|
4748
|
-
return;
|
|
4749
|
-
default:
|
|
4750
|
-
return assertNever(expected);
|
|
4751
|
-
}
|
|
4752
|
-
}
|
|
4753
|
-
function assertExpectedStatePair(expectedManifest, expectedGeneration) {
|
|
4754
|
-
switch (expectedManifest.kind) {
|
|
4755
|
-
case "no_current_manifest":
|
|
4756
|
-
if (expectedGeneration.kind !== "no_current_generation") {
|
|
4757
|
-
throw new Error("Initial ECDSA activation cannot expect a server generation");
|
|
4758
|
-
}
|
|
4759
|
-
return;
|
|
4760
|
-
case "exact_manifest":
|
|
4761
|
-
if (expectedGeneration.kind !== "exact_generation") {
|
|
4762
|
-
throw new Error("Replacement ECDSA activation requires an exact server generation");
|
|
4763
|
-
}
|
|
4764
|
-
return;
|
|
4765
|
-
default:
|
|
4766
|
-
return assertNever(expectedManifest);
|
|
4767
|
-
}
|
|
4768
|
-
}
|
|
4769
|
-
function assertServerCommitMatchesPreparedCommand(serverCommit, journal) {
|
|
4770
|
-
const canonicalRequest = JSON.parse(journal.activationCommand.canonicalRequest);
|
|
4771
|
-
const requestDigestNamesOuterOperation = canonicalRequest.operation === "wallet_registration_activate_v2";
|
|
4772
|
-
if (serverCommit.correlationId !== journal.activationCommand.correlationId || !requestDigestNamesOuterOperation && serverCommit.activationRequestDigest !== journal.activationCommand.requestDigest) {
|
|
4773
|
-
throw new Error("ECDSA server activation commit does not match the prepared command");
|
|
4774
|
-
}
|
|
4775
|
-
}
|
|
4776
|
-
function assertProtocolReceiptMatchesActivationBinding(receipt, activationBinding) {
|
|
4777
|
-
const publicIdentity = receipt.ecdsa_activation.public_identity;
|
|
4778
|
-
const materialActivation = receipt.ecdsa_activation.material_activation;
|
|
4779
|
-
materialActivationFromCommit(receipt);
|
|
4780
|
-
if (publicIdentity.context_binding_b64u !== String(activationBinding.bindingDigest) || publicIdentity.derivation_client_share_public_key33_b64u !== String(activationBinding.roleLocalBinding.clientVerifyingPublicKey33B64u) || materialActivation.material_owner !== String(activationBinding.signer.materialOwner) || materialActivation.key_binding !== String(activationBinding.bindingDigest) || materialActivation.lifecycle_binding !== receipt.lifecycle_id || materialActivation.signing_worker !== receipt.ecdsa_activation.signing_worker.server_id) {
|
|
4781
|
-
throw new Error("ECDSA activation receipt does not match the prepared material binding");
|
|
4782
|
-
}
|
|
4783
|
-
}
|
|
4784
|
-
function assertProtocolReceiptMatchesServerCommit(receipt, serverCommit) {
|
|
4785
|
-
const receiptRequestDigest = base64UrlEncode(Uint8Array.from(receipt.activation_request_digest.bytes));
|
|
4786
|
-
if (receipt.activation_correlation_id !== serverCommit.correlationId || receiptRequestDigest !== serverCommit.activationRequestDigest || receipt.server_generation !== serverCommit.serverGeneration) {
|
|
4787
|
-
throw new Error("ECDSA activation receipt does not match the server activation commit");
|
|
4788
|
-
}
|
|
4789
|
-
}
|
|
4790
|
-
function lifecycleIdFromProtocolReceipt(receipt) {
|
|
4791
|
-
return parseEcdsaLifecycleId(receipt.lifecycle_id);
|
|
4792
|
-
}
|
|
4793
|
-
function activationDigestFromProtocolReceipt(receipt) {
|
|
4794
|
-
return parseEcdsaActivationDigest(receipt.ecdsa_activation.activation_digest_b64u);
|
|
4795
|
-
}
|
|
4796
|
-
function materialActivationFromCommit(receipt) {
|
|
4797
|
-
return routerAbMpcMaterialActivationRefFromWire(receipt.ecdsa_activation.material_activation);
|
|
4798
|
-
}
|
|
4799
|
-
function assertRegisteredPublicFactsMatchBinding(publicFacts, binding, serverActivation) {
|
|
4800
|
-
const receiptPublicIdentity = serverActivation.serverActivationReceipt.protocolReceipt.ecdsa_activation.public_identity;
|
|
4801
|
-
if (String(publicFacts.keyHandle) !== String(binding.keyHandle) || String(publicFacts.publicKeyB64u) !== receiptPublicIdentity.threshold_public_key33_b64u || String(binding.clientVerifyingPublicKey33B64u) !== receiptPublicIdentity.derivation_client_share_public_key33_b64u || !participantIdsMatch(publicFacts.participantIds, binding.participantIds)) {
|
|
4802
|
-
throw new Error("Registered ECDSA public facts do not match role-local material");
|
|
4803
|
-
}
|
|
4804
|
-
}
|
|
4805
|
-
function participantIdsMatch(left, right) {
|
|
4806
|
-
if (left.length !== right.length)
|
|
4807
|
-
return false;
|
|
4808
|
-
return left.every((participantId, index) => Number(participantId) === Number(right[index]));
|
|
4809
|
-
}
|
|
4810
|
-
function assertServerActivationMatchesBinding(serverActivation, activationBinding) {
|
|
4811
|
-
assertProtocolReceiptMatchesActivationBinding(serverActivation.serverActivationReceipt.protocolReceipt, activationBinding);
|
|
4812
|
-
}
|
|
4813
|
-
function assertDurableMaterialMatchesActivation(durableMaterial, activationBinding, serverActivation) {
|
|
4814
|
-
const receipt = serverActivation.serverActivationReceipt;
|
|
4815
|
-
const committedMaterialActivation = materialActivationFromCommit(receipt.protocolReceipt);
|
|
4816
|
-
if (!mpcMaterialActivationRefsEqual(durableMaterial.materialActivation, committedMaterialActivation) || durableMaterial.roleLocalBinding !== activationBinding.roleLocalBinding || durableMaterial.durableMaterialRef !== activationBinding.durableMaterialRef || durableMaterial.bindingDigest !== activationBinding.bindingDigest || durableMaterial.lifecycleId !== receipt.lifecycleId || durableMaterial.activationDigest !== receipt.activationDigest || durableMaterial.activatedAt !== receipt.activatedAt) {
|
|
4817
|
-
throw new Error("Durable ECDSA material does not match its activation");
|
|
4818
|
-
}
|
|
4819
|
-
assertNormalSigningMatchesActivation({
|
|
4820
|
-
normalSigning: durableMaterial.routerAbEcdsaDerivationNormalSigning,
|
|
4821
|
-
activationBinding,
|
|
4822
|
-
roleLocalPublicFacts: durableMaterial.roleLocalPublicFacts,
|
|
4823
|
-
receipt: receipt.protocolReceipt
|
|
4824
|
-
});
|
|
4825
|
-
}
|
|
4826
|
-
function assertNormalSigningMatchesActivation(input) {
|
|
4827
|
-
const scope = input.normalSigning.scope;
|
|
4828
|
-
const facts = input.roleLocalPublicFacts;
|
|
4829
|
-
const expectedMaterialActivation = materialActivationFromCommit(input.receipt);
|
|
4830
|
-
const expectedMaterialActivationWire = routerAbMpcMaterialActivationRefToWire({
|
|
4831
|
-
kind: expectedMaterialActivation.kind,
|
|
4832
|
-
activationId: expectedMaterialActivation.activationId,
|
|
4833
|
-
capability: expectedMaterialActivation.capability,
|
|
4834
|
-
materialOwner: expectedMaterialActivation.materialOwner,
|
|
4835
|
-
keyBinding: expectedMaterialActivation.keyBinding,
|
|
4836
|
-
lifecycleBinding: expectedMaterialActivation.lifecycleBinding,
|
|
4837
|
-
signingWorker: expectedMaterialActivation.signingWorker
|
|
4838
|
-
});
|
|
4839
|
-
if (scope.wallet_id !== String(input.activationBinding.signer.walletId) || scope.ecdsa_threshold_key_id !== String(input.activationBinding.roleLocalBinding.ecdsaThresholdKeyId) || scope.signing_root_id !== String(input.activationBinding.signer.signingRootId) || scope.signing_root_version !== String(input.activationBinding.signer.signingRootVersion) || scope.context.application_binding_digest_b64u !== input.receipt.ecdsa_activation.context.application_binding_digest_b64u || !sameRouterAbEcdsaDerivationPublicIdentityV1(scope.public_identity, input.receipt.ecdsa_activation.public_identity) || !sameRouterAbServerIdentityV1(scope.signing_worker, input.receipt.ecdsa_activation.signing_worker) || scope.activation_epoch !== input.receipt.ecdsa_activation.activation_epoch || scope.public_identity.context_binding_b64u !== facts.contextBinding32B64u || scope.public_identity.derivation_client_share_public_key33_b64u !== facts.derivationClientSharePublicKey33B64u || scope.public_identity.server_public_key33_b64u !== facts.relayerPublicKey33B64u || scope.public_identity.threshold_public_key33_b64u !== facts.groupPublicKey33B64u || !sameRouterAbMpcMaterialActivationRef(scope.material_activation, expectedMaterialActivationWire)) {
|
|
4840
|
-
throw new Error("ECDSA normal-signing runtime does not match its activation");
|
|
4841
|
-
}
|
|
4842
|
-
}
|
|
4843
|
-
function assertValidEcdsaReplacement(active, replacement) {
|
|
4844
|
-
if (active.identity.manifestId === replacement.identity.manifestId || Number(replacement.identity.manifestRevision) !== Number(active.identity.manifestRevision) + 1 || active.signer.capability !== replacement.signer.capability || active.signer.signerId !== replacement.signer.signerId || active.signer.walletId !== replacement.signer.walletId || active.signer.authority.authorityDigest !== replacement.signer.authority.authorityDigest || active.signer.materialOwner !== replacement.signer.materialOwner || active.durableMaterial.durableMaterialRef === replacement.durableMaterial.durableMaterialRef || active.activation.serverActivation.serverGeneration === replacement.activation.serverActivation.serverGeneration) {
|
|
4845
|
-
throw new Error("ECDSA replacement manifest does not exactly replace the active manifest");
|
|
4846
|
-
}
|
|
4847
|
-
}
|
|
4848
|
-
function assertNever(value) {
|
|
4849
|
-
throw new Error(`Unexpected ECDSA capability branch: ${String(value)}`);
|
|
4850
|
-
}
|
|
4311
|
+
}));
|
|
4851
4312
|
|
|
4852
4313
|
// src/core/indexedDB/schemaNames.ts
|
|
4853
4314
|
var SEAMS_WALLET_DB_NAME = "seams_wallet";
|
|
@@ -5361,466 +4822,1191 @@ var SEAMS_WALLET_SCHEMA_MANIFEST = [
|
|
|
5361
4822
|
}
|
|
5362
4823
|
]
|
|
5363
4824
|
}
|
|
5364
|
-
];
|
|
4825
|
+
];
|
|
4826
|
+
|
|
4827
|
+
// src/core/indexedDB/seamsWalletDB/schema.ts
|
|
4828
|
+
var SEAMS_WALLET_DB_CONFIG = {
|
|
4829
|
+
dbName: SEAMS_WALLET_DB_NAME,
|
|
4830
|
+
dbVersion: SEAMS_WALLET_DB_VERSION
|
|
4831
|
+
};
|
|
4832
|
+
function keyPathForIndexedDB(keyPath) {
|
|
4833
|
+
return typeof keyPath === "string" ? keyPath : [...keyPath];
|
|
4834
|
+
}
|
|
4835
|
+
function createCanonicalStore(db, definition) {
|
|
4836
|
+
const store = db.createObjectStore(definition.store, {
|
|
4837
|
+
keyPath: keyPathForIndexedDB(definition.keyPath)
|
|
4838
|
+
});
|
|
4839
|
+
for (const index of definition.indexes) {
|
|
4840
|
+
store.createIndex(index.name, keyPathForIndexedDB(index.keyPath), { unique: index.unique });
|
|
4841
|
+
}
|
|
4842
|
+
}
|
|
4843
|
+
function upgradeSeamsWalletDBSchema(db) {
|
|
4844
|
+
for (const definition of SEAMS_WALLET_SCHEMA_MANIFEST) {
|
|
4845
|
+
if (db.objectStoreNames.contains(definition.store))
|
|
4846
|
+
continue;
|
|
4847
|
+
createCanonicalStore(db, definition);
|
|
4848
|
+
}
|
|
4849
|
+
}
|
|
4850
|
+
|
|
4851
|
+
// src/core/indexedDB/seamsWalletDB/manager.ts
|
|
4852
|
+
var INDEXED_DB_BLOCKED_OPEN_TIMEOUT_MS = 3000;
|
|
4853
|
+
var INDEXED_DB_OPEN_TIMEOUT_MS = 8000;
|
|
4854
|
+
var INDEXED_DB_TRANSACTION_TIMEOUT_MS = 8000;
|
|
4855
|
+
function seamsWalletDbOpenBlockedError(dbName) {
|
|
4856
|
+
return new Error(`[SeamsWalletDBManager] IndexedDB open is blocked for ${dbName}. Close other tabs using this app and retry.`);
|
|
4857
|
+
}
|
|
4858
|
+
function indexedDbTimeoutError(message) {
|
|
4859
|
+
return new Error(message);
|
|
4860
|
+
}
|
|
4861
|
+
async function withTimeout(promise, ms, error, onTimeout) {
|
|
4862
|
+
let settled = false;
|
|
4863
|
+
let timeout = null;
|
|
4864
|
+
const timeoutPromise = new Promise((_resolve, reject) => {
|
|
4865
|
+
timeout = setTimeout(() => {
|
|
4866
|
+
if (settled)
|
|
4867
|
+
return;
|
|
4868
|
+
onTimeout?.();
|
|
4869
|
+
reject(error);
|
|
4870
|
+
}, ms);
|
|
4871
|
+
});
|
|
4872
|
+
try {
|
|
4873
|
+
return await Promise.race([promise, timeoutPromise]);
|
|
4874
|
+
} finally {
|
|
4875
|
+
settled = true;
|
|
4876
|
+
if (timeout)
|
|
4877
|
+
clearTimeout(timeout);
|
|
4878
|
+
}
|
|
4879
|
+
}
|
|
4880
|
+
async function runIndexedDbTransactionTask(context, task) {
|
|
4881
|
+
const result = await task(context);
|
|
4882
|
+
await context.tx.done;
|
|
4883
|
+
return result;
|
|
4884
|
+
}
|
|
4885
|
+
var WALLET_AUTHORITY_STORES = new Set([
|
|
4886
|
+
SEAMS_WALLET_STORES.walletAuthorities,
|
|
4887
|
+
SEAMS_WALLET_STORES.walletAuthoritySignerMaterials,
|
|
4888
|
+
SEAMS_WALLET_STORES.walletAuthorityExportRoots,
|
|
4889
|
+
SEAMS_WALLET_STORES.walletAuthMethods,
|
|
4890
|
+
SEAMS_WALLET_STORES.walletSelections,
|
|
4891
|
+
SEAMS_WALLET_STORES.walletSessionAuthorizations
|
|
4892
|
+
]);
|
|
4893
|
+
function recordWalletAuthorityWrite(writes, store, operation, ...args) {
|
|
4894
|
+
const result = Reflect.apply(operation, store, args);
|
|
4895
|
+
writes.changed = true;
|
|
4896
|
+
return result;
|
|
4897
|
+
}
|
|
4898
|
+
function walletAuthorityStoreMember(writes, store, member) {
|
|
4899
|
+
const value = Reflect.get(store, member);
|
|
4900
|
+
if (typeof value !== "function")
|
|
4901
|
+
return value;
|
|
4902
|
+
switch (member) {
|
|
4903
|
+
case "add":
|
|
4904
|
+
case "put":
|
|
4905
|
+
case "delete":
|
|
4906
|
+
case "clear":
|
|
4907
|
+
return recordWalletAuthorityWrite.bind(null, writes, store, value);
|
|
4908
|
+
default:
|
|
4909
|
+
return value.bind(store);
|
|
4910
|
+
}
|
|
4911
|
+
}
|
|
4912
|
+
function walletTransactionStore(tx, writes, name) {
|
|
4913
|
+
const store = tx.objectStore(name);
|
|
4914
|
+
if (tx.mode === "readonly" || !WALLET_AUTHORITY_STORES.has(name))
|
|
4915
|
+
return store;
|
|
4916
|
+
return new Proxy(store, { get: walletAuthorityStoreMember.bind(null, writes) });
|
|
4917
|
+
}
|
|
4918
|
+
function ignoreAbortedWalletTransaction() {}
|
|
4919
|
+
function openWalletAuthorityChannel(dbName) {
|
|
4920
|
+
if (typeof BroadcastChannel === "undefined")
|
|
4921
|
+
return null;
|
|
4922
|
+
try {
|
|
4923
|
+
return new BroadcastChannel(`seams-wallet-authority:${dbName}`);
|
|
4924
|
+
} catch (error) {
|
|
4925
|
+
console.warn("[SeamsWalletDBManager] Authority notifications are unavailable:", error);
|
|
4926
|
+
return null;
|
|
4927
|
+
}
|
|
4928
|
+
}
|
|
4929
|
+
|
|
4930
|
+
class SeamsWalletDBManager {
|
|
4931
|
+
onWalletAuthorityChange(listener) {
|
|
4932
|
+
this.walletAuthorityListeners.add(listener);
|
|
4933
|
+
this.connectWalletAuthorityChannel();
|
|
4934
|
+
return this.removeWalletAuthorityListener.bind(this, listener);
|
|
4935
|
+
}
|
|
4936
|
+
removeWalletAuthorityListener(listener) {
|
|
4937
|
+
this.walletAuthorityListeners.delete(listener);
|
|
4938
|
+
if (this.walletAuthorityListeners.size === 0)
|
|
4939
|
+
this.closeWalletAuthorityChannel();
|
|
4940
|
+
}
|
|
4941
|
+
getWalletAuthorityRevision() {
|
|
4942
|
+
return this.walletAuthorityRevision;
|
|
4943
|
+
}
|
|
4944
|
+
publishWalletAuthorityCommit(writes, dbName) {
|
|
4945
|
+
if (!writes.changed)
|
|
4946
|
+
return;
|
|
4947
|
+
if (dbName === this.config.dbName)
|
|
4948
|
+
this.invalidateWalletAuthority();
|
|
4949
|
+
const channel = dbName === this.config.dbName ? this.walletAuthorityChannel : null;
|
|
4950
|
+
const publisher = channel ?? openWalletAuthorityChannel(dbName);
|
|
4951
|
+
if (!publisher)
|
|
4952
|
+
return;
|
|
4953
|
+
try {
|
|
4954
|
+
publisher.postMessage("authority_committed");
|
|
4955
|
+
} catch (error) {
|
|
4956
|
+
console.warn("[SeamsWalletDBManager] Authority notification failed:", error);
|
|
4957
|
+
} finally {
|
|
4958
|
+
if (publisher !== channel)
|
|
4959
|
+
publisher.close();
|
|
4960
|
+
}
|
|
4961
|
+
}
|
|
4962
|
+
connectWalletAuthorityChannel() {
|
|
4963
|
+
if (this.disabled || this.walletAuthorityChannel || this.walletAuthorityListeners.size === 0)
|
|
4964
|
+
return;
|
|
4965
|
+
const channel = openWalletAuthorityChannel(this.config.dbName);
|
|
4966
|
+
if (!channel)
|
|
4967
|
+
return;
|
|
4968
|
+
channel.onmessage = this.receiveWalletAuthorityCommit.bind(this, channel);
|
|
4969
|
+
this.walletAuthorityChannel = channel;
|
|
4970
|
+
}
|
|
4971
|
+
closeWalletAuthorityChannel() {
|
|
4972
|
+
this.walletAuthorityChannel?.close();
|
|
4973
|
+
this.walletAuthorityChannel = null;
|
|
4974
|
+
}
|
|
4975
|
+
receiveWalletAuthorityCommit(channel, event) {
|
|
4976
|
+
if (channel !== this.walletAuthorityChannel || event.data !== "authority_committed")
|
|
4977
|
+
return;
|
|
4978
|
+
this.invalidateWalletAuthority();
|
|
4979
|
+
}
|
|
4980
|
+
invalidateWalletAuthority() {
|
|
4981
|
+
this.walletAuthorityRevision += 1;
|
|
4982
|
+
for (const listener of Array.from(this.walletAuthorityListeners)) {
|
|
4983
|
+
try {
|
|
4984
|
+
listener();
|
|
4985
|
+
} catch {}
|
|
4986
|
+
}
|
|
4987
|
+
}
|
|
4988
|
+
constructor(config = SEAMS_WALLET_DB_CONFIG) {
|
|
4989
|
+
this.dbPromise = null;
|
|
4990
|
+
this.disabled = false;
|
|
4991
|
+
this.walletAuthorityRevision = 0;
|
|
4992
|
+
this.walletAuthorityChannel = null;
|
|
4993
|
+
this.walletAuthorityListeners = new Set;
|
|
4994
|
+
this.config = config;
|
|
4995
|
+
}
|
|
4996
|
+
getDbName() {
|
|
4997
|
+
return this.config.dbName;
|
|
4998
|
+
}
|
|
4999
|
+
setDbName(dbName) {
|
|
5000
|
+
if (this.config.dbName === dbName)
|
|
5001
|
+
return;
|
|
5002
|
+
this.close();
|
|
5003
|
+
this.closeWalletAuthorityChannel();
|
|
5004
|
+
this.config = { ...this.config, dbName };
|
|
5005
|
+
this.connectWalletAuthorityChannel();
|
|
5006
|
+
this.invalidateWalletAuthority();
|
|
5007
|
+
}
|
|
5008
|
+
setDisabled(disabled) {
|
|
5009
|
+
this.disabled = disabled;
|
|
5010
|
+
if (disabled) {
|
|
5011
|
+
this.close();
|
|
5012
|
+
this.closeWalletAuthorityChannel();
|
|
5013
|
+
} else {
|
|
5014
|
+
this.connectWalletAuthorityChannel();
|
|
5015
|
+
}
|
|
5016
|
+
}
|
|
5017
|
+
isDisabled() {
|
|
5018
|
+
return this.disabled;
|
|
5019
|
+
}
|
|
5020
|
+
close() {
|
|
5021
|
+
if (this.dbPromise) {
|
|
5022
|
+
this.dbPromise.then((db) => db.close()).catch(() => {
|
|
5023
|
+
return;
|
|
5024
|
+
});
|
|
5025
|
+
this.dbPromise = null;
|
|
5026
|
+
}
|
|
5027
|
+
}
|
|
5028
|
+
async getDB() {
|
|
5029
|
+
if (this.disabled) {
|
|
5030
|
+
throw new Error("[SeamsWalletDBManager] IndexedDB is disabled in this environment.");
|
|
5031
|
+
}
|
|
5032
|
+
if (!this.dbPromise) {
|
|
5033
|
+
const dbName = this.config.dbName;
|
|
5034
|
+
const dbVersion = this.config.dbVersion;
|
|
5035
|
+
let blockedTimer = null;
|
|
5036
|
+
let rejectBlockedOpen = null;
|
|
5037
|
+
const blockedOpen = new Promise((_resolve, reject) => {
|
|
5038
|
+
rejectBlockedOpen = reject;
|
|
5039
|
+
});
|
|
5040
|
+
const openPromise = openDB(dbName, dbVersion, {
|
|
5041
|
+
upgrade(db) {
|
|
5042
|
+
upgradeSeamsWalletDBSchema(db);
|
|
5043
|
+
},
|
|
5044
|
+
blocked() {
|
|
5045
|
+
console.warn("[SeamsWalletDBManager] IndexedDB open is blocked.", {
|
|
5046
|
+
dbName,
|
|
5047
|
+
dbVersion
|
|
5048
|
+
});
|
|
5049
|
+
blockedTimer = setTimeout(() => {
|
|
5050
|
+
rejectBlockedOpen?.(seamsWalletDbOpenBlockedError(dbName));
|
|
5051
|
+
}, INDEXED_DB_BLOCKED_OPEN_TIMEOUT_MS);
|
|
5052
|
+
},
|
|
5053
|
+
blocking: () => {
|
|
5054
|
+
console.warn("[SeamsWalletDBManager] IndexedDB connection is blocking an upgrade.", {
|
|
5055
|
+
dbName,
|
|
5056
|
+
dbVersion
|
|
5057
|
+
});
|
|
5058
|
+
this.close();
|
|
5059
|
+
},
|
|
5060
|
+
terminated() {
|
|
5061
|
+
console.warn("[SeamsWalletDBManager] IndexedDB connection has been terminated.", {
|
|
5062
|
+
dbName,
|
|
5063
|
+
dbVersion
|
|
5064
|
+
});
|
|
5065
|
+
}
|
|
5066
|
+
});
|
|
5067
|
+
const guardedOpen = withTimeout(Promise.race([openPromise, blockedOpen]).finally(() => {
|
|
5068
|
+
if (blockedTimer)
|
|
5069
|
+
clearTimeout(blockedTimer);
|
|
5070
|
+
}), INDEXED_DB_OPEN_TIMEOUT_MS, indexedDbTimeoutError(`[SeamsWalletDBManager] IndexedDB open timed out for ${dbName}. Close other tabs using this app and retry.`));
|
|
5071
|
+
this.dbPromise = guardedOpen.catch((error) => {
|
|
5072
|
+
this.dbPromise = null;
|
|
5073
|
+
openPromise.then((db) => db.close()).catch(() => {
|
|
5074
|
+
return;
|
|
5075
|
+
});
|
|
5076
|
+
throw error;
|
|
5077
|
+
});
|
|
5078
|
+
}
|
|
5079
|
+
return await this.dbPromise;
|
|
5080
|
+
}
|
|
5081
|
+
async runTransaction(stores, mode, task, options) {
|
|
5082
|
+
const db = await withTimeout(this.getDB(), INDEXED_DB_OPEN_TIMEOUT_MS, indexedDbTimeoutError(`[SeamsWalletDBManager] IndexedDB connection timed out for ${this.config.dbName}. Close other tabs using this app and retry.`));
|
|
5083
|
+
const tx = db.transaction([...stores], mode, options);
|
|
5084
|
+
const writes = { changed: false };
|
|
5085
|
+
const context = {
|
|
5086
|
+
db,
|
|
5087
|
+
tx,
|
|
5088
|
+
store: walletTransactionStore.bind(null, tx, writes)
|
|
5089
|
+
};
|
|
5090
|
+
tx.done.then(this.publishWalletAuthorityCommit.bind(this, writes, db.name)).catch(ignoreAbortedWalletTransaction);
|
|
5091
|
+
try {
|
|
5092
|
+
return await withTimeout(runIndexedDbTransactionTask(context, task), INDEXED_DB_TRANSACTION_TIMEOUT_MS, indexedDbTimeoutError(`[SeamsWalletDBManager] IndexedDB transaction timed out for ${this.config.dbName}. Close other tabs using this app and retry.`), () => {
|
|
5093
|
+
try {
|
|
5094
|
+
tx.abort();
|
|
5095
|
+
} catch {}
|
|
5096
|
+
});
|
|
5097
|
+
} catch (error) {
|
|
5098
|
+
try {
|
|
5099
|
+
tx.abort();
|
|
5100
|
+
} catch {}
|
|
5101
|
+
await tx.done.catch(() => {
|
|
5102
|
+
return;
|
|
5103
|
+
});
|
|
5104
|
+
throw error;
|
|
5105
|
+
}
|
|
5106
|
+
}
|
|
5107
|
+
}
|
|
5108
|
+
|
|
5109
|
+
// src/core/indexedDB/singletons.ts
|
|
5110
|
+
var seamsWalletDB = new SeamsWalletDBManager;
|
|
5111
|
+
|
|
5112
|
+
// src/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.ts
|
|
5113
|
+
var FIXED_ECDSA_PRESIGN_PROTOCOL_ID = "seams/router-ab-ecdsa-presign/fixed-2of2/v1";
|
|
5114
|
+
function requireIdentityString(value, label) {
|
|
5115
|
+
if (typeof value !== "string" || !value)
|
|
5116
|
+
throw new Error(`${label} is required`);
|
|
5117
|
+
if (value.trim() !== value)
|
|
5118
|
+
throw new Error(`${label} must be canonical`);
|
|
5119
|
+
return value;
|
|
5120
|
+
}
|
|
5121
|
+
function parseEcdsaClientPresignPoolIdentity(value) {
|
|
5122
|
+
if (typeof value !== "object" || value === null) {
|
|
5123
|
+
throw new Error("poolIdentity is required");
|
|
5124
|
+
}
|
|
5125
|
+
const raw = value;
|
|
5126
|
+
if (!Number.isSafeInteger(raw.ownershipGeneration) || Number(raw.ownershipGeneration) < 1) {
|
|
5127
|
+
throw new Error("poolIdentity.ownershipGeneration must be a positive safe integer");
|
|
5128
|
+
}
|
|
5129
|
+
if (raw.pairRole !== "client")
|
|
5130
|
+
throw new Error("poolIdentity.pairRole must be client");
|
|
5131
|
+
if (raw.protocolId !== FIXED_ECDSA_PRESIGN_PROTOCOL_ID) {
|
|
5132
|
+
throw new Error("poolIdentity.protocolId is unsupported");
|
|
5133
|
+
}
|
|
5134
|
+
const relayerUrl = requireIdentityString(raw.relayerUrl, "poolIdentity.relayerUrl");
|
|
5135
|
+
if (relayerUrl.replace(/\/+$/g, "") !== relayerUrl) {
|
|
5136
|
+
throw new Error("poolIdentity.relayerUrl must be canonical");
|
|
5137
|
+
}
|
|
5138
|
+
return {
|
|
5139
|
+
ownershipGeneration: Number(raw.ownershipGeneration),
|
|
5140
|
+
relayerUrl,
|
|
5141
|
+
materialActivationB64u: requireIdentityString(raw.materialActivationB64u, "poolIdentity.materialActivationB64u"),
|
|
5142
|
+
materialActivationId: requireIdentityString(raw.materialActivationId, "poolIdentity.materialActivationId"),
|
|
5143
|
+
capability: requireIdentityString(raw.capability, "poolIdentity.capability"),
|
|
5144
|
+
keyBinding: requireIdentityString(raw.keyBinding, "poolIdentity.keyBinding"),
|
|
5145
|
+
walletId: requireIdentityString(raw.walletId, "poolIdentity.walletId"),
|
|
5146
|
+
signingScopeB64u: requireIdentityString(raw.signingScopeB64u, "poolIdentity.signingScopeB64u"),
|
|
5147
|
+
pairRole: "client",
|
|
5148
|
+
keyEpoch: requireIdentityString(raw.keyEpoch, "poolIdentity.keyEpoch"),
|
|
5149
|
+
activationEpoch: requirePoolRootShareEpoch(raw.activationEpoch),
|
|
5150
|
+
protocolId: FIXED_ECDSA_PRESIGN_PROTOCOL_ID
|
|
5151
|
+
};
|
|
5152
|
+
}
|
|
5153
|
+
function requirePoolRootShareEpoch(value) {
|
|
5154
|
+
const parsed = parseRootShareEpoch(value);
|
|
5155
|
+
if (!parsed.ok)
|
|
5156
|
+
throw new Error("poolIdentity.activationEpoch is invalid");
|
|
5157
|
+
return parsed.value;
|
|
5158
|
+
}
|
|
5159
|
+
function equalEcdsaClientPresignPoolIdentity(left, right) {
|
|
5160
|
+
return left.ownershipGeneration === right.ownershipGeneration && left.relayerUrl === right.relayerUrl && left.materialActivationB64u === right.materialActivationB64u && left.materialActivationId === right.materialActivationId && left.capability === right.capability && left.keyBinding === right.keyBinding && left.walletId === right.walletId && left.signingScopeB64u === right.signingScopeB64u && left.pairRole === right.pairRole && left.keyEpoch === right.keyEpoch && left.activationEpoch === right.activationEpoch && left.protocolId === right.protocolId;
|
|
5161
|
+
}
|
|
5162
|
+
function ecdsaClientPresignPoolKey(identity) {
|
|
5163
|
+
return [
|
|
5164
|
+
identity.protocolId,
|
|
5165
|
+
identity.relayerUrl,
|
|
5166
|
+
identity.signingScopeB64u,
|
|
5167
|
+
identity.materialActivationB64u,
|
|
5168
|
+
identity.ownershipGeneration
|
|
5169
|
+
].join("|");
|
|
5170
|
+
}
|
|
5365
5171
|
|
|
5366
|
-
//
|
|
5367
|
-
var
|
|
5368
|
-
var
|
|
5369
|
-
|
|
5370
|
-
|
|
5371
|
-
|
|
5372
|
-
|
|
5373
|
-
|
|
5374
|
-
|
|
5375
|
-
|
|
5376
|
-
|
|
5377
|
-
|
|
5172
|
+
// src/core/config/presignatures.ts
|
|
5173
|
+
var ECDSA_CLIENT_PRESIGNATURE_CAPACITY = 5;
|
|
5174
|
+
var MAX_DURABLE_CLIENT_PRESIGNATURE_LIFETIME_MS = 90 * 24 * 60 * 60000;
|
|
5175
|
+
|
|
5176
|
+
// src/core/signingEngine/interfaces/ecdsaChainTarget.ts
|
|
5177
|
+
function nonEmptyString(value) {
|
|
5178
|
+
const normalized = String(value ?? "").trim();
|
|
5179
|
+
return normalized ? normalized : null;
|
|
5180
|
+
}
|
|
5181
|
+
function normalizePositiveSafeInteger(value, field) {
|
|
5182
|
+
const normalized = Number(value);
|
|
5183
|
+
if (!Number.isSafeInteger(normalized) || normalized <= 0) {
|
|
5184
|
+
throw new Error(`[threshold-ecdsa] ${field} must be a positive safe integer`);
|
|
5185
|
+
}
|
|
5186
|
+
return normalized;
|
|
5187
|
+
}
|
|
5188
|
+
function defaultNetworkSlug(kind, chainId) {
|
|
5189
|
+
return kind === "tempo" ? `tempo-${chainId}` : `evm-${chainId}`;
|
|
5190
|
+
}
|
|
5191
|
+
function toWalletId(value) {
|
|
5192
|
+
const parsed = parseWalletId(value);
|
|
5193
|
+
if (!parsed.ok) {
|
|
5194
|
+
throw new Error(parsed.error.message);
|
|
5195
|
+
}
|
|
5196
|
+
return parsed.value;
|
|
5197
|
+
}
|
|
5198
|
+
function thresholdEcdsaChainTargetFromChainFamily(args) {
|
|
5199
|
+
const chainId = normalizePositiveSafeInteger(args.chainId, "chainId");
|
|
5200
|
+
const networkSlug = nonEmptyString(args.networkSlug) || defaultNetworkSlug(args.chain, chainId);
|
|
5201
|
+
if (args.chain === "tempo") {
|
|
5202
|
+
return { kind: "tempo", chainId, networkSlug };
|
|
5203
|
+
}
|
|
5204
|
+
return { kind: "evm", namespace: "eip155", chainId, networkSlug };
|
|
5205
|
+
}
|
|
5206
|
+
function thresholdEcdsaChainTargetFromRequest(args) {
|
|
5207
|
+
const rawKind = String(args.kind ?? args.chain ?? "").trim().toLowerCase();
|
|
5208
|
+
if (rawKind !== "evm" && rawKind !== "tempo") {
|
|
5209
|
+
throw new Error("[threshold-ecdsa] ECDSA request target requires chain kind evm or tempo");
|
|
5210
|
+
}
|
|
5211
|
+
if (rawKind === "evm") {
|
|
5212
|
+
const namespace = String(args.namespace ?? "eip155").trim().toLowerCase();
|
|
5213
|
+
if (namespace !== "eip155") {
|
|
5214
|
+
throw new Error("[threshold-ecdsa] EVM chain target namespace must be eip155");
|
|
5215
|
+
}
|
|
5216
|
+
}
|
|
5217
|
+
return thresholdEcdsaChainTargetFromChainFamily({
|
|
5218
|
+
chain: rawKind,
|
|
5219
|
+
chainId: args.chainId,
|
|
5220
|
+
networkSlug: args.networkSlug
|
|
5221
|
+
});
|
|
5222
|
+
}
|
|
5223
|
+
|
|
5224
|
+
// ../shared-ts/src/threshold/participants.ts
|
|
5225
|
+
function normalizeThresholdEd25519ParticipantId(id) {
|
|
5226
|
+
const n = Number(id);
|
|
5227
|
+
if (!Number.isSafeInteger(n) || n < 1 || n > 65535)
|
|
5228
|
+
return null;
|
|
5229
|
+
return n;
|
|
5230
|
+
}
|
|
5231
|
+
function normalizeThresholdEd25519ParticipantIds(input) {
|
|
5232
|
+
if (!Array.isArray(input) || input.length === 0)
|
|
5233
|
+
return null;
|
|
5234
|
+
const out = [];
|
|
5235
|
+
const seen = new Set;
|
|
5236
|
+
for (const v of input) {
|
|
5237
|
+
const id = normalizeThresholdEd25519ParticipantId(v);
|
|
5238
|
+
if (!id)
|
|
5239
|
+
return null;
|
|
5240
|
+
if (!seen.has(id)) {
|
|
5241
|
+
seen.add(id);
|
|
5242
|
+
out.push(id);
|
|
5243
|
+
}
|
|
5244
|
+
}
|
|
5245
|
+
out.sort((a, b) => a - b);
|
|
5246
|
+
return out.length ? out : null;
|
|
5247
|
+
}
|
|
5248
|
+
|
|
5249
|
+
// ../shared-ts/src/utils/emailOtpDomain.ts
|
|
5250
|
+
var EMAIL_OTP_CHANNEL = "email_otp";
|
|
5251
|
+
|
|
5252
|
+
// ../shared-ts/src/utils/signerDomain.ts
|
|
5253
|
+
var WALLET_AUTH_METHODS = {
|
|
5254
|
+
passkey: "passkey",
|
|
5255
|
+
emailOtp: EMAIL_OTP_CHANNEL
|
|
5256
|
+
};
|
|
5257
|
+
var WALLET_AUTH_METHOD_VALUES = Object.values(WALLET_AUTH_METHODS);
|
|
5258
|
+
|
|
5259
|
+
// ../shared-ts/src/utils/thresholdEcdsaKeyHandle.ts
|
|
5260
|
+
function requiredString(value, field) {
|
|
5261
|
+
const normalized = String(value ?? "").trim();
|
|
5262
|
+
if (!normalized)
|
|
5263
|
+
throw new Error(`[threshold-ecdsa-key-handle] ${field} is required`);
|
|
5264
|
+
return normalized;
|
|
5265
|
+
}
|
|
5266
|
+
function normalizedSigningRootVersion(value) {
|
|
5267
|
+
return String(value ?? "").trim() || "default";
|
|
5268
|
+
}
|
|
5269
|
+
async function deriveThresholdEcdsaKeyHandle(input) {
|
|
5270
|
+
const canonical = alphabetizeStringify({
|
|
5271
|
+
domain: "seams.threshold_ecdsa.key_handle.v1",
|
|
5272
|
+
ecdsaThresholdKeyId: requiredString(input.ecdsaThresholdKeyId, "ecdsaThresholdKeyId"),
|
|
5273
|
+
signingRootId: requiredString(input.signingRootId, "signingRootId"),
|
|
5274
|
+
signingRootVersion: normalizedSigningRootVersion(input.signingRootVersion)
|
|
5275
|
+
});
|
|
5276
|
+
const digest = await sha256BytesUtf8(canonical);
|
|
5277
|
+
return `ederivation-key-${base64UrlEncode(digest)}`;
|
|
5278
|
+
}
|
|
5279
|
+
// ../shared-ts/src/utils/digestEncoding.ts
|
|
5280
|
+
var TEXT_ENCODER = new TextEncoder;
|
|
5281
|
+
// src/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.ts
|
|
5282
|
+
function requiredString2(value, field) {
|
|
5283
|
+
const normalized = String(value ?? "").trim();
|
|
5284
|
+
if (!normalized)
|
|
5285
|
+
throw new Error(`[evm-family-ecdsa] ${field} is required`);
|
|
5286
|
+
return normalized;
|
|
5287
|
+
}
|
|
5288
|
+
function normalizeThresholdOwnerAddress(value) {
|
|
5289
|
+
const normalized = String(value ?? "").trim().toLowerCase();
|
|
5290
|
+
if (!/^0x[0-9a-f]{40}$/.test(normalized)) {
|
|
5291
|
+
throw new Error("[evm-family-ecdsa] thresholdOwnerAddress must be an EVM address");
|
|
5292
|
+
}
|
|
5293
|
+
return normalized;
|
|
5294
|
+
}
|
|
5295
|
+
function toEvmFamilyEcdsaKeyHandle(value) {
|
|
5296
|
+
return requiredString2(value, "keyHandle");
|
|
5297
|
+
}
|
|
5298
|
+
function toThresholdEcdsaPublicKeyB64u(value) {
|
|
5299
|
+
const normalized = requiredString2(value, "thresholdEcdsaPublicKeyB64u");
|
|
5300
|
+
let bytes;
|
|
5301
|
+
try {
|
|
5302
|
+
bytes = base64UrlDecode(normalized);
|
|
5303
|
+
} catch {
|
|
5304
|
+
throw new Error("[evm-family-ecdsa] thresholdEcdsaPublicKeyB64u must be base64url");
|
|
5305
|
+
}
|
|
5306
|
+
if (bytes.length !== 33) {
|
|
5307
|
+
throw new Error("[evm-family-ecdsa] thresholdEcdsaPublicKeyB64u must decode to 33 bytes");
|
|
5308
|
+
}
|
|
5309
|
+
return normalized;
|
|
5310
|
+
}
|
|
5311
|
+
function toParticipantId(value) {
|
|
5312
|
+
const normalized = Math.floor(Number(value));
|
|
5313
|
+
if (!Number.isSafeInteger(normalized) || normalized < 1 || normalized > 65535) {
|
|
5314
|
+
throw new Error("[evm-family-ecdsa] participantId must be a positive safe integer");
|
|
5315
|
+
}
|
|
5316
|
+
return normalized;
|
|
5317
|
+
}
|
|
5318
|
+
function normalizeParticipantIds(value) {
|
|
5319
|
+
const participantIds = normalizeThresholdEd25519ParticipantIds(value);
|
|
5320
|
+
if (!participantIds?.length) {
|
|
5321
|
+
throw new Error("[evm-family-ecdsa] participantIds are required");
|
|
5322
|
+
}
|
|
5323
|
+
return participantIds.map(toParticipantId);
|
|
5324
|
+
}
|
|
5325
|
+
function buildVerifiedEcdsaPublicFacts(input) {
|
|
5326
|
+
return {
|
|
5327
|
+
kind: "verified_ecdsa_public_facts",
|
|
5328
|
+
keyHandle: input.keyHandle,
|
|
5329
|
+
publicKeyB64u: toThresholdEcdsaPublicKeyB64u(input.publicKeyB64u),
|
|
5330
|
+
participantIds: normalizeParticipantIds(input.participantIds),
|
|
5331
|
+
thresholdOwnerAddress: normalizeThresholdOwnerAddress(input.thresholdOwnerAddress)
|
|
5332
|
+
};
|
|
5333
|
+
}
|
|
5334
|
+
|
|
5335
|
+
// src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.ts
|
|
5336
|
+
function toEcdsaDerivationThresholdKeyId(value) {
|
|
5337
|
+
return parseSdkEcdsaDerivationThresholdKeyId(value);
|
|
5338
|
+
}
|
|
5339
|
+
function toEcdsaDerivationSigningRootId(value) {
|
|
5340
|
+
return parseSdkEcdsaDerivationSigningRootId(value);
|
|
5341
|
+
}
|
|
5342
|
+
function toEcdsaDerivationSigningRootVersion(value) {
|
|
5343
|
+
return parseSdkEcdsaDerivationSigningRootVersion(value);
|
|
5344
|
+
}
|
|
5345
|
+
|
|
5346
|
+
// src/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.ts
|
|
5347
|
+
function requiredString3(value, field) {
|
|
5348
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
5349
|
+
throw new Error(`[platform][ecdsa-role-local] ${field} is required`);
|
|
5350
|
+
}
|
|
5351
|
+
return value.trim();
|
|
5352
|
+
}
|
|
5353
|
+
function parseBase64UrlBytes(value, field, byteLength) {
|
|
5354
|
+
const normalized = requiredString3(value, field);
|
|
5355
|
+
const decoded = base64UrlDecode(normalized);
|
|
5356
|
+
if (decoded.length !== byteLength) {
|
|
5357
|
+
throw new Error(`[platform][ecdsa-role-local] ${field} must decode to ${byteLength} bytes`);
|
|
5358
|
+
}
|
|
5359
|
+
return normalized;
|
|
5360
|
+
}
|
|
5361
|
+
function parseCompressedSecp256k1PublicKey(value, field) {
|
|
5362
|
+
const normalized = requiredString3(value, field);
|
|
5363
|
+
const decoded = base64UrlDecode(normalized);
|
|
5364
|
+
if (decoded.length !== 33) {
|
|
5365
|
+
throw new Error(`[platform][ecdsa-role-local] ${field} must decode to 33 bytes`);
|
|
5366
|
+
}
|
|
5367
|
+
if (decoded[0] !== 2 && decoded[0] !== 3) {
|
|
5368
|
+
throw new Error(`[platform][ecdsa-role-local] ${field} must be a compressed SEC1 key`);
|
|
5369
|
+
}
|
|
5370
|
+
return normalized;
|
|
5378
5371
|
}
|
|
5379
|
-
function
|
|
5380
|
-
return
|
|
5381
|
-
IDBCursor.prototype.advance,
|
|
5382
|
-
IDBCursor.prototype.continue,
|
|
5383
|
-
IDBCursor.prototype.continuePrimaryKey
|
|
5384
|
-
]);
|
|
5372
|
+
function parseEcdsaDerivationClientSharePublicKey(value) {
|
|
5373
|
+
return parseCompressedSecp256k1PublicKey(value, "derivationClientSharePublicKey33B64u");
|
|
5385
5374
|
}
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
var reverseTransformCache = new WeakMap;
|
|
5389
|
-
function promisifyRequest(request) {
|
|
5390
|
-
const promise = new Promise((resolve, reject) => {
|
|
5391
|
-
const unlisten = () => {
|
|
5392
|
-
request.removeEventListener("success", success);
|
|
5393
|
-
request.removeEventListener("error", error);
|
|
5394
|
-
};
|
|
5395
|
-
const success = () => {
|
|
5396
|
-
resolve(wrap(request.result));
|
|
5397
|
-
unlisten();
|
|
5398
|
-
};
|
|
5399
|
-
const error = () => {
|
|
5400
|
-
reject(request.error);
|
|
5401
|
-
unlisten();
|
|
5402
|
-
};
|
|
5403
|
-
request.addEventListener("success", success);
|
|
5404
|
-
request.addEventListener("error", error);
|
|
5405
|
-
});
|
|
5406
|
-
reverseTransformCache.set(promise, request);
|
|
5407
|
-
return promise;
|
|
5375
|
+
function parseRelayerEcdsaDerivationPublicKey(value) {
|
|
5376
|
+
return parseCompressedSecp256k1PublicKey(value, "relayerPublicKey33B64u");
|
|
5408
5377
|
}
|
|
5409
|
-
function
|
|
5410
|
-
|
|
5411
|
-
return;
|
|
5412
|
-
const done = new Promise((resolve, reject) => {
|
|
5413
|
-
const unlisten = () => {
|
|
5414
|
-
tx.removeEventListener("complete", complete);
|
|
5415
|
-
tx.removeEventListener("error", error);
|
|
5416
|
-
tx.removeEventListener("abort", error);
|
|
5417
|
-
};
|
|
5418
|
-
const complete = () => {
|
|
5419
|
-
resolve();
|
|
5420
|
-
unlisten();
|
|
5421
|
-
};
|
|
5422
|
-
const error = () => {
|
|
5423
|
-
reject(tx.error || new DOMException("AbortError", "AbortError"));
|
|
5424
|
-
unlisten();
|
|
5425
|
-
};
|
|
5426
|
-
tx.addEventListener("complete", complete);
|
|
5427
|
-
tx.addEventListener("error", error);
|
|
5428
|
-
tx.addEventListener("abort", error);
|
|
5429
|
-
});
|
|
5430
|
-
transactionDoneMap.set(tx, done);
|
|
5378
|
+
function parseGroupPublicKey(value) {
|
|
5379
|
+
return parseCompressedSecp256k1PublicKey(value, "groupPublicKey33B64u");
|
|
5431
5380
|
}
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5437
|
-
|
|
5438
|
-
|
|
5381
|
+
function parseEthereumAddress2(value) {
|
|
5382
|
+
const normalized = requiredString3(value, "ethereumAddress").toLowerCase();
|
|
5383
|
+
if (!/^0x[0-9a-f]{40}$/.test(normalized)) {
|
|
5384
|
+
throw new Error("[platform][ecdsa-role-local] ethereumAddress must be an EVM address");
|
|
5385
|
+
}
|
|
5386
|
+
return normalized;
|
|
5387
|
+
}
|
|
5388
|
+
function parseParticipantIds(value) {
|
|
5389
|
+
if (!Array.isArray(value) || value.length !== 2 || value[0] !== 1 || value[1] !== 2) {
|
|
5390
|
+
throw new Error("[platform][ecdsa-role-local] participantIds must be [1, 2]");
|
|
5391
|
+
}
|
|
5392
|
+
return [1, 2];
|
|
5393
|
+
}
|
|
5394
|
+
function parseChainTarget(input) {
|
|
5395
|
+
if (input === null || typeof input !== "object" || Array.isArray(input)) {
|
|
5396
|
+
throw new Error("[platform][ecdsa-role-local] chainTarget must be an object");
|
|
5397
|
+
}
|
|
5398
|
+
const kind = requiredString3(Reflect.get(input, "kind"), "chainTarget.kind").toLowerCase();
|
|
5399
|
+
switch (kind) {
|
|
5400
|
+
case "evm": {
|
|
5401
|
+
const fields = Object.keys(input).sort();
|
|
5402
|
+
if (fields.join(",") !== "chainId,kind,namespace,networkSlug") {
|
|
5403
|
+
throw new Error("[platform][ecdsa-role-local] EVM chainTarget fields are invalid");
|
|
5439
5404
|
}
|
|
5405
|
+
return thresholdEcdsaChainTargetFromRequest({
|
|
5406
|
+
kind: Reflect.get(input, "kind"),
|
|
5407
|
+
namespace: Reflect.get(input, "namespace"),
|
|
5408
|
+
chainId: Reflect.get(input, "chainId"),
|
|
5409
|
+
networkSlug: Reflect.get(input, "networkSlug")
|
|
5410
|
+
});
|
|
5440
5411
|
}
|
|
5441
|
-
|
|
5442
|
-
|
|
5443
|
-
|
|
5444
|
-
|
|
5445
|
-
|
|
5446
|
-
|
|
5447
|
-
|
|
5448
|
-
|
|
5449
|
-
|
|
5412
|
+
case "tempo": {
|
|
5413
|
+
const fields = Object.keys(input).sort();
|
|
5414
|
+
if (fields.join(",") !== "chainId,kind,networkSlug") {
|
|
5415
|
+
throw new Error("[platform][ecdsa-role-local] Tempo chainTarget fields are invalid");
|
|
5416
|
+
}
|
|
5417
|
+
return thresholdEcdsaChainTargetFromRequest({
|
|
5418
|
+
kind: Reflect.get(input, "kind"),
|
|
5419
|
+
chainId: Reflect.get(input, "chainId"),
|
|
5420
|
+
networkSlug: Reflect.get(input, "networkSlug")
|
|
5421
|
+
});
|
|
5450
5422
|
}
|
|
5451
|
-
|
|
5423
|
+
default:
|
|
5424
|
+
throw new Error("[platform][ecdsa-role-local] chainTarget kind is invalid");
|
|
5425
|
+
}
|
|
5426
|
+
}
|
|
5427
|
+
function parsePublicFacts(input) {
|
|
5428
|
+
if (input === null || typeof input !== "object" || Array.isArray(input)) {
|
|
5429
|
+
throw new Error("[platform][ecdsa-role-local] publicFacts must be an object");
|
|
5430
|
+
}
|
|
5431
|
+
const fields = Object.keys(input).sort();
|
|
5432
|
+
if (fields.join(",") !== "applicationBindingDigestB64u,chainTarget,clientParticipantId,contextBinding32B64u,derivationClientSharePublicKey33B64u,ecdsaThresholdKeyId,ethereumAddress,groupPublicKey33B64u,keyHandle,participantIds,publicCapability,relayerParticipantId,relayerPublicKey33B64u,signingRootId,signingRootVersion,walletId") {
|
|
5433
|
+
throw new Error("[platform][ecdsa-role-local] publicFacts fields are invalid");
|
|
5434
|
+
}
|
|
5435
|
+
if (Reflect.get(input, "clientParticipantId") !== 1) {
|
|
5436
|
+
throw new Error("[platform][ecdsa-role-local] clientParticipantId must be 1");
|
|
5437
|
+
}
|
|
5438
|
+
if (Reflect.get(input, "relayerParticipantId") !== 2) {
|
|
5439
|
+
throw new Error("[platform][ecdsa-role-local] relayerParticipantId must be 2");
|
|
5440
|
+
}
|
|
5441
|
+
const derivationClientSharePublicKey33B64u = parseEcdsaDerivationClientSharePublicKey(Reflect.get(input, "derivationClientSharePublicKey33B64u"));
|
|
5442
|
+
const relayerPublicKey33B64u = parseRelayerEcdsaDerivationPublicKey(Reflect.get(input, "relayerPublicKey33B64u"));
|
|
5443
|
+
if (String(derivationClientSharePublicKey33B64u) === String(relayerPublicKey33B64u)) {
|
|
5444
|
+
throw new Error("[platform][ecdsa-role-local] relayerPublicKey33B64u must differ from derivationClientSharePublicKey33B64u");
|
|
5445
|
+
}
|
|
5446
|
+
return {
|
|
5447
|
+
walletId: toWalletId(Reflect.get(input, "walletId")),
|
|
5448
|
+
chainTarget: parseChainTarget(Reflect.get(input, "chainTarget")),
|
|
5449
|
+
keyHandle: requiredString3(Reflect.get(input, "keyHandle"), "keyHandle"),
|
|
5450
|
+
ecdsaThresholdKeyId: toEcdsaDerivationThresholdKeyId(Reflect.get(input, "ecdsaThresholdKeyId")),
|
|
5451
|
+
signingRootId: toEcdsaDerivationSigningRootId(Reflect.get(input, "signingRootId")),
|
|
5452
|
+
signingRootVersion: toEcdsaDerivationSigningRootVersion(Reflect.get(input, "signingRootVersion")),
|
|
5453
|
+
applicationBindingDigestB64u: parseBase64UrlBytes(Reflect.get(input, "applicationBindingDigestB64u"), "applicationBindingDigestB64u", 32),
|
|
5454
|
+
clientParticipantId: 1,
|
|
5455
|
+
relayerParticipantId: 2,
|
|
5456
|
+
participantIds: parseParticipantIds(Reflect.get(input, "participantIds")),
|
|
5457
|
+
contextBinding32B64u: parseBase64UrlBytes(Reflect.get(input, "contextBinding32B64u"), "contextBinding32B64u", 32),
|
|
5458
|
+
derivationClientSharePublicKey33B64u,
|
|
5459
|
+
relayerPublicKey33B64u,
|
|
5460
|
+
groupPublicKey33B64u: parseGroupPublicKey(Reflect.get(input, "groupPublicKey33B64u")),
|
|
5461
|
+
ethereumAddress: parseEthereumAddress2(Reflect.get(input, "ethereumAddress")),
|
|
5462
|
+
publicCapability: parseRouterAbEcdsaDerivationPublicCapabilityV1(Reflect.get(input, "publicCapability"))
|
|
5463
|
+
};
|
|
5464
|
+
}
|
|
5465
|
+
function buildEcdsaRoleLocalPublicFacts(input) {
|
|
5466
|
+
return parsePublicFacts(input);
|
|
5467
|
+
}
|
|
5468
|
+
|
|
5469
|
+
// src/core/signingEngine/session/material/ecdsaCapabilityManifest.ts
|
|
5470
|
+
class EcdsaCapabilityManifestProof {
|
|
5471
|
+
retainProof() {
|
|
5472
|
+
return true;
|
|
5473
|
+
}
|
|
5474
|
+
constructor() {
|
|
5475
|
+
this.retainProof();
|
|
5476
|
+
}
|
|
5477
|
+
}
|
|
5478
|
+
|
|
5479
|
+
class EcdsaCapabilityScopeProof extends EcdsaCapabilityManifestProof {
|
|
5480
|
+
constructor(targetMemberships) {
|
|
5481
|
+
super();
|
|
5482
|
+
this.kind = "evm_family";
|
|
5483
|
+
this.targetMemberships = targetMemberships;
|
|
5484
|
+
}
|
|
5485
|
+
}
|
|
5486
|
+
|
|
5487
|
+
class EcdsaManifestIdentityProof extends EcdsaCapabilityManifestProof {
|
|
5488
|
+
constructor(fields) {
|
|
5489
|
+
super();
|
|
5490
|
+
this.manifestId = fields.manifestId;
|
|
5491
|
+
this.manifestRevision = fields.manifestRevision;
|
|
5492
|
+
}
|
|
5493
|
+
}
|
|
5494
|
+
|
|
5495
|
+
class NoCurrentEcdsaManifestExpectationProof extends EcdsaCapabilityManifestProof {
|
|
5496
|
+
constructor() {
|
|
5497
|
+
super(...arguments);
|
|
5498
|
+
this.kind = "no_current_manifest";
|
|
5499
|
+
}
|
|
5500
|
+
}
|
|
5501
|
+
|
|
5502
|
+
class ExactEcdsaManifestExpectationProof extends EcdsaCapabilityManifestProof {
|
|
5503
|
+
constructor(identity) {
|
|
5504
|
+
super();
|
|
5505
|
+
this.kind = "exact_manifest";
|
|
5506
|
+
this.manifestId = identity.manifestId;
|
|
5507
|
+
this.manifestRevision = identity.manifestRevision;
|
|
5508
|
+
}
|
|
5509
|
+
}
|
|
5510
|
+
|
|
5511
|
+
class NoCurrentEcdsaServerGenerationExpectationProof extends EcdsaCapabilityManifestProof {
|
|
5512
|
+
constructor() {
|
|
5513
|
+
super(...arguments);
|
|
5514
|
+
this.kind = "no_current_generation";
|
|
5515
|
+
}
|
|
5516
|
+
}
|
|
5517
|
+
|
|
5518
|
+
class ExactEcdsaServerGenerationExpectationProof extends EcdsaCapabilityManifestProof {
|
|
5519
|
+
constructor(serverGeneration) {
|
|
5520
|
+
super();
|
|
5521
|
+
this.kind = "exact_generation";
|
|
5522
|
+
this.serverGeneration = serverGeneration;
|
|
5523
|
+
}
|
|
5524
|
+
}
|
|
5525
|
+
|
|
5526
|
+
class EcdsaRoleLocalMaterialBindingProof extends EcdsaCapabilityManifestProof {
|
|
5527
|
+
constructor(fields) {
|
|
5528
|
+
super();
|
|
5529
|
+
this.kind = "ecdsa_role_local_material_binding";
|
|
5530
|
+
this.keyHandle = fields.keyHandle;
|
|
5531
|
+
this.ecdsaThresholdKeyId = fields.ecdsaThresholdKeyId;
|
|
5532
|
+
this.clientVerifyingPublicKey33B64u = fields.clientVerifyingPublicKey33B64u;
|
|
5533
|
+
this.participantIds = fields.participantIds;
|
|
5534
|
+
this.relayerKeyId = fields.relayerKeyId;
|
|
5535
|
+
}
|
|
5536
|
+
}
|
|
5537
|
+
|
|
5538
|
+
class PreparedEvmFamilySignerProof extends EcdsaCapabilityManifestProof {
|
|
5539
|
+
constructor(fields) {
|
|
5540
|
+
super();
|
|
5541
|
+
this.kind = "prepared_evm_family_signer";
|
|
5542
|
+
this.capability = fields.capability;
|
|
5543
|
+
this.signerId = fields.signerId;
|
|
5544
|
+
this.walletId = fields.authority.walletId;
|
|
5545
|
+
this.authority = fields.authority;
|
|
5546
|
+
this.scope = fields.scope;
|
|
5547
|
+
this.materialOwner = fields.materialOwner;
|
|
5548
|
+
this.signingRootId = fields.signingRootId;
|
|
5549
|
+
this.signingRootVersion = fields.signingRootVersion;
|
|
5550
|
+
}
|
|
5551
|
+
}
|
|
5552
|
+
|
|
5553
|
+
class RegisteredEvmFamilySignerProof extends EcdsaCapabilityManifestProof {
|
|
5554
|
+
constructor(fields) {
|
|
5555
|
+
super();
|
|
5556
|
+
this.kind = "registered_evm_family_signer";
|
|
5557
|
+
this.capability = fields.preparedSigner.capability;
|
|
5558
|
+
this.signerId = fields.preparedSigner.signerId;
|
|
5559
|
+
this.walletId = fields.preparedSigner.walletId;
|
|
5560
|
+
this.authority = fields.preparedSigner.authority;
|
|
5561
|
+
this.scope = fields.preparedSigner.scope;
|
|
5562
|
+
this.materialOwner = fields.preparedSigner.materialOwner;
|
|
5563
|
+
this.signingRootId = fields.preparedSigner.signingRootId;
|
|
5564
|
+
this.signingRootVersion = fields.preparedSigner.signingRootVersion;
|
|
5565
|
+
this.registeredPublicFacts = fields.registeredPublicFacts;
|
|
5452
5566
|
}
|
|
5453
|
-
};
|
|
5454
|
-
function replaceTraps(callback) {
|
|
5455
|
-
idbProxyTraps = callback(idbProxyTraps);
|
|
5456
5567
|
}
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
|
|
5462
|
-
|
|
5568
|
+
|
|
5569
|
+
class EncryptedEcdsaPendingCandidateProof extends EcdsaCapabilityManifestProof {
|
|
5570
|
+
constructor(fields) {
|
|
5571
|
+
super();
|
|
5572
|
+
this.kind = "encrypted_ecdsa_pending_candidate";
|
|
5573
|
+
this.sealingKeyId = fields.sealingKeyId;
|
|
5574
|
+
this.iv12B64u = fields.iv12B64u;
|
|
5575
|
+
this.ciphertextB64u = fields.ciphertextB64u;
|
|
5576
|
+
this.ciphertextDigest = fields.ciphertextDigest;
|
|
5463
5577
|
}
|
|
5464
|
-
return function(...args) {
|
|
5465
|
-
return wrap(func.apply(unwrap(this), args));
|
|
5466
|
-
};
|
|
5467
5578
|
}
|
|
5468
|
-
|
|
5469
|
-
|
|
5470
|
-
|
|
5471
|
-
|
|
5472
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
5579
|
+
|
|
5580
|
+
class EcdsaActivationBindingProof extends EcdsaCapabilityManifestProof {
|
|
5581
|
+
constructor(fields) {
|
|
5582
|
+
super();
|
|
5583
|
+
this.kind = "ecdsa_activation_binding";
|
|
5584
|
+
this.targetManifest = fields.targetManifest;
|
|
5585
|
+
this.signer = fields.signer;
|
|
5586
|
+
this.roleLocalBinding = fields.roleLocalBinding;
|
|
5587
|
+
this.bindingDigest = fields.bindingDigest;
|
|
5588
|
+
this.durableMaterialRef = fields.durableMaterialRef;
|
|
5589
|
+
}
|
|
5476
5590
|
}
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
transformCache.set(value, newValue);
|
|
5485
|
-
reverseTransformCache.set(newValue, value);
|
|
5591
|
+
|
|
5592
|
+
class PreparedEcdsaActivationCandidateProof extends EcdsaCapabilityManifestProof {
|
|
5593
|
+
constructor(fields) {
|
|
5594
|
+
super();
|
|
5595
|
+
this.kind = "prepared_ecdsa_activation_candidate";
|
|
5596
|
+
this.activationBinding = fields.activationBinding;
|
|
5597
|
+
this.encryptedPending = fields.encryptedPending;
|
|
5486
5598
|
}
|
|
5487
|
-
return newValue;
|
|
5488
5599
|
}
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
|
|
5496
|
-
|
|
5600
|
+
|
|
5601
|
+
class EcdsaServerActivationCommandProof extends EcdsaCapabilityManifestProof {
|
|
5602
|
+
constructor(fields) {
|
|
5603
|
+
super();
|
|
5604
|
+
this.kind = "ecdsa_server_activation_command";
|
|
5605
|
+
this.correlationId = fields.correlationId;
|
|
5606
|
+
this.expectedGeneration = fields.expectedGeneration;
|
|
5607
|
+
this.requestDigest = fields.requestDigest;
|
|
5608
|
+
this.canonicalRequest = fields.canonicalRequest;
|
|
5497
5609
|
}
|
|
5498
|
-
|
|
5499
|
-
|
|
5610
|
+
}
|
|
5611
|
+
|
|
5612
|
+
class EcdsaServerActivationReceiptProof extends EcdsaCapabilityManifestProof {
|
|
5613
|
+
constructor(fields) {
|
|
5614
|
+
super();
|
|
5615
|
+
this.kind = "ecdsa_server_activation_receipt";
|
|
5616
|
+
this.lifecycleId = fields.lifecycleId;
|
|
5617
|
+
this.activationDigest = fields.activationDigest;
|
|
5618
|
+
this.activatedAt = fields.activatedAt;
|
|
5619
|
+
this.protocolReceipt = fields.protocolReceipt;
|
|
5500
5620
|
}
|
|
5501
|
-
openPromise.then((db) => {
|
|
5502
|
-
if (terminated)
|
|
5503
|
-
db.addEventListener("close", () => terminated());
|
|
5504
|
-
if (blocking) {
|
|
5505
|
-
db.addEventListener("versionchange", (event) => blocking(event.oldVersion, event.newVersion, event));
|
|
5506
|
-
}
|
|
5507
|
-
}).catch(() => {});
|
|
5508
|
-
return openPromise;
|
|
5509
5621
|
}
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
|
|
5622
|
+
|
|
5623
|
+
class EcdsaServerActivationCommitProof extends EcdsaCapabilityManifestProof {
|
|
5624
|
+
constructor(fields) {
|
|
5625
|
+
super();
|
|
5626
|
+
this.kind = "ecdsa_server_activation_commit";
|
|
5627
|
+
this.correlationId = fields.correlationId;
|
|
5628
|
+
this.activationRequestDigest = fields.activationRequestDigest;
|
|
5629
|
+
this.serverGeneration = fields.serverGeneration;
|
|
5630
|
+
this.serverActivationReceipt = fields.serverActivationReceipt;
|
|
5516
5631
|
}
|
|
5517
|
-
|
|
5518
|
-
|
|
5519
|
-
|
|
5520
|
-
|
|
5521
|
-
|
|
5522
|
-
|
|
5523
|
-
|
|
5632
|
+
}
|
|
5633
|
+
|
|
5634
|
+
class PreparedEcdsaActivationJournalProof extends EcdsaCapabilityManifestProof {
|
|
5635
|
+
constructor(fields) {
|
|
5636
|
+
super();
|
|
5637
|
+
this.kind = "activation_prepared";
|
|
5638
|
+
this.journalId = fields.journalId;
|
|
5639
|
+
this.expectedManifest = fields.expectedManifest;
|
|
5640
|
+
this.activationCommand = fields.activationCommand;
|
|
5641
|
+
this.candidate = fields.candidate;
|
|
5642
|
+
this.createdAt = fields.createdAt;
|
|
5524
5643
|
}
|
|
5525
|
-
const method = async function(storeName, ...args) {
|
|
5526
|
-
const tx = this.transaction(storeName, isWrite ? "readwrite" : "readonly");
|
|
5527
|
-
let target = tx.store;
|
|
5528
|
-
if (useIndex)
|
|
5529
|
-
target = target.index(args.shift());
|
|
5530
|
-
return (await Promise.all([
|
|
5531
|
-
target[targetFuncName](...args),
|
|
5532
|
-
isWrite && tx.done
|
|
5533
|
-
]))[0];
|
|
5534
|
-
};
|
|
5535
|
-
cachedMethods.set(prop, method);
|
|
5536
|
-
return method;
|
|
5537
5644
|
}
|
|
5538
|
-
|
|
5539
|
-
|
|
5540
|
-
|
|
5541
|
-
|
|
5542
|
-
|
|
5543
|
-
|
|
5544
|
-
|
|
5545
|
-
|
|
5546
|
-
|
|
5547
|
-
|
|
5548
|
-
|
|
5549
|
-
if (!advanceMethodProps.includes(prop))
|
|
5550
|
-
return target[prop];
|
|
5551
|
-
let cachedFunc = methodMap[prop];
|
|
5552
|
-
if (!cachedFunc) {
|
|
5553
|
-
cachedFunc = methodMap[prop] = function(...args) {
|
|
5554
|
-
advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));
|
|
5555
|
-
};
|
|
5556
|
-
}
|
|
5557
|
-
return cachedFunc;
|
|
5645
|
+
|
|
5646
|
+
class ServerCommittedEcdsaActivationJournalProof extends EcdsaCapabilityManifestProof {
|
|
5647
|
+
constructor(fields) {
|
|
5648
|
+
super();
|
|
5649
|
+
this.kind = "server_activation_committed";
|
|
5650
|
+
this.journalId = fields.journalId;
|
|
5651
|
+
this.expectedManifest = fields.expectedManifest;
|
|
5652
|
+
this.activationCommand = fields.activationCommand;
|
|
5653
|
+
this.candidate = fields.candidate;
|
|
5654
|
+
this.createdAt = fields.createdAt;
|
|
5655
|
+
this.serverActivation = fields.serverActivation;
|
|
5558
5656
|
}
|
|
5559
|
-
}
|
|
5560
|
-
|
|
5561
|
-
|
|
5562
|
-
|
|
5563
|
-
|
|
5657
|
+
}
|
|
5658
|
+
|
|
5659
|
+
class DurableEcdsaMaterialBindingProof extends EcdsaCapabilityManifestProof {
|
|
5660
|
+
constructor(fields) {
|
|
5661
|
+
super();
|
|
5662
|
+
this.kind = "durable_ecdsa_material";
|
|
5663
|
+
this.materialActivation = fields.materialActivation;
|
|
5664
|
+
this.routerAbEcdsaDerivationNormalSigning = fields.routerAbEcdsaDerivationNormalSigning;
|
|
5665
|
+
this.roleLocalPublicFacts = fields.roleLocalPublicFacts;
|
|
5666
|
+
this.roleLocalBinding = fields.roleLocalBinding;
|
|
5667
|
+
this.durableMaterialRef = fields.durableMaterialRef;
|
|
5668
|
+
this.bindingDigest = fields.bindingDigest;
|
|
5669
|
+
this.lifecycleId = fields.lifecycleId;
|
|
5670
|
+
this.ciphertextDigest = fields.ciphertextDigest;
|
|
5671
|
+
this.activationDigest = fields.activationDigest;
|
|
5672
|
+
this.activatedAt = fields.activatedAt;
|
|
5673
|
+
this.runtimePolicyScope = fields.runtimePolicyScope;
|
|
5564
5674
|
}
|
|
5565
|
-
|
|
5566
|
-
|
|
5567
|
-
|
|
5568
|
-
|
|
5569
|
-
|
|
5570
|
-
|
|
5571
|
-
|
|
5572
|
-
|
|
5573
|
-
|
|
5574
|
-
|
|
5675
|
+
}
|
|
5676
|
+
|
|
5677
|
+
class ValidatedEncryptedEcdsaReadyMaterialProof extends EcdsaCapabilityManifestProof {
|
|
5678
|
+
constructor(fields) {
|
|
5679
|
+
super();
|
|
5680
|
+
this.kind = "encrypted_ecdsa_ready_material";
|
|
5681
|
+
this.binding = fields.binding;
|
|
5682
|
+
this.sealingKeyId = fields.sealingKeyId;
|
|
5683
|
+
this.iv12B64u = fields.iv12B64u;
|
|
5684
|
+
this.ciphertextB64u = fields.ciphertextB64u;
|
|
5575
5685
|
}
|
|
5576
5686
|
}
|
|
5577
|
-
|
|
5578
|
-
|
|
5687
|
+
|
|
5688
|
+
class ActiveEcdsaCapabilityManifestProof extends EcdsaCapabilityManifestProof {
|
|
5689
|
+
constructor(fields) {
|
|
5690
|
+
super();
|
|
5691
|
+
this.kind = "active_ecdsa_capability_manifest";
|
|
5692
|
+
this.identity = fields.identity;
|
|
5693
|
+
this.signer = fields.signer;
|
|
5694
|
+
this.activation = fields.activation;
|
|
5695
|
+
this.durableMaterial = fields.durableMaterial;
|
|
5696
|
+
this.committedAt = fields.committedAt;
|
|
5697
|
+
}
|
|
5698
|
+
}
|
|
5699
|
+
|
|
5700
|
+
class ReplacedEcdsaCapabilityManifestProof extends EcdsaCapabilityManifestProof {
|
|
5701
|
+
constructor(fields) {
|
|
5702
|
+
super();
|
|
5703
|
+
this.kind = "replaced_ecdsa_capability_manifest";
|
|
5704
|
+
this.identity = fields.identity;
|
|
5705
|
+
this.signer = fields.signer;
|
|
5706
|
+
this.retirement = fields.retirement;
|
|
5707
|
+
}
|
|
5708
|
+
}
|
|
5709
|
+
function unwrapDomainId(result) {
|
|
5710
|
+
if (!result.ok)
|
|
5711
|
+
throw new Error(result.error.message);
|
|
5712
|
+
return result.value;
|
|
5713
|
+
}
|
|
5714
|
+
function buildEcdsaCapabilityScope(input) {
|
|
5715
|
+
assertUniqueEcdsaTargetMemberships(input.targetMemberships);
|
|
5716
|
+
return new EcdsaCapabilityScopeProof([...input.targetMemberships]);
|
|
5717
|
+
}
|
|
5718
|
+
function buildEcdsaManifestIdentity(input) {
|
|
5719
|
+
return new EcdsaManifestIdentityProof(input);
|
|
5720
|
+
}
|
|
5721
|
+
function buildNoCurrentEcdsaManifestExpectation() {
|
|
5722
|
+
return new NoCurrentEcdsaManifestExpectationProof;
|
|
5723
|
+
}
|
|
5724
|
+
function buildExactEcdsaManifestExpectation(identity) {
|
|
5725
|
+
return new ExactEcdsaManifestExpectationProof(identity);
|
|
5726
|
+
}
|
|
5727
|
+
function buildNoCurrentEcdsaServerGenerationExpectation() {
|
|
5728
|
+
return new NoCurrentEcdsaServerGenerationExpectationProof;
|
|
5579
5729
|
}
|
|
5580
|
-
|
|
5581
|
-
|
|
5582
|
-
get(target, prop, receiver) {
|
|
5583
|
-
if (isIteratorProp(target, prop))
|
|
5584
|
-
return iterate;
|
|
5585
|
-
return oldTraps.get(target, prop, receiver);
|
|
5586
|
-
},
|
|
5587
|
-
has(target, prop) {
|
|
5588
|
-
return isIteratorProp(target, prop) || oldTraps.has(target, prop);
|
|
5589
|
-
}
|
|
5590
|
-
}));
|
|
5591
|
-
|
|
5592
|
-
// src/core/indexedDB/seamsWalletDB/schema.ts
|
|
5593
|
-
var SEAMS_WALLET_DB_CONFIG = {
|
|
5594
|
-
dbName: SEAMS_WALLET_DB_NAME,
|
|
5595
|
-
dbVersion: SEAMS_WALLET_DB_VERSION
|
|
5596
|
-
};
|
|
5597
|
-
function keyPathForIndexedDB(keyPath) {
|
|
5598
|
-
return typeof keyPath === "string" ? keyPath : [...keyPath];
|
|
5730
|
+
function buildExactEcdsaServerGenerationExpectation(serverGeneration) {
|
|
5731
|
+
return new ExactEcdsaServerGenerationExpectationProof(serverGeneration);
|
|
5599
5732
|
}
|
|
5600
|
-
function
|
|
5601
|
-
|
|
5602
|
-
|
|
5733
|
+
function buildEcdsaRoleLocalMaterialBinding(input) {
|
|
5734
|
+
assertUniqueParticipantIds(input.participantIds);
|
|
5735
|
+
return new EcdsaRoleLocalMaterialBindingProof({
|
|
5736
|
+
keyHandle: input.keyHandle,
|
|
5737
|
+
ecdsaThresholdKeyId: input.ecdsaThresholdKeyId,
|
|
5738
|
+
clientVerifyingPublicKey33B64u: input.clientVerifyingPublicKey33B64u,
|
|
5739
|
+
participantIds: [...input.participantIds],
|
|
5740
|
+
relayerKeyId: input.relayerKeyId
|
|
5603
5741
|
});
|
|
5604
|
-
for (const index of definition.indexes) {
|
|
5605
|
-
store.createIndex(index.name, keyPathForIndexedDB(index.keyPath), { unique: index.unique });
|
|
5606
|
-
}
|
|
5607
5742
|
}
|
|
5608
|
-
function
|
|
5609
|
-
|
|
5610
|
-
if (db.objectStoreNames.contains(definition.store))
|
|
5611
|
-
continue;
|
|
5612
|
-
createCanonicalStore(db, definition);
|
|
5613
|
-
}
|
|
5743
|
+
function buildPreparedEvmFamilySigner(input) {
|
|
5744
|
+
return new PreparedEvmFamilySignerProof(input);
|
|
5614
5745
|
}
|
|
5615
|
-
|
|
5616
|
-
|
|
5617
|
-
var INDEXED_DB_BLOCKED_OPEN_TIMEOUT_MS = 3000;
|
|
5618
|
-
var INDEXED_DB_OPEN_TIMEOUT_MS = 8000;
|
|
5619
|
-
var INDEXED_DB_TRANSACTION_TIMEOUT_MS = 8000;
|
|
5620
|
-
function seamsWalletDbOpenBlockedError(dbName) {
|
|
5621
|
-
return new Error(`[SeamsWalletDBManager] IndexedDB open is blocked for ${dbName}. Close other tabs using this app and retry.`);
|
|
5746
|
+
function buildEncryptedEcdsaPendingCandidate(input) {
|
|
5747
|
+
return new EncryptedEcdsaPendingCandidateProof(input);
|
|
5622
5748
|
}
|
|
5623
|
-
function
|
|
5624
|
-
return new
|
|
5749
|
+
function buildEcdsaActivationBinding(input) {
|
|
5750
|
+
return new EcdsaActivationBindingProof(input);
|
|
5625
5751
|
}
|
|
5626
|
-
|
|
5627
|
-
|
|
5628
|
-
|
|
5629
|
-
|
|
5630
|
-
|
|
5631
|
-
|
|
5632
|
-
|
|
5633
|
-
|
|
5634
|
-
|
|
5635
|
-
|
|
5752
|
+
function buildPreparedEcdsaActivationCandidate(input) {
|
|
5753
|
+
return new PreparedEcdsaActivationCandidateProof(input);
|
|
5754
|
+
}
|
|
5755
|
+
function buildPreparedEcdsaActivationJournal(input) {
|
|
5756
|
+
assertTargetManifestTransition(input.expectedManifest, input.candidate.activationBinding.targetManifest);
|
|
5757
|
+
assertExpectedStatePair(input.expectedManifest, input.expectedGeneration);
|
|
5758
|
+
const activationCommand = new EcdsaServerActivationCommandProof({
|
|
5759
|
+
correlationId: input.journalId,
|
|
5760
|
+
expectedGeneration: input.expectedGeneration,
|
|
5761
|
+
requestDigest: input.requestDigest,
|
|
5762
|
+
canonicalRequest: input.canonicalRequest
|
|
5763
|
+
});
|
|
5764
|
+
return new PreparedEcdsaActivationJournalProof({
|
|
5765
|
+
journalId: input.journalId,
|
|
5766
|
+
expectedManifest: input.expectedManifest,
|
|
5767
|
+
activationCommand,
|
|
5768
|
+
candidate: input.candidate,
|
|
5769
|
+
createdAt: input.createdAt
|
|
5636
5770
|
});
|
|
5637
|
-
try {
|
|
5638
|
-
return await Promise.race([promise, timeoutPromise]);
|
|
5639
|
-
} finally {
|
|
5640
|
-
settled = true;
|
|
5641
|
-
if (timeout)
|
|
5642
|
-
clearTimeout(timeout);
|
|
5643
|
-
}
|
|
5644
5771
|
}
|
|
5645
|
-
|
|
5646
|
-
const
|
|
5647
|
-
|
|
5648
|
-
|
|
5772
|
+
function buildEcdsaServerActivationCommit(input) {
|
|
5773
|
+
const protocolReceipt = parseRouterAbEcdsaRegistrationActivationReceiptV1(input.serverCommit.protocolReceipt);
|
|
5774
|
+
assertProtocolReceiptMatchesServerCommit(protocolReceipt, input.serverCommit);
|
|
5775
|
+
assertProtocolReceiptMatchesActivationBinding(protocolReceipt, input.activationBinding);
|
|
5776
|
+
const serverActivationReceipt = new EcdsaServerActivationReceiptProof({
|
|
5777
|
+
lifecycleId: lifecycleIdFromProtocolReceipt(protocolReceipt),
|
|
5778
|
+
activationDigest: activationDigestFromProtocolReceipt(protocolReceipt),
|
|
5779
|
+
activatedAt: isoTimestampFromUnixMs(protocolReceipt.ecdsa_activation.activated_at_ms),
|
|
5780
|
+
protocolReceipt
|
|
5781
|
+
});
|
|
5782
|
+
return new EcdsaServerActivationCommitProof({
|
|
5783
|
+
correlationId: input.serverCommit.correlationId,
|
|
5784
|
+
activationRequestDigest: input.serverCommit.activationRequestDigest,
|
|
5785
|
+
serverGeneration: input.serverCommit.serverGeneration,
|
|
5786
|
+
serverActivationReceipt
|
|
5787
|
+
});
|
|
5649
5788
|
}
|
|
5650
|
-
|
|
5651
|
-
|
|
5652
|
-
|
|
5653
|
-
|
|
5654
|
-
|
|
5655
|
-
|
|
5656
|
-
|
|
5657
|
-
|
|
5658
|
-
|
|
5659
|
-
|
|
5660
|
-
|
|
5661
|
-
|
|
5662
|
-
|
|
5663
|
-
|
|
5664
|
-
|
|
5665
|
-
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
5669
|
-
|
|
5670
|
-
|
|
5671
|
-
|
|
5672
|
-
return this.disabled;
|
|
5673
|
-
}
|
|
5674
|
-
close() {
|
|
5675
|
-
if (this.dbPromise) {
|
|
5676
|
-
this.dbPromise.then((db) => db.close()).catch(() => {
|
|
5677
|
-
return;
|
|
5678
|
-
});
|
|
5679
|
-
this.dbPromise = null;
|
|
5680
|
-
}
|
|
5789
|
+
function buildServerCommittedEcdsaActivationJournal(input) {
|
|
5790
|
+
assertServerCommitMatchesPreparedCommand(input.serverCommit, input.preparedJournal);
|
|
5791
|
+
const serverActivation = buildEcdsaServerActivationCommit({
|
|
5792
|
+
activationBinding: input.preparedJournal.candidate.activationBinding,
|
|
5793
|
+
serverCommit: input.serverCommit
|
|
5794
|
+
});
|
|
5795
|
+
return new ServerCommittedEcdsaActivationJournalProof({
|
|
5796
|
+
journalId: input.preparedJournal.journalId,
|
|
5797
|
+
expectedManifest: input.preparedJournal.expectedManifest,
|
|
5798
|
+
activationCommand: input.preparedJournal.activationCommand,
|
|
5799
|
+
candidate: input.preparedJournal.candidate,
|
|
5800
|
+
createdAt: input.preparedJournal.createdAt,
|
|
5801
|
+
serverActivation
|
|
5802
|
+
});
|
|
5803
|
+
}
|
|
5804
|
+
function buildDurableEcdsaMaterialBinding(input) {
|
|
5805
|
+
assertServerActivationMatchesBinding(input.serverActivation, input.activationBinding);
|
|
5806
|
+
const facts = input.roleLocalPublicFacts;
|
|
5807
|
+
const binding = input.activationBinding;
|
|
5808
|
+
const runtimePolicyScope = normalizeRuntimePolicyScope(input.runtimePolicyScope);
|
|
5809
|
+
if (facts.walletId !== binding.signer.walletId || facts.keyHandle !== binding.roleLocalBinding.keyHandle || facts.ecdsaThresholdKeyId !== binding.roleLocalBinding.ecdsaThresholdKeyId || facts.signingRootId !== binding.signer.signingRootId || facts.signingRootVersion !== binding.signer.signingRootVersion || deriveSigningRootId(runtimePolicyScope) !== binding.signer.signingRootId || runtimePolicyScope.signingRootVersion !== binding.signer.signingRootVersion || facts.contextBinding32B64u !== binding.bindingDigest || !participantIdsMatch(facts.participantIds, binding.roleLocalBinding.participantIds) || !binding.signer.scope.targetMemberships.some((target) => ecdsaTargetMembershipKey(target) === ecdsaTargetMembershipKey(facts.chainTarget))) {
|
|
5810
|
+
throw new Error("ECDSA role-local public facts do not match their activation");
|
|
5681
5811
|
}
|
|
5682
|
-
|
|
5683
|
-
|
|
5684
|
-
|
|
5685
|
-
|
|
5686
|
-
|
|
5687
|
-
|
|
5688
|
-
|
|
5689
|
-
|
|
5690
|
-
|
|
5691
|
-
|
|
5692
|
-
|
|
5693
|
-
|
|
5694
|
-
|
|
5695
|
-
|
|
5696
|
-
|
|
5697
|
-
|
|
5698
|
-
|
|
5699
|
-
|
|
5700
|
-
|
|
5701
|
-
|
|
5702
|
-
|
|
5703
|
-
|
|
5704
|
-
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5711
|
-
|
|
5712
|
-
|
|
5713
|
-
|
|
5714
|
-
|
|
5715
|
-
|
|
5716
|
-
|
|
5717
|
-
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
|
|
5812
|
+
const receipt = input.serverActivation.serverActivationReceipt;
|
|
5813
|
+
assertNormalSigningMatchesActivation({
|
|
5814
|
+
normalSigning: input.routerAbEcdsaDerivationNormalSigning,
|
|
5815
|
+
activationBinding: binding,
|
|
5816
|
+
roleLocalPublicFacts: facts,
|
|
5817
|
+
receipt: receipt.protocolReceipt
|
|
5818
|
+
});
|
|
5819
|
+
return new DurableEcdsaMaterialBindingProof({
|
|
5820
|
+
materialActivation: materialActivationFromCommit(receipt.protocolReceipt),
|
|
5821
|
+
routerAbEcdsaDerivationNormalSigning: input.routerAbEcdsaDerivationNormalSigning,
|
|
5822
|
+
roleLocalPublicFacts: input.roleLocalPublicFacts,
|
|
5823
|
+
roleLocalBinding: input.activationBinding.roleLocalBinding,
|
|
5824
|
+
durableMaterialRef: input.activationBinding.durableMaterialRef,
|
|
5825
|
+
bindingDigest: input.activationBinding.bindingDigest,
|
|
5826
|
+
lifecycleId: receipt.lifecycleId,
|
|
5827
|
+
ciphertextDigest: input.ciphertextDigest,
|
|
5828
|
+
activationDigest: receipt.activationDigest,
|
|
5829
|
+
activatedAt: receipt.activatedAt,
|
|
5830
|
+
runtimePolicyScope
|
|
5831
|
+
});
|
|
5832
|
+
}
|
|
5833
|
+
function buildValidatedEncryptedEcdsaReadyMaterial(input) {
|
|
5834
|
+
return new ValidatedEncryptedEcdsaReadyMaterialProof({
|
|
5835
|
+
binding: input.binding,
|
|
5836
|
+
sealingKeyId: input.sealingKeyId,
|
|
5837
|
+
iv12B64u: input.iv12B64u,
|
|
5838
|
+
ciphertextB64u: input.ciphertextB64u
|
|
5839
|
+
});
|
|
5840
|
+
}
|
|
5841
|
+
function buildActiveEcdsaCapabilityManifest(input) {
|
|
5842
|
+
assertRegisteredPublicFactsMatchBinding(input.registeredPublicFacts, input.activationBinding.roleLocalBinding, input.serverActivation);
|
|
5843
|
+
assertDurableMaterialMatchesActivation(input.durableMaterial, input.activationBinding, input.serverActivation);
|
|
5844
|
+
const signer = new RegisteredEvmFamilySignerProof({
|
|
5845
|
+
preparedSigner: input.activationBinding.signer,
|
|
5846
|
+
registeredPublicFacts: input.registeredPublicFacts
|
|
5847
|
+
});
|
|
5848
|
+
const activation = {
|
|
5849
|
+
kind: "active_ecdsa_material_activation",
|
|
5850
|
+
materialActivation: input.durableMaterial.materialActivation,
|
|
5851
|
+
serverActivation: input.serverActivation,
|
|
5852
|
+
retention: "retained"
|
|
5853
|
+
};
|
|
5854
|
+
return new ActiveEcdsaCapabilityManifestProof({
|
|
5855
|
+
identity: input.activationBinding.targetManifest,
|
|
5856
|
+
signer,
|
|
5857
|
+
activation,
|
|
5858
|
+
durableMaterial: input.durableMaterial,
|
|
5859
|
+
committedAt: input.committedAt
|
|
5860
|
+
});
|
|
5861
|
+
}
|
|
5862
|
+
function buildReplacedEcdsaCapabilityManifest(input) {
|
|
5863
|
+
assertValidEcdsaReplacement(input.activeManifest, input.replacementManifest);
|
|
5864
|
+
return new ReplacedEcdsaCapabilityManifestProof({
|
|
5865
|
+
identity: input.activeManifest.identity,
|
|
5866
|
+
signer: input.activeManifest.signer,
|
|
5867
|
+
retirement: {
|
|
5868
|
+
kind: "replaced",
|
|
5869
|
+
replacementManifest: input.replacementManifest.identity,
|
|
5870
|
+
replacementActivation: input.replacementManifest.activation.serverActivation
|
|
5732
5871
|
}
|
|
5733
|
-
|
|
5872
|
+
});
|
|
5873
|
+
}
|
|
5874
|
+
function assertUniqueEcdsaTargetMemberships(targetMemberships) {
|
|
5875
|
+
const targetKeys = targetMemberships.map(ecdsaTargetMembershipKey);
|
|
5876
|
+
if (new Set(targetKeys).size !== targetKeys.length) {
|
|
5877
|
+
throw new Error("ECDSA capability target memberships must be unique");
|
|
5734
5878
|
}
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
|
|
5738
|
-
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
|
|
5742
|
-
|
|
5879
|
+
}
|
|
5880
|
+
function ecdsaTargetMembershipKey(target) {
|
|
5881
|
+
switch (target.kind) {
|
|
5882
|
+
case "evm":
|
|
5883
|
+
return `evm:${target.namespace}:${target.chainId}:${target.networkSlug}`;
|
|
5884
|
+
case "tempo":
|
|
5885
|
+
return `tempo:${target.chainId}:${target.networkSlug}`;
|
|
5886
|
+
default:
|
|
5887
|
+
return assertNever(target);
|
|
5888
|
+
}
|
|
5889
|
+
}
|
|
5890
|
+
function assertUniqueParticipantIds(participantIds) {
|
|
5891
|
+
const normalizedIds = participantIds.map(Number);
|
|
5892
|
+
if (normalizedIds.some((participantId) => !Number.isSafeInteger(participantId) || participantId < 1) || new Set(normalizedIds).size !== normalizedIds.length) {
|
|
5893
|
+
throw new Error("ECDSA participant ids must be unique positive integers");
|
|
5894
|
+
}
|
|
5895
|
+
}
|
|
5896
|
+
function assertTargetManifestTransition(expected, target) {
|
|
5897
|
+
switch (expected.kind) {
|
|
5898
|
+
case "no_current_manifest":
|
|
5899
|
+
if (Number(target.manifestRevision) !== 1) {
|
|
5900
|
+
throw new Error("Initial ECDSA manifest revision must be 1");
|
|
5743
5901
|
}
|
|
5744
|
-
|
|
5745
|
-
|
|
5746
|
-
|
|
5747
|
-
|
|
5748
|
-
|
|
5749
|
-
|
|
5750
|
-
|
|
5751
|
-
|
|
5752
|
-
try {
|
|
5753
|
-
tx.abort();
|
|
5754
|
-
} catch {}
|
|
5755
|
-
await tx.done.catch(() => {
|
|
5756
|
-
return;
|
|
5757
|
-
});
|
|
5758
|
-
throw error;
|
|
5759
|
-
}
|
|
5902
|
+
return;
|
|
5903
|
+
case "exact_manifest":
|
|
5904
|
+
if (target.manifestId === expected.manifestId || Number(target.manifestRevision) !== Number(expected.manifestRevision) + 1) {
|
|
5905
|
+
throw new Error("Replacement ECDSA manifest must use a fresh id and next revision");
|
|
5906
|
+
}
|
|
5907
|
+
return;
|
|
5908
|
+
default:
|
|
5909
|
+
return assertNever(expected);
|
|
5760
5910
|
}
|
|
5761
5911
|
}
|
|
5762
|
-
|
|
5763
|
-
|
|
5764
|
-
|
|
5765
|
-
|
|
5766
|
-
|
|
5767
|
-
|
|
5768
|
-
|
|
5769
|
-
|
|
5770
|
-
|
|
5771
|
-
|
|
5772
|
-
|
|
5773
|
-
|
|
5912
|
+
function assertExpectedStatePair(expectedManifest, expectedGeneration) {
|
|
5913
|
+
switch (expectedManifest.kind) {
|
|
5914
|
+
case "no_current_manifest":
|
|
5915
|
+
if (expectedGeneration.kind !== "no_current_generation") {
|
|
5916
|
+
throw new Error("Initial ECDSA activation cannot expect a server generation");
|
|
5917
|
+
}
|
|
5918
|
+
return;
|
|
5919
|
+
case "exact_manifest":
|
|
5920
|
+
if (expectedGeneration.kind !== "exact_generation") {
|
|
5921
|
+
throw new Error("Replacement ECDSA activation requires an exact server generation");
|
|
5922
|
+
}
|
|
5923
|
+
return;
|
|
5924
|
+
default:
|
|
5925
|
+
return assertNever(expectedManifest);
|
|
5926
|
+
}
|
|
5774
5927
|
}
|
|
5775
|
-
function
|
|
5776
|
-
|
|
5777
|
-
|
|
5928
|
+
function assertServerCommitMatchesPreparedCommand(serverCommit, journal) {
|
|
5929
|
+
const canonicalRequest = JSON.parse(journal.activationCommand.canonicalRequest);
|
|
5930
|
+
const requestDigestNamesOuterOperation = canonicalRequest.operation === "wallet_registration_activate_v2";
|
|
5931
|
+
if (serverCommit.correlationId !== journal.activationCommand.correlationId || !requestDigestNamesOuterOperation && serverCommit.activationRequestDigest !== journal.activationCommand.requestDigest) {
|
|
5932
|
+
throw new Error("ECDSA server activation commit does not match the prepared command");
|
|
5778
5933
|
}
|
|
5779
|
-
|
|
5780
|
-
|
|
5781
|
-
|
|
5782
|
-
|
|
5783
|
-
|
|
5934
|
+
}
|
|
5935
|
+
function assertProtocolReceiptMatchesActivationBinding(receipt, activationBinding) {
|
|
5936
|
+
const publicIdentity = receipt.ecdsa_activation.public_identity;
|
|
5937
|
+
const materialActivation = receipt.ecdsa_activation.material_activation;
|
|
5938
|
+
materialActivationFromCommit(receipt);
|
|
5939
|
+
if (publicIdentity.context_binding_b64u !== String(activationBinding.bindingDigest) || publicIdentity.derivation_client_share_public_key33_b64u !== String(activationBinding.roleLocalBinding.clientVerifyingPublicKey33B64u) || materialActivation.material_owner !== String(activationBinding.signer.materialOwner) || materialActivation.key_binding !== String(activationBinding.bindingDigest) || materialActivation.lifecycle_binding !== receipt.lifecycle_id || materialActivation.signing_worker !== receipt.ecdsa_activation.signing_worker.server_id) {
|
|
5940
|
+
throw new Error("ECDSA activation receipt does not match the prepared material binding");
|
|
5784
5941
|
}
|
|
5785
|
-
|
|
5786
|
-
|
|
5787
|
-
|
|
5942
|
+
}
|
|
5943
|
+
function assertProtocolReceiptMatchesServerCommit(receipt, serverCommit) {
|
|
5944
|
+
const receiptRequestDigest = base64UrlEncode(Uint8Array.from(receipt.activation_request_digest.bytes));
|
|
5945
|
+
if (receipt.activation_correlation_id !== serverCommit.correlationId || receiptRequestDigest !== serverCommit.activationRequestDigest || receipt.server_generation !== serverCommit.serverGeneration) {
|
|
5946
|
+
throw new Error("ECDSA activation receipt does not match the server activation commit");
|
|
5788
5947
|
}
|
|
5789
|
-
return {
|
|
5790
|
-
relayerUrl,
|
|
5791
|
-
materialActivationB64u: requireIdentityString(raw.materialActivationB64u, "poolIdentity.materialActivationB64u"),
|
|
5792
|
-
materialActivationId: requireIdentityString(raw.materialActivationId, "poolIdentity.materialActivationId"),
|
|
5793
|
-
capability: requireIdentityString(raw.capability, "poolIdentity.capability"),
|
|
5794
|
-
keyBinding: requireIdentityString(raw.keyBinding, "poolIdentity.keyBinding"),
|
|
5795
|
-
walletId: requireIdentityString(raw.walletId, "poolIdentity.walletId"),
|
|
5796
|
-
signingScopeB64u: requireIdentityString(raw.signingScopeB64u, "poolIdentity.signingScopeB64u"),
|
|
5797
|
-
pairRole: "client",
|
|
5798
|
-
keyEpoch: requireIdentityString(raw.keyEpoch, "poolIdentity.keyEpoch"),
|
|
5799
|
-
activationEpoch: requirePoolRootShareEpoch(raw.activationEpoch),
|
|
5800
|
-
protocolId: FIXED_ECDSA_PRESIGN_PROTOCOL_ID
|
|
5801
|
-
};
|
|
5802
5948
|
}
|
|
5803
|
-
function
|
|
5804
|
-
|
|
5805
|
-
if (!parsed.ok)
|
|
5806
|
-
throw new Error("poolIdentity.activationEpoch is invalid");
|
|
5807
|
-
return parsed.value;
|
|
5949
|
+
function lifecycleIdFromProtocolReceipt(receipt) {
|
|
5950
|
+
return parseEcdsaLifecycleId(receipt.lifecycle_id);
|
|
5808
5951
|
}
|
|
5809
|
-
function
|
|
5810
|
-
return
|
|
5952
|
+
function activationDigestFromProtocolReceipt(receipt) {
|
|
5953
|
+
return parseEcdsaActivationDigest(receipt.ecdsa_activation.activation_digest_b64u);
|
|
5811
5954
|
}
|
|
5812
|
-
function
|
|
5813
|
-
return
|
|
5814
|
-
|
|
5815
|
-
|
|
5816
|
-
|
|
5817
|
-
|
|
5818
|
-
|
|
5955
|
+
function materialActivationFromCommit(receipt) {
|
|
5956
|
+
return routerAbMpcMaterialActivationRefFromWire(receipt.ecdsa_activation.material_activation);
|
|
5957
|
+
}
|
|
5958
|
+
function assertRegisteredPublicFactsMatchBinding(publicFacts, binding, serverActivation) {
|
|
5959
|
+
const receiptPublicIdentity = serverActivation.serverActivationReceipt.protocolReceipt.ecdsa_activation.public_identity;
|
|
5960
|
+
if (String(publicFacts.keyHandle) !== String(binding.keyHandle) || String(publicFacts.publicKeyB64u) !== receiptPublicIdentity.threshold_public_key33_b64u || String(binding.clientVerifyingPublicKey33B64u) !== receiptPublicIdentity.derivation_client_share_public_key33_b64u || !participantIdsMatch(publicFacts.participantIds, binding.participantIds)) {
|
|
5961
|
+
throw new Error("Registered ECDSA public facts do not match role-local material");
|
|
5962
|
+
}
|
|
5963
|
+
}
|
|
5964
|
+
function participantIdsMatch(left, right) {
|
|
5965
|
+
if (left.length !== right.length)
|
|
5966
|
+
return false;
|
|
5967
|
+
return left.every((participantId, index) => Number(participantId) === Number(right[index]));
|
|
5968
|
+
}
|
|
5969
|
+
function assertServerActivationMatchesBinding(serverActivation, activationBinding) {
|
|
5970
|
+
assertProtocolReceiptMatchesActivationBinding(serverActivation.serverActivationReceipt.protocolReceipt, activationBinding);
|
|
5971
|
+
}
|
|
5972
|
+
function assertDurableMaterialMatchesActivation(durableMaterial, activationBinding, serverActivation) {
|
|
5973
|
+
const receipt = serverActivation.serverActivationReceipt;
|
|
5974
|
+
const committedMaterialActivation = materialActivationFromCommit(receipt.protocolReceipt);
|
|
5975
|
+
if (!mpcMaterialActivationRefsEqual(durableMaterial.materialActivation, committedMaterialActivation) || durableMaterial.roleLocalBinding !== activationBinding.roleLocalBinding || durableMaterial.durableMaterialRef !== activationBinding.durableMaterialRef || durableMaterial.bindingDigest !== activationBinding.bindingDigest || durableMaterial.lifecycleId !== receipt.lifecycleId || durableMaterial.activationDigest !== receipt.activationDigest || durableMaterial.activatedAt !== receipt.activatedAt) {
|
|
5976
|
+
throw new Error("Durable ECDSA material does not match its activation");
|
|
5977
|
+
}
|
|
5978
|
+
assertNormalSigningMatchesActivation({
|
|
5979
|
+
normalSigning: durableMaterial.routerAbEcdsaDerivationNormalSigning,
|
|
5980
|
+
activationBinding,
|
|
5981
|
+
roleLocalPublicFacts: durableMaterial.roleLocalPublicFacts,
|
|
5982
|
+
receipt: receipt.protocolReceipt
|
|
5983
|
+
});
|
|
5984
|
+
}
|
|
5985
|
+
function assertNormalSigningMatchesActivation(input) {
|
|
5986
|
+
const scope = input.normalSigning.scope;
|
|
5987
|
+
const facts = input.roleLocalPublicFacts;
|
|
5988
|
+
const expectedMaterialActivation = materialActivationFromCommit(input.receipt);
|
|
5989
|
+
const expectedMaterialActivationWire = routerAbMpcMaterialActivationRefToWire({
|
|
5990
|
+
kind: expectedMaterialActivation.kind,
|
|
5991
|
+
activationId: expectedMaterialActivation.activationId,
|
|
5992
|
+
capability: expectedMaterialActivation.capability,
|
|
5993
|
+
materialOwner: expectedMaterialActivation.materialOwner,
|
|
5994
|
+
keyBinding: expectedMaterialActivation.keyBinding,
|
|
5995
|
+
lifecycleBinding: expectedMaterialActivation.lifecycleBinding,
|
|
5996
|
+
signingWorker: expectedMaterialActivation.signingWorker
|
|
5997
|
+
});
|
|
5998
|
+
if (scope.wallet_id !== String(input.activationBinding.signer.walletId) || scope.ecdsa_threshold_key_id !== String(input.activationBinding.roleLocalBinding.ecdsaThresholdKeyId) || scope.signing_root_id !== String(input.activationBinding.signer.signingRootId) || scope.signing_root_version !== String(input.activationBinding.signer.signingRootVersion) || scope.context.application_binding_digest_b64u !== input.receipt.ecdsa_activation.context.application_binding_digest_b64u || !sameRouterAbEcdsaDerivationPublicIdentityV1(scope.public_identity, input.receipt.ecdsa_activation.public_identity) || !sameRouterAbServerIdentityV1(scope.signing_worker, input.receipt.ecdsa_activation.signing_worker) || scope.activation_epoch !== input.receipt.ecdsa_activation.activation_epoch || scope.public_identity.context_binding_b64u !== facts.contextBinding32B64u || scope.public_identity.derivation_client_share_public_key33_b64u !== facts.derivationClientSharePublicKey33B64u || scope.public_identity.server_public_key33_b64u !== facts.relayerPublicKey33B64u || scope.public_identity.threshold_public_key33_b64u !== facts.groupPublicKey33B64u || !sameRouterAbMpcMaterialActivationRef(scope.material_activation, expectedMaterialActivationWire)) {
|
|
5999
|
+
throw new Error("ECDSA normal-signing runtime does not match its activation");
|
|
6000
|
+
}
|
|
6001
|
+
}
|
|
6002
|
+
function assertValidEcdsaReplacement(active, replacement) {
|
|
6003
|
+
if (active.identity.manifestId === replacement.identity.manifestId || Number(replacement.identity.manifestRevision) !== Number(active.identity.manifestRevision) + 1 || active.signer.capability !== replacement.signer.capability || active.signer.signerId !== replacement.signer.signerId || active.signer.walletId !== replacement.signer.walletId || active.signer.authority.authorityDigest !== replacement.signer.authority.authorityDigest || active.signer.materialOwner !== replacement.signer.materialOwner || active.durableMaterial.durableMaterialRef === replacement.durableMaterial.durableMaterialRef || active.activation.serverActivation.serverGeneration === replacement.activation.serverActivation.serverGeneration) {
|
|
6004
|
+
throw new Error("ECDSA replacement manifest does not exactly replace the active manifest");
|
|
6005
|
+
}
|
|
6006
|
+
}
|
|
6007
|
+
function assertNever(value) {
|
|
6008
|
+
throw new Error(`Unexpected ECDSA capability branch: ${String(value)}`);
|
|
5819
6009
|
}
|
|
5820
|
-
|
|
5821
|
-
// src/core/signingEngine/workerManager/ecdsaPresignLifecycle.ts
|
|
5822
|
-
var ECDSA_CLIENT_PRESIGNATURE_CAPACITY = 5;
|
|
5823
|
-
var MAX_DURABLE_CLIENT_PRESIGNATURE_LIFETIME_MS = 90 * 24 * 60 * 60000;
|
|
5824
6010
|
|
|
5825
6011
|
// src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.ts
|
|
5826
6012
|
var MANIFEST_RECORD_VERSION = "ecdsa_capability_manifest_v3";
|
|
@@ -6787,6 +6973,9 @@ async function readAvailableClientPresignatureRows(context, poolIdentity, nowMs)
|
|
|
6787
6973
|
await deleteExpiredClientPresignatureRows(context, poolIdentity.walletId, nowMs);
|
|
6788
6974
|
const store = context.store(PRESIGNATURE_STORE);
|
|
6789
6975
|
const rows = await store.index(SEAMS_WALLET_INDEXES.poolIdentityKey).getAll(ecdsaClientPresignPoolKey(poolIdentity));
|
|
6976
|
+
if (poolIdentity.ownershipGeneration === 1) {
|
|
6977
|
+
rows.push(...await store.index(SEAMS_WALLET_INDEXES.poolIdentityKey).getAll(initialGenerationPoolKey(poolIdentity)));
|
|
6978
|
+
}
|
|
6790
6979
|
const available = [];
|
|
6791
6980
|
for (const raw of rows) {
|
|
6792
6981
|
try {
|
|
@@ -6794,6 +6983,8 @@ async function readAvailableClientPresignatureRows(context, poolIdentity, nowMs)
|
|
|
6794
6983
|
if (row.expires_at_ms <= nowMs) {
|
|
6795
6984
|
await store.delete(row.record_id);
|
|
6796
6985
|
} else {
|
|
6986
|
+
if (raw.pool_identity_key !== row.pool_identity_key)
|
|
6987
|
+
await store.put(row);
|
|
6797
6988
|
available.push(row);
|
|
6798
6989
|
}
|
|
6799
6990
|
} catch {
|
|
@@ -6805,10 +6996,11 @@ async function readAvailableClientPresignatureRows(context, poolIdentity, nowMs)
|
|
|
6805
6996
|
return available;
|
|
6806
6997
|
}
|
|
6807
6998
|
function presignatureAadProjection(metadata) {
|
|
6999
|
+
const { ownershipGeneration, ...initialIdentity } = metadata.poolIdentity;
|
|
6808
7000
|
return {
|
|
6809
7001
|
domain: CLIENT_PRESIGNATURE_AAD_DOMAIN,
|
|
6810
7002
|
version: 1,
|
|
6811
|
-
pool_identity: metadata.poolIdentity,
|
|
7003
|
+
pool_identity: ownershipGeneration === 1 ? initialIdentity : metadata.poolIdentity,
|
|
6812
7004
|
durable_material_ref: metadata.durableMaterialRef,
|
|
6813
7005
|
presignature_id: metadata.presignatureId,
|
|
6814
7006
|
group_public_key33_b64u: metadata.groupPublicKey33B64u,
|
|
@@ -6818,6 +7010,14 @@ function presignatureAadProjection(metadata) {
|
|
|
6818
7010
|
sealing_key_id: metadata.sealingKeyId
|
|
6819
7011
|
};
|
|
6820
7012
|
}
|
|
7013
|
+
function initialGenerationPoolKey(identity) {
|
|
7014
|
+
return [
|
|
7015
|
+
identity.protocolId,
|
|
7016
|
+
identity.relayerUrl,
|
|
7017
|
+
identity.signingScopeB64u,
|
|
7018
|
+
identity.materialActivationB64u
|
|
7019
|
+
].join("|");
|
|
7020
|
+
}
|
|
6821
7021
|
function parseSealedAvailableClientPresignatureRow(value) {
|
|
6822
7022
|
const record = requireRecord(value, "ECDSA durable presignature row");
|
|
6823
7023
|
requireExactKeys3(record, "ECDSA durable presignature row", [
|
|
@@ -6839,7 +7039,9 @@ function parseSealedAvailableClientPresignatureRow(value) {
|
|
|
6839
7039
|
throw new Error("ECDSA durable presignature row kind is invalid");
|
|
6840
7040
|
}
|
|
6841
7041
|
const poolIdentityRecord = requireRecord(record.pool_identity, "ECDSA durable presignature pool identity");
|
|
7042
|
+
const initialGenerationRecord = !Object.hasOwn(poolIdentityRecord, "ownershipGeneration");
|
|
6842
7043
|
requireExactKeys3(poolIdentityRecord, "ECDSA durable presignature pool identity", [
|
|
7044
|
+
...initialGenerationRecord ? [] : ["ownershipGeneration"],
|
|
6843
7045
|
"activationEpoch",
|
|
6844
7046
|
"capability",
|
|
6845
7047
|
"keyBinding",
|
|
@@ -6852,10 +7054,10 @@ function parseSealedAvailableClientPresignatureRow(value) {
|
|
|
6852
7054
|
"signingScopeB64u",
|
|
6853
7055
|
"walletId"
|
|
6854
7056
|
]);
|
|
6855
|
-
const poolIdentity = parseEcdsaClientPresignPoolIdentity(poolIdentityRecord);
|
|
7057
|
+
const poolIdentity = parseEcdsaClientPresignPoolIdentity(initialGenerationRecord ? { ...poolIdentityRecord, ownershipGeneration: 1 } : poolIdentityRecord);
|
|
6856
7058
|
const recordId = parseDurableClientPresignatureRecordId(record.record_id);
|
|
6857
7059
|
const poolIdentityKeyValue = String(record.pool_identity_key ?? "");
|
|
6858
|
-
if (poolIdentityKeyValue !== ecdsaClientPresignPoolKey(poolIdentity)) {
|
|
7060
|
+
if (poolIdentityKeyValue !== ecdsaClientPresignPoolKey(poolIdentity) && !(initialGenerationRecord && poolIdentityKeyValue === initialGenerationPoolKey(poolIdentity))) {
|
|
6859
7061
|
throw new Error("ECDSA durable presignature pool identity index is inconsistent");
|
|
6860
7062
|
}
|
|
6861
7063
|
const walletId = String(record.wallet_id ?? "").trim();
|
|
@@ -6901,7 +7103,7 @@ function parseSealedAvailableClientPresignatureRow(value) {
|
|
|
6901
7103
|
kind: "sealed_available_client_presignature_v1",
|
|
6902
7104
|
record_id: recordId,
|
|
6903
7105
|
pool_identity: poolIdentity,
|
|
6904
|
-
pool_identity_key:
|
|
7106
|
+
pool_identity_key: ecdsaClientPresignPoolKey(poolIdentity),
|
|
6905
7107
|
wallet_id: walletId,
|
|
6906
7108
|
material_activation_id: materialActivationId,
|
|
6907
7109
|
durable_material_ref: durableMaterialRef,
|
|
@@ -6986,6 +7188,42 @@ async function retireClientPresignaturesForActivationInTransaction(context, wall
|
|
|
6986
7188
|
}
|
|
6987
7189
|
}
|
|
6988
7190
|
|
|
7191
|
+
// src/core/indexedDB/seamsWalletDB/walletOwnershipGeneration.ts
|
|
7192
|
+
async function readOwnershipGeneration(context, walletId) {
|
|
7193
|
+
const raw = await context.store(SEAMS_WALLET_STORES.appState).get(`wallet_ownership_generation:${walletId}`);
|
|
7194
|
+
if (raw === undefined)
|
|
7195
|
+
return 1;
|
|
7196
|
+
const record = requireRecord(raw, "Wallet ownership generation");
|
|
7197
|
+
const generation = record.value;
|
|
7198
|
+
if (typeof generation !== "number" || !Number.isSafeInteger(generation) || generation < 1) {
|
|
7199
|
+
throw new Error("Stored wallet ownership generation is invalid");
|
|
7200
|
+
}
|
|
7201
|
+
return generation;
|
|
7202
|
+
}
|
|
7203
|
+
async function assertWalletOwnershipGeneration(context, walletId, generation) {
|
|
7204
|
+
if (await readOwnershipGeneration(context, walletId) !== generation) {
|
|
7205
|
+
throw new Error("Wallet ownership generation requires fresh authentication");
|
|
7206
|
+
}
|
|
7207
|
+
}
|
|
7208
|
+
|
|
7209
|
+
// ../shared-ts/src/utils/secureRandomId.ts
|
|
7210
|
+
var DEFAULT_SECURE_RANDOM_ID_BYTES = 32;
|
|
7211
|
+
function secureRandomBytes(length = DEFAULT_SECURE_RANDOM_ID_BYTES, label = "secure random bytes") {
|
|
7212
|
+
const byteLength = Math.max(1, Math.floor(Number(length) || 0));
|
|
7213
|
+
const cryptoApi = globalThis.crypto;
|
|
7214
|
+
if (typeof cryptoApi?.getRandomValues !== "function") {
|
|
7215
|
+
throw new Error(`WebCrypto getRandomValues is required for ${label}`);
|
|
7216
|
+
}
|
|
7217
|
+
return cryptoApi.getRandomValues(new Uint8Array(byteLength));
|
|
7218
|
+
}
|
|
7219
|
+
function secureRandomBase64Url(byteLength = DEFAULT_SECURE_RANDOM_ID_BYTES, label = "secure random id") {
|
|
7220
|
+
return base64UrlEncode(secureRandomBytes(byteLength, label));
|
|
7221
|
+
}
|
|
7222
|
+
function secureRandomId(prefix, byteLength = DEFAULT_SECURE_RANDOM_ID_BYTES, label = `${prefix} id`) {
|
|
7223
|
+
const normalizedPrefix = String(prefix || "").trim() || "id";
|
|
7224
|
+
return `${normalizedPrefix}-${secureRandomBase64Url(byteLength, label)}`;
|
|
7225
|
+
}
|
|
7226
|
+
|
|
6989
7227
|
// src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.ts
|
|
6990
7228
|
async function persistenceDigest(category, selector, detail) {
|
|
6991
7229
|
const canonical = alphabetizeStringify({ category, ...selectorColumns(selector), detail });
|
|
@@ -7591,7 +7829,8 @@ class IndexedDbEcdsaCapabilityManifestStore {
|
|
|
7591
7829
|
}
|
|
7592
7830
|
};
|
|
7593
7831
|
try {
|
|
7594
|
-
const result = await this.manager.runTransaction([PRESIGNATURE_STORE, MATERIAL_STORE], "readwrite", async (context) => {
|
|
7832
|
+
const result = await this.manager.runTransaction([PRESIGNATURE_STORE, MATERIAL_STORE, SEAMS_WALLET_STORES.appState], "readwrite", async (context) => {
|
|
7833
|
+
await assertWalletOwnershipGeneration(context, poolIdentity.walletId, poolIdentity.ownershipGeneration);
|
|
7595
7834
|
const nowMs = Date.now();
|
|
7596
7835
|
const available = await readAvailableClientPresignatureRows(context, poolIdentity, nowMs);
|
|
7597
7836
|
if (available.length >= ECDSA_CLIENT_PRESIGNATURE_CAPACITY) {
|
|
@@ -7623,7 +7862,8 @@ class IndexedDbEcdsaCapabilityManifestStore {
|
|
|
7623
7862
|
const poolIdentity = parseEcdsaClientPresignPoolIdentity(poolIdentityInput);
|
|
7624
7863
|
const nowMs = Date.now();
|
|
7625
7864
|
try {
|
|
7626
|
-
return await this.manager.runTransaction([PRESIGNATURE_STORE], "readwrite", async (context) => {
|
|
7865
|
+
return await this.manager.runTransaction([PRESIGNATURE_STORE, SEAMS_WALLET_STORES.appState], "readwrite", async (context) => {
|
|
7866
|
+
await assertWalletOwnershipGeneration(context, poolIdentity.walletId, poolIdentity.ownershipGeneration);
|
|
7627
7867
|
const rows = await readAvailableClientPresignatureRows(context, poolIdentity, nowMs);
|
|
7628
7868
|
return rows.map(metadataFromPresignatureRow).sort((left, right) => left.createdAtMs - right.createdAtMs);
|
|
7629
7869
|
});
|
|
@@ -7638,8 +7878,9 @@ class IndexedDbEcdsaCapabilityManifestStore {
|
|
|
7638
7878
|
const poolIdentity = parseEcdsaClientPresignPoolIdentity(input.poolIdentity);
|
|
7639
7879
|
let row;
|
|
7640
7880
|
try {
|
|
7641
|
-
const claimed = await this.manager.runTransaction([PRESIGNATURE_STORE], "readwrite", async (context) => {
|
|
7881
|
+
const claimed = await this.manager.runTransaction([PRESIGNATURE_STORE, SEAMS_WALLET_STORES.appState], "readwrite", async (context) => {
|
|
7642
7882
|
const store = context.store(PRESIGNATURE_STORE);
|
|
7883
|
+
await assertWalletOwnershipGeneration(context, poolIdentity.walletId, poolIdentity.ownershipGeneration);
|
|
7643
7884
|
const raw = await store.get(recordId);
|
|
7644
7885
|
if (raw === undefined)
|
|
7645
7886
|
return { kind: "claimed_elsewhere" };
|
|
@@ -7715,25 +7956,6 @@ class IndexedDbEcdsaCapabilityManifestStore {
|
|
|
7715
7956
|
}
|
|
7716
7957
|
});
|
|
7717
7958
|
}
|
|
7718
|
-
async deleteClientPresignatures(target) {
|
|
7719
|
-
return await this.manager.runTransaction([PRESIGNATURE_STORE], "readwrite", async (context) => {
|
|
7720
|
-
const store = context.store(PRESIGNATURE_STORE);
|
|
7721
|
-
let deletedCount = 0;
|
|
7722
|
-
switch (target.kind) {
|
|
7723
|
-
case "wallet": {
|
|
7724
|
-
const walletId = String(target.walletId).trim();
|
|
7725
|
-
if (!walletId)
|
|
7726
|
-
throw new Error("ECDSA durable presignature wallet id is required");
|
|
7727
|
-
deletedCount = await deleteCursorRows(await store.index(SEAMS_WALLET_INDEXES.walletId).openCursor(walletId));
|
|
7728
|
-
break;
|
|
7729
|
-
}
|
|
7730
|
-
case "all":
|
|
7731
|
-
deletedCount = await deleteCursorRows(await store.openCursor());
|
|
7732
|
-
break;
|
|
7733
|
-
}
|
|
7734
|
-
return deletedCount;
|
|
7735
|
-
});
|
|
7736
|
-
}
|
|
7737
7959
|
async listActiveWalletCapabilitySubjects(walletIdInput) {
|
|
7738
7960
|
const parsedWalletId = parseWalletId(walletIdInput);
|
|
7739
7961
|
if (!parsedWalletId.ok)
|