@seams/wallet 0.22.0 → 0.24.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 +19 -2
- package/THIRD_PARTY_NOTICES.md +186 -6
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +1 -0
- package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +3 -0
- package/dist/esm/SeamsWeb/walletIframe/client/authMenuAnchor.js +44 -0
- package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +4 -6
- package/dist/esm/SeamsWeb/walletIframe/client/registrationCommands.js +12 -0
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +67 -31
- package/dist/esm/SeamsWeb/walletIframe/client/sessionCommands.js +4 -0
- package/dist/esm/SeamsWeb/walletIframe/client/surface/geometry.js +2 -2
- package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.js +2 -2
- package/dist/esm/SeamsWeb/walletIframe/host/auth-menu/domain.js +22 -3
- package/dist/esm/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +6 -2
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +1 -3
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +81 -19
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +1 -4
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.js +7 -11
- package/dist/esm/SeamsWeb/walletIframe/host/walletMutationGuard.js +86 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/configuration.js +23 -1
- package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +1 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +7 -1
- package/dist/esm/SeamsWeb/walletIframe/shared/transactionReview.js +20 -1
- package/dist/esm/core/authMethods/availability.js +28 -0
- package/dist/esm/core/authMethods/availabilityTypes.js +29 -0
- package/dist/esm/core/authMethods/plugins.js +17 -0
- package/dist/esm/core/config/configBuilder.js +2 -0
- package/dist/esm/core/config/defaultConfigs.js +1 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +41 -2
- package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +3 -0
- package/dist/esm/core/rpcClients/relayer/routerAbNormalSigning.js +1 -1
- package/dist/esm/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/authPlanning.js +2 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +29 -12
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +1 -0
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +2 -1
- package/dist/esm/core/signingEngine/flows/signNear/requireNearStepUpAuth.js +1 -0
- package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +1 -1
- package/dist/esm/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +5 -0
- package/dist/esm/core/signingEngine/flows/signNear/signNear.js +16 -12
- package/dist/esm/core/signingEngine/session/availability/availableSigningLanes.js +2 -3
- package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +16 -1
- package/dist/esm/core/signingEngine/session/identity/signingLaneAuthBinding.js +6 -0
- package/dist/esm/core/signingEngine/session/material/ecdsaSigningCapability.js +3 -0
- package/dist/esm/core/signingEngine/session/operationState/lanes.js +21 -4
- package/dist/esm/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +94 -0
- package/dist/esm/core/signingEngine/stepUpConfirmation/methodSelection.js +1 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +19 -2
- package/dist/esm/core/signingEngine/uiConfirm/ui/confirmation-model.js +3 -1
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +6 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +59 -23
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +13 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +48 -16
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +146 -9
- package/dist/esm/core/signingEngine/walletCustody/ceremonyStepRunner.js +8 -0
- package/dist/esm/core/signingEngine/walletCustody/resealedEnvelopeResult.js +24 -0
- package/dist/esm/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +74 -0
- package/dist/esm/core/signingEngine/workerManager/workerDeferred.js +25 -0
- package/dist/esm/core/ui/messages.js +15 -4
- package/dist/esm/externalNear/actions.js +26 -0
- package/dist/esm/externalNear/boundary.js +53 -0
- package/dist/esm/externalNear/controller.js +223 -0
- package/dist/esm/externalNear/hot.js +41 -0
- package/dist/esm/externalNear/index.js +3 -0
- package/dist/esm/externalNear/intear.js +110 -0
- package/dist/esm/externalNear/intearPopup.js +83 -0
- package/dist/esm/externalNear/message.js +60 -0
- package/dist/esm/externalNear/meteor.js +133 -0
- package/dist/esm/externalNear/meteorRequest.js +117 -0
- package/dist/esm/externalNear/types.js +17 -0
- package/dist/esm/externalNear/wallets.js +33 -0
- package/dist/esm/node_modules/borsh/lib/esm/buffer.js +67 -0
- package/dist/esm/node_modules/borsh/lib/esm/deserialize.js +94 -0
- package/dist/esm/node_modules/borsh/lib/esm/index.js +13 -0
- package/dist/esm/node_modules/borsh/lib/esm/serialize.js +127 -0
- package/dist/esm/node_modules/borsh/lib/esm/types.js +19 -0
- package/dist/esm/node_modules/borsh/lib/esm/utils.js +104 -0
- package/dist/esm/plugins/plugin-utils.js +2 -5
- package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +10 -22
- package/dist/esm/react/components/AccountMenuButton/AccountMenuDeviceDetails.js +2 -2
- package/dist/esm/react/components/AccountMenuButton/AccountMenuMockScreens.js +7 -4
- package/dist/esm/react/components/AccountMenuButton/AddEvmAccount.js +124 -0
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodRow.js +41 -23
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +220 -164
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsView.js +7 -5
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +142 -36
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +11 -2
- package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.css +12 -10
- package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/VoiceIdAvailabilityControl.js +186 -0
- package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +10 -8
- package/dist/esm/react/components/AccountMenuButton/icons/ChevronRightIcon.js +8 -0
- package/dist/esm/react/components/AccountMenuButton/icons/WalletIcon.js +8 -0
- package/dist/esm/react/components/AccountMenuButton/index.js +35 -13
- package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +8 -4
- package/dist/esm/react/context/useLoginStateRefresher.js +10 -2
- package/dist/esm/react/externalNear.css +90 -0
- package/dist/esm/react/externalNear.js +104 -0
- package/dist/esm/react/index.js +2 -4
- package/dist/esm/react/styles/styles.css +22 -332
- package/dist/esm/react/styles.css +0 -1
- package/dist/esm/sdk/ConfirmationDrawer-CTaGM1AE.js +1 -0
- package/dist/esm/sdk/{NonceCoordinator-Do23iTzQ.js → NonceCoordinator-Bti1HQPo.js} +1 -1
- package/dist/esm/sdk/SeamsWordmark-CFpsGoLw.js +1 -0
- package/dist/esm/sdk/{accountLifecycle-CXTlwnAS.js → accountLifecycle-B98g9zN9.js} +1 -1
- package/dist/esm/sdk/actions-GYsSR2Q2.js +1 -0
- package/dist/esm/sdk/activeWalletSession-H9JBdHyQ.js +1 -0
- package/dist/esm/sdk/adapters-D5MZ5NG5.js +2 -0
- package/dist/esm/sdk/appearance-token-vars-CgYTfCKg.js +1 -0
- package/dist/esm/sdk/{canonicalPrimitives-D_1HyEuJ.js → canonicalPrimitives-B6YMrI3W.js} +1 -1
- package/dist/esm/sdk/{capabilityKinds-CqHVzVsJ.js → capabilityKinds-BzrNeEyO.js} +1 -1
- package/dist/esm/sdk/{chains-CPmd4s9f.js → chains-gV2K9gA4.js} +1 -1
- package/dist/esm/sdk/{challengeDelivery-C88JNwKf.js → challengeDelivery-FW9gYyr0.js} +1 -1
- package/dist/esm/sdk/clientSessionPersistenceState-BPYK9PYV.js +1 -0
- package/dist/esm/sdk/{collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js → collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js} +1 -1
- package/dist/esm/sdk/{commitQueue-BQPOhyGl.js → commitQueue-Bs23Rs57.js} +1 -1
- package/dist/esm/sdk/configBuilder-DrxXNUpV.js +1 -0
- package/dist/esm/sdk/{configHelpers-D50F_Txb.js → configHelpers-BNqoU2cv.js} +1 -1
- package/dist/esm/sdk/configuration-CAqANpTI.js +1 -0
- package/dist/esm/sdk/csp-stylesheet-DeuiM0Mo.js +2 -0
- package/dist/esm/sdk/{display-Dtugjeya.js → display-BXjW58UF.js} +1 -1
- package/dist/esm/sdk/domainIds-t1lp25yU.js +1 -0
- package/dist/esm/sdk/ecdsaCapabilityManifest--FjbES8k.js +1 -0
- package/dist/esm/sdk/{ecdsaChainTarget-svSlzhze.js → ecdsaChainTarget-DbLthshF.js} +1 -1
- package/dist/esm/sdk/{ecdsaDerivationClientWasm-D1HzwUgV.js → ecdsaDerivationClientWasm-7Rp4TmYE.js} +1 -1
- package/dist/esm/sdk/ecdsaDerivationExport-dInN7N6e.js +1 -0
- package/dist/esm/sdk/{ecdsaWalletRecords-BmhuJF1y.js → ecdsaWalletRecords-BgcXXCZy.js} +1 -1
- package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +1 -0
- package/dist/esm/sdk/{enrichDisplayModelWithAbi-D0o0IL7_.js → enrichDisplayModelWithAbi-CudPUW0T.js} +1 -1
- package/dist/esm/sdk/{evmCryptoWasm-S2gL5ht4.js → evmCryptoWasm-DacbCVNM.js} +1 -1
- package/dist/esm/sdk/{export-viewer-host-C9n-62Pi.js → export-viewer-host-DsWOvc0t.js} +1 -1
- package/dist/esm/sdk/exportKeypairOperation-BazJvSov.js +1 -0
- package/dist/{public/sdk/helpers-BXezXx19.js → esm/sdk/helpers-CXqXyyCU.js} +1 -1
- package/dist/esm/sdk/host-C0Is56lU.js +1 -0
- package/dist/esm/sdk/icons-DyndJzSh.js +1 -0
- package/dist/esm/sdk/indexedDB-C1odKEC6.js +1 -0
- package/dist/esm/sdk/intentDigest-BMXki7yB.js +1 -0
- package/dist/esm/sdk/{keyMaterialEnvelope-B3v6HLtz.js → keyMaterialEnvelope-B-Q5KTJC.js} +1 -1
- package/dist/esm/sdk/lanes-C7OvAK_L.js +1 -0
- package/dist/esm/sdk/localOnly-BB3Rx3J6.js +1 -0
- package/dist/esm/sdk/mountExportPrivateKeySurface-CV1KrFWg.js +1 -0
- package/dist/{public/sdk/mountRecoveryCodeBackupSurface-D3QFgMGE.js → esm/sdk/mountRecoveryCodeBackupSurface-CVXU1zzl.js} +2 -2
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +1 -0
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +1 -0
- package/dist/esm/sdk/{nonceLaneKeys-CR2XEvnk.js → nonceLaneKeys-BS4fek17.js} +1 -1
- package/dist/esm/sdk/{normalization-Ctkj80dW.js → normalization-BN-2VWZf.js} +1 -1
- package/dist/esm/sdk/{operationFingerprint-DRPONhBD.js → operationFingerprint-Bn0lUYlm.js} +1 -1
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js +1 -0
- package/dist/esm/sdk/presignaturePool-CultzkOG.js +1 -0
- package/dist/esm/sdk/{presignatures-DGLNs29C.js → presignatures-B9GrGx0L.js} +1 -1
- package/dist/esm/sdk/recovery-entrypoint-QBvJBngm.js +1 -0
- package/dist/esm/sdk/{recoveryAuthorization-BplZWc-N.js → recoveryAuthorization-DB-zxeHq.js} +1 -1
- package/dist/esm/sdk/registration-CM5a7WYO.js +1 -0
- package/dist/esm/sdk/registration-Hv0xi7-L.js +1 -0
- package/dist/esm/sdk/{registrationAccounts-BfO6Ztye.js → registrationAccounts-BHikxS5q.js} +1 -1
- package/dist/esm/sdk/{registrationAuthMethodInput-DKz6Mgg4.js → registrationAuthMethodInput-BvbWl0y_.js} +1 -1
- package/dist/esm/sdk/registrationIntent-DTs2SR9E.js +1 -0
- package/dist/esm/sdk/{registrationSignerPlan-B66FjqIp.js → registrationSignerPlan-CgbFVsAp.js} +1 -1
- package/dist/{public/sdk/requireStepUpAuth-DsNLml1i.js → esm/sdk/requireStepUpAuth-B7tC4MrA.js} +1 -1
- package/dist/esm/sdk/resealedEnvelopeResult--iCVt_Bh.js +1 -0
- package/dist/esm/sdk/routerAbNormalSigning-Div3lZWV.js +1 -0
- package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/esm/sdk/runtime-auth-CVw1KoVD.js +1 -0
- package/dist/esm/sdk/runtime-device-link-Dp0YMZTQ.js +1 -0
- package/dist/esm/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +1 -0
- package/dist/esm/sdk/runtime-email-otp-gsr_FsQn.js +1 -0
- package/dist/esm/sdk/runtime-export-upMPrZ4V.js +1 -0
- package/dist/esm/sdk/runtime-near-B64Hn3nc.js +1 -0
- package/dist/esm/sdk/runtime-preferences-CULdHkbg.js +1 -0
- package/dist/esm/sdk/runtime-recovery-D2saBaJy.js +1 -0
- package/dist/esm/sdk/runtime-recovery-codes-Bvc0IXMJ.js +1 -0
- package/dist/esm/sdk/runtimeContext-CNFJjcns.js +6 -0
- package/dist/{public/sdk/sdkSentEvents-BzMVO1AR.js → esm/sdk/sdkSentEvents-DUht3AOD.js} +1 -1
- package/dist/esm/sdk/{secp256k1-CYu8ENjP.js → secp256k1-BGVlx50C.js} +1 -1
- package/dist/esm/sdk/sessionObservationRevision-84ZzJ-fC.js +1 -0
- package/dist/esm/sdk/shared-DcHtE-D-.js +1 -0
- package/dist/esm/sdk/signEvmFamily-PjwUc5MT.js +1 -0
- package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js} +1 -1
- package/dist/esm/sdk/{signEvmWithUiConfirm-lZyPfrGe.js → signEvmWithUiConfirm-BNkupz3z.js} +1 -1
- package/dist/esm/sdk/signNear-r8VCOoTh.js +1 -0
- package/dist/esm/sdk/{signatureUses-CY4U-X6V.js → signatureUses-DrqCoN12.js} +1 -1
- package/dist/esm/sdk/signerDomain-D-EUTlLK.js +1 -0
- package/dist/esm/sdk/{signerSlot-CpyIfl3J.js → signerSlot-D4ZOuK7e.js} +1 -1
- package/dist/{public/sdk/signingFlow-Co_QtuHK.js → esm/sdk/signingFlow-BVvteILM.js} +1 -1
- package/dist/esm/sdk/{signingQueue-Cj9sCJLj.js → signingQueue-BJzOrwDq.js} +1 -1
- package/dist/esm/sdk/surface-measurement-reporter-NUm_54LH.js +1 -0
- package/dist/{public/sdk/thresholdEcdsa-LvkD6z8-.js → esm/sdk/thresholdEcdsa-tnY83qyG.js} +1 -1
- package/dist/esm/sdk/{trace-CWTzEALZ.js → trace-CGNqO1FV.js} +1 -1
- package/dist/esm/sdk/{transaction-activity-CpDMkSPm.js → transaction-activity-DPq9RTh5.js} +1 -1
- package/dist/esm/sdk/transactionReview-DSGnpreN.js +1 -0
- package/dist/esm/sdk/transactionReviewAdmission--8tDis7M.js +1 -0
- package/dist/{public/sdk/transactionState-BaFSiA9t.js → esm/sdk/transactionState-BS1VLT7B.js} +1 -1
- package/dist/esm/sdk/tx-confirm-ui.js +418 -109
- package/dist/esm/sdk/types-DdzuHlAQ.js +1 -0
- package/dist/esm/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +1 -0
- package/dist/esm/sdk/voiceid-host.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-BjIQdOha.js +1 -0
- package/dist/esm/sdk/wallet-ui.css +1 -1
- package/dist/esm/sdk/walletAuthMethodRecord-yIqCeE-o.js +1 -0
- package/dist/esm/sdk/walletCapabilityBindings-CUPk3mVH.js +1 -0
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +1 -0
- package/dist/esm/sdk/walletCustodyOperation-DzPcxEBS.js +1 -0
- package/dist/esm/sdk/walletDbName-DDJXrgA5.js +1 -0
- package/dist/esm/sdk/walletOwnershipGeneration-DI9ogcXF.js +1 -0
- package/dist/esm/sdk/walletRecoveryAdminProof-BJxmg3f7.js +1 -0
- package/dist/esm/sdk/walletRecoveryCommit-B7WsdR7y.js +1 -0
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +1 -0
- package/dist/{public/sdk/walletSessionAuthorizationStore-DYRMCkiT.js → esm/sdk/walletSessionAuthorizationStore-zkxcMdSp.js} +1 -1
- package/dist/esm/sdk/warmSessionHydration-DqZyfi1h.js +1 -0
- package/dist/esm/sdk/{webauthnP256-unqBoZCk.js → webauthnP256-BvTL8nq4.js} +1 -1
- package/dist/esm/shared-ts/src/authorization/capabilityKinds.js +4 -1
- package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +11 -2
- package/dist/esm/shared-ts/src/authorization/voiceIdDeviceAssertion.js +110 -0
- package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +1 -0
- package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +1 -0
- package/dist/esm/shared-ts/src/device-linking/deviceManagement.js +17 -9
- package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +62 -3
- package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +1 -1
- package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +5 -2
- package/dist/esm/shared-ts/src/utils/domainIds.js +14 -1
- package/dist/esm/shared-ts/src/utils/signerDomain.js +4 -2
- package/dist/esm/shared-ts/src/utils/validation.js +4 -1
- package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +46 -2
- package/dist/esm/shared-ts/src/utils/walletAuthMethodRecord.js +116 -6
- package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +39 -1
- package/dist/esm/voiceid-host.js +47 -0
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_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-CTaGM1AE.js +1 -0
- package/dist/public/sdk/{NonceCoordinator-Do23iTzQ.js → NonceCoordinator-Bti1HQPo.js} +1 -1
- package/dist/public/sdk/SeamsWordmark-CFpsGoLw.js +1 -0
- package/dist/public/sdk/{accountLifecycle-CXTlwnAS.js → accountLifecycle-B98g9zN9.js} +1 -1
- package/dist/public/sdk/actions-GYsSR2Q2.js +1 -0
- package/dist/public/sdk/activeWalletSession-H9JBdHyQ.js +1 -0
- package/dist/public/sdk/adapters-D5MZ5NG5.js +2 -0
- package/dist/public/sdk/appearance-token-vars-CgYTfCKg.js +1 -0
- package/dist/public/sdk/{canonicalPrimitives-D_1HyEuJ.js → canonicalPrimitives-B6YMrI3W.js} +1 -1
- package/dist/public/sdk/{capabilityKinds-CqHVzVsJ.js → capabilityKinds-BzrNeEyO.js} +1 -1
- package/dist/public/sdk/{chains-CPmd4s9f.js → chains-gV2K9gA4.js} +1 -1
- package/dist/public/sdk/{challengeDelivery-C88JNwKf.js → challengeDelivery-FW9gYyr0.js} +1 -1
- package/dist/public/sdk/clientSessionPersistenceState-BPYK9PYV.js +1 -0
- package/dist/public/sdk/{collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js → collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js} +1 -1
- package/dist/public/sdk/{commitQueue-BQPOhyGl.js → commitQueue-Bs23Rs57.js} +1 -1
- package/dist/public/sdk/configBuilder-DrxXNUpV.js +1 -0
- package/dist/public/sdk/{configHelpers-D50F_Txb.js → configHelpers-BNqoU2cv.js} +1 -1
- package/dist/public/sdk/configuration-CAqANpTI.js +1 -0
- package/dist/public/sdk/csp-stylesheet-DeuiM0Mo.js +2 -0
- package/dist/public/sdk/{display-Dtugjeya.js → display-BXjW58UF.js} +1 -1
- package/dist/public/sdk/domainIds-t1lp25yU.js +1 -0
- package/dist/public/sdk/ecdsaCapabilityManifest--FjbES8k.js +1 -0
- package/dist/public/sdk/{ecdsaChainTarget-svSlzhze.js → ecdsaChainTarget-DbLthshF.js} +1 -1
- package/dist/public/sdk/{ecdsaDerivationClientWasm-D1HzwUgV.js → ecdsaDerivationClientWasm-7Rp4TmYE.js} +1 -1
- package/dist/public/sdk/ecdsaDerivationExport-dInN7N6e.js +1 -0
- package/dist/public/sdk/{ecdsaWalletRecords-BmhuJF1y.js → ecdsaWalletRecords-BgcXXCZy.js} +1 -1
- package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +1 -0
- package/dist/public/sdk/{enrichDisplayModelWithAbi-D0o0IL7_.js → enrichDisplayModelWithAbi-CudPUW0T.js} +1 -1
- package/dist/public/sdk/{evmCryptoWasm-S2gL5ht4.js → evmCryptoWasm-DacbCVNM.js} +1 -1
- package/dist/public/sdk/{export-viewer-host-C9n-62Pi.js → export-viewer-host-DsWOvc0t.js} +1 -1
- package/dist/public/sdk/exportKeypairOperation-BazJvSov.js +1 -0
- package/dist/{esm/sdk/helpers-BXezXx19.js → public/sdk/helpers-CXqXyyCU.js} +1 -1
- package/dist/public/sdk/host-C0Is56lU.js +1 -0
- package/dist/public/sdk/icons-DyndJzSh.js +1 -0
- package/dist/public/sdk/indexedDB-C1odKEC6.js +1 -0
- package/dist/public/sdk/intentDigest-BMXki7yB.js +1 -0
- package/dist/public/sdk/{keyMaterialEnvelope-B3v6HLtz.js → keyMaterialEnvelope-B-Q5KTJC.js} +1 -1
- package/dist/public/sdk/lanes-C7OvAK_L.js +1 -0
- package/dist/public/sdk/localOnly-BB3Rx3J6.js +1 -0
- package/dist/public/sdk/mountExportPrivateKeySurface-CV1KrFWg.js +1 -0
- package/dist/{esm/sdk/mountRecoveryCodeBackupSurface-D3QFgMGE.js → public/sdk/mountRecoveryCodeBackupSurface-CVXU1zzl.js} +2 -2
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +1 -0
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +1 -0
- package/dist/public/sdk/{nonceLaneKeys-CR2XEvnk.js → nonceLaneKeys-BS4fek17.js} +1 -1
- package/dist/public/sdk/{normalization-Ctkj80dW.js → normalization-BN-2VWZf.js} +1 -1
- package/dist/public/sdk/{operationFingerprint-DRPONhBD.js → operationFingerprint-Bn0lUYlm.js} +1 -1
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js +1 -0
- package/dist/public/sdk/presignaturePool-CultzkOG.js +1 -0
- package/dist/public/sdk/{presignatures-DGLNs29C.js → presignatures-B9GrGx0L.js} +1 -1
- package/dist/public/sdk/recovery-entrypoint-QBvJBngm.js +1 -0
- package/dist/public/sdk/{recoveryAuthorization-BplZWc-N.js → recoveryAuthorization-DB-zxeHq.js} +1 -1
- package/dist/public/sdk/registration-CM5a7WYO.js +1 -0
- package/dist/public/sdk/registration-Hv0xi7-L.js +1 -0
- package/dist/public/sdk/{registrationAccounts-BfO6Ztye.js → registrationAccounts-BHikxS5q.js} +1 -1
- package/dist/public/sdk/{registrationAuthMethodInput-DKz6Mgg4.js → registrationAuthMethodInput-BvbWl0y_.js} +1 -1
- package/dist/public/sdk/registrationIntent-DTs2SR9E.js +1 -0
- package/dist/public/sdk/{registrationSignerPlan-B66FjqIp.js → registrationSignerPlan-CgbFVsAp.js} +1 -1
- package/dist/{esm/sdk/requireStepUpAuth-DsNLml1i.js → public/sdk/requireStepUpAuth-B7tC4MrA.js} +1 -1
- package/dist/public/sdk/resealedEnvelopeResult--iCVt_Bh.js +1 -0
- package/dist/public/sdk/routerAbNormalSigning-Div3lZWV.js +1 -0
- package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/runtime-auth-CVw1KoVD.js +1 -0
- package/dist/public/sdk/runtime-device-link-Dp0YMZTQ.js +1 -0
- package/dist/public/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +1 -0
- package/dist/public/sdk/runtime-email-otp-gsr_FsQn.js +1 -0
- package/dist/public/sdk/runtime-export-upMPrZ4V.js +1 -0
- package/dist/public/sdk/runtime-near-B64Hn3nc.js +1 -0
- package/dist/public/sdk/runtime-preferences-CULdHkbg.js +1 -0
- package/dist/public/sdk/runtime-recovery-D2saBaJy.js +1 -0
- package/dist/public/sdk/runtime-recovery-codes-Bvc0IXMJ.js +1 -0
- package/dist/public/sdk/runtimeContext-CNFJjcns.js +6 -0
- package/dist/{esm/sdk/sdkSentEvents-BzMVO1AR.js → public/sdk/sdkSentEvents-DUht3AOD.js} +1 -1
- package/dist/public/sdk/{secp256k1-CYu8ENjP.js → secp256k1-BGVlx50C.js} +1 -1
- package/dist/public/sdk/sessionObservationRevision-84ZzJ-fC.js +1 -0
- package/dist/public/sdk/shared-DcHtE-D-.js +1 -0
- package/dist/public/sdk/signEvmFamily-PjwUc5MT.js +1 -0
- package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js} +1 -1
- package/dist/public/sdk/{signEvmWithUiConfirm-lZyPfrGe.js → signEvmWithUiConfirm-BNkupz3z.js} +1 -1
- package/dist/public/sdk/signNear-r8VCOoTh.js +1 -0
- package/dist/public/sdk/{signatureUses-CY4U-X6V.js → signatureUses-DrqCoN12.js} +1 -1
- package/dist/public/sdk/signerDomain-D-EUTlLK.js +1 -0
- package/dist/public/sdk/{signerSlot-CpyIfl3J.js → signerSlot-D4ZOuK7e.js} +1 -1
- package/dist/{esm/sdk/signingFlow-Co_QtuHK.js → public/sdk/signingFlow-BVvteILM.js} +1 -1
- package/dist/public/sdk/{signingQueue-Cj9sCJLj.js → signingQueue-BJzOrwDq.js} +1 -1
- package/dist/public/sdk/surface-measurement-reporter-NUm_54LH.js +1 -0
- package/dist/{esm/sdk/thresholdEcdsa-LvkD6z8-.js → public/sdk/thresholdEcdsa-tnY83qyG.js} +1 -1
- package/dist/public/sdk/{trace-CWTzEALZ.js → trace-CGNqO1FV.js} +1 -1
- package/dist/public/sdk/{transaction-activity-CpDMkSPm.js → transaction-activity-DPq9RTh5.js} +1 -1
- package/dist/public/sdk/transactionReview-DSGnpreN.js +1 -0
- package/dist/public/sdk/transactionReviewAdmission--8tDis7M.js +1 -0
- package/dist/{esm/sdk/transactionState-BaFSiA9t.js → public/sdk/transactionState-BS1VLT7B.js} +1 -1
- package/dist/public/sdk/tx-confirm-ui.js +418 -109
- package/dist/public/sdk/types-DdzuHlAQ.js +1 -0
- package/dist/public/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +1 -0
- package/dist/public/sdk/voiceid-host.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-BjIQdOha.js +1 -0
- package/dist/public/sdk/wallet-ui.css +1 -1
- package/dist/public/sdk/walletAuthMethodRecord-yIqCeE-o.js +1 -0
- package/dist/public/sdk/walletCapabilityBindings-CUPk3mVH.js +1 -0
- package/dist/public/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +1 -0
- package/dist/public/sdk/walletCustodyOperation-DzPcxEBS.js +1 -0
- package/dist/public/sdk/walletDbName-DDJXrgA5.js +1 -0
- package/dist/public/sdk/walletOwnershipGeneration-DI9ogcXF.js +1 -0
- package/dist/public/sdk/walletRecoveryAdminProof-BJxmg3f7.js +1 -0
- package/dist/public/sdk/walletRecoveryCommit-B7WsdR7y.js +1 -0
- package/dist/public/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +1 -0
- package/dist/{esm/sdk/walletSessionAuthorizationStore-DYRMCkiT.js → public/sdk/walletSessionAuthorizationStore-zkxcMdSp.js} +1 -1
- package/dist/public/sdk/warmSessionHydration-DqZyfi1h.js +1 -0
- package/dist/public/sdk/{webauthnP256-unqBoZCk.js → webauthnP256-BvTL8nq4.js} +1 -1
- package/dist/public/sdk/workers/device-linking-key.worker.js +93 -5
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +67 -65
- package/dist/public/sdk/workers/email-otp.worker.js +93 -4
- package/dist/public/sdk/workers/passkey-mpc-export.worker.js +21 -2
- package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +20 -2
- 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 +503 -240
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/shared-ts/src/authorization/voiceIdDeviceAssertion.d.ts +32 -0
- package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -1
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +8 -0
- package/dist/types/shared-ts/src/device-linking/wireFields.d.ts +4 -4
- package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +29 -0
- package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +1 -0
- package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +2 -2
- package/dist/types/shared-ts/src/signing-lanes/recordParsers.d.ts +2 -1
- package/dist/types/shared-ts/src/signing-lanes/records.d.ts +10 -2
- package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +2 -2
- package/dist/types/shared-ts/src/threshold/sessionPolicy.d.ts +9 -0
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +3 -3
- package/dist/types/shared-ts/src/utils/domainIds.d.ts +4 -5
- package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +0 -1
- package/dist/types/shared-ts/src/utils/signerDomain.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/walletAuthAuthority.d.ts +32 -2
- package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +15 -1
- package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +20 -0
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/publicApi/auth.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +22 -0
- package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/authMenuAnchor.d.ts +17 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/geometry.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/WalletHostRuntime.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +15 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createRegistrationCommands.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createSessionCommands.d.ts +7 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeContext.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/walletMutationGuard.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +15 -4
- package/dist/types/wallet/src/core/authMethods/availability.d.ts +13 -0
- package/dist/types/wallet/src/core/authMethods/availabilityTypes.d.ts +13 -0
- package/dist/types/wallet/src/core/authMethods/hostPlugin.d.ts +82 -0
- package/dist/types/wallet/src/core/authMethods/hostRegistry.d.ts +5 -0
- package/dist/types/wallet/src/core/authMethods/installSession.d.ts +15 -0
- package/dist/types/wallet/src/core/authMethods/plugins.d.ts +7 -0
- package/dist/types/wallet/src/core/authMethods/prepareEcdsaSession.d.ts +6 -0
- package/dist/types/wallet/src/core/authMethods/prepareNearSession.d.ts +18 -0
- package/dist/types/wallet/src/core/authMethods/sessionIdentity.d.ts +53 -0
- package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +11 -1
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/repositories.d.ts +53 -2
- package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
- package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaExportMaterial.d.ts +6 -3
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/ecdsaSelection.d.ts +8 -2
- package/dist/types/wallet/src/core/signingEngine/session/availability/availableSigningLanes.d.ts +10 -10
- package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/session/identity/signingLaneAuthBinding.d.ts +16 -4
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSealedRuntime.d.ts +13 -4
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +15 -6
- package/dist/types/wallet/src/core/signingEngine/session/operationState/lanes.d.ts +11 -4
- package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.d.ts +6 -0
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodSelection.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.d.ts +6 -0
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/transactionReviewAdmission.d.ts +11 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/confirm-ui-types.d.ts +2 -0
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/confirmation-model.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.d.ts +4 -0
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReview.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/walletCustody/resealedEnvelopeResult.d.ts +10 -0
- package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +1 -1
- package/dist/types/wallet/src/core/types/seams.d.ts +4 -0
- package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
- package/dist/types/wallet/src/externalNear/actions.d.ts +20 -0
- package/dist/types/wallet/src/externalNear/boundary.d.ts +7 -0
- package/dist/types/wallet/src/externalNear/controller.d.ts +24 -0
- package/dist/types/wallet/src/externalNear/hot.d.ts +14 -0
- package/dist/types/wallet/src/externalNear/index.d.ts +4 -0
- package/dist/types/wallet/src/externalNear/intear.d.ts +13 -0
- package/dist/types/wallet/src/externalNear/intearPopup.d.ts +25 -0
- package/dist/types/wallet/src/externalNear/message.d.ts +14 -0
- package/dist/types/wallet/src/externalNear/meteor.d.ts +19 -0
- package/dist/types/wallet/src/externalNear/meteorRequest.d.ts +29 -0
- package/dist/types/wallet/src/externalNear/types.d.ts +87 -0
- package/dist/types/wallet/src/externalNear/wallets.d.ts +4 -0
- package/dist/types/wallet/src/index.d.ts +1 -0
- package/dist/types/wallet/src/plugins/plugin-utils.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/AddEvmAccount.d.ts +29 -0
- package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodRow.d.ts +8 -3
- package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsView.d.ts +1 -2
- package/dist/types/wallet/src/react/components/AccountMenuButton/VoiceIdAvailabilityControl.d.ts +19 -0
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ChevronRightIcon.d.ts +2 -0
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/WalletIcon.d.ts +2 -0
- package/dist/types/wallet/src/react/externalNear.d.ts +26 -0
- package/dist/types/wallet/src/react/index.d.ts +1 -4
- package/dist/types/wallet/src/voiceid-host.d.ts +52 -0
- package/dist/workers/device-linking-key.worker.js +93 -5
- package/dist/workers/ecdsa-derivation-client.worker.js +67 -65
- package/dist/workers/email-otp.worker.js +93 -4
- package/dist/workers/passkey-mpc-export.worker.js +21 -2
- package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/workers/wallet-custody-ceremony.worker.js +20 -2
- package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
- package/package.json +25 -3
- package/dist/esm/plugins/SeamsWeb/walletIframe/sanitization.js +0 -18
- package/dist/esm/react/components/AccountMenuButton/icons/PlusIcon.js +0 -8
- package/dist/esm/react/components/VoiceAssistantCard.css +0 -313
- package/dist/esm/react/components/VoiceAssistantCard.js +0 -150
- package/dist/esm/sdk/ConfirmationDrawer-Ck33ZmU-.js +0 -1
- package/dist/esm/sdk/activeWalletSession-BtEHhe99.js +0 -1
- package/dist/esm/sdk/adapters-CgJpSAxH.js +0 -2
- package/dist/esm/sdk/appearance-token-vars-BA3KQyEE.js +0 -2
- package/dist/esm/sdk/clientSessionPersistenceState-DFGHXoKK.js +0 -1
- package/dist/esm/sdk/configBuilder-BMNShuOu.js +0 -1
- package/dist/esm/sdk/domainIds-C3fUa33Q.js +0 -1
- package/dist/esm/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +0 -1
- package/dist/esm/sdk/ecdsaDerivationExport-DrFESeRP.js +0 -1
- package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +0 -1
- package/dist/esm/sdk/exportKeypairOperation-Du9HKB8f.js +0 -1
- package/dist/esm/sdk/host-DoftJdVQ.js +0 -1
- package/dist/esm/sdk/intentDigest--FZ63NBy.js +0 -1
- package/dist/esm/sdk/lanes-l274pbT5.js +0 -1
- package/dist/esm/sdk/localOnly-CvFSZFUy.js +0 -1
- package/dist/esm/sdk/mountExportPrivateKeySurface-DdJHWwqY.js +0 -1
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +0 -1
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +0 -1
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +0 -1
- package/dist/esm/sdk/presignaturePool-DNiA3sgr.js +0 -1
- package/dist/esm/sdk/recovery-entrypoint-CNVjXz6A.js +0 -1
- package/dist/esm/sdk/registration-CIxJvbTo.js +0 -1
- package/dist/esm/sdk/registration-CeOmKyCG.js +0 -1
- package/dist/esm/sdk/registrationIntent-DW_kKWlx.js +0 -1
- package/dist/esm/sdk/routerAbNormalSigning-DSAfCcND.js +0 -1
- package/dist/esm/sdk/runtime-auth-C0V-5znH.js +0 -1
- package/dist/esm/sdk/runtime-device-link-B1jpHQSF.js +0 -1
- package/dist/esm/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js +0 -1
- package/dist/esm/sdk/runtime-email-otp-DXuxFOjL.js +0 -1
- package/dist/esm/sdk/runtime-export-Ba12ChDI.js +0 -1
- package/dist/esm/sdk/runtime-near-DRrdWzmr.js +0 -1
- package/dist/esm/sdk/runtime-preferences-BWyhRaBA.js +0 -1
- package/dist/esm/sdk/runtime-recovery-DlJlaZlf.js +0 -1
- package/dist/esm/sdk/runtime-recovery-codes-CuqYWqK7.js +0 -1
- package/dist/esm/sdk/sessionObservationRevision-abErAhd6.js +0 -1
- package/dist/esm/sdk/shared-B95wnpoD.js +0 -6
- package/dist/esm/sdk/signEvmFamily-C4XMiSue.js +0 -1
- package/dist/esm/sdk/signNear-B_UcqMRf.js +0 -1
- package/dist/esm/sdk/signerDomain-YEHkugWX.js +0 -1
- package/dist/esm/sdk/surface-measurement-reporter-F-fVB7d3.js +0 -1
- package/dist/esm/sdk/transactionReviewAdmission-CNNho8IG.js +0 -1
- package/dist/esm/sdk/types-BrEW276O.js +0 -1
- package/dist/esm/sdk/wallet-recovery-BEui57xM.js +0 -1
- package/dist/esm/sdk/walletAuthMethodRecord-Cv_MYpxt.js +0 -1
- package/dist/esm/sdk/walletCapabilityBindings-CKOK39sP.js +0 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +0 -1
- package/dist/esm/sdk/walletCustodyOperation-BO_tSfGY.js +0 -1
- package/dist/esm/sdk/walletDbName-BVZhb4xF.js +0 -1
- package/dist/esm/sdk/walletOwnershipGeneration-CQzaodhB.js +0 -1
- package/dist/esm/sdk/walletRecoveryAdminProof-CtH8_lph.js +0 -1
- package/dist/esm/sdk/walletRecoveryCommit-B_e4k5Pa.js +0 -1
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +0 -1
- package/dist/esm/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +0 -1
- package/dist/esm/sdk/warmSessionHydration-CY9ofEGr.js +0 -1
- package/dist/public/sdk/ConfirmationDrawer-Ck33ZmU-.js +0 -1
- package/dist/public/sdk/activeWalletSession-BtEHhe99.js +0 -1
- package/dist/public/sdk/adapters-CgJpSAxH.js +0 -2
- package/dist/public/sdk/appearance-token-vars-BA3KQyEE.js +0 -2
- package/dist/public/sdk/clientSessionPersistenceState-DFGHXoKK.js +0 -1
- package/dist/public/sdk/configBuilder-BMNShuOu.js +0 -1
- package/dist/public/sdk/domainIds-C3fUa33Q.js +0 -1
- package/dist/public/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +0 -1
- package/dist/public/sdk/ecdsaDerivationExport-DrFESeRP.js +0 -1
- package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +0 -1
- package/dist/public/sdk/exportKeypairOperation-Du9HKB8f.js +0 -1
- package/dist/public/sdk/host-DoftJdVQ.js +0 -1
- package/dist/public/sdk/intentDigest--FZ63NBy.js +0 -1
- package/dist/public/sdk/lanes-l274pbT5.js +0 -1
- package/dist/public/sdk/localOnly-CvFSZFUy.js +0 -1
- package/dist/public/sdk/mountExportPrivateKeySurface-DdJHWwqY.js +0 -1
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +0 -1
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +0 -1
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +0 -1
- package/dist/public/sdk/presignaturePool-DNiA3sgr.js +0 -1
- package/dist/public/sdk/recovery-entrypoint-CNVjXz6A.js +0 -1
- package/dist/public/sdk/registration-CIxJvbTo.js +0 -1
- package/dist/public/sdk/registration-CeOmKyCG.js +0 -1
- package/dist/public/sdk/registrationIntent-DW_kKWlx.js +0 -1
- package/dist/public/sdk/routerAbNormalSigning-DSAfCcND.js +0 -1
- package/dist/public/sdk/runtime-auth-C0V-5znH.js +0 -1
- package/dist/public/sdk/runtime-device-link-B1jpHQSF.js +0 -1
- package/dist/public/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js +0 -1
- package/dist/public/sdk/runtime-email-otp-DXuxFOjL.js +0 -1
- package/dist/public/sdk/runtime-export-Ba12ChDI.js +0 -1
- package/dist/public/sdk/runtime-near-DRrdWzmr.js +0 -1
- package/dist/public/sdk/runtime-preferences-BWyhRaBA.js +0 -1
- package/dist/public/sdk/runtime-recovery-DlJlaZlf.js +0 -1
- package/dist/public/sdk/runtime-recovery-codes-CuqYWqK7.js +0 -1
- package/dist/public/sdk/sessionObservationRevision-abErAhd6.js +0 -1
- package/dist/public/sdk/shared-B95wnpoD.js +0 -6
- package/dist/public/sdk/signEvmFamily-C4XMiSue.js +0 -1
- package/dist/public/sdk/signNear-B_UcqMRf.js +0 -1
- package/dist/public/sdk/signerDomain-YEHkugWX.js +0 -1
- package/dist/public/sdk/surface-measurement-reporter-F-fVB7d3.js +0 -1
- package/dist/public/sdk/transactionReviewAdmission-CNNho8IG.js +0 -1
- package/dist/public/sdk/types-BrEW276O.js +0 -1
- package/dist/public/sdk/wallet-recovery-BEui57xM.js +0 -1
- package/dist/public/sdk/walletAuthMethodRecord-Cv_MYpxt.js +0 -1
- package/dist/public/sdk/walletCapabilityBindings-CKOK39sP.js +0 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +0 -1
- package/dist/public/sdk/walletCustodyOperation-BO_tSfGY.js +0 -1
- package/dist/public/sdk/walletDbName-BVZhb4xF.js +0 -1
- package/dist/public/sdk/walletOwnershipGeneration-CQzaodhB.js +0 -1
- package/dist/public/sdk/walletRecoveryAdminProof-CtH8_lph.js +0 -1
- package/dist/public/sdk/walletRecoveryCommit-B_e4k5Pa.js +0 -1
- package/dist/public/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +0 -1
- package/dist/public/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +0 -1
- package/dist/public/sdk/warmSessionHydration-CY9ofEGr.js +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/PlusIcon.d.ts +0 -2
- package/dist/types/wallet/src/react/components/VoiceAssistantCard.d.ts +0 -37
- package/dist/types/wallet/src/react/components/VoiceAssistantCard.typecheck.d.ts +0 -2
- /package/dist/esm/sdk/{accountIds-BzZs7YoX.js → accountIds-D5NI31F2.js} +0 -0
- /package/dist/esm/sdk/{appearance-ZGVLwA4N.js → appearance-DVFno9Tv.js} +0 -0
- /package/dist/esm/sdk/{authenticatorOptions-BB_sU4uA.js → authenticatorOptions-EF_Rps52.js} +0 -0
- /package/dist/esm/sdk/{authorizationAdmission-D7nx2n4d.js → authorizationAdmission-DbhNiY3X.js} +0 -0
- /package/dist/esm/sdk/{browser-DkCRXFkk.js → browser-B2RI00tM.js} +0 -0
- /package/dist/esm/sdk/{bytes-Cv07P0Pu.js → bytes-DVe42j_r.js} +0 -0
- /package/dist/esm/sdk/{canonicalSignerErrorCode-CqHi6ji6.js → canonicalSignerErrorCode-AwNMAn8S.js} +0 -0
- /package/dist/esm/sdk/{errors-CI1xdN0d.js → errors-ADOZT8oV.js} +0 -0
- /package/dist/esm/sdk/{executeWorkerOperation-S6glYwAs.js → executeWorkerOperation-B-9JuL55.js} +0 -0
- /package/dist/esm/sdk/{jsonRpc-B5zMY6lE.js → jsonRpc-CHutSlC9.js} +0 -0
- /package/dist/esm/sdk/{keccak-CaPOCznk.js → keccak-C9kCkZem.js} +0 -0
- /package/dist/esm/sdk/{normalization-CpLZcL2f.js → normalization-DtruiNPw.js} +0 -0
- /package/dist/esm/sdk/{prfCache-D25ZCg5n.js → prfCache-8Wm3etlV.js} +0 -0
- /package/dist/esm/sdk/{profileAccountProjection-C1z9sKHa.js → profileAccountProjection-D01e10UY.js} +0 -0
- /package/dist/esm/sdk/{promptText-D2f5Rg0h.js → promptText-Bz3YRl9D.js} +0 -0
- /package/dist/esm/sdk/{signer-worker-Bh_5foqX.js → signer-worker-DlK58rEA.js} +0 -0
- /package/dist/esm/sdk/{types-BNUuaUtl.js → types-fJKfUgTi.js} +0 -0
- /package/dist/esm/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
- /package/dist/esm/sdk/{walletSessionAuthorizationProjection-UdGeS6x3.js → walletSessionAuthorizationProjection-BJgnZaBc.js} +0 -0
- /package/dist/esm/sdk/{walletSessionFailure-Ct412mDZ.js → walletSessionFailure-CLUIF3Eh.js} +0 -0
- /package/dist/esm/sdk/{webauthnPromptCoordinator-CBkTiMP0.js → webauthnPromptCoordinator-CU9ag7vz.js} +0 -0
- /package/dist/public/sdk/{accountIds-BzZs7YoX.js → accountIds-D5NI31F2.js} +0 -0
- /package/dist/public/sdk/{appearance-ZGVLwA4N.js → appearance-DVFno9Tv.js} +0 -0
- /package/dist/public/sdk/{authenticatorOptions-BB_sU4uA.js → authenticatorOptions-EF_Rps52.js} +0 -0
- /package/dist/public/sdk/{authorizationAdmission-D7nx2n4d.js → authorizationAdmission-DbhNiY3X.js} +0 -0
- /package/dist/public/sdk/{browser-DkCRXFkk.js → browser-B2RI00tM.js} +0 -0
- /package/dist/public/sdk/{bytes-Cv07P0Pu.js → bytes-DVe42j_r.js} +0 -0
- /package/dist/public/sdk/{canonicalSignerErrorCode-CqHi6ji6.js → canonicalSignerErrorCode-AwNMAn8S.js} +0 -0
- /package/dist/public/sdk/{errors-CI1xdN0d.js → errors-ADOZT8oV.js} +0 -0
- /package/dist/public/sdk/{executeWorkerOperation-S6glYwAs.js → executeWorkerOperation-B-9JuL55.js} +0 -0
- /package/dist/public/sdk/{jsonRpc-B5zMY6lE.js → jsonRpc-CHutSlC9.js} +0 -0
- /package/dist/public/sdk/{keccak-CaPOCznk.js → keccak-C9kCkZem.js} +0 -0
- /package/dist/public/sdk/{normalization-CpLZcL2f.js → normalization-DtruiNPw.js} +0 -0
- /package/dist/public/sdk/{prfCache-D25ZCg5n.js → prfCache-8Wm3etlV.js} +0 -0
- /package/dist/public/sdk/{profileAccountProjection-C1z9sKHa.js → profileAccountProjection-D01e10UY.js} +0 -0
- /package/dist/public/sdk/{promptText-D2f5Rg0h.js → promptText-Bz3YRl9D.js} +0 -0
- /package/dist/public/sdk/{signer-worker-Bh_5foqX.js → signer-worker-DlK58rEA.js} +0 -0
- /package/dist/public/sdk/{types-BNUuaUtl.js → types-fJKfUgTi.js} +0 -0
- /package/dist/public/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
- /package/dist/public/sdk/{walletSessionAuthorizationProjection-UdGeS6x3.js → walletSessionAuthorizationProjection-BJgnZaBc.js} +0 -0
- /package/dist/public/sdk/{walletSessionFailure-Ct412mDZ.js → walletSessionFailure-CLUIF3Eh.js} +0 -0
- /package/dist/public/sdk/{webauthnPromptCoordinator-CBkTiMP0.js → webauthnPromptCoordinator-CU9ag7vz.js} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { normalizeTrimmedString } from "../../shared-ts/src/utils/normalize.js";
|
|
2
2
|
import { normalizeWalletLocale } from "../ui/locale.js";
|
|
3
|
+
import { parseWalletAuthMethodPlugins } from "../authMethods/plugins.js";
|
|
3
4
|
import { copyEcdsaSignerProvisioningDefaults, resolveAppearanceTheme, resolveBoolean, resolveChains, resolveIntegerInRange, resolveThemePalette } from "./configHelpers.js";
|
|
4
5
|
import { normalizeWalletHostVariant } from "../browser/walletIframe/hostVariant.js";
|
|
5
6
|
import { SIGNING_SESSION_SEAL_ALG, SIGNING_SESSION_SEAL_GROUP_ID } from "../../shared-ts/src/utils/signingSessionSeal.js";
|
|
@@ -156,6 +157,7 @@ function buildConfigsFromDefaults(args) {
|
|
|
156
157
|
defaults
|
|
157
158
|
});
|
|
158
159
|
return {
|
|
160
|
+
authMethods: parseWalletAuthMethodPlugins(overrides.authMethods ?? defaults.authMethods),
|
|
159
161
|
network: {
|
|
160
162
|
chains,
|
|
161
163
|
relayer: {
|
|
@@ -42,6 +42,7 @@ function exportRootEnvelopeMatchesAuthMethod(authMethod, envelope) {
|
|
|
42
42
|
switch (authMethod.kind) {
|
|
43
43
|
case "passkey": return envelope.factor.kind === "passkey" && envelope.factor.rpId === authMethod.rpId && envelope.factor.credentialIdB64u === authMethod.credentialIdB64u && envelope.binding.targetFactor.kind === "passkey_prf";
|
|
44
44
|
case "email_otp": return envelope.factor.kind === "email_otp" && envelope.binding.targetFactor.kind === "email_otp";
|
|
45
|
+
case "voiceid": return false;
|
|
45
46
|
default: return assertNever(authMethod);
|
|
46
47
|
}
|
|
47
48
|
}
|
|
@@ -819,6 +820,10 @@ function unavailableWalletAuthMethodPresentation(record) {
|
|
|
819
820
|
kind: "email_otp",
|
|
820
821
|
email: { kind: "unavailable" }
|
|
821
822
|
};
|
|
823
|
+
case "voiceid": return {
|
|
824
|
+
version: "wallet_auth_method_local_presentation_v1",
|
|
825
|
+
kind: "voiceid"
|
|
826
|
+
};
|
|
822
827
|
default: throw new Error("Wallet auth-method presentation kind is invalid");
|
|
823
828
|
}
|
|
824
829
|
}
|
|
@@ -865,6 +870,12 @@ function parseWalletAuthMethodLocalPresentationV1(value, record) {
|
|
|
865
870
|
default: return null;
|
|
866
871
|
}
|
|
867
872
|
}
|
|
873
|
+
case "voiceid":
|
|
874
|
+
if (!hasExactKeys(value, ["version", "kind"])) return null;
|
|
875
|
+
return {
|
|
876
|
+
version: "wallet_auth_method_local_presentation_v1",
|
|
877
|
+
kind: "voiceid"
|
|
878
|
+
};
|
|
868
879
|
default: return null;
|
|
869
880
|
}
|
|
870
881
|
}
|
|
@@ -899,6 +910,16 @@ function walletAuthMethodV2StorageRow(projection) {
|
|
|
899
910
|
presentation: projection.presentation,
|
|
900
911
|
record: projection.record
|
|
901
912
|
};
|
|
913
|
+
case "voiceid": return {
|
|
914
|
+
wallet_auth_method_id: projection.record.walletAuthMethodId,
|
|
915
|
+
wallet_id: projection.record.walletId,
|
|
916
|
+
wallet_authority_id: projection.record.walletAuthorityId,
|
|
917
|
+
kind: "voiceid",
|
|
918
|
+
status: projection.record.status,
|
|
919
|
+
updated_at: projection.record.updatedAtMs,
|
|
920
|
+
presentation: projection.presentation,
|
|
921
|
+
record: projection.record
|
|
922
|
+
};
|
|
902
923
|
default: throw new Error("Wallet auth-method projection kind is invalid");
|
|
903
924
|
}
|
|
904
925
|
}
|
|
@@ -926,12 +947,14 @@ function walletAuthMethodLocalPresentation(record, rows, current) {
|
|
|
926
947
|
switch (record.kind) {
|
|
927
948
|
case "passkey": return unavailableWalletAuthMethodPresentation(record);
|
|
928
949
|
case "email_otp": return verifiedEmailPresentationFromLocalRecords(record, rows) ?? (current?.kind === "email_otp" && current.email.kind === "verified" ? current : unavailableWalletAuthMethodPresentation(record));
|
|
950
|
+
case "voiceid": return unavailableWalletAuthMethodPresentation(record);
|
|
929
951
|
default: throw new Error("Wallet auth-method presentation kind is invalid");
|
|
930
952
|
}
|
|
931
953
|
}
|
|
932
954
|
function walletAuthMethodLocalPresentationsMatch(left, right) {
|
|
933
955
|
if (left.kind !== right.kind) return false;
|
|
934
956
|
if (left.kind === "passkey" && right.kind === "passkey") return true;
|
|
957
|
+
if (left.kind === "voiceid" && right.kind === "voiceid") return true;
|
|
935
958
|
if (left.kind !== "email_otp" || right.kind !== "email_otp") return false;
|
|
936
959
|
if (left.email.kind !== right.email.kind) return false;
|
|
937
960
|
if (left.email.kind === "unavailable" && right.email.kind === "unavailable") return true;
|
|
@@ -956,6 +979,13 @@ function localWalletAuthMethodProjectionV2(record, presentation) {
|
|
|
956
979
|
record,
|
|
957
980
|
presentation
|
|
958
981
|
};
|
|
982
|
+
case "voiceid":
|
|
983
|
+
if (presentation.kind !== "voiceid") throw new Error("VoiceID auth method has non-VoiceID local presentation");
|
|
984
|
+
return {
|
|
985
|
+
kind: "voiceid",
|
|
986
|
+
record,
|
|
987
|
+
presentation
|
|
988
|
+
};
|
|
959
989
|
default: throw new Error("Wallet auth-method projection kind is invalid");
|
|
960
990
|
}
|
|
961
991
|
}
|
|
@@ -1234,6 +1264,7 @@ function walletCustodyEnvelopeFactorsMatch(left, right) {
|
|
|
1234
1264
|
switch (left.kind) {
|
|
1235
1265
|
case "passkey": return right.kind === "passkey" && left.rpId === right.rpId && left.credentialIdB64u === right.credentialIdB64u && left.kekVersion === right.kekVersion;
|
|
1236
1266
|
case "email_otp": return right.kind === "email_otp" && left.enrollmentId === right.enrollmentId && left.enrollmentSealKeyVersion === right.enrollmentSealKeyVersion && left.kekVersion === right.kekVersion;
|
|
1267
|
+
case "voiceid": return right.kind === "voiceid" && left.deviceKeyId === right.deviceKeyId && left.kekVersion === right.kekVersion;
|
|
1237
1268
|
default: return assertNever(left);
|
|
1238
1269
|
}
|
|
1239
1270
|
}
|
|
@@ -1282,6 +1313,7 @@ function walletAuthMethodRecordsMatch(left, right) {
|
|
|
1282
1313
|
switch (left.kind) {
|
|
1283
1314
|
case "passkey": return right.kind === "passkey" && left.rpId === right.rpId && left.credentialIdB64u === right.credentialIdB64u && left.credentialPublicKeyB64u === right.credentialPublicKeyB64u && left.counter === right.counter && (left.status === "pending_local_install" || left.activatedAtMs === right.activatedAtMs) && (left.status !== "revoked" || left.revokedAtMs === right.revokedAtMs);
|
|
1284
1315
|
case "email_otp": return right.kind === "email_otp" && left.emailHashHex === right.emailHashHex && left.registrationAuthorityId === right.registrationAuthorityId && (left.status === "pending_local_install" || left.activatedAtMs === right.activatedAtMs) && (left.status !== "revoked" || left.revokedAtMs === right.revokedAtMs);
|
|
1316
|
+
case "voiceid": return right.kind === "voiceid" && left.deviceKeyId === right.deviceKeyId && left.devicePublicKeyB64u === right.devicePublicKeyB64u && (left.status === "pending_local_install" || left.activatedAtMs === right.activatedAtMs) && (left.status !== "revoked" || left.revokedAtMs === right.revokedAtMs);
|
|
1285
1317
|
}
|
|
1286
1318
|
return assertNever(left);
|
|
1287
1319
|
}
|
|
@@ -1290,6 +1322,7 @@ function walletAuthMethodPendingMatchesActive(pending, active) {
|
|
|
1290
1322
|
switch (pending.kind) {
|
|
1291
1323
|
case "passkey": return active.kind === "passkey" && pending.rpId === active.rpId && pending.credentialIdB64u === active.credentialIdB64u && pending.credentialPublicKeyB64u === active.credentialPublicKeyB64u && pending.counter === active.counter;
|
|
1292
1324
|
case "email_otp": return active.kind === "email_otp" && pending.emailHashHex === active.emailHashHex && pending.registrationAuthorityId === active.registrationAuthorityId;
|
|
1325
|
+
case "voiceid": return active.kind === "voiceid" && pending.deviceKeyId === active.deviceKeyId && pending.devicePublicKeyB64u === active.devicePublicKeyB64u;
|
|
1293
1326
|
}
|
|
1294
1327
|
return assertNever(pending);
|
|
1295
1328
|
}
|
|
@@ -1355,6 +1388,7 @@ function parseLocalAuthorityInstallationInput(input) {
|
|
|
1355
1388
|
};
|
|
1356
1389
|
const authenticator = input.authenticator === null ? null : normalizeAuthenticatorRecord(input.authenticator);
|
|
1357
1390
|
let localAuthMethod = null;
|
|
1391
|
+
if (authMethod.kind === "voiceid") throw new Error("Linked-device VoiceID installation requires its own custody flow");
|
|
1358
1392
|
if (authMethod.kind === "passkey") {
|
|
1359
1393
|
if (input.localAuthMethod !== null) throw new Error("Passkey installation cannot include a local Email OTP auth method");
|
|
1360
1394
|
const passkeyCredential = profile.passkeyCredential;
|
|
@@ -1840,9 +1874,13 @@ var SeamsWalletRepositories = class {
|
|
|
1840
1874
|
await this.manager.runTransaction([SEAMS_WALLET_STORES.walletSelections, SEAMS_WALLET_STORES.walletAuthMethods], "readwrite", this.markWalletSelectionUnlockedInTransaction.bind(this, {
|
|
1841
1875
|
walletId,
|
|
1842
1876
|
walletAuthMethodId,
|
|
1843
|
-
unlockedAtMs
|
|
1877
|
+
unlockedAtMs,
|
|
1878
|
+
expectedLockGeneration: null
|
|
1844
1879
|
}));
|
|
1845
1880
|
}
|
|
1881
|
+
async markWalletSelectionUnlockedAtGeneration(input) {
|
|
1882
|
+
await this.manager.runTransaction([SEAMS_WALLET_STORES.walletSelections, SEAMS_WALLET_STORES.walletAuthMethods], "readwrite", this.markWalletSelectionUnlockedInTransaction.bind(this, input));
|
|
1883
|
+
}
|
|
1846
1884
|
async persistRecoveredWalletAuthority(input) {
|
|
1847
1885
|
const authority = requireBoundaryParsed(parseWalletAuthorityV1(input.authority), "authority");
|
|
1848
1886
|
const authMethod = parseWalletAuthMethodRecordV2(input.authMethod);
|
|
@@ -2038,6 +2076,7 @@ var SeamsWalletRepositories = class {
|
|
|
2038
2076
|
const selectionRaw = await selectionStore.get(input.walletId);
|
|
2039
2077
|
const selection = selectionRaw === void 0 ? null : parseWalletSelectionStorageRow(selectionRaw);
|
|
2040
2078
|
if (!selection || selection.wallet_id !== input.walletId) throw new Error("wallet selection is missing or corrupt");
|
|
2079
|
+
if (input.expectedLockGeneration !== null && selection.record.lockGeneration !== input.expectedLockGeneration) throw new Error("Wallet lock state changed during unlock.");
|
|
2041
2080
|
if (selection.record.walletAuthMethodId !== input.walletAuthMethodId) await this.assertSelectionMoveBetweenAuthorityMembers({
|
|
2042
2081
|
walletId: input.walletId,
|
|
2043
2082
|
fromWalletAuthMethodId: selection.record.walletAuthMethodId,
|
|
@@ -4287,6 +4326,6 @@ var SeamsWalletRepositories = class {
|
|
|
4287
4326
|
}
|
|
4288
4327
|
};
|
|
4289
4328
|
//#endregion
|
|
4290
|
-
export { SeamsWalletRepositories };
|
|
4329
|
+
export { SeamsWalletRepositories, parseWalletAuthMethodV2StorageRow, parseWalletAuthorityStorageRow, parseWalletSelectionStorageRow };
|
|
4291
4330
|
|
|
4292
4331
|
//# sourceMappingURL=repositories.js.map
|
|
@@ -265,6 +265,9 @@ var UnifiedIndexedDBManager = class {
|
|
|
265
265
|
async markWalletSelectionUnlocked(input) {
|
|
266
266
|
await this.seamsWalletRepositories.markWalletSelectionUnlocked(input);
|
|
267
267
|
}
|
|
268
|
+
async markWalletSelectionUnlockedAtGeneration(input) {
|
|
269
|
+
await this.seamsWalletRepositories.markWalletSelectionUnlockedAtGeneration(input);
|
|
270
|
+
}
|
|
268
271
|
async persistRecoveredWalletAuthority(input) {
|
|
269
272
|
await this.seamsWalletRepositories.persistRecoveredWalletAuthority(input);
|
|
270
273
|
}
|
|
@@ -5,8 +5,8 @@ import { alphabetizeStringify } from "../../../shared-ts/src/utils/digests.js";
|
|
|
5
5
|
import { buildRelayerJsonPostRequestInit, buildWalletSessionAuthorizationHeaders, fetchWithWalletHomeDiscovery, normalizeRelayerBaseUrl } from "./relayerHttp.js";
|
|
6
6
|
import { parseRouterAbMpcMaterialActivationRef, parseRouterAbNormalSigningAuthorization } from "../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
|
|
7
7
|
import { parseRouterAbEcdsaDerivationEvmDigestSigningResponseForCoreRequestV1, parseRouterAbEcdsaOperationStepUpPreparationV1, routerAbEcdsaDerivationEvmDigestSigningFinalizeCoreRequestDigestV1, routerAbEcdsaDerivationEvmDigestSigningRequestDigestV1 } from "../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
|
|
8
|
-
import { WalletSessionQuotaAdmissionError } from "../../signingEngine/session/operationState/authorizationAdmission.js";
|
|
9
8
|
import { WalletSessionStatusReadScope, parseExactWalletSessionStatusResponse } from "./walletSessionAuthorizationStatus.js";
|
|
9
|
+
import { WalletSessionQuotaAdmissionError } from "../../signingEngine/session/operationState/authorizationAdmission.js";
|
|
10
10
|
import { walletSessionFailureErrorFromPayload } from "../../signingEngine/session/lifecycle/walletSessionFailure.js";
|
|
11
11
|
import { parseEcdsaPrepareSessionResponse } from "./ecdsaPrepareSession.js";
|
|
12
12
|
//#region src/core/rpcClients/relayer/routerAbNormalSigning.ts
|
|
@@ -341,6 +341,6 @@ function createRelayerExactWalletSessionStatusPort(options) {
|
|
|
341
341
|
return new RelayerExactWalletSessionStatusPort(options);
|
|
342
342
|
}
|
|
343
343
|
//#endregion
|
|
344
|
-
export { WalletSessionStatusReadScope, parseExactWalletSessionStatusResponse };
|
|
344
|
+
export { WalletSessionStatusReadScope, createRelayerExactWalletSessionStatusPort, parseExactWalletSessionStatusResponse };
|
|
345
345
|
|
|
346
346
|
//# sourceMappingURL=walletSessionAuthorizationStatus.js.map
|
|
@@ -99,6 +99,7 @@ async function resolveEvmFamilyTransactionStepUp(args) {
|
|
|
99
99
|
};
|
|
100
100
|
async function resolveDirectSigningAuthPlan() {
|
|
101
101
|
if (args.ecdsaAuthorization === "operation_step_up") {
|
|
102
|
+
if (args.capability.authority.factor.kind === "voiceid") throw new Error("Unlock this wallet with VoiceID again before signing.");
|
|
102
103
|
if (isPasskeyWalletAuthAuthority(args.capability.authority)) return { signingAuthPlan: {
|
|
103
104
|
kind: SigningAuthPlanKind.PasskeyReauth,
|
|
104
105
|
method: "passkey"
|
|
@@ -113,7 +114,7 @@ async function resolveEvmFamilyTransactionStepUp(args) {
|
|
|
113
114
|
emailOtpAuthBridge
|
|
114
115
|
};
|
|
115
116
|
}
|
|
116
|
-
|
|
117
|
+
throw new Error("The EVM authentication method cannot authorize this step-up.");
|
|
117
118
|
}
|
|
118
119
|
if (!(Array.isArray(args.accountAuth.linkedAuthMethods) ? args.accountAuth.linkedAuthMethods : []).includes(args.accountAuth.primaryAuthMethod)) throw new Error(`[SigningEngine] primary auth method is not linked: ${String(args.accountAuth.primaryAuthMethod || "")}`);
|
|
119
120
|
if (args.accountAuth.primaryAuthMethod === SIGNER_AUTH_METHODS.passkey) return { signingAuthPlan: {
|
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
import { thresholdEcdsaChainTargetsEqual } from "../../interfaces/ecdsaChainTarget.js";
|
|
2
|
-
import { isPasskeyWalletAuthAuthority } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
|
|
2
|
+
import { isPasskeyWalletAuthAuthority, isVoiceIdWalletAuthAuthority } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
|
|
3
3
|
import { SIGNER_AUTH_METHODS } from "../../../../shared-ts/src/utils/signerDomain.js";
|
|
4
4
|
import { exactEcdsaSigningLaneIdentityFromSelectedLane } from "../../session/identity/exactSigningLaneIdentity.js";
|
|
5
|
-
import { laneCandidateAuthMethod } from "../../session/identity/laneIdentity.js";
|
|
6
5
|
import { logEvmFamilyEcdsaLaneDiagnostic, requireResolvedEvmFamilyEcdsaSigningLane, summarizeEvmFamilyEcdsaLane } from "./ecdsaLanes.js";
|
|
7
6
|
import { resolveEvmFamilyTransactionWalletAuth } from "./accountAuth.js";
|
|
8
7
|
import { buildEvmTransactionSigningLane, buildTempoTransactionSigningLane } from "../../session/operationState/lanes.js";
|
|
9
8
|
import { emailOtpEcdsaSigningSessionAuthLane } from "../../session/emailOtp/ecdsaSigningSessionAuthority.js";
|
|
10
9
|
//#region src/core/signingEngine/flows/signEvmFamily/ecdsaSelection.ts
|
|
11
|
-
function ecdsaLaneCandidateAuthMethod(candidate) {
|
|
12
|
-
switch (laneCandidateAuthMethod(candidate)) {
|
|
13
|
-
case SIGNER_AUTH_METHODS.emailOtp: return SIGNER_AUTH_METHODS.emailOtp;
|
|
14
|
-
case SIGNER_AUTH_METHODS.passkey: return SIGNER_AUTH_METHODS.passkey;
|
|
15
|
-
}
|
|
16
|
-
throw new Error("[SigningEngine][ecdsa] unsupported ECDSA lane auth method");
|
|
17
|
-
}
|
|
18
10
|
function walletAuthWithSelectedPrimary(accountAuth, authMethod) {
|
|
19
11
|
return {
|
|
20
12
|
...accountAuth,
|
|
@@ -49,7 +41,7 @@ function resolvedEvmFamilyEcdsaSigningLaneFromCandidate(candidate) {
|
|
|
49
41
|
}
|
|
50
42
|
function laneCandidateDiagnosticsBase(candidate) {
|
|
51
43
|
return {
|
|
52
|
-
authMethod:
|
|
44
|
+
authMethod: candidate.auth.kind,
|
|
53
45
|
chain: candidate.chain,
|
|
54
46
|
chainTarget: candidate.chainTarget,
|
|
55
47
|
state: candidate.state,
|
|
@@ -109,6 +101,26 @@ async function commitPasskeyEcdsaLaneForSelection(args) {
|
|
|
109
101
|
authorization: args.lane.authorization
|
|
110
102
|
};
|
|
111
103
|
}
|
|
104
|
+
async function commitVoiceIdEcdsaLaneForSelection(args) {
|
|
105
|
+
const candidate = args.candidate;
|
|
106
|
+
const authority = (await args.deps.resolveCanonicalEcdsaSigningCapability({
|
|
107
|
+
walletId: candidate.walletId,
|
|
108
|
+
chainTarget: candidate.chainTarget,
|
|
109
|
+
materialActivation: candidate.materialActivation
|
|
110
|
+
})).authority;
|
|
111
|
+
if (candidate.auth.kind !== "voiceid" || !isVoiceIdWalletAuthAuthority(authority) || authority.bindingId !== candidate.auth.walletAuthMethodId || authority.factor.deviceKeyId !== candidate.auth.deviceKeyId) throw new Error("VoiceID ECDSA capability authority changed.");
|
|
112
|
+
assertEcdsaCommittedLaneAuthorityMatchesWallet({
|
|
113
|
+
authority,
|
|
114
|
+
lane: args.lane,
|
|
115
|
+
candidate,
|
|
116
|
+
context: "VoiceID"
|
|
117
|
+
});
|
|
118
|
+
return {
|
|
119
|
+
lane: args.lane,
|
|
120
|
+
authority,
|
|
121
|
+
authorization: args.lane.authorization
|
|
122
|
+
};
|
|
123
|
+
}
|
|
112
124
|
async function resolveEmailOtpAuthorityForSelection(args) {
|
|
113
125
|
const exactLane = exactEcdsaSigningLaneIdentityFromSelectedLane(args.lane);
|
|
114
126
|
const laneAuthority = await args.deps.resolveDurableEmailOtpEcdsaSigningSessionAuthority({
|
|
@@ -186,7 +198,7 @@ function commitEmailOtpEcdsaLaneForSelection(args) {
|
|
|
186
198
|
async function resolveEvmFamilyEcdsaSigningSelection(args) {
|
|
187
199
|
const lane = resolvedEvmFamilyEcdsaSigningLaneFromCandidate(args.laneCandidate);
|
|
188
200
|
const emailOtpAuthorityLane = lane;
|
|
189
|
-
const candidateAuthMethod =
|
|
201
|
+
const candidateAuthMethod = args.laneCandidate.auth.kind;
|
|
190
202
|
const emailOtpAuthority = candidateAuthMethod === SIGNER_AUTH_METHODS.emailOtp ? await resolveEmailOtpAuthorityForSelection({
|
|
191
203
|
deps: args.deps,
|
|
192
204
|
lane: emailOtpAuthorityLane,
|
|
@@ -207,7 +219,12 @@ async function resolveEvmFamilyEcdsaSigningSelection(args) {
|
|
|
207
219
|
lane,
|
|
208
220
|
candidate: args.laneCandidate
|
|
209
221
|
}) : null;
|
|
210
|
-
const
|
|
222
|
+
const committedVoiceIdLane = candidateAuthMethod === "voiceid" ? await commitVoiceIdEcdsaLaneForSelection({
|
|
223
|
+
deps: args.deps,
|
|
224
|
+
lane,
|
|
225
|
+
candidate: args.laneCandidate
|
|
226
|
+
}) : null;
|
|
227
|
+
const committedLane = committedEmailOtpLane ?? committedPasskeyLane ?? committedVoiceIdLane;
|
|
211
228
|
const committedFactor = committedLane?.authority.factor.kind;
|
|
212
229
|
const selectedAccountAuth = walletAuthWithSelectedPrimary(await resolveEvmFamilyTransactionWalletAuth({
|
|
213
230
|
senderSignatureAlgorithm: args.senderSignatureAlgorithm,
|
|
@@ -350,6 +350,7 @@ async function signEvmFamilyAttempt(deps, args, attempt) {
|
|
|
350
350
|
throw error;
|
|
351
351
|
}
|
|
352
352
|
const { signingAuthPlan, emailOtpSigning, flowArgs } = preparedFlow;
|
|
353
|
+
reviewAdmissionForBinding(deps.touchConfirm.getContext().surfaceMeasurementBinding)?.assertAuthMethodPolicy(signingAuthPlan.method);
|
|
353
354
|
let freshAuthRetryHandledFinalization = false;
|
|
354
355
|
const retryWithFreshWalletSessionAuth = async (error) => {
|
|
355
356
|
return await retryEvmFamilyWithFreshWalletSessionAuthWhenRequired({
|
|
@@ -4,10 +4,10 @@ import { activeWalletSessionV1RecordsEqual, walletSessionPreservesCapabilities }
|
|
|
4
4
|
import { walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
|
|
5
5
|
import { isEd25519ExtensionOfEcdsaWalletAuthority } from "../../../../shared-ts/src/authorization/walletAuthority.js";
|
|
6
6
|
import { requireEvmFamilyEcdsaSigner } from "../../session/identity/exactSigningLaneIdentity.js";
|
|
7
|
+
import { WalletSessionStatusReadScope } from "../../../rpcClients/relayer/walletSessionAuthorizationStatus.js";
|
|
7
8
|
import { emitEvmFamilySigningOperationTrace } from "./events.js";
|
|
8
9
|
import { exactAuthorizationMatchesCapability, exactEcdsaWalletSessionRuntimesMatch } from "../../session/material/ecdsaSigningCapability.js";
|
|
9
10
|
import { loadSecp256k1EngineCtor, loadWebAuthnP256EngineCtor } from "./signerLoader.js";
|
|
10
|
-
import { WalletSessionStatusReadScope } from "../../../rpcClients/relayer/walletSessionAuthorizationStatus.js";
|
|
11
11
|
import { attachExactEcdsaWalletSessionAuthorization, buildActiveWalletAuthorityReadySecp256k1Material, resolveHydratedSecp256k1SigningMaterial } from "./readySecp256k1Material.js";
|
|
12
12
|
import { resolveExactEcdsaCapabilityRuntime } from "../../session/material/activeEcdsaCapabilityRuntime.js";
|
|
13
13
|
import { authorizeEvmFamilyEcdsaOperationStepUp, prepareEvmFamilyEcdsaOperationStepUp } from "./thresholdAdmission.js";
|
|
@@ -29,6 +29,7 @@ function buildActiveWalletAuthorityConfirmationAuthPlan(runtime) {
|
|
|
29
29
|
}
|
|
30
30
|
function signerAuthMethodForWalletAuthority(authority) {
|
|
31
31
|
switch (authority.factor.kind) {
|
|
32
|
+
case "voiceid": return "voiceid";
|
|
32
33
|
case "passkey": return "passkey";
|
|
33
34
|
case "email_otp": return "email_otp";
|
|
34
35
|
default:
|
|
@@ -60,6 +60,7 @@ async function requireNearStepUpAuth(args) {
|
|
|
60
60
|
}
|
|
61
61
|
function signingAuthPlanForNearMaterialRequirement(auth) {
|
|
62
62
|
switch (auth.kind) {
|
|
63
|
+
case "voiceid": throw new Error("Unlock with VoiceID again before signing.");
|
|
63
64
|
case "passkey": return {
|
|
64
65
|
kind: "passkeyReauth",
|
|
65
66
|
method: "passkey"
|
|
@@ -9,9 +9,9 @@ import { base58Decode } from "../../../../../shared-ts/src/utils/base58.js";
|
|
|
9
9
|
import { ensureEd25519Prefix } from "../../../../../shared-ts/src/utils/near.js";
|
|
10
10
|
import { SigningSessionIds } from "../../../session/operationState/types.js";
|
|
11
11
|
import { ActionType, fromActionArgsWasm } from "../../../../../shared-ts/src/near/actions.js";
|
|
12
|
+
import { WalletSessionStatusReadScope } from "../../../../rpcClients/relayer/walletSessionAuthorizationStatus.js";
|
|
12
13
|
import { emitEd25519SigningTiming } from "../../../session/operationState/trace.js";
|
|
13
14
|
import { buildCapabilityOperationEnvelope, parseSigningOperationFingerprintDigest } from "../../../../../shared-ts/src/authorization/operationFingerprint.js";
|
|
14
|
-
import { WalletSessionStatusReadScope } from "../../../../rpcClients/relayer/walletSessionAuthorizationStatus.js";
|
|
15
15
|
import { buildRouterAbEd25519DelegateActionPrepareRequestV2, buildRouterAbEd25519NearTransactionPrepareRequestV2, buildRouterAbEd25519Nep413PrepareRequestV2, buildRouterAbEd25519NormalSigningFinalizeRequestV2, finalizeRouterAbNormalSigningV2, prepareRouterAbNormalSigningV2, routerAbCanonicalWireBytesToB64u, routerAbNormalSigningActionFingerprint } from "../../../../rpcClients/relayer/routerAbNormalSigning.js";
|
|
16
16
|
import { parseThresholdEd25519NearTransaction, thresholdEd25519NearTransactionOperationFingerprint } from "../../../../../shared-ts/src/threshold/ed25519OperationFingerprint.js";
|
|
17
17
|
import { buildThresholdEd25519DelegateSigningPayloadWasm, buildThresholdEd25519NearTxUnsignedBorshWasm, decodeThresholdEd25519SignedNearTxBorshWasm, finalizeThresholdEd25519DelegateFromSignatureWasm, finalizeThresholdEd25519NearTxFromSignatureWasm } from "../../../chains/near/nearSignerWasm.js";
|
|
@@ -26,6 +26,11 @@ function buildPlanningLane(args) {
|
|
|
26
26
|
thresholdSessionId: args.selectedLane.thresholdSessionId
|
|
27
27
|
};
|
|
28
28
|
switch (args.selectedLane.auth.kind) {
|
|
29
|
+
case "voiceid": return buildNearTransactionSigningLane({
|
|
30
|
+
...common,
|
|
31
|
+
auth: args.selectedLane.auth,
|
|
32
|
+
storageSource: "login"
|
|
33
|
+
});
|
|
29
34
|
case "passkey": return buildNearTransactionSigningLane({
|
|
30
35
|
...common,
|
|
31
36
|
auth: args.selectedLane.auth,
|
|
@@ -61,22 +61,25 @@ async function invalidateAuthoritativeNearWalletSessionExpiry(args) {
|
|
|
61
61
|
})).kind === "unavailable") throw new Error("[SigningEngine][near] expired Wallet Session cleanup failed");
|
|
62
62
|
}
|
|
63
63
|
async function signNear(deps, request) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
return await signTransaction(deps, request.args);
|
|
75
|
-
}
|
|
64
|
+
const context = deps.getSignerWorkerContext();
|
|
65
|
+
const admission = request.kind === "transactionWithActions" ? reviewAdmissionForBinding(context.touchConfirm?.getContext().surfaceMeasurementBinding) ?? null : null;
|
|
66
|
+
if (admission) admission.assertPending();
|
|
67
|
+
deps = {
|
|
68
|
+
...deps,
|
|
69
|
+
prepareNearEd25519YaoMaterialBoundary: prepareReviewBoundNearMaterial.bind(null, deps.prepareNearEd25519YaoMaterialBoundary.bind(deps), admission),
|
|
70
|
+
getSignerWorkerContext: admission ? reviewedNearContext.bind(null, context, admission.beforeSigning) : deps.getSignerWorkerContext
|
|
71
|
+
};
|
|
72
|
+
if (request.kind === "transactionWithActions") return await signTransaction(deps, request.args);
|
|
76
73
|
if (request.kind === "delegateAction") return await signDelegateAction(deps, request.args);
|
|
77
74
|
if (request.kind === "nep413") return await signMessage(deps, request.args);
|
|
78
75
|
throw new Error(`[SigningEngine] unsupported near signing intent: ${String(request.kind || "")}`);
|
|
79
76
|
}
|
|
77
|
+
function prepareReviewBoundNearMaterial(prepare, admission, input) {
|
|
78
|
+
const method = signingLaneAuthMethod(input.materialIdentity ? input.materialIdentity.auth : input.auth);
|
|
79
|
+
if (method === "voiceid" && !admission) throw new Error("VoiceID requires a reviewed NEAR transfer.");
|
|
80
|
+
admission?.assertAuthMethodPolicy(method);
|
|
81
|
+
return prepare(input);
|
|
82
|
+
}
|
|
80
83
|
function createNearTransactionSigningOperationId() {
|
|
81
84
|
const randomId = secureRandomBase64Url(32, "NEAR transaction signing operation IDs");
|
|
82
85
|
return SigningSessionIds.signingOperation(`near-transaction-sign:${randomId}`);
|
|
@@ -934,6 +937,7 @@ async function signTransactionWithActionsAttempt(deps, args, attempt) {
|
|
|
934
937
|
lane: preparedSigningSession.transactionLane,
|
|
935
938
|
expiresAtMs: preparationAuthorization.authorization.status.expiresAtMs
|
|
936
939
|
});
|
|
940
|
+
if (transactionLane.auth.kind === "voiceid") throw new Error("Unlock with VoiceID again to renew the NEAR Wallet Session.");
|
|
937
941
|
const isEmailOtpSession = transactionLane.auth.kind === "email_otp";
|
|
938
942
|
const ownerStepUpReason = ownerDecision?.kind === "step_up_required" ? ownerDecision.reason : void 0;
|
|
939
943
|
const reason = admissionDecision ? admissionDecision.reason === "stale_projection" ? "wallet_signing_budget_stale_projection" : "wallet_signing_budget_exhausted" : ownerStepUpReason === "wallet_session_missing" ? "threshold_session_missing" : "threshold_session_expired";
|
|
@@ -10,7 +10,7 @@ function ecdsaAuthorizationPolicyMatchesLane(lane) {
|
|
|
10
10
|
return lane.remainingUses === authorization.runtime.remainingUses && lane.expiresAtMs === authorization.runtime.expiresAtMs;
|
|
11
11
|
}
|
|
12
12
|
function availableEcdsaSigningLaneAuthMethod(lane) {
|
|
13
|
-
return
|
|
13
|
+
return lane.auth.kind;
|
|
14
14
|
}
|
|
15
15
|
function isConcreteAvailableSigningLane(lane) {
|
|
16
16
|
if (lane.state === "missing") return false;
|
|
@@ -20,9 +20,8 @@ function isConcreteAvailableSigningLane(lane) {
|
|
|
20
20
|
if (!thresholdSessionId) return false;
|
|
21
21
|
if (lane.authorizationState === "authorization_required") return lane.state === "deferred";
|
|
22
22
|
if (!lane.authorization.operationCredential.walletSessionId || !lane.authorization.session.quotaId || lane.authorization.status.remainingUses <= 0 || lane.authorization.status.expiresAtMs <= Date.now()) return false;
|
|
23
|
-
return
|
|
23
|
+
return true;
|
|
24
24
|
}
|
|
25
|
-
if (lane.auth.kind !== "email_otp" && lane.auth.kind !== "passkey") return false;
|
|
26
25
|
if (lane.source === "active_wallet_authority") {
|
|
27
26
|
if (lane.state !== "deferred" || lane.authorizationState !== "authorization_required" || lane.runtime.kind !== "active_wallet_authority_ecdsa_runtime_v1" || String(lane.runtime.walletId) !== String(lane.key.walletId) || !mpcMaterialActivationRefsEqual(lane.runtime.materialActivation, lane.materialActivation) || lane.runtime.publicFacts !== lane.publicFacts) return false;
|
|
28
27
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { parseMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
1
|
+
import { parseMpcMaterialActivationRef, parseWalletAuthMethodId } from "../../../../shared-ts/src/utils/domainIds.js";
|
|
2
2
|
import { alphabetizeStringify } from "../../../../shared-ts/src/utils/digests.js";
|
|
3
|
+
import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
|
|
3
4
|
import { thresholdEcdsaChainTargetFromRequest, thresholdEcdsaChainTargetKey, toWalletId } from "../../interfaces/ecdsaChainTarget.js";
|
|
4
5
|
import { isImplicitNearAccountId, parseNearAccountId } from "../../../../shared-ts/src/utils/near.js";
|
|
5
6
|
import { SigningSessionIds } from "../operationState/types.js";
|
|
@@ -24,6 +25,15 @@ function rejectPresent(record, fields, branch) {
|
|
|
24
25
|
function parseSigningLaneAuthBinding(value) {
|
|
25
26
|
const auth = requireRecord(value, "exact lane auth");
|
|
26
27
|
switch (auth.kind) {
|
|
28
|
+
case "voiceid": {
|
|
29
|
+
const method = parseWalletAuthMethodId(auth.walletAuthMethodId);
|
|
30
|
+
if (!method.ok) throw new Error("VoiceID lane method ID is invalid");
|
|
31
|
+
return {
|
|
32
|
+
kind: "voiceid",
|
|
33
|
+
walletAuthMethodId: method.value,
|
|
34
|
+
deviceKeyId: parseDigestB64u(auth.deviceKeyId)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
27
37
|
case "passkey": return {
|
|
28
38
|
kind: "passkey",
|
|
29
39
|
rpId: toRpId(auth.rpId),
|
|
@@ -141,6 +151,11 @@ function canonicalKeyIdentity(key) {
|
|
|
141
151
|
}
|
|
142
152
|
function canonicalAuthBinding(auth) {
|
|
143
153
|
switch (auth.kind) {
|
|
154
|
+
case "voiceid": return {
|
|
155
|
+
kind: "voiceid",
|
|
156
|
+
walletAuthMethodId: auth.walletAuthMethodId,
|
|
157
|
+
deviceKeyId: auth.deviceKeyId
|
|
158
|
+
};
|
|
144
159
|
case "passkey": return {
|
|
145
160
|
kind: "passkey",
|
|
146
161
|
rpId: String(auth.rpId),
|
|
@@ -4,6 +4,7 @@ function signingLaneAuthMethod(auth) {
|
|
|
4
4
|
switch (auth.kind) {
|
|
5
5
|
case SIGNER_AUTH_METHODS.passkey: return SIGNER_AUTH_METHODS.passkey;
|
|
6
6
|
case SIGNER_AUTH_METHODS.emailOtp: return SIGNER_AUTH_METHODS.emailOtp;
|
|
7
|
+
case "voiceid": return "voiceid";
|
|
7
8
|
}
|
|
8
9
|
throw new Error("[SigningSession] unsupported signing lane auth binding");
|
|
9
10
|
}
|
|
@@ -14,6 +15,11 @@ function requireSigningLaneAuthKeyPart(value, label) {
|
|
|
14
15
|
}
|
|
15
16
|
function signingLaneAuthBindingKey(auth) {
|
|
16
17
|
switch (auth.kind) {
|
|
18
|
+
case "voiceid": return [
|
|
19
|
+
"voiceid",
|
|
20
|
+
auth.walletAuthMethodId,
|
|
21
|
+
auth.deviceKeyId
|
|
22
|
+
].join(":");
|
|
17
23
|
case SIGNER_AUTH_METHODS.passkey: return [
|
|
18
24
|
SIGNER_AUTH_METHODS.passkey,
|
|
19
25
|
requireSigningLaneAuthKeyPart(String(auth.rpId), "passkey rpId"),
|
|
@@ -19,6 +19,7 @@ function capabilityAuthorityMatchesRuntime(args) {
|
|
|
19
19
|
const capabilityAuthority = args.capability.authority;
|
|
20
20
|
const runtimeBinding = args.runtime.authBinding;
|
|
21
21
|
switch (runtimeBinding.kind) {
|
|
22
|
+
case "voiceid": return walletAuthAuthoritiesMatch(capabilityAuthority, runtimeBinding.voiceIdAuthority);
|
|
22
23
|
case "email_otp": return isEmailOtpWalletAuthAuthority(capabilityAuthority) && walletAuthAuthoritiesMatch(capabilityAuthority, runtimeBinding.emailOtpAuthority);
|
|
23
24
|
case "passkey": return isPasskeyWalletAuthAuthority(capabilityAuthority) && capabilityAuthority.verifier.rpId === runtimeBinding.rpId && capabilityAuthority.factor.credentialIdB64u === runtimeBinding.credentialIdB64u;
|
|
24
25
|
default: return runtimeBinding;
|
|
@@ -26,6 +27,7 @@ function capabilityAuthorityMatchesRuntime(args) {
|
|
|
26
27
|
}
|
|
27
28
|
function selectedAuthMethodMatchesRuntime(args) {
|
|
28
29
|
switch (args.runtime.authBinding.kind) {
|
|
30
|
+
case "voiceid": return args.selectedAuthMethod.kind === "voiceid" && args.selectedAuthMethod.walletAuthMethodId === args.runtime.authBinding.voiceIdAuthority.bindingId && args.selectedAuthMethod.deviceKeyId === args.runtime.authBinding.voiceIdAuthority.factor.deviceKeyId;
|
|
29
31
|
case "email_otp": return args.selectedAuthMethod.kind === "email_otp" && args.selectedAuthMethod.emailHashHex === args.runtime.authBinding.emailHashHex;
|
|
30
32
|
case "passkey": return args.selectedAuthMethod.kind === "passkey" && String(args.selectedAuthMethod.rpId) === String(args.runtime.authBinding.rpId) && args.selectedAuthMethod.credentialIdB64u === args.runtime.authBinding.credentialIdB64u;
|
|
31
33
|
default: return args.runtime.authBinding;
|
|
@@ -72,6 +74,7 @@ function exactAuthorizationMatchesCapability(args) {
|
|
|
72
74
|
function exactEcdsaAuthBindingsMatch(left, right) {
|
|
73
75
|
if (left.kind !== right.kind) return false;
|
|
74
76
|
switch (left.kind) {
|
|
77
|
+
case "voiceid": return right.kind === "voiceid" && walletAuthAuthoritiesMatch(left.voiceIdAuthority, right.voiceIdAuthority);
|
|
75
78
|
case "email_otp": return right.kind === "email_otp" && left.providerSubjectId === right.providerSubjectId && left.emailHashHex === right.emailHashHex && walletAuthAuthoritiesMatch(left.emailOtpAuthority, right.emailOtpAuthority);
|
|
76
79
|
case "passkey": return right.kind === "passkey" && left.rpId === right.rpId && left.credentialIdB64u === right.credentialIdB64u;
|
|
77
80
|
default: return left;
|
|
@@ -38,7 +38,7 @@ function buildEd25519EmailOtpSigningLane(input) {
|
|
|
38
38
|
...input.retention ? { retention: input.retention } : {}
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
-
function
|
|
41
|
+
function buildEcdsaStoredSigningLane(input) {
|
|
42
42
|
return buildSigningLane({
|
|
43
43
|
...selectedEcdsaLane({
|
|
44
44
|
key: input.key,
|
|
@@ -75,6 +75,23 @@ function buildEcdsaEmailOtpSigningLane(input) {
|
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
function buildNearTransactionSigningLane(input) {
|
|
78
|
+
if (input.auth.kind === "voiceid") return buildSigningLane({
|
|
79
|
+
...selectedEd25519Lane({
|
|
80
|
+
walletId: input.walletId,
|
|
81
|
+
nearAccountId: input.nearAccountId,
|
|
82
|
+
nearEd25519SigningKeyId: input.nearEd25519SigningKeyId,
|
|
83
|
+
signerSlot: input.signerSlot,
|
|
84
|
+
auth: input.auth,
|
|
85
|
+
walletSessionId: input.walletSessionId,
|
|
86
|
+
quotaId: input.quotaId,
|
|
87
|
+
thresholdSessionId: input.thresholdSessionId
|
|
88
|
+
}),
|
|
89
|
+
keyKind: "threshold_ed25519",
|
|
90
|
+
chainFamily: "near",
|
|
91
|
+
storageSource: "login",
|
|
92
|
+
sessionOrigin: "login",
|
|
93
|
+
retention: "session"
|
|
94
|
+
});
|
|
78
95
|
if (isEd25519EmailOtpTransactionSigningLaneInput(input)) return buildEd25519EmailOtpSigningLane(input);
|
|
79
96
|
if (isEd25519PasskeyTransactionSigningLaneInput(input)) return buildEd25519PasskeySigningLane(input);
|
|
80
97
|
throw new Error("[SigningSession] unsupported NEAR lane auth");
|
|
@@ -89,7 +106,7 @@ function buildEvmTransactionSigningLane(input) {
|
|
|
89
106
|
}
|
|
90
107
|
function buildEcdsaTransactionSigningLane(input) {
|
|
91
108
|
if (isEcdsaEmailOtpTransactionSigningLaneInput(input)) return buildEcdsaEmailOtpSigningLane(input);
|
|
92
|
-
if (
|
|
109
|
+
if (isEcdsaStoredTransactionSigningLaneInput(input)) return buildEcdsaStoredSigningLane(input);
|
|
93
110
|
throw new Error("[SigningSession] unsupported ECDSA lane auth");
|
|
94
111
|
}
|
|
95
112
|
function isEd25519PasskeyTransactionSigningLaneInput(input) {
|
|
@@ -98,8 +115,8 @@ function isEd25519PasskeyTransactionSigningLaneInput(input) {
|
|
|
98
115
|
function isEd25519EmailOtpTransactionSigningLaneInput(input) {
|
|
99
116
|
return input.auth.kind === "email_otp";
|
|
100
117
|
}
|
|
101
|
-
function
|
|
102
|
-
return input.auth.kind === "passkey";
|
|
118
|
+
function isEcdsaStoredTransactionSigningLaneInput(input) {
|
|
119
|
+
return input.auth.kind === "passkey" || input.auth.kind === "voiceid";
|
|
103
120
|
}
|
|
104
121
|
function isEcdsaEmailOtpTransactionSigningLaneInput(input) {
|
|
105
122
|
return input.auth.kind === "email_otp";
|