@seams/wallet 0.23.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 +182 -5
- 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/controller.js +36 -0
- package/dist/esm/externalNear/hot.js +1 -0
- package/dist/esm/externalNear/intear.js +1 -0
- package/dist/esm/externalNear/message.js +60 -0
- package/dist/esm/externalNear/meteor.js +12 -0
- 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/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/esm/sdk/{helpers-BXezXx19.js → 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/esm/sdk/{mountRecoveryCodeBackupSurface-D3QFgMGE.js → 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/esm/sdk/{requireStepUpAuth-DsNLml1i.js → 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/{public/sdk/secp256k1-CYu8ENjP.js → esm/sdk/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/{public/sdk/signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → esm/sdk/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/{public/sdk/signingQueue-Cj9sCJLj.js → esm/sdk/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/public/sdk/{helpers-BXezXx19.js → 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/public/sdk/{mountRecoveryCodeBackupSurface-D3QFgMGE.js → 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/public/sdk/{requireStepUpAuth-DsNLml1i.js → 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/{esm/sdk/secp256k1-CYu8ENjP.js → public/sdk/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/{esm/sdk/signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → public/sdk/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/{esm/sdk/signingQueue-Cj9sCJLj.js → public/sdk/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 -239
- 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/controller.d.ts +2 -1
- package/dist/types/wallet/src/externalNear/hot.d.ts +3 -2
- package/dist/types/wallet/src/externalNear/index.d.ts +1 -1
- package/dist/types/wallet/src/externalNear/intear.d.ts +3 -2
- package/dist/types/wallet/src/externalNear/message.d.ts +14 -0
- package/dist/types/wallet/src/externalNear/meteor.d.ts +5 -2
- package/dist/types/wallet/src/externalNear/meteorRequest.d.ts +1 -1
- package/dist/types/wallet/src/externalNear/types.d.ts +22 -2
- package/dist/types/wallet/src/index.d.ts +1 -0
- 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/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 +8 -3
- 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-C5KYWEcs.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-C5KYWEcs.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 +1 @@
|
|
|
1
|
-
import{D as e,O as t,T as n,h as r}from"./domainIds-C3fUa33Q.js";import{i,t as a}from"./activeWalletSession-BtEHhe99.js";import{d as o,h as s,m as c}from"./capabilityKinds-CqHVzVsJ.js";import{r as l}from"./canonicalPrimitives-D_1HyEuJ.js";import{a as u,i as d,n as f}from"./presignatures-DGLNs29C.js";import{t as p}from"./walletOwnershipGeneration-CQzaodhB.js";var m=class extends Error{kind=`upgrade_required`;code=`upgrade_required`;constructor(e){super(e),this.name=`WalletSessionAuthorizationUpgradeRequiredError`}};const h=u.walletSessionAuthorizations;function g(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return null;let n=Object.keys(e);if(n.length!==t.length||n.some(e=>!t.includes(e)))return null;let r=new Map;for(let t of n)r.set(t,Reflect.get(e,t));return r}function _(e,t){if(!(typeof e!=`object`||!e||Array.isArray(e)))return Reflect.get(e,t)}function v(e){switch(e){case`expired`:case`exhausted`:case`replaced`:case`wallet_locked`:case`invalidated`:return e;default:return null}}const y=[`kind`,`walletId`,`authorityId`,`authMethodId`,`authorizationId`,`quotaId`,`authorityDigestB64u`,`authorityRevocationEpoch`,`capabilitySubjects`,`issuedAtMs`,`expiresAtMs`],b=[...y,`retiredAtMs`,`retirementReason`],x=[`record_version`,`wallet_session_id`,`authorization_id`,`wallet_id`,`wallet_authority_id`,`wallet_auth_method_id`,`authority_digest_b64u`,`authority_revocation_epoch`,`status`,`issued_at_ms`,`expires_at_ms`,`record`,`operation_credential`],S=/^wallet_session_authorization_v([0-9]+)$/;function C(e){if(typeof e!=`string`)return null;let t=S.exec(e);if(!t)return null;let n=Number(t[1]);return Number.isSafeInteger(n)?n:null}function w(e){let t=typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.prototype.hasOwnProperty.call(e,`record_version`),n=C(_(e,`record_version`)),r=t?null:C(_(_(e,`record`),`recordVersion`)),i=n??r;return i===null?{kind:`unknown`}:i>=3&&i<6?{kind:`legacy`,version:i}:t&&i===6?{kind:`current`,version:i}:t&&i>6?{kind:`future`,version:i}:{kind:`unknown`}}function T(e,t){if(w(e).kind!==`future`||_(e,`wallet_id`)!==t.walletId)return!1;let n=_(e,`wallet_authority_id`),r=_(e,`wallet_auth_method_id`);return typeof n!=`string`||typeof r!=`string`?!0:n===t.authorityId&&r===t.authMethodId}function E(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function D(e){let t=_(e,`wallet_session_id`);if(typeof t!=`string`)throw Error(`Stored Wallet Session authorization key is invalid`);return t}function O(e){switch(e.kind){case`sign`:case`export_keys`:return`${e.kind}:${e.keyFamily}:${e.materialActivation.activationId}`;case`link_devices`:case`revoke_devices`:return e.kind;default:return k(e)}}function k(e){throw Error(`Unknown Wallet Capability subject: ${String(e)}`)}function A(e){let t=_(e,`kind`);if(t===`sign`||t===`export_keys`){let n=g(e,[`kind`,`keyFamily`,`materialActivation`]);if(!n)return null;let i=n.get(`keyFamily`);if(i!==`ed25519`&&i!==`ecdsa_secp256k1`)return null;let a=r(n.get(`materialActivation`));return a.ok?{kind:t,keyFamily:i,materialActivation:a.value}:null}return(t===`link_devices`||t===`revoke_devices`)&&g(e,[`kind`])?{kind:t}:null}function j(e){if(!Array.isArray(e)||e.length===0)return null;let t=[];for(let n of e){let e=A(n);if(!e)return null;t.push(e)}let n=new Set;for(let e of t){let t=O(e);if(n.has(t))return null;n.add(t)}let[r,...i]=t;return r?[r,...i]:null}function M(r){let i=_(r,`kind`),a=i===`active_wallet_session_v1`?g(r,y):i===`retired_wallet_session_v1`?g(r,b):null;if(!a)return null;let s=t(a.get(`walletId`)),u=e(a.get(`authorityId`)),d=n(a.get(`authMethodId`)),f=c(a.get(`authorizationId`)),p=o(a.get(`quotaId`));if(!s.ok||!u.ok||!d.ok||!f.ok||!p.ok)return null;let m;try{m=l(a.get(`authorityDigestB64u`))}catch{return null}let h=j(a.get(`capabilitySubjects`)),x=a.get(`authorityRevocationEpoch`),S=a.get(`issuedAtMs`),C=a.get(`expiresAtMs`);if(!h||!E(x)||!E(S)||!E(C)||C<=S)return null;let w={walletId:s.value,authorityId:u.value,authMethodId:d.value,authorizationId:f.value,quotaId:p.value,authorityDigestB64u:m,authorityRevocationEpoch:x,capabilitySubjects:h,issuedAtMs:S,expiresAtMs:C};if(i===`active_wallet_session_v1`)return{kind:`active_wallet_session_v1`,walletId:w.walletId,authorityId:w.authorityId,authMethodId:w.authMethodId,authorizationId:w.authorizationId,quotaId:w.quotaId,authorityDigestB64u:w.authorityDigestB64u,authorityRevocationEpoch:w.authorityRevocationEpoch,capabilitySubjects:w.capabilitySubjects,issuedAtMs:w.issuedAtMs,expiresAtMs:w.expiresAtMs};if(i===`retired_wallet_session_v1`){let e=a.get(`retiredAtMs`);if(!E(e)||e<w.issuedAtMs)return null;let t=v(a.get(`retirementReason`));return!t||t===`expired`&&e<w.expiresAtMs?null:{kind:`retired_wallet_session_v1`,walletId:w.walletId,authorityId:w.authorityId,authMethodId:w.authMethodId,authorizationId:w.authorizationId,quotaId:w.quotaId,authorityDigestB64u:w.authorityDigestB64u,authorityRevocationEpoch:w.authorityRevocationEpoch,capabilitySubjects:w.capabilitySubjects,issuedAtMs:w.issuedAtMs,expiresAtMs:w.expiresAtMs,retiredAtMs:e,retirementReason:t}}return null}function N(e){if(!E(e.retiredAtMs))throw Error(`Retired Wallet Session v1 time is invalid`);let t=M({kind:`retired_wallet_session_v1`,walletId:e.active.walletId,authorityId:e.active.authorityId,authMethodId:e.active.authMethodId,authorizationId:e.active.authorizationId,quotaId:e.active.quotaId,authorityDigestB64u:e.active.authorityDigestB64u,authorityRevocationEpoch:e.active.authorityRevocationEpoch,capabilitySubjects:e.active.capabilitySubjects,issuedAtMs:e.active.issuedAtMs,expiresAtMs:e.active.expiresAtMs,retiredAtMs:e.retiredAtMs,retirementReason:e.reason});if(!t||t.kind!==`retired_wallet_session_v1`)throw Error(`Retired Wallet Session v1 is invalid`);return t}function P(e,t){let n=M(e);if(!n||n.kind!==`active_wallet_session_v1`)throw Error(`Active Wallet Session v1 is invalid`);let r;try{r=i(t)}catch{throw Error(`Wallet Session operation credential is invalid`)}let a={record_version:`wallet_session_authorization_v6`,wallet_session_id:r.walletSessionId,authorization_id:n.authorizationId,wallet_id:n.walletId,wallet_authority_id:n.authorityId,wallet_auth_method_id:n.authMethodId,authority_digest_b64u:n.authorityDigestB64u,authority_revocation_epoch:n.authorityRevocationEpoch,status:`active`,issued_at_ms:n.issuedAtMs,expires_at_ms:n.expiresAtMs,record:{kind:n.kind,walletId:n.walletId,authorityId:n.authorityId,authMethodId:n.authMethodId,authorizationId:n.authorizationId,walletSessionId:r.walletSessionId,quotaId:n.quotaId,authorityDigestB64u:n.authorityDigestB64u,authorityRevocationEpoch:n.authorityRevocationEpoch,capabilitySubjects:n.capabilitySubjects,issuedAtMs:n.issuedAtMs,expiresAtMs:n.expiresAtMs},operation_credential:r};if(!F(a))throw Error(`Wallet Session authorization v6 is invalid`);return a}function F(e){let t=g(e,x);if(!t||t.get(`record_version`)!==`wallet_session_authorization_v6`||t.get(`status`)!==`active`)return null;let n=s(t.get(`wallet_session_id`)),r=c(t.get(`authorization_id`));if(!n.ok||!r.ok)return null;let a;try{a=i(t.get(`operation_credential`))}catch{return null}if(n.value!==a.walletSessionId)return null;let o=g(t.get(`record`),[...y,`walletSessionId`]);if(!o)return null;let l=s(o.get(`walletSessionId`));if(!l.ok||l.value!==n.value)return null;let u=M({kind:o.get(`kind`),walletId:o.get(`walletId`),authorityId:o.get(`authorityId`),authMethodId:o.get(`authMethodId`),authorizationId:o.get(`authorizationId`),quotaId:o.get(`quotaId`),authorityDigestB64u:o.get(`authorityDigestB64u`),authorityRevocationEpoch:o.get(`authorityRevocationEpoch`),capabilitySubjects:o.get(`capabilitySubjects`),issuedAtMs:o.get(`issuedAtMs`),expiresAtMs:o.get(`expiresAtMs`)});return!u||u.kind!==`active_wallet_session_v1`||t.get(`wallet_id`)!==u.walletId||t.get(`wallet_authority_id`)!==u.authorityId||t.get(`wallet_auth_method_id`)!==u.authMethodId||t.get(`authority_digest_b64u`)!==u.authorityDigestB64u||t.get(`authority_revocation_epoch`)!==u.authorityRevocationEpoch||t.get(`issued_at_ms`)!==u.issuedAtMs||t.get(`expires_at_ms`)!==u.expiresAtMs||r.value!==u.authorizationId?null:{record:u,operationCredential:a,physicalKey:n.value}}async function I(e){let t=M(e.active);if(!t||t.kind!==`active_wallet_session_v1`)throw Error(`Active Wallet Session v1 is invalid`);let n=i(e.operationCredential);await p(e.ctx,t.walletId,n.ownershipGeneration);let r=P(t,n),o=!0,s=e.ctx.store(h),c=await s.index(d.walletId).getAll(t.walletId);for(let e of c){let r=w(e);if(r.kind===`future`)continue;if(r.kind===`legacy`){await s.delete(D(e));continue}if(r.kind!==`current`)throw Error(`Stored Wallet Session authorization row is corrupt`);let i=F(e);if(!i)throw Error(`Stored Wallet Session authorization v6 is corrupt`);let c=i.record;if(i.operationCredential.walletSessionId===n.walletSessionId&&(i.operationCredential.token!==n.token||i.operationCredential.ownershipGeneration!==n.ownershipGeneration))throw Error(`Stored Wallet Session conflicts with the issued operation credential`);if(i.operationCredential.ownershipGeneration<n.ownershipGeneration){await s.delete(i.physicalKey);continue}if(!(c.kind!==`active_wallet_session_v1`||c.authorityId!==t.authorityId||c.authMethodId!==t.authMethodId)){if(c.authorizationId===t.authorizationId&&i.operationCredential.walletSessionId===n.walletSessionId){o=!a(c,t);continue}await s.delete(i.physicalKey)}}return o&&await s.put(r),t}async function L(e){let t=e.ctx.store(h),n=await t.index(d.walletId).getAll(e.walletId),r=null,i=!1;for(let a of n){if(T(a,e)){i=!0;continue}let n=w(a);if(n.kind===`legacy`){await t.delete(D(a));continue}if(n.kind!==`current`)return{kind:`corrupt`};let o=F(a);if(!o)return{kind:`corrupt`};if(!(o.record.walletId!==e.walletId||o.record.authorityId!==e.authorityId||o.record.authMethodId!==e.authMethodId)){if(r)return{kind:`corrupt`};r=o}}return i?{kind:`upgrade_required`}:r?{kind:`found`,...r}:{kind:`missing`}}var R=class{constructor(e=f){this.manager=e}async writeExactWithOperationCredential(e){let t=M(e.record);if(!t||t.kind!==`active_wallet_session_v1`)throw Error(`Active Wallet Session v1 is invalid`);let n=i(e.operationCredential);return await this.replaceExactActive({active:t,operationCredential:n}),t}async refreshExactWithOperationCredential(e){let t=M(e.expected),n=M(e.record);if(!t||t.kind!==`active_wallet_session_v1`||!n||n.kind!==`active_wallet_session_v1`)throw Error(`Active Wallet Session refresh is invalid`);for(let e of y)if(!(e===`kind`||e===`capabilitySubjects`)&&t[e]!==n[e])throw Error(`Wallet Session refresh changed its exact identity`);let r=P(n,i(e.operationCredential));return this.manager.runTransaction([h],`readwrite`,B.bind(null,t,r))}async readExact(e){return this.manager.runTransaction([h],`readwrite`,V.bind(null,e))}async readExactWithOperationCredential(e){let t=await this.readExactActiveForWallet(e);switch(t.kind){case`found`:case`missing`:case`upgrade_required`:return t;case`corrupt`:throw Error(`Stored Wallet Session authorization v6 is corrupt`);case`persistence_unavailable`:throw Error(`Wallet Session authorization persistence is unavailable`)}}async readExactActiveForWallet(e){try{return await this.manager.runTransaction([h],`readwrite`,H.bind(null,e))}catch(e){return e instanceof z?{kind:`corrupt`}:{kind:`persistence_unavailable`}}}async retireExactActiveForWallet(e){if(!E(e.retiredAtMs))throw Error(`Wallet Session v1 retirement time is invalid`);return this.manager.runTransaction([h],`readwrite`,U.bind(null,e))}async replaceExactActive(e){return this.manager.runTransaction([h,u.appState,u.ecdsaClientPresignatures],`readwrite`,W.bind(null,e))}async clearWallet(e){await this.manager.runTransaction([h],`readwrite`,G.bind(null,e))}async clearAll(){await this.manager.runTransaction([h],`readwrite`,K)}},z=class extends Error{};async function B(e,t,n){let r=n.store(h),i=t.operation_credential,o=await r.get(i.walletSessionId);if(o===void 0)return`superseded`;let s=F(o);if(!s)throw Error(`Stored Wallet Session authorization v6 is corrupt`);return!a(s.record,e)||s.operationCredential.token!==i.token?`superseded`:(await r.put(t),`updated`)}async function V(e,t){let n=t.store(h),r=await n.get(e);if(r===void 0)return null;switch(w(r).kind){case`future`:throw new m(`Wallet Session authorization requires a newer client`);case`legacy`:return await n.delete(D(r)),null;case`current`:break;case`unknown`:throw Error(`Stored Wallet Session authorization v6 is corrupt`)}let i=F(r);if(!i)throw Error(`Stored Wallet Session authorization v6 is corrupt`);return i.record}async function H(e,t){let n=await L({ctx:t,walletId:e.walletId,authorityId:e.authorityId,authMethodId:e.authMethodId});if(n.kind===`corrupt`)throw new z(`Stored Wallet Session authorization v6 is corrupt`);return n}async function U(e,t){let n=t.store(h),r=[],i=await n.index(d.walletId).getAll(e.walletId);for(let t of i){let i=w(t);if(i.kind===`future`)continue;if(i.kind===`legacy`){await n.delete(D(t));continue}if(i.kind!==`current`)continue;let a=F(t);if(!a)throw Error(`Stored Wallet Session authorization v6 is corrupt`);let o=a.record;if(o.kind!==`active_wallet_session_v1`)continue;let s=N({active:o,reason:e.reason,retiredAtMs:e.retiredAtMs});await n.delete(a.physicalKey),r.push(s)}return r}function W(e,t){return I({ctx:t,active:e.active,operationCredential:e.operationCredential})}async function G(e,t){let n=t.store(h),r=await n.index(d.walletId).getAllKeys(e);for(let e of r)await n.delete(e)}function K(e){return e.store(h).clear()}const q=new R;export{P as a,I as i,F as n,q as o,L as r,m as t};
|
|
1
|
+
import{E as e,O as t,g as n,k as r}from"./domainIds-t1lp25yU.js";import{i,t as a}from"./activeWalletSession-H9JBdHyQ.js";import{d as o,h as s,m as c}from"./capabilityKinds-BzrNeEyO.js";import{r as l}from"./canonicalPrimitives-B6YMrI3W.js";import{a as u,i as d,n as f}from"./presignatures-B9GrGx0L.js";import{t as p}from"./walletOwnershipGeneration-DI9ogcXF.js";var m=class extends Error{kind=`upgrade_required`;code=`upgrade_required`;constructor(e){super(e),this.name=`WalletSessionAuthorizationUpgradeRequiredError`}};const h=u.walletSessionAuthorizations;function g(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return null;let n=Object.keys(e);if(n.length!==t.length||n.some(e=>!t.includes(e)))return null;let r=new Map;for(let t of n)r.set(t,Reflect.get(e,t));return r}function _(e,t){if(!(typeof e!=`object`||!e||Array.isArray(e)))return Reflect.get(e,t)}function v(e){switch(e){case`expired`:case`exhausted`:case`replaced`:case`wallet_locked`:case`invalidated`:return e;default:return null}}const y=[`kind`,`walletId`,`authorityId`,`authMethodId`,`authorizationId`,`quotaId`,`authorityDigestB64u`,`authorityRevocationEpoch`,`capabilitySubjects`,`issuedAtMs`,`expiresAtMs`],b=[...y,`retiredAtMs`,`retirementReason`],x=[`record_version`,`wallet_session_id`,`authorization_id`,`wallet_id`,`wallet_authority_id`,`wallet_auth_method_id`,`authority_digest_b64u`,`authority_revocation_epoch`,`status`,`issued_at_ms`,`expires_at_ms`,`record`,`operation_credential`],S=/^wallet_session_authorization_v([0-9]+)$/;function C(e){if(typeof e!=`string`)return null;let t=S.exec(e);if(!t)return null;let n=Number(t[1]);return Number.isSafeInteger(n)?n:null}function w(e){let t=typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.prototype.hasOwnProperty.call(e,`record_version`),n=C(_(e,`record_version`)),r=t?null:C(_(_(e,`record`),`recordVersion`)),i=n??r;return i===null?{kind:`unknown`}:i>=3&&i<6?{kind:`legacy`,version:i}:t&&i===6?{kind:`current`,version:i}:t&&i>6?{kind:`future`,version:i}:{kind:`unknown`}}function T(e,t){if(w(e).kind!==`future`||_(e,`wallet_id`)!==t.walletId)return!1;let n=_(e,`wallet_authority_id`),r=_(e,`wallet_auth_method_id`);return typeof n!=`string`||typeof r!=`string`?!0:n===t.authorityId&&r===t.authMethodId}function E(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function D(e){let t=_(e,`wallet_session_id`);if(typeof t!=`string`)throw Error(`Stored Wallet Session authorization key is invalid`);return t}function O(e){switch(e.kind){case`sign`:case`export_keys`:return`${e.kind}:${e.keyFamily}:${e.materialActivation.activationId}`;case`link_devices`:case`revoke_devices`:return e.kind;default:return k(e)}}function k(e){throw Error(`Unknown Wallet Capability subject: ${String(e)}`)}function A(e){let t=_(e,`kind`);if(t===`sign`||t===`export_keys`){let r=g(e,[`kind`,`keyFamily`,`materialActivation`]);if(!r)return null;let i=r.get(`keyFamily`);if(i!==`ed25519`&&i!==`ecdsa_secp256k1`)return null;let a=n(r.get(`materialActivation`));return a.ok?{kind:t,keyFamily:i,materialActivation:a.value}:null}return(t===`link_devices`||t===`revoke_devices`)&&g(e,[`kind`])?{kind:t}:null}function j(e){if(!Array.isArray(e)||e.length===0)return null;let t=[];for(let n of e){let e=A(n);if(!e)return null;t.push(e)}let n=new Set;for(let e of t){let t=O(e);if(n.has(t))return null;n.add(t)}let[r,...i]=t;return r?[r,...i]:null}function M(n){let i=_(n,`kind`),a=i===`active_wallet_session_v1`?g(n,y):i===`retired_wallet_session_v1`?g(n,b):null;if(!a)return null;let s=r(a.get(`walletId`)),u=t(a.get(`authorityId`)),d=e(a.get(`authMethodId`)),f=c(a.get(`authorizationId`)),p=o(a.get(`quotaId`));if(!s.ok||!u.ok||!d.ok||!f.ok||!p.ok)return null;let m;try{m=l(a.get(`authorityDigestB64u`))}catch{return null}let h=j(a.get(`capabilitySubjects`)),x=a.get(`authorityRevocationEpoch`),S=a.get(`issuedAtMs`),C=a.get(`expiresAtMs`);if(!h||!E(x)||!E(S)||!E(C)||C<=S)return null;let w={walletId:s.value,authorityId:u.value,authMethodId:d.value,authorizationId:f.value,quotaId:p.value,authorityDigestB64u:m,authorityRevocationEpoch:x,capabilitySubjects:h,issuedAtMs:S,expiresAtMs:C};if(i===`active_wallet_session_v1`)return{kind:`active_wallet_session_v1`,walletId:w.walletId,authorityId:w.authorityId,authMethodId:w.authMethodId,authorizationId:w.authorizationId,quotaId:w.quotaId,authorityDigestB64u:w.authorityDigestB64u,authorityRevocationEpoch:w.authorityRevocationEpoch,capabilitySubjects:w.capabilitySubjects,issuedAtMs:w.issuedAtMs,expiresAtMs:w.expiresAtMs};if(i===`retired_wallet_session_v1`){let e=a.get(`retiredAtMs`);if(!E(e)||e<w.issuedAtMs)return null;let t=v(a.get(`retirementReason`));return!t||t===`expired`&&e<w.expiresAtMs?null:{kind:`retired_wallet_session_v1`,walletId:w.walletId,authorityId:w.authorityId,authMethodId:w.authMethodId,authorizationId:w.authorizationId,quotaId:w.quotaId,authorityDigestB64u:w.authorityDigestB64u,authorityRevocationEpoch:w.authorityRevocationEpoch,capabilitySubjects:w.capabilitySubjects,issuedAtMs:w.issuedAtMs,expiresAtMs:w.expiresAtMs,retiredAtMs:e,retirementReason:t}}return null}function N(e){if(!E(e.retiredAtMs))throw Error(`Retired Wallet Session v1 time is invalid`);let t=M({kind:`retired_wallet_session_v1`,walletId:e.active.walletId,authorityId:e.active.authorityId,authMethodId:e.active.authMethodId,authorizationId:e.active.authorizationId,quotaId:e.active.quotaId,authorityDigestB64u:e.active.authorityDigestB64u,authorityRevocationEpoch:e.active.authorityRevocationEpoch,capabilitySubjects:e.active.capabilitySubjects,issuedAtMs:e.active.issuedAtMs,expiresAtMs:e.active.expiresAtMs,retiredAtMs:e.retiredAtMs,retirementReason:e.reason});if(!t||t.kind!==`retired_wallet_session_v1`)throw Error(`Retired Wallet Session v1 is invalid`);return t}function P(e,t){let n=M(e);if(!n||n.kind!==`active_wallet_session_v1`)throw Error(`Active Wallet Session v1 is invalid`);let r;try{r=i(t)}catch{throw Error(`Wallet Session operation credential is invalid`)}let a={record_version:`wallet_session_authorization_v6`,wallet_session_id:r.walletSessionId,authorization_id:n.authorizationId,wallet_id:n.walletId,wallet_authority_id:n.authorityId,wallet_auth_method_id:n.authMethodId,authority_digest_b64u:n.authorityDigestB64u,authority_revocation_epoch:n.authorityRevocationEpoch,status:`active`,issued_at_ms:n.issuedAtMs,expires_at_ms:n.expiresAtMs,record:{kind:n.kind,walletId:n.walletId,authorityId:n.authorityId,authMethodId:n.authMethodId,authorizationId:n.authorizationId,walletSessionId:r.walletSessionId,quotaId:n.quotaId,authorityDigestB64u:n.authorityDigestB64u,authorityRevocationEpoch:n.authorityRevocationEpoch,capabilitySubjects:n.capabilitySubjects,issuedAtMs:n.issuedAtMs,expiresAtMs:n.expiresAtMs},operation_credential:r};if(!F(a))throw Error(`Wallet Session authorization v6 is invalid`);return a}function F(e){let t=g(e,x);if(!t||t.get(`record_version`)!==`wallet_session_authorization_v6`||t.get(`status`)!==`active`)return null;let n=s(t.get(`wallet_session_id`)),r=c(t.get(`authorization_id`));if(!n.ok||!r.ok)return null;let a;try{a=i(t.get(`operation_credential`))}catch{return null}if(n.value!==a.walletSessionId)return null;let o=g(t.get(`record`),[...y,`walletSessionId`]);if(!o)return null;let l=s(o.get(`walletSessionId`));if(!l.ok||l.value!==n.value)return null;let u=M({kind:o.get(`kind`),walletId:o.get(`walletId`),authorityId:o.get(`authorityId`),authMethodId:o.get(`authMethodId`),authorizationId:o.get(`authorizationId`),quotaId:o.get(`quotaId`),authorityDigestB64u:o.get(`authorityDigestB64u`),authorityRevocationEpoch:o.get(`authorityRevocationEpoch`),capabilitySubjects:o.get(`capabilitySubjects`),issuedAtMs:o.get(`issuedAtMs`),expiresAtMs:o.get(`expiresAtMs`)});return!u||u.kind!==`active_wallet_session_v1`||t.get(`wallet_id`)!==u.walletId||t.get(`wallet_authority_id`)!==u.authorityId||t.get(`wallet_auth_method_id`)!==u.authMethodId||t.get(`authority_digest_b64u`)!==u.authorityDigestB64u||t.get(`authority_revocation_epoch`)!==u.authorityRevocationEpoch||t.get(`issued_at_ms`)!==u.issuedAtMs||t.get(`expires_at_ms`)!==u.expiresAtMs||r.value!==u.authorizationId?null:{record:u,operationCredential:a,physicalKey:n.value}}async function I(e){let t=M(e.active);if(!t||t.kind!==`active_wallet_session_v1`)throw Error(`Active Wallet Session v1 is invalid`);let n=i(e.operationCredential);await p(e.ctx,t.walletId,n.ownershipGeneration);let r=P(t,n),o=!0,s=e.ctx.store(h),c=await s.index(d.walletId).getAll(t.walletId);for(let e of c){let r=w(e);if(r.kind===`future`)continue;if(r.kind===`legacy`){await s.delete(D(e));continue}if(r.kind!==`current`)throw Error(`Stored Wallet Session authorization row is corrupt`);let i=F(e);if(!i)throw Error(`Stored Wallet Session authorization v6 is corrupt`);let c=i.record;if(i.operationCredential.walletSessionId===n.walletSessionId&&(i.operationCredential.token!==n.token||i.operationCredential.ownershipGeneration!==n.ownershipGeneration))throw Error(`Stored Wallet Session conflicts with the issued operation credential`);if(i.operationCredential.ownershipGeneration<n.ownershipGeneration){await s.delete(i.physicalKey);continue}if(!(c.kind!==`active_wallet_session_v1`||c.authorityId!==t.authorityId||c.authMethodId!==t.authMethodId)){if(c.authorizationId===t.authorizationId&&i.operationCredential.walletSessionId===n.walletSessionId){o=!a(c,t);continue}await s.delete(i.physicalKey)}}return o&&await s.put(r),t}async function L(e){let t=e.ctx.store(h),n=await t.index(d.walletId).getAll(e.walletId),r=null,i=!1;for(let a of n){if(T(a,e)){i=!0;continue}let n=w(a);if(n.kind===`legacy`){await t.delete(D(a));continue}if(n.kind!==`current`)return{kind:`corrupt`};let o=F(a);if(!o)return{kind:`corrupt`};if(!(o.record.walletId!==e.walletId||o.record.authorityId!==e.authorityId||o.record.authMethodId!==e.authMethodId)){if(r)return{kind:`corrupt`};r=o}}return i?{kind:`upgrade_required`}:r?{kind:`found`,...r}:{kind:`missing`}}var R=class{constructor(e=f){this.manager=e}async writeExactWithOperationCredential(e){let t=M(e.record);if(!t||t.kind!==`active_wallet_session_v1`)throw Error(`Active Wallet Session v1 is invalid`);let n=i(e.operationCredential);return await this.replaceExactActive({active:t,operationCredential:n}),t}async refreshExactWithOperationCredential(e){let t=M(e.expected),n=M(e.record);if(!t||t.kind!==`active_wallet_session_v1`||!n||n.kind!==`active_wallet_session_v1`)throw Error(`Active Wallet Session refresh is invalid`);for(let e of y)if(!(e===`kind`||e===`capabilitySubjects`)&&t[e]!==n[e])throw Error(`Wallet Session refresh changed its exact identity`);let r=P(n,i(e.operationCredential));return this.manager.runTransaction([h],`readwrite`,B.bind(null,t,r))}async readExact(e){return this.manager.runTransaction([h],`readwrite`,V.bind(null,e))}async readExactWithOperationCredential(e){let t=await this.readExactActiveForWallet(e);switch(t.kind){case`found`:case`missing`:case`upgrade_required`:return t;case`corrupt`:throw Error(`Stored Wallet Session authorization v6 is corrupt`);case`persistence_unavailable`:throw Error(`Wallet Session authorization persistence is unavailable`)}}async readExactActiveForWallet(e){try{return await this.manager.runTransaction([h],`readwrite`,H.bind(null,e))}catch(e){return e instanceof z?{kind:`corrupt`}:{kind:`persistence_unavailable`}}}async retireExactActiveForWallet(e){if(!E(e.retiredAtMs))throw Error(`Wallet Session v1 retirement time is invalid`);return this.manager.runTransaction([h],`readwrite`,U.bind(null,e))}async replaceExactActive(e){return this.manager.runTransaction([h,u.appState,u.ecdsaClientPresignatures],`readwrite`,W.bind(null,e))}async clearWallet(e){await this.manager.runTransaction([h],`readwrite`,G.bind(null,e))}async clearAll(){await this.manager.runTransaction([h],`readwrite`,K)}},z=class extends Error{};async function B(e,t,n){let r=n.store(h),i=t.operation_credential,o=await r.get(i.walletSessionId);if(o===void 0)return`superseded`;let s=F(o);if(!s)throw Error(`Stored Wallet Session authorization v6 is corrupt`);return!a(s.record,e)||s.operationCredential.token!==i.token?`superseded`:(await r.put(t),`updated`)}async function V(e,t){let n=t.store(h),r=await n.get(e);if(r===void 0)return null;switch(w(r).kind){case`future`:throw new m(`Wallet Session authorization requires a newer client`);case`legacy`:return await n.delete(D(r)),null;case`current`:break;case`unknown`:throw Error(`Stored Wallet Session authorization v6 is corrupt`)}let i=F(r);if(!i)throw Error(`Stored Wallet Session authorization v6 is corrupt`);return i.record}async function H(e,t){let n=await L({ctx:t,walletId:e.walletId,authorityId:e.authorityId,authMethodId:e.authMethodId});if(n.kind===`corrupt`)throw new z(`Stored Wallet Session authorization v6 is corrupt`);return n}async function U(e,t){let n=t.store(h),r=[],i=await n.index(d.walletId).getAll(e.walletId);for(let t of i){let i=w(t);if(i.kind===`future`)continue;if(i.kind===`legacy`){await n.delete(D(t));continue}if(i.kind!==`current`)continue;let a=F(t);if(!a)throw Error(`Stored Wallet Session authorization v6 is corrupt`);let o=a.record;if(o.kind!==`active_wallet_session_v1`)continue;let s=N({active:o,reason:e.reason,retiredAtMs:e.retiredAtMs});await n.delete(a.physicalKey),r.push(s)}return r}function W(e,t){return I({ctx:t,active:e.active,operationCredential:e.operationCredential})}async function G(e,t){let n=t.store(h),r=await n.index(d.walletId).getAllKeys(e);for(let e of r)await n.delete(e)}function K(e){return e.store(h).clear()}const q=new R;export{P as a,I as i,F as n,q as o,L as r,m as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./prfCache-8Wm3etlV.js";function t(t){return{hydrateSigningSession:n=>e(t.getWarmSessionMaterialWriter(),n)}}export{t as createWarmSessionHydrationService};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e,t}from"./base64-BmKR3UqU.js";import{n}from"./evmCryptoWasm-
|
|
1
|
+
import{r as e,t}from"./base64-BmKR3UqU.js";import{n}from"./evmCryptoWasm-DacbCVNM.js";function r(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}var i=class{algorithm=`webauthnP256`;constructor(e,t){this.workerCtx=e,this.beforeSigning=t}async buildWebauthnSignature(e){if(!this.workerCtx)throw Error(`[WebAuthnP256Engine] workerCtx is required for wasm-backed WebAuthn signature packing`);return await n({challenge32:e.challenge32,authenticatorData:e.authenticatorData,clientDataJSON:e.clientDataJSON,signatureDer:e.signatureDer,pubKeyX32:e.pubKeyX32,pubKeyY32:e.pubKeyY32,workerCtx:this.workerCtx})}async sign(n,i){if(n.kind!==`webauthn`||n.algorithm!==`webauthnP256`)throw Error(`[WebAuthnP256Engine] unsupported sign request`);if(n.challenge32.length!==32)throw Error(`[WebAuthnP256Engine] challenge32 must be 32 bytes`);if(i.type!==`webauthnP256`)throw Error(`[WebAuthnP256Engine] keyRef must be webauthnP256`);if(i.pubKeyX.length!==32||i.pubKeyY.length!==32)throw Error(`[WebAuthnP256Engine] pubKeyX/pubKeyY must be 32 bytes each`);if(i.credentialId.length===0)throw Error(`[WebAuthnP256Engine] credentialId must be non-empty`);let a=async a=>{let o=a&&typeof a==`object`?a:{};if(!r(t(String(o.rawId||``).trim()),i.credentialId))throw Error(`[WebAuthnP256Engine] WebAuthn credential rawId does not match keyRef`);let s=o.response,c=e(String(s?.authenticatorData||``)),l=e(String(s?.clientDataJSON||``)),u=e(String(s?.signature||``));if(c.length===0||l.length===0||u.length===0)throw Error(`[WebAuthnP256Engine] missing authenticatorData/clientDataJSON/signature in credential`);return await this.buildWebauthnSignature({challenge32:n.challenge32,authenticatorData:c,clientDataJSON:l,signatureDer:u,pubKeyX32:i.pubKeyX,pubKeyY32:i.pubKeyY})};if(n.credential)return await a(n.credential);if(typeof navigator>`u`||!navigator.credentials||typeof navigator.credentials.get!=`function`)throw Error(`[WebAuthnP256Engine] WebAuthn not available (must run in a browser context)`);let o=new Uint8Array(n.challenge32),s=new Uint8Array(i.credentialId);this.beforeSigning?.();let c=await navigator.credentials.get({publicKey:{challenge:o,allowCredentials:[{type:`public-key`,id:s}],rpId:n.rpId??i.rpId,userVerification:`preferred`}});if(!c)throw Error(`[WebAuthnP256Engine] user cancelled WebAuthn assertion`);if(!r(new Uint8Array(c.rawId),i.credentialId))throw Error(`[WebAuthnP256Engine] WebAuthn assertion returned unexpected credentialId`);let l=c.response;if(!l||!l.authenticatorData||!l.clientDataJSON||!l.signature)throw Error(`[WebAuthnP256Engine] invalid WebAuthn assertion response`);let u=new Uint8Array(l.authenticatorData),d=new Uint8Array(l.clientDataJSON),f=new Uint8Array(l.signature);return await this.buildWebauthnSignature({challenge32:n.challenge32,authenticatorData:u,clientDataJSON:d,signatureDer:f,pubKeyX32:i.pubKeyX,pubKeyY32:i.pubKeyY})}};export{i as WebAuthnP256Engine};
|
|
@@ -2064,6 +2064,17 @@ function exactRecord4(raw, keys, label) {
|
|
|
2064
2064
|
return record;
|
|
2065
2065
|
}
|
|
2066
2066
|
|
|
2067
|
+
// ../shared-ts/src/authorization/voiceIdDeviceAssertion.ts
|
|
2068
|
+
function parseVoiceIdDevicePublicKeyB64u(value) {
|
|
2069
|
+
if (typeof value !== "string")
|
|
2070
|
+
throw new Error("VoiceID public key is invalid");
|
|
2071
|
+
const bytes = base64UrlDecode(value);
|
|
2072
|
+
if (bytes.length !== 32 || base64UrlEncode(bytes) !== value) {
|
|
2073
|
+
throw new Error("VoiceID public key must be canonical Ed25519 bytes");
|
|
2074
|
+
}
|
|
2075
|
+
return value;
|
|
2076
|
+
}
|
|
2077
|
+
|
|
2067
2078
|
// ../shared-ts/src/utils/registrationAuthMethodInput.ts
|
|
2068
2079
|
function inspectRawObject(value) {
|
|
2069
2080
|
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
@@ -2081,7 +2092,7 @@ function parseWalletAuthMethodRecordV2(raw) {
|
|
|
2081
2092
|
const version = trimString(record.version);
|
|
2082
2093
|
const kind = trimString(record.kind);
|
|
2083
2094
|
const status = trimString(record.status);
|
|
2084
|
-
if (version !== "wallet_auth_method_v2" || kind !== "passkey" && kind !== "email_otp") {
|
|
2095
|
+
if (version !== "wallet_auth_method_v2" || kind !== "passkey" && kind !== "email_otp" && kind !== "voiceid") {
|
|
2085
2096
|
return null;
|
|
2086
2097
|
}
|
|
2087
2098
|
try {
|
|
@@ -2105,6 +2116,17 @@ function parseWalletAuthMethodRecordV2(raw) {
|
|
|
2105
2116
|
counter: parseNonNegativeInteger(record.counter)
|
|
2106
2117
|
});
|
|
2107
2118
|
}
|
|
2119
|
+
if (kind === "voiceid") {
|
|
2120
|
+
if (!("deviceKeyId" in record) || !("devicePublicKeyB64u" in record))
|
|
2121
|
+
return null;
|
|
2122
|
+
exactWalletAuthMethodV2Fields(record, "voiceid", status);
|
|
2123
|
+
return buildParsedVoiceIdWalletAuthMethodRecordV2({
|
|
2124
|
+
common,
|
|
2125
|
+
lifecycle: parseWalletAuthMethodLifecycle(record),
|
|
2126
|
+
deviceKeyId: parseDigestB64u(record.deviceKeyId),
|
|
2127
|
+
devicePublicKeyB64u: parseVoiceIdDevicePublicKeyB64u(record.devicePublicKeyB64u)
|
|
2128
|
+
});
|
|
2129
|
+
}
|
|
2108
2130
|
if (!("emailHashHex" in record) || !("registrationAuthorityId" in record))
|
|
2109
2131
|
return null;
|
|
2110
2132
|
exactWalletAuthMethodV2Fields(record, "email_otp", status);
|
|
@@ -2181,8 +2203,10 @@ function exactWalletAuthMethodV2Fields(raw, kind, status) {
|
|
|
2181
2203
|
];
|
|
2182
2204
|
if (kind === "passkey") {
|
|
2183
2205
|
fields.push("rpId", "credentialIdB64u", "credentialPublicKeyB64u", "counter");
|
|
2184
|
-
} else {
|
|
2206
|
+
} else if (kind === "email_otp") {
|
|
2185
2207
|
fields.push("emailHashHex", "registrationAuthorityId");
|
|
2208
|
+
} else {
|
|
2209
|
+
fields.push("deviceKeyId", "devicePublicKeyB64u");
|
|
2186
2210
|
}
|
|
2187
2211
|
if (status === "active")
|
|
2188
2212
|
fields.push("activatedAtMs");
|
|
@@ -2298,6 +2322,52 @@ function buildParsedEmailOtpWalletAuthMethodRecordV2(input) {
|
|
|
2298
2322
|
};
|
|
2299
2323
|
}
|
|
2300
2324
|
}
|
|
2325
|
+
function buildParsedVoiceIdWalletAuthMethodRecordV2(input) {
|
|
2326
|
+
switch (input.lifecycle.status) {
|
|
2327
|
+
case "pending_local_install":
|
|
2328
|
+
return {
|
|
2329
|
+
version: "wallet_auth_method_v2",
|
|
2330
|
+
walletAuthMethodId: input.common.walletAuthMethodId,
|
|
2331
|
+
walletId: input.common.walletId,
|
|
2332
|
+
walletAuthorityId: input.common.walletAuthorityId,
|
|
2333
|
+
kind: "voiceid",
|
|
2334
|
+
status: "pending_local_install",
|
|
2335
|
+
createdAtMs: input.common.createdAtMs,
|
|
2336
|
+
updatedAtMs: input.common.updatedAtMs,
|
|
2337
|
+
deviceKeyId: input.deviceKeyId,
|
|
2338
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u
|
|
2339
|
+
};
|
|
2340
|
+
case "active":
|
|
2341
|
+
return {
|
|
2342
|
+
version: "wallet_auth_method_v2",
|
|
2343
|
+
walletAuthMethodId: input.common.walletAuthMethodId,
|
|
2344
|
+
walletId: input.common.walletId,
|
|
2345
|
+
walletAuthorityId: input.common.walletAuthorityId,
|
|
2346
|
+
kind: "voiceid",
|
|
2347
|
+
status: "active",
|
|
2348
|
+
createdAtMs: input.common.createdAtMs,
|
|
2349
|
+
updatedAtMs: input.common.updatedAtMs,
|
|
2350
|
+
deviceKeyId: input.deviceKeyId,
|
|
2351
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u,
|
|
2352
|
+
activatedAtMs: input.lifecycle.activatedAtMs
|
|
2353
|
+
};
|
|
2354
|
+
case "revoked":
|
|
2355
|
+
return {
|
|
2356
|
+
version: "wallet_auth_method_v2",
|
|
2357
|
+
walletAuthMethodId: input.common.walletAuthMethodId,
|
|
2358
|
+
walletId: input.common.walletId,
|
|
2359
|
+
walletAuthorityId: input.common.walletAuthorityId,
|
|
2360
|
+
kind: "voiceid",
|
|
2361
|
+
status: "revoked",
|
|
2362
|
+
createdAtMs: input.common.createdAtMs,
|
|
2363
|
+
updatedAtMs: input.common.updatedAtMs,
|
|
2364
|
+
deviceKeyId: input.deviceKeyId,
|
|
2365
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u,
|
|
2366
|
+
activatedAtMs: input.lifecycle.activatedAtMs,
|
|
2367
|
+
revokedAtMs: input.lifecycle.revokedAtMs
|
|
2368
|
+
};
|
|
2369
|
+
}
|
|
2370
|
+
}
|
|
2301
2371
|
function parseWalletAuthMethodIdRequired(raw) {
|
|
2302
2372
|
const parsed = parseWalletAuthMethodId(raw);
|
|
2303
2373
|
if (!parsed.ok)
|
|
@@ -2768,7 +2838,7 @@ function parseCommittedAuthorityPackagesV1(raw) {
|
|
|
2768
2838
|
throw new Error("CommittedAuthorityPackagesV1.authority is not pending");
|
|
2769
2839
|
}
|
|
2770
2840
|
const authMethod = parseWalletAuthMethodRecordV2(record.authMethod);
|
|
2771
|
-
if (!authMethod || authMethod.status !== "pending_local_install") {
|
|
2841
|
+
if (!authMethod || authMethod.status !== "pending_local_install" || authMethod.kind === "voiceid") {
|
|
2772
2842
|
throw new Error("CommittedAuthorityPackagesV1.authMethod is not pending");
|
|
2773
2843
|
}
|
|
2774
2844
|
if (authMethod.walletId !== authority.value.walletId || authMethod.walletAuthorityId !== authority.value.authorityId) {
|
|
@@ -5082,6 +5152,7 @@ function parsePasskeyCustodySecretBinding(raw, label = "passkeyCustodySecretBind
|
|
|
5082
5152
|
var WALLET_CUSTODY_ENVELOPE_VERSION_V2 = "wallet_custody_envelope_v2";
|
|
5083
5153
|
var PASSKEY_PRF_KEK_VERSION_V1 = "passkey_prf_kek_hkdf_sha256_v1";
|
|
5084
5154
|
var EMAIL_OTP_FACTOR_KEK_VERSION_V1 = "email_otp_factor_kek_hkdf_sha256_v1";
|
|
5155
|
+
var VOICEID_DEVICE_FACTOR_KEK_VERSION_V1 = "voiceid_device_factor_kek_hkdf_sha256_v1";
|
|
5085
5156
|
var ENVELOPE_OWNERSHIP_FIELDS = ["kind", "walletAuthMethodId"];
|
|
5086
5157
|
function parseWalletCustodyEnvelopeOwnership(raw, label) {
|
|
5087
5158
|
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
@@ -5122,6 +5193,13 @@ function buildEmailOtpEnvelopeFactor(args) {
|
|
|
5122
5193
|
kekVersion: EMAIL_OTP_FACTOR_KEK_VERSION_V1
|
|
5123
5194
|
};
|
|
5124
5195
|
}
|
|
5196
|
+
function buildVoiceIdEnvelopeFactor(args) {
|
|
5197
|
+
return {
|
|
5198
|
+
kind: "voiceid",
|
|
5199
|
+
deviceKeyId: args.deviceKeyId,
|
|
5200
|
+
kekVersion: VOICEID_DEVICE_FACTOR_KEK_VERSION_V1
|
|
5201
|
+
};
|
|
5202
|
+
}
|
|
5125
5203
|
function buildActiveEnvelopeLifecycle(args) {
|
|
5126
5204
|
return { state: "active", activatedAtMs: args.activatedAtMs };
|
|
5127
5205
|
}
|
|
@@ -5200,7 +5278,8 @@ var EMAIL_OTP_FACTOR_FIELDS = [
|
|
|
5200
5278
|
"enrollmentSealKeyVersion",
|
|
5201
5279
|
"kekVersion"
|
|
5202
5280
|
];
|
|
5203
|
-
var
|
|
5281
|
+
var VOICEID_FACTOR_FIELDS = ["kind", "deviceKeyId", "kekVersion"];
|
|
5282
|
+
var ALL_FACTOR_FIELDS = Array.from(new Set([...PASSKEY_FACTOR_FIELDS, ...EMAIL_OTP_FACTOR_FIELDS, ...VOICEID_FACTOR_FIELDS]));
|
|
5204
5283
|
function requireNonEmptyString(value, label) {
|
|
5205
5284
|
if (typeof value !== "string" || !value.trim())
|
|
5206
5285
|
throw new Error(`${label} is required`);
|
|
@@ -5236,8 +5315,17 @@ function parseWalletCustodyEnvelopeFactor(raw, label = "factor") {
|
|
|
5236
5315
|
enrollmentSealKeyVersion: requireNonEmptyString(record.enrollmentSealKeyVersion, `${label}.enrollmentSealKeyVersion`)
|
|
5237
5316
|
});
|
|
5238
5317
|
}
|
|
5318
|
+
case "voiceid": {
|
|
5319
|
+
rejectUnknownFields(record, VOICEID_FACTOR_FIELDS, label, ALL_FACTOR_FIELDS);
|
|
5320
|
+
if (record.kekVersion !== VOICEID_DEVICE_FACTOR_KEK_VERSION_V1) {
|
|
5321
|
+
throw new Error(`${label}.kekVersion must be ${VOICEID_DEVICE_FACTOR_KEK_VERSION_V1}`);
|
|
5322
|
+
}
|
|
5323
|
+
return buildVoiceIdEnvelopeFactor({
|
|
5324
|
+
deviceKeyId: parseDigestField(record.deviceKeyId, `${label}.deviceKeyId`)
|
|
5325
|
+
});
|
|
5326
|
+
}
|
|
5239
5327
|
default:
|
|
5240
|
-
throw new Error(`${label}.kind must be passkey or
|
|
5328
|
+
throw new Error(`${label}.kind must be passkey, email_otp, or voiceid`);
|
|
5241
5329
|
}
|
|
5242
5330
|
}
|
|
5243
5331
|
var ENVELOPE_RECORD_FIELDS = [
|
|
@@ -1273,28 +1273,6 @@ function parseLinkDeviceSessionId(raw) {
|
|
|
1273
1273
|
return parseDomainId(raw, "linkDeviceSessionId");
|
|
1274
1274
|
}
|
|
1275
1275
|
|
|
1276
|
-
// ../shared-ts/src/utils/walletAuthAuthority.ts
|
|
1277
|
-
function parseWalletAuthAuthorityRef(raw) {
|
|
1278
|
-
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
1279
|
-
return null;
|
|
1280
|
-
const record = raw;
|
|
1281
|
-
const fields = Object.keys(record);
|
|
1282
|
-
if (fields.length !== 4 || !fields.every((field) => ["kind", "walletId", "authorityDigest", "walletAuthMethodId"].includes(field)) || record.kind !== "wallet_auth_authority_ref") {
|
|
1283
|
-
return null;
|
|
1284
|
-
}
|
|
1285
|
-
const walletId = parseWalletId(record.walletId);
|
|
1286
|
-
const authorityDigest = parseWalletAuthorityBindingDigest(record.authorityDigest);
|
|
1287
|
-
const walletAuthMethodId = parseWalletAuthMethodId(record.walletAuthMethodId);
|
|
1288
|
-
if (!walletId.ok || !authorityDigest.ok || !walletAuthMethodId.ok)
|
|
1289
|
-
return null;
|
|
1290
|
-
return {
|
|
1291
|
-
kind: "wallet_auth_authority_ref",
|
|
1292
|
-
walletId: walletId.value,
|
|
1293
|
-
authorityDigest: authorityDigest.value,
|
|
1294
|
-
walletAuthMethodId: walletAuthMethodId.value
|
|
1295
|
-
};
|
|
1296
|
-
}
|
|
1297
|
-
|
|
1298
1276
|
// ../shared-ts/src/utils/normalize.ts
|
|
1299
1277
|
function normalizeOptionalString(value) {
|
|
1300
1278
|
return typeof value === "string" ? value : "";
|
|
@@ -1329,6 +1307,69 @@ function requireArray(value, label) {
|
|
|
1329
1307
|
return value;
|
|
1330
1308
|
}
|
|
1331
1309
|
|
|
1310
|
+
// ../shared-ts/src/utils/exactRecord.ts
|
|
1311
|
+
var SECRET_BEARING_FIELD_SUBSTRINGS = [
|
|
1312
|
+
"prf",
|
|
1313
|
+
"kek",
|
|
1314
|
+
"seed",
|
|
1315
|
+
"scalar",
|
|
1316
|
+
"secretkey",
|
|
1317
|
+
"privatekey",
|
|
1318
|
+
"plaintext",
|
|
1319
|
+
"recoverycode",
|
|
1320
|
+
"clientroot",
|
|
1321
|
+
"holdershare"
|
|
1322
|
+
];
|
|
1323
|
+
function rejectUnknownFields(record, allowed, label, knownOnOtherBranches = []) {
|
|
1324
|
+
const allowedSet = new Set(allowed);
|
|
1325
|
+
const knownSet = new Set(knownOnOtherBranches);
|
|
1326
|
+
for (const field of Object.keys(record)) {
|
|
1327
|
+
if (allowedSet.has(field))
|
|
1328
|
+
continue;
|
|
1329
|
+
if (knownSet.has(field)) {
|
|
1330
|
+
throw new Error(`${label}.${field} is not part of ${label}`);
|
|
1331
|
+
}
|
|
1332
|
+
const normalized = field.toLowerCase().replace(/_/g, "");
|
|
1333
|
+
const namesAPublicKey = normalized.includes("publickey");
|
|
1334
|
+
if (!namesAPublicKey && SECRET_BEARING_FIELD_SUBSTRINGS.some((substring) => normalized.includes(substring))) {
|
|
1335
|
+
throw new Error(`${label}.${field} must never carry plaintext custody material`);
|
|
1336
|
+
}
|
|
1337
|
+
throw new Error(`${label}.${field} is not part of ${label}`);
|
|
1338
|
+
}
|
|
1339
|
+
}
|
|
1340
|
+
function exactRecord(raw, fields, label) {
|
|
1341
|
+
const record = requireRecord(raw, label);
|
|
1342
|
+
rejectUnknownFields(record, fields, label);
|
|
1343
|
+
for (const field of fields) {
|
|
1344
|
+
if (!Object.prototype.hasOwnProperty.call(record, field) || record[field] === undefined) {
|
|
1345
|
+
throw new Error(`${label}.${field} is required`);
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1348
|
+
return record;
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
// ../shared-ts/src/utils/walletAuthAuthority.ts
|
|
1352
|
+
function parseWalletAuthAuthorityRef(raw) {
|
|
1353
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
1354
|
+
return null;
|
|
1355
|
+
const record = raw;
|
|
1356
|
+
const fields = Object.keys(record);
|
|
1357
|
+
if (fields.length !== 4 || !fields.every((field) => ["kind", "walletId", "authorityDigest", "walletAuthMethodId"].includes(field)) || record.kind !== "wallet_auth_authority_ref") {
|
|
1358
|
+
return null;
|
|
1359
|
+
}
|
|
1360
|
+
const walletId = parseWalletId(record.walletId);
|
|
1361
|
+
const authorityDigest = parseWalletAuthorityBindingDigest(record.authorityDigest);
|
|
1362
|
+
const walletAuthMethodId = parseWalletAuthMethodId(record.walletAuthMethodId);
|
|
1363
|
+
if (!walletId.ok || !authorityDigest.ok || !walletAuthMethodId.ok)
|
|
1364
|
+
return null;
|
|
1365
|
+
return {
|
|
1366
|
+
kind: "wallet_auth_authority_ref",
|
|
1367
|
+
walletId: walletId.value,
|
|
1368
|
+
authorityDigest: authorityDigest.value,
|
|
1369
|
+
walletAuthMethodId: walletAuthMethodId.value
|
|
1370
|
+
};
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1332
1373
|
// ../shared-ts/src/utils/routerAbNormalSigningIdentity.ts
|
|
1333
1374
|
function requireExactFields(record, expectedFields, label) {
|
|
1334
1375
|
const actualFields = Object.keys(record).sort();
|
|
@@ -1850,47 +1891,6 @@ var SERVER_ALLOCATED_WALLET_NOUNS = [
|
|
|
1850
1891
|
var SERVER_ALLOCATED_WALLET_ADJECTIVE_SET = new Set(SERVER_ALLOCATED_WALLET_ADJECTIVES);
|
|
1851
1892
|
var SERVER_ALLOCATED_WALLET_NOUN_SET = new Set(SERVER_ALLOCATED_WALLET_NOUNS);
|
|
1852
1893
|
|
|
1853
|
-
// ../shared-ts/src/utils/exactRecord.ts
|
|
1854
|
-
var SECRET_BEARING_FIELD_SUBSTRINGS = [
|
|
1855
|
-
"prf",
|
|
1856
|
-
"kek",
|
|
1857
|
-
"seed",
|
|
1858
|
-
"scalar",
|
|
1859
|
-
"secretkey",
|
|
1860
|
-
"privatekey",
|
|
1861
|
-
"plaintext",
|
|
1862
|
-
"recoverycode",
|
|
1863
|
-
"clientroot",
|
|
1864
|
-
"holdershare"
|
|
1865
|
-
];
|
|
1866
|
-
function rejectUnknownFields(record, allowed, label, knownOnOtherBranches = []) {
|
|
1867
|
-
const allowedSet = new Set(allowed);
|
|
1868
|
-
const knownSet = new Set(knownOnOtherBranches);
|
|
1869
|
-
for (const field of Object.keys(record)) {
|
|
1870
|
-
if (allowedSet.has(field))
|
|
1871
|
-
continue;
|
|
1872
|
-
if (knownSet.has(field)) {
|
|
1873
|
-
throw new Error(`${label}.${field} is not part of ${label}`);
|
|
1874
|
-
}
|
|
1875
|
-
const normalized = field.toLowerCase().replace(/_/g, "");
|
|
1876
|
-
const namesAPublicKey = normalized.includes("publickey");
|
|
1877
|
-
if (!namesAPublicKey && SECRET_BEARING_FIELD_SUBSTRINGS.some((substring) => normalized.includes(substring))) {
|
|
1878
|
-
throw new Error(`${label}.${field} must never carry plaintext custody material`);
|
|
1879
|
-
}
|
|
1880
|
-
throw new Error(`${label}.${field} is not part of ${label}`);
|
|
1881
|
-
}
|
|
1882
|
-
}
|
|
1883
|
-
function exactRecord(raw, fields, label) {
|
|
1884
|
-
const record = requireRecord(raw, label);
|
|
1885
|
-
rejectUnknownFields(record, fields, label);
|
|
1886
|
-
for (const field of fields) {
|
|
1887
|
-
if (!Object.prototype.hasOwnProperty.call(record, field) || record[field] === undefined) {
|
|
1888
|
-
throw new Error(`${label}.${field} is required`);
|
|
1889
|
-
}
|
|
1890
|
-
}
|
|
1891
|
-
return record;
|
|
1892
|
-
}
|
|
1893
|
-
|
|
1894
1894
|
// ../shared-ts/src/passkey-custody/custodySecretBinding.ts
|
|
1895
1895
|
var LANE_SCOPE_FIELDS = ["kind", "walletKeyId", "laneId", "laneShareEpoch"];
|
|
1896
1896
|
var ALLOWED_FIELDS_BY_KIND = {
|
|
@@ -1928,7 +1928,8 @@ var EMAIL_OTP_FACTOR_FIELDS = [
|
|
|
1928
1928
|
"enrollmentSealKeyVersion",
|
|
1929
1929
|
"kekVersion"
|
|
1930
1930
|
];
|
|
1931
|
-
var
|
|
1931
|
+
var VOICEID_FACTOR_FIELDS = ["kind", "deviceKeyId", "kekVersion"];
|
|
1932
|
+
var ALL_FACTOR_FIELDS = Array.from(new Set([...PASSKEY_FACTOR_FIELDS, ...EMAIL_OTP_FACTOR_FIELDS, ...VOICEID_FACTOR_FIELDS]));
|
|
1932
1933
|
// ../shared-ts/src/passkey-custody/ceremonyCommitPayload.ts
|
|
1933
1934
|
function parseWalletCustodyGeneratedString(value, label) {
|
|
1934
1935
|
if (typeof value !== "string") {
|
|
@@ -5262,7 +5263,8 @@ var EMAIL_OTP_CHANNEL = "email_otp";
|
|
|
5262
5263
|
// ../shared-ts/src/utils/signerDomain.ts
|
|
5263
5264
|
var WALLET_AUTH_METHODS = {
|
|
5264
5265
|
passkey: "passkey",
|
|
5265
|
-
emailOtp: EMAIL_OTP_CHANNEL
|
|
5266
|
+
emailOtp: EMAIL_OTP_CHANNEL,
|
|
5267
|
+
voiceId: "voiceid"
|
|
5266
5268
|
};
|
|
5267
5269
|
var WALLET_AUTH_METHOD_VALUES = Object.values(WALLET_AUTH_METHODS);
|
|
5268
5270
|
|
|
@@ -919,6 +919,7 @@ function parsePasskeyCustodySecretBinding(raw, label = "passkeyCustodySecretBind
|
|
|
919
919
|
var WALLET_CUSTODY_ENVELOPE_VERSION_V2 = "wallet_custody_envelope_v2";
|
|
920
920
|
var PASSKEY_PRF_KEK_VERSION_V1 = "passkey_prf_kek_hkdf_sha256_v1";
|
|
921
921
|
var EMAIL_OTP_FACTOR_KEK_VERSION_V1 = "email_otp_factor_kek_hkdf_sha256_v1";
|
|
922
|
+
var VOICEID_DEVICE_FACTOR_KEK_VERSION_V1 = "voiceid_device_factor_kek_hkdf_sha256_v1";
|
|
922
923
|
var ENVELOPE_OWNERSHIP_FIELDS = ["kind", "walletAuthMethodId"];
|
|
923
924
|
function parseWalletCustodyEnvelopeOwnership(raw, label) {
|
|
924
925
|
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
@@ -979,6 +980,13 @@ function buildEmailOtpEnvelopeFactor(args) {
|
|
|
979
980
|
kekVersion: EMAIL_OTP_FACTOR_KEK_VERSION_V1
|
|
980
981
|
};
|
|
981
982
|
}
|
|
983
|
+
function buildVoiceIdEnvelopeFactor(args) {
|
|
984
|
+
return {
|
|
985
|
+
kind: "voiceid",
|
|
986
|
+
deviceKeyId: args.deviceKeyId,
|
|
987
|
+
kekVersion: VOICEID_DEVICE_FACTOR_KEK_VERSION_V1
|
|
988
|
+
};
|
|
989
|
+
}
|
|
982
990
|
function buildActiveEnvelopeLifecycle(args) {
|
|
983
991
|
return { state: "active", activatedAtMs: args.activatedAtMs };
|
|
984
992
|
}
|
|
@@ -1057,7 +1065,8 @@ var EMAIL_OTP_FACTOR_FIELDS = [
|
|
|
1057
1065
|
"enrollmentSealKeyVersion",
|
|
1058
1066
|
"kekVersion"
|
|
1059
1067
|
];
|
|
1060
|
-
var
|
|
1068
|
+
var VOICEID_FACTOR_FIELDS = ["kind", "deviceKeyId", "kekVersion"];
|
|
1069
|
+
var ALL_FACTOR_FIELDS = Array.from(new Set([...PASSKEY_FACTOR_FIELDS, ...EMAIL_OTP_FACTOR_FIELDS, ...VOICEID_FACTOR_FIELDS]));
|
|
1061
1070
|
function requireNonEmptyString(value, label) {
|
|
1062
1071
|
if (typeof value !== "string" || !value.trim())
|
|
1063
1072
|
throw new Error(`${label} is required`);
|
|
@@ -1093,8 +1102,17 @@ function parseWalletCustodyEnvelopeFactor(raw, label = "factor") {
|
|
|
1093
1102
|
enrollmentSealKeyVersion: requireNonEmptyString(record.enrollmentSealKeyVersion, `${label}.enrollmentSealKeyVersion`)
|
|
1094
1103
|
});
|
|
1095
1104
|
}
|
|
1105
|
+
case "voiceid": {
|
|
1106
|
+
rejectUnknownFields(record, VOICEID_FACTOR_FIELDS, label, ALL_FACTOR_FIELDS);
|
|
1107
|
+
if (record.kekVersion !== VOICEID_DEVICE_FACTOR_KEK_VERSION_V1) {
|
|
1108
|
+
throw new Error(`${label}.kekVersion must be ${VOICEID_DEVICE_FACTOR_KEK_VERSION_V1}`);
|
|
1109
|
+
}
|
|
1110
|
+
return buildVoiceIdEnvelopeFactor({
|
|
1111
|
+
deviceKeyId: parseDigestField(record.deviceKeyId, `${label}.deviceKeyId`)
|
|
1112
|
+
});
|
|
1113
|
+
}
|
|
1096
1114
|
default:
|
|
1097
|
-
throw new Error(`${label}.kind must be passkey or
|
|
1115
|
+
throw new Error(`${label}.kind must be passkey, email_otp, or voiceid`);
|
|
1098
1116
|
}
|
|
1099
1117
|
}
|
|
1100
1118
|
var ENVELOPE_RECORD_FIELDS = [
|
|
@@ -5220,6 +5238,17 @@ function requireRouterAbEcdsaDerivationNormalSigningStateV1(value) {
|
|
|
5220
5238
|
return parsed;
|
|
5221
5239
|
}
|
|
5222
5240
|
|
|
5241
|
+
// ../shared-ts/src/authorization/voiceIdDeviceAssertion.ts
|
|
5242
|
+
function parseVoiceIdDevicePublicKeyB64u(value) {
|
|
5243
|
+
if (typeof value !== "string")
|
|
5244
|
+
throw new Error("VoiceID public key is invalid");
|
|
5245
|
+
const bytes = base64UrlDecode(value);
|
|
5246
|
+
if (bytes.length !== 32 || base64UrlEncode(bytes) !== value) {
|
|
5247
|
+
throw new Error("VoiceID public key must be canonical Ed25519 bytes");
|
|
5248
|
+
}
|
|
5249
|
+
return value;
|
|
5250
|
+
}
|
|
5251
|
+
|
|
5223
5252
|
// ../shared-ts/src/utils/registrationAuthMethodInput.ts
|
|
5224
5253
|
function inspectRawObject(value) {
|
|
5225
5254
|
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
@@ -5237,7 +5266,7 @@ function parseWalletAuthMethodRecordV2(raw) {
|
|
|
5237
5266
|
const version = trimString(record.version);
|
|
5238
5267
|
const kind = trimString(record.kind);
|
|
5239
5268
|
const status = trimString(record.status);
|
|
5240
|
-
if (version !== "wallet_auth_method_v2" || kind !== "passkey" && kind !== "email_otp") {
|
|
5269
|
+
if (version !== "wallet_auth_method_v2" || kind !== "passkey" && kind !== "email_otp" && kind !== "voiceid") {
|
|
5241
5270
|
return null;
|
|
5242
5271
|
}
|
|
5243
5272
|
try {
|
|
@@ -5261,6 +5290,17 @@ function parseWalletAuthMethodRecordV2(raw) {
|
|
|
5261
5290
|
counter: parseNonNegativeInteger(record.counter)
|
|
5262
5291
|
});
|
|
5263
5292
|
}
|
|
5293
|
+
if (kind === "voiceid") {
|
|
5294
|
+
if (!("deviceKeyId" in record) || !("devicePublicKeyB64u" in record))
|
|
5295
|
+
return null;
|
|
5296
|
+
exactWalletAuthMethodV2Fields(record, "voiceid", status);
|
|
5297
|
+
return buildParsedVoiceIdWalletAuthMethodRecordV2({
|
|
5298
|
+
common,
|
|
5299
|
+
lifecycle: parseWalletAuthMethodLifecycle(record),
|
|
5300
|
+
deviceKeyId: parseDigestB64u(record.deviceKeyId),
|
|
5301
|
+
devicePublicKeyB64u: parseVoiceIdDevicePublicKeyB64u(record.devicePublicKeyB64u)
|
|
5302
|
+
});
|
|
5303
|
+
}
|
|
5264
5304
|
if (!("emailHashHex" in record) || !("registrationAuthorityId" in record))
|
|
5265
5305
|
return null;
|
|
5266
5306
|
exactWalletAuthMethodV2Fields(record, "email_otp", status);
|
|
@@ -5337,8 +5377,10 @@ function exactWalletAuthMethodV2Fields(raw, kind, status) {
|
|
|
5337
5377
|
];
|
|
5338
5378
|
if (kind === "passkey") {
|
|
5339
5379
|
fields.push("rpId", "credentialIdB64u", "credentialPublicKeyB64u", "counter");
|
|
5340
|
-
} else {
|
|
5380
|
+
} else if (kind === "email_otp") {
|
|
5341
5381
|
fields.push("emailHashHex", "registrationAuthorityId");
|
|
5382
|
+
} else {
|
|
5383
|
+
fields.push("deviceKeyId", "devicePublicKeyB64u");
|
|
5342
5384
|
}
|
|
5343
5385
|
if (status === "active")
|
|
5344
5386
|
fields.push("activatedAtMs");
|
|
@@ -5454,6 +5496,52 @@ function buildParsedEmailOtpWalletAuthMethodRecordV2(input) {
|
|
|
5454
5496
|
};
|
|
5455
5497
|
}
|
|
5456
5498
|
}
|
|
5499
|
+
function buildParsedVoiceIdWalletAuthMethodRecordV2(input) {
|
|
5500
|
+
switch (input.lifecycle.status) {
|
|
5501
|
+
case "pending_local_install":
|
|
5502
|
+
return {
|
|
5503
|
+
version: "wallet_auth_method_v2",
|
|
5504
|
+
walletAuthMethodId: input.common.walletAuthMethodId,
|
|
5505
|
+
walletId: input.common.walletId,
|
|
5506
|
+
walletAuthorityId: input.common.walletAuthorityId,
|
|
5507
|
+
kind: "voiceid",
|
|
5508
|
+
status: "pending_local_install",
|
|
5509
|
+
createdAtMs: input.common.createdAtMs,
|
|
5510
|
+
updatedAtMs: input.common.updatedAtMs,
|
|
5511
|
+
deviceKeyId: input.deviceKeyId,
|
|
5512
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u
|
|
5513
|
+
};
|
|
5514
|
+
case "active":
|
|
5515
|
+
return {
|
|
5516
|
+
version: "wallet_auth_method_v2",
|
|
5517
|
+
walletAuthMethodId: input.common.walletAuthMethodId,
|
|
5518
|
+
walletId: input.common.walletId,
|
|
5519
|
+
walletAuthorityId: input.common.walletAuthorityId,
|
|
5520
|
+
kind: "voiceid",
|
|
5521
|
+
status: "active",
|
|
5522
|
+
createdAtMs: input.common.createdAtMs,
|
|
5523
|
+
updatedAtMs: input.common.updatedAtMs,
|
|
5524
|
+
deviceKeyId: input.deviceKeyId,
|
|
5525
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u,
|
|
5526
|
+
activatedAtMs: input.lifecycle.activatedAtMs
|
|
5527
|
+
};
|
|
5528
|
+
case "revoked":
|
|
5529
|
+
return {
|
|
5530
|
+
version: "wallet_auth_method_v2",
|
|
5531
|
+
walletAuthMethodId: input.common.walletAuthMethodId,
|
|
5532
|
+
walletId: input.common.walletId,
|
|
5533
|
+
walletAuthorityId: input.common.walletAuthorityId,
|
|
5534
|
+
kind: "voiceid",
|
|
5535
|
+
status: "revoked",
|
|
5536
|
+
createdAtMs: input.common.createdAtMs,
|
|
5537
|
+
updatedAtMs: input.common.updatedAtMs,
|
|
5538
|
+
deviceKeyId: input.deviceKeyId,
|
|
5539
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u,
|
|
5540
|
+
activatedAtMs: input.lifecycle.activatedAtMs,
|
|
5541
|
+
revokedAtMs: input.lifecycle.revokedAtMs
|
|
5542
|
+
};
|
|
5543
|
+
}
|
|
5544
|
+
}
|
|
5457
5545
|
function parseWalletAuthMethodIdRequired(raw) {
|
|
5458
5546
|
const parsed = parseWalletAuthMethodId(raw);
|
|
5459
5547
|
if (!parsed.ok)
|
|
@@ -6317,6 +6405,7 @@ function normalizeThresholdEd25519ParticipantIds(input) {
|
|
|
6317
6405
|
|
|
6318
6406
|
// ../shared-ts/src/threshold/sessionPolicy.ts
|
|
6319
6407
|
var DEFAULT_WALLET_SESSION_TTL_MS = 24 * 60 * 60000;
|
|
6408
|
+
var LINKED_DEVICE_WALLET_SESSION_TTL_MS = 15 * 60 * 1000;
|
|
6320
6409
|
var MAX_WALLET_SESSION_TTL_MS = 30 * 24 * 60 * 60000;
|
|
6321
6410
|
|
|
6322
6411
|
// src/core/signingEngine/threshold/sessionPolicy.ts
|
|
@@ -3373,6 +3373,7 @@ function yaoRoutingHeaders(routing) {
|
|
|
3373
3373
|
|
|
3374
3374
|
// ../shared-ts/src/threshold/sessionPolicy.ts
|
|
3375
3375
|
var DEFAULT_WALLET_SESSION_TTL_MS = 24 * 60 * 60000;
|
|
3376
|
+
var LINKED_DEVICE_WALLET_SESSION_TTL_MS = 15 * 60 * 1000;
|
|
3376
3377
|
var MAX_WALLET_SESSION_TTL_MS = 30 * 24 * 60 * 60000;
|
|
3377
3378
|
|
|
3378
3379
|
// ../shared-ts/src/threshold/signingRootScope.ts
|
|
@@ -4034,6 +4035,7 @@ function parsePasskeyCustodySecretBinding(raw, label = "passkeyCustodySecretBind
|
|
|
4034
4035
|
var WALLET_CUSTODY_ENVELOPE_VERSION_V2 = "wallet_custody_envelope_v2";
|
|
4035
4036
|
var PASSKEY_PRF_KEK_VERSION_V1 = "passkey_prf_kek_hkdf_sha256_v1";
|
|
4036
4037
|
var EMAIL_OTP_FACTOR_KEK_VERSION_V1 = "email_otp_factor_kek_hkdf_sha256_v1";
|
|
4038
|
+
var VOICEID_DEVICE_FACTOR_KEK_VERSION_V1 = "voiceid_device_factor_kek_hkdf_sha256_v1";
|
|
4037
4039
|
var ENVELOPE_OWNERSHIP_FIELDS = ["kind", "walletAuthMethodId"];
|
|
4038
4040
|
function parseWalletCustodyEnvelopeOwnership(raw, label) {
|
|
4039
4041
|
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
@@ -4094,6 +4096,13 @@ function buildEmailOtpEnvelopeFactor(args) {
|
|
|
4094
4096
|
kekVersion: EMAIL_OTP_FACTOR_KEK_VERSION_V1
|
|
4095
4097
|
};
|
|
4096
4098
|
}
|
|
4099
|
+
function buildVoiceIdEnvelopeFactor(args) {
|
|
4100
|
+
return {
|
|
4101
|
+
kind: "voiceid",
|
|
4102
|
+
deviceKeyId: args.deviceKeyId,
|
|
4103
|
+
kekVersion: VOICEID_DEVICE_FACTOR_KEK_VERSION_V1
|
|
4104
|
+
};
|
|
4105
|
+
}
|
|
4097
4106
|
function buildActiveEnvelopeLifecycle(args) {
|
|
4098
4107
|
return { state: "active", activatedAtMs: args.activatedAtMs };
|
|
4099
4108
|
}
|
|
@@ -4172,7 +4181,8 @@ var EMAIL_OTP_FACTOR_FIELDS = [
|
|
|
4172
4181
|
"enrollmentSealKeyVersion",
|
|
4173
4182
|
"kekVersion"
|
|
4174
4183
|
];
|
|
4175
|
-
var
|
|
4184
|
+
var VOICEID_FACTOR_FIELDS = ["kind", "deviceKeyId", "kekVersion"];
|
|
4185
|
+
var ALL_FACTOR_FIELDS = Array.from(new Set([...PASSKEY_FACTOR_FIELDS, ...EMAIL_OTP_FACTOR_FIELDS, ...VOICEID_FACTOR_FIELDS]));
|
|
4176
4186
|
function requireNonEmptyString(value, label) {
|
|
4177
4187
|
if (typeof value !== "string" || !value.trim())
|
|
4178
4188
|
throw new Error(`${label} is required`);
|
|
@@ -4208,8 +4218,17 @@ function parseWalletCustodyEnvelopeFactor(raw, label = "factor") {
|
|
|
4208
4218
|
enrollmentSealKeyVersion: requireNonEmptyString(record.enrollmentSealKeyVersion, `${label}.enrollmentSealKeyVersion`)
|
|
4209
4219
|
});
|
|
4210
4220
|
}
|
|
4221
|
+
case "voiceid": {
|
|
4222
|
+
rejectUnknownFields(record, VOICEID_FACTOR_FIELDS, label, ALL_FACTOR_FIELDS);
|
|
4223
|
+
if (record.kekVersion !== VOICEID_DEVICE_FACTOR_KEK_VERSION_V1) {
|
|
4224
|
+
throw new Error(`${label}.kekVersion must be ${VOICEID_DEVICE_FACTOR_KEK_VERSION_V1}`);
|
|
4225
|
+
}
|
|
4226
|
+
return buildVoiceIdEnvelopeFactor({
|
|
4227
|
+
deviceKeyId: parseDigestField(record.deviceKeyId, `${label}.deviceKeyId`)
|
|
4228
|
+
});
|
|
4229
|
+
}
|
|
4211
4230
|
default:
|
|
4212
|
-
throw new Error(`${label}.kind must be passkey or
|
|
4231
|
+
throw new Error(`${label}.kind must be passkey, email_otp, or voiceid`);
|
|
4213
4232
|
}
|
|
4214
4233
|
}
|
|
4215
4234
|
var ENVELOPE_RECORD_FIELDS = [
|
|
Binary file
|