@onekeyfe/hd-core 1.2.0-alpha.11 → 1.2.0-alpha.111
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/__tests__/AllNetworkGetAddressBase.tracing.test.ts +390 -0
- package/__tests__/DeviceCommands.test.ts +652 -0
- package/__tests__/DeviceEventRegistration.test.ts +49 -0
- package/__tests__/base64Data.test.ts +70 -0
- package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
- package/__tests__/check-all-firmware-release-protocol-v2.test.ts +830 -0
- package/__tests__/check-firmware-release-protocol-v2.test.ts +270 -0
- package/__tests__/connectSettings.test.ts +45 -5
- package/__tests__/core-dispose.test.ts +34 -0
- package/__tests__/core-error-output.test.ts +39 -0
- package/__tests__/core-initialization.test.ts +23 -0
- package/__tests__/device-connector-protocol.test.ts +81 -0
- package/__tests__/device-features-state.test.ts +78 -0
- package/__tests__/device-identity.test.ts +52 -0
- package/__tests__/device-initialize-timeout.test.ts +56 -0
- package/__tests__/device-lifecycle-events.test.ts +462 -0
- package/__tests__/device-pool-state.test.ts +191 -0
- package/__tests__/device-settings.test.ts +437 -0
- package/__tests__/device-state-contract.test.ts +28 -0
- package/__tests__/device-state-events.test.ts +286 -0
- package/__tests__/device-state-mapper.test.ts +288 -0
- package/__tests__/device-state-projector.test.ts +114 -0
- package/__tests__/device-state-store.test.ts +109 -0
- package/__tests__/device-utils.test.ts +154 -0
- package/__tests__/device-wallet-session-store.test.ts +348 -1
- package/__tests__/deviceFeaturesUtils.test.ts +39 -0
- package/__tests__/devicePoolBootloaderPath.test.ts +64 -0
- package/__tests__/deviceSettings.test.ts +112 -0
- package/__tests__/deviceUploadNft.test.ts +345 -0
- package/__tests__/evmLedgerLegacySafety.test.ts +12 -6
- package/__tests__/evmSignTransaction.test.ts +69 -0
- package/__tests__/evmSignTypedData.test.ts +80 -0
- package/__tests__/filesystemValidation.test.ts +53 -0
- package/__tests__/firmware-memory-host.test.ts +126 -0
- package/__tests__/firmware-update/check-all-firmware-release.test.ts +175 -0
- package/__tests__/firmware-update/device-update-bootloader.test.ts +109 -0
- package/__tests__/firmware-update/firmware-artifact-source.test.ts +171 -0
- package/__tests__/firmware-update/firmware-host-binding.test.ts +79 -0
- package/__tests__/firmware-update/firmware-preparation-error.test.ts +27 -0
- package/__tests__/firmware-update/firmware-prepared-host-digest.test.ts +583 -0
- package/__tests__/firmware-update/firmware-prepared-resource-archive.test.ts +150 -0
- package/__tests__/firmware-update/firmware-update-bootloader-poll.test.ts +375 -0
- package/__tests__/firmware-update/firmware-update-capabilities.test.ts +13 -0
- package/__tests__/firmware-update/firmware-update-plan-bootloader-identity.test.ts +474 -0
- package/__tests__/firmware-update/firmware-update-plan.test.ts +819 -0
- package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +283 -0
- package/__tests__/firmware-update/firmware-update-prepared-resource-executors.test.ts +326 -0
- package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +457 -0
- package/__tests__/firmware-update/firmware-update-v3-reconnect.test.ts +121 -0
- package/__tests__/firmware-update/firmware-update-v4-install-poll.test.ts +178 -0
- package/__tests__/firmware-update/firmware-update-v4-parameters.test.ts +85 -0
- package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
- package/__tests__/get-device-state.test.ts +617 -0
- package/__tests__/homescreen.test.ts +81 -0
- package/__tests__/kaspa-public-types.type-test.ts +16 -0
- package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
- package/__tests__/kaspaSignTransaction.test.ts +578 -0
- package/__tests__/known-device-public-types.type-test.ts +3 -0
- package/__tests__/logBlockEvent.test.ts +140 -1
- package/__tests__/method-protocol-support.test.ts +144 -0
- package/__tests__/networkUtils.test.ts +406 -0
- package/__tests__/open-wallet-session-error-response.test.ts +43 -0
- package/__tests__/open-wallet-session.test.ts +1899 -0
- package/__tests__/pro2Nft.test.ts +108 -0
- package/__tests__/pro2Wallpaper.test.ts +8 -19
- package/__tests__/protocol-binding.test.ts +89 -0
- package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
- package/__tests__/protocol-v2-firmware-targets.test.ts +105 -0
- package/__tests__/protocol-v2-ping.test.ts +28 -0
- package/__tests__/protocol-v2-resources.test.ts +270 -0
- package/__tests__/protocol-v2-ui-lifecycle.test.ts +91 -0
- package/__tests__/protocol-v2-unlock-policy.test.ts +308 -0
- package/__tests__/protocol-v2.test.ts +7490 -2020
- package/__tests__/protocolV2FileWrite.test.ts +285 -0
- package/__tests__/protocolV2UiInteraction.test.ts +329 -0
- package/__tests__/public-device-state-api.test.ts +275 -0
- package/__tests__/public-pro2-api-boundary.test.ts +107 -0
- package/__tests__/refresh-device-state.test.ts +103 -0
- package/__tests__/request-context-logging.test.ts +16 -0
- package/__tests__/resourceBase64Boundary.test.ts +48 -0
- package/__tests__/search-devices.test.ts +151 -0
- package/__tests__/ton-sign-message.test.ts +84 -0
- package/__tests__/tron-sign-message-init.test.ts +74 -0
- package/__tests__/uiProgressThrottle.test.ts +74 -0
- package/__tests__/uiPromiseRegistry.test.ts +115 -0
- package/dist/api/BaseMethod.d.ts +13 -2
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts +25 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CheckBLEFirmwareRelease.d.ts +3 -2
- package/dist/api/CheckBLEFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CheckBootloaderRelease.d.ts +2 -1
- package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
- package/dist/api/CheckFirmwareRelease.d.ts +3 -2
- package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CipherKeyValue.d.ts +1 -0
- package/dist/api/CipherKeyValue.d.ts.map +1 -1
- package/dist/api/ClearSessionCache.d.ts.map +1 -1
- package/dist/api/DetectDeviceConnectProtocol.d.ts +7 -0
- package/dist/api/DetectDeviceConnectProtocol.d.ts.map +1 -0
- package/dist/api/DirList.d.ts +1 -0
- package/dist/api/DirList.d.ts.map +1 -1
- package/dist/api/DirMake.d.ts +1 -0
- package/dist/api/DirMake.d.ts.map +1 -1
- package/dist/api/DirRemove.d.ts +1 -0
- package/dist/api/DirRemove.d.ts.map +1 -1
- package/dist/api/FileDelete.d.ts +1 -0
- package/dist/api/FileDelete.d.ts.map +1 -1
- package/dist/api/FileRead.d.ts +1 -0
- package/dist/api/FileRead.d.ts.map +1 -1
- package/dist/api/FileWrite.d.ts +2 -0
- package/dist/api/FileWrite.d.ts.map +1 -1
- package/dist/api/FirmwareUpdate.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV2.d.ts +13 -2
- package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV3.d.ts +7 -3
- package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV4.d.ts +59 -12
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/GetDeviceState.d.ts +8 -0
- package/dist/api/GetDeviceState.d.ts.map +1 -0
- package/dist/api/GetFeatures.d.ts +1 -1
- package/dist/api/GetFeatures.d.ts.map +1 -1
- package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
- package/dist/api/GetPassphraseState.d.ts +1 -0
- package/dist/api/GetPassphraseState.d.ts.map +1 -1
- package/dist/api/OpenWalletSession.d.ts +8 -0
- package/dist/api/OpenWalletSession.d.ts.map +1 -0
- package/dist/api/PathInfo.d.ts +1 -0
- package/dist/api/PathInfo.d.ts.map +1 -1
- package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
- package/dist/api/SearchDevices.d.ts +3 -0
- package/dist/api/SearchDevices.d.ts.map +1 -1
- package/dist/api/UploadPortfolio.d.ts +1 -2
- package/dist/api/UploadPortfolio.d.ts.map +1 -1
- package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
- package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
- package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
- package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
- package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
- package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
- package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
- package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
- package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
- package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
- package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
- package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
- package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
- package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
- package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
- package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
- package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
- package/dist/api/btc/BTCGetAddress.d.ts +1 -0
- package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
- package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
- package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
- package/dist/api/btc/BTCSignMessage.d.ts +1 -0
- package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
- package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
- package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
- package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
- package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
- package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
- package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
- package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
- package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
- package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
- package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
- package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
- package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
- package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
- package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
- package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
- package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
- package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
- package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
- package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
- package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
- package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
- package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
- package/dist/api/device/DeviceCancel.d.ts +1 -0
- package/dist/api/device/DeviceCancel.d.ts.map +1 -1
- package/dist/api/device/DeviceChangePin.d.ts +1 -0
- package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
- package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
- package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
- package/dist/api/device/DeviceLock.d.ts +1 -0
- package/dist/api/device/DeviceLock.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
- package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
- package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceSettings.d.ts +1 -0
- package/dist/api/device/DeviceSettings.d.ts.map +1 -1
- package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
- package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
- package/dist/api/device/DeviceUnlock.d.ts +3 -2
- package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
- package/dist/api/device/DeviceUpdateBootloader.d.ts +5 -1
- package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceWipe.d.ts +1 -0
- package/dist/api/device/DeviceWipe.d.ts.map +1 -1
- package/dist/api/device/PreInitialize.d.ts +1 -0
- package/dist/api/device/PreInitialize.d.ts.map +1 -1
- package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
- package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
- package/dist/api/evm/EVMGetAddress.d.ts +1 -0
- package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
- package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
- package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
- package/dist/api/evm/EVMSignMessage.d.ts +1 -0
- package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
- package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
- package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
- package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
- package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
- package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
- package/dist/api/evm/protocol.d.ts +3 -0
- package/dist/api/evm/protocol.d.ts.map +1 -0
- package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
- package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
- package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
- package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareArtifactSource.d.ts +29 -0
- package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -0
- package/dist/api/firmware/FirmwareHostBinding.d.ts +6 -0
- package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -0
- package/dist/api/firmware/FirmwareMemoryHost.d.ts +22 -0
- package/dist/api/firmware/FirmwareMemoryHost.d.ts.map +1 -0
- package/dist/api/firmware/FirmwarePreparationError.d.ts +3 -0
- package/dist/api/firmware/FirmwarePreparationError.d.ts.map +1 -0
- package/dist/api/firmware/FirmwarePreparedResourceArchive.d.ts +11 -0
- package/dist/api/firmware/FirmwarePreparedResourceArchive.d.ts.map +1 -0
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +12 -3
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +3 -0
- package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +1 -0
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts +72 -0
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
- package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +38 -0
- package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
- package/dist/api/firmware/getBinary.d.ts +14 -4
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- package/dist/api/firmware/protocolV2Release.d.ts +33 -0
- package/dist/api/firmware/protocolV2Release.d.ts.map +1 -0
- package/dist/api/firmware/updateBootloader.d.ts +2 -0
- package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
- package/dist/api/firmware/uploadFirmware.d.ts +9 -1
- package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
- package/dist/api/helpers/base64Data.d.ts +16 -0
- package/dist/api/helpers/base64Data.d.ts.map +1 -0
- package/dist/api/helpers/filesystemValidation.d.ts +3 -0
- package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
- package/dist/api/helpers/paramsValidator.d.ts +1 -0
- package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
- package/dist/api/helpers/protocolV2FileWrite.d.ts +43 -0
- package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
- package/dist/api/index.d.ts +6 -30
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
- package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
- package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
- package/dist/api/lightning/LnurlAuth.d.ts +0 -4
- package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
- package/dist/api/near/NearGetAddress.d.ts +1 -0
- package/dist/api/near/NearGetAddress.d.ts.map +1 -1
- package/dist/api/near/NearSignTransaction.d.ts +1 -0
- package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
- package/dist/api/nem/NEMGetAddress.d.ts +1 -0
- package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
- package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
- package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
- package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
- package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
- package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
- package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
- package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
- package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
- package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
- package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
- package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
- package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
- package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
- package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
- package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
- package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
- package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
- package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
- package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
- package/dist/api/polkadot/PolkadotGetAddress.d.ts +2 -1
- package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
- package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
- package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
- package/dist/api/polkadot/networks.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +7 -0
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts +30 -0
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +3 -3
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -1
- package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
- package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
- package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
- package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
- package/dist/api/protocol-v2/Ping.d.ts +3 -0
- package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
- package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
- package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
- package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
- package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
- package/dist/api/solana/SolGetAddress.d.ts +1 -0
- package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
- package/dist/api/solana/SolSignMessage.d.ts +2 -1
- package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
- package/dist/api/solana/SolSignOffchainMessage.d.ts +2 -1
- package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
- package/dist/api/solana/SolSignTransaction.d.ts +3 -2
- package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
- package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
- package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
- package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
- package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
- package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
- package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
- package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
- package/dist/api/stellar/StellarSignTransaction.d.ts +2 -3
- package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
- package/dist/api/sui/SuiGetAddress.d.ts +2 -1
- package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
- package/dist/api/sui/SuiGetPublicKey.d.ts +2 -1
- package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
- package/dist/api/sui/SuiSignMessage.d.ts +2 -1
- package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
- package/dist/api/sui/SuiSignTransaction.d.ts +2 -1
- package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
- package/dist/api/ton/TonGetAddress.d.ts +2 -1
- package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
- package/dist/api/ton/TonSignData.d.ts +1 -0
- package/dist/api/ton/TonSignData.d.ts.map +1 -1
- package/dist/api/ton/TonSignMessage.d.ts +2 -1
- package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
- package/dist/api/ton/TonSignProof.d.ts +2 -1
- package/dist/api/ton/TonSignProof.d.ts.map +1 -1
- package/dist/api/tron/TronGetAddress.d.ts +1 -0
- package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
- package/dist/api/tron/TronSignMessage.d.ts +6 -1
- package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
- package/dist/api/tron/TronSignTransaction.d.ts +2 -1
- package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
- package/dist/api/utils.d.ts +4 -1
- package/dist/api/utils.d.ts.map +1 -1
- package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
- package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
- package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
- package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/core/RequestQueue.d.ts +0 -2
- package/dist/core/RequestQueue.d.ts.map +1 -1
- package/dist/core/deviceEventRegistration.d.ts +13 -0
- package/dist/core/deviceEventRegistration.d.ts.map +1 -0
- package/dist/core/index.d.ts +3 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/uiPromiseRegistry.d.ts +6 -0
- package/dist/core/uiPromiseRegistry.d.ts.map +1 -0
- package/dist/data-manager/DataManager.d.ts +11 -3
- package/dist/data-manager/DataManager.d.ts.map +1 -1
- package/dist/data-manager/TransportManager.d.ts.map +1 -1
- package/dist/data-manager/connectSettings.d.ts.map +1 -1
- package/dist/device/Device.d.ts +76 -16
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/device/DeviceCommands.d.ts +8 -6
- package/dist/device/DeviceCommands.d.ts.map +1 -1
- package/dist/device/DeviceConnector.d.ts +4 -3
- package/dist/device/DeviceConnector.d.ts.map +1 -1
- package/dist/device/DeviceFeaturesState.d.ts +3 -0
- package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
- package/dist/device/DevicePool.d.ts +6 -2
- package/dist/device/DevicePool.d.ts.map +1 -1
- package/dist/device/DeviceStateMapper.d.ts +13 -0
- package/dist/device/DeviceStateMapper.d.ts.map +1 -0
- package/dist/device/DeviceStateProjector.d.ts +7 -0
- package/dist/device/DeviceStateProjector.d.ts.map +1 -0
- package/dist/device/DeviceStateStore.d.ts +21 -0
- package/dist/device/DeviceStateStore.d.ts.map +1 -0
- package/dist/device/DeviceWalletSessionStore.d.ts +13 -1
- package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -1
- package/dist/device/cloneDeviceState.d.ts +2 -0
- package/dist/device/cloneDeviceState.d.ts.map +1 -0
- package/dist/device/deviceIdentity.d.ts +5 -0
- package/dist/device/deviceIdentity.d.ts.map +1 -0
- package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
- package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
- package/dist/deviceProfile/index.d.ts +0 -1
- package/dist/deviceProfile/index.d.ts.map +1 -1
- package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts +7 -0
- package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -0
- package/dist/events/call.d.ts +0 -7
- package/dist/events/call.d.ts.map +1 -1
- package/dist/events/core.d.ts +2 -2
- package/dist/events/core.d.ts.map +1 -1
- package/dist/events/device.d.ts +16 -2
- package/dist/events/device.d.ts.map +1 -1
- package/dist/events/iframe.d.ts +0 -1
- package/dist/events/iframe.d.ts.map +1 -1
- package/dist/events/logBlockEvent.d.ts +2 -0
- package/dist/events/logBlockEvent.d.ts.map +1 -1
- package/dist/events/ui-promise.d.ts +4 -2
- package/dist/events/ui-promise.d.ts.map +1 -1
- package/dist/events/ui-request.d.ts +50 -4
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/events/ui-response.d.ts +10 -2
- package/dist/events/ui-response.d.ts.map +1 -1
- package/dist/index.d.ts +1779 -835
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12322 -5031
- package/dist/inject.d.ts +7 -3
- package/dist/inject.d.ts.map +1 -1
- package/dist/lowLevelInject.d.ts +1 -2
- package/dist/lowLevelInject.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
- package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/features.d.ts +29 -17
- package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/index.d.ts +2 -2
- package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/resources.d.ts +12 -0
- package/dist/protocols/protocol-v2/resources.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +17 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts +42 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/unlockPolicy.d.ts +2 -0
- package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +22 -0
- package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts +18 -4
- package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -1
- package/dist/topLevelInject.d.ts.map +1 -1
- package/dist/types/api/checkAllFirmwareRelease.d.ts +48 -9
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/checkBLEFirmwareRelease.d.ts +2 -13
- package/dist/types/api/checkBLEFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/checkBootloaderRelease.d.ts +2 -6
- package/dist/types/api/checkBootloaderRelease.d.ts.map +1 -1
- package/dist/types/api/checkFirmwareRelease.d.ts +2 -13
- package/dist/types/api/checkFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/checkFirmwareTypeAvailable.d.ts +2 -2
- package/dist/types/api/checkFirmwareTypeAvailable.d.ts.map +1 -1
- package/dist/types/api/detectDeviceConnectProtocol.d.ts +4 -0
- package/dist/types/api/detectDeviceConnectProtocol.d.ts.map +1 -0
- package/dist/types/api/deviceSettings.d.ts +11 -2
- package/dist/types/api/deviceSettings.d.ts.map +1 -1
- package/dist/types/api/deviceUnlock.d.ts +6 -2
- package/dist/types/api/deviceUnlock.d.ts.map +1 -1
- package/dist/types/api/deviceUpdateBootloader.d.ts +6 -0
- package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
- package/dist/types/api/export.d.ts +8 -3
- package/dist/types/api/export.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +67 -5
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdateCapabilities.d.ts +9 -0
- package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +1 -0
- package/dist/types/api/firmwareUpdatePlan.d.ts +28 -0
- package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -0
- package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +42 -0
- package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +1 -0
- package/dist/types/api/getDeviceState.d.ts +12 -0
- package/dist/types/api/getDeviceState.d.ts.map +1 -0
- package/dist/types/api/getFeatures.d.ts.map +1 -1
- package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
- package/dist/types/api/getPassphraseState.d.ts.map +1 -1
- package/dist/types/api/index.d.ts +26 -36
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
- package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
- package/dist/types/api/openWalletSession.d.ts +35 -0
- package/dist/types/api/openWalletSession.d.ts.map +1 -0
- package/dist/types/api/protocolV2.d.ts +11 -96
- package/dist/types/api/protocolV2.d.ts.map +1 -1
- package/dist/types/api/sessionCache.d.ts +4 -1
- package/dist/types/api/sessionCache.d.ts.map +1 -1
- package/dist/types/device.d.ts +142 -10
- package/dist/types/device.d.ts.map +1 -1
- package/dist/types/params.d.ts +1 -0
- package/dist/types/params.d.ts.map +1 -1
- package/dist/types/settings.d.ts +59 -16
- package/dist/types/settings.d.ts.map +1 -1
- package/dist/utils/assets.d.ts +2 -1
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/deviceFeaturesCompat.d.ts +14 -0
- package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
- package/dist/utils/deviceFeaturesUtils.d.ts +10 -1
- package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
- package/dist/utils/deviceInfoUtils.d.ts +9 -9
- package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
- package/dist/utils/deviceSettings.d.ts +38 -7
- package/dist/utils/deviceSettings.d.ts.map +1 -1
- package/dist/utils/deviceVersionUtils.d.ts +7 -5
- package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
- package/dist/utils/homescreen.d.ts +4 -0
- package/dist/utils/homescreen.d.ts.map +1 -1
- package/dist/utils/index.d.ts +5 -4
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/networkUtils.d.ts +10 -1
- package/dist/utils/networkUtils.d.ts.map +1 -1
- package/dist/utils/patch.d.ts +1 -1
- package/dist/utils/patch.d.ts.map +1 -1
- package/dist/utils/pro2Nft.d.ts +38 -0
- package/dist/utils/pro2Nft.d.ts.map +1 -0
- package/dist/utils/pro2Wallpaper.d.ts +10 -0
- package/dist/utils/pro2Wallpaper.d.ts.map +1 -1
- package/dist/utils/tracing.d.ts.map +1 -1
- package/dist/utils/uiProgressThrottle.d.ts +3 -0
- package/dist/utils/uiProgressThrottle.d.ts.map +1 -0
- package/package.json +6 -4
- package/src/api/BaseMethod.ts +38 -23
- package/src/api/CheckAllFirmwareRelease.ts +442 -4
- package/src/api/CheckBLEFirmwareRelease.ts +37 -5
- package/src/api/CheckBootloaderRelease.ts +37 -5
- package/src/api/CheckFirmwareRelease.ts +36 -9
- package/src/api/CipherKeyValue.ts +4 -0
- package/src/api/ClearSessionCache.ts +4 -0
- package/src/api/DetectDeviceConnectProtocol.ts +18 -0
- package/src/api/DirList.ts +9 -4
- package/src/api/DirMake.ts +7 -4
- package/src/api/DirRemove.ts +7 -4
- package/src/api/FileDelete.ts +7 -4
- package/src/api/FileRead.ts +13 -7
- package/src/api/FileWrite.ts +26 -189
- package/src/api/FirmwareUpdate.ts +30 -15
- package/src/api/FirmwareUpdateV2.ts +532 -169
- package/src/api/FirmwareUpdateV3.ts +320 -72
- package/src/api/FirmwareUpdateV4.ts +2331 -657
- package/src/api/GetDeviceState.ts +59 -0
- package/src/api/GetFeatures.ts +6 -4
- package/src/api/GetOnekeyFeatures.ts +1 -75
- package/src/api/GetPassphraseState.ts +36 -12
- package/src/api/OpenWalletSession.ts +268 -0
- package/src/api/PathInfo.ts +9 -4
- package/src/api/PromptWebDeviceAccess.ts +2 -7
- package/src/api/SearchDevices.ts +31 -4
- package/src/api/UploadPortfolio.ts +32 -4
- package/src/api/alephium/AlephiumGetAddress.ts +0 -4
- package/src/api/alephium/AlephiumSignMessage.ts +0 -4
- package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
- package/src/api/algo/AlgoGetAddress.ts +4 -0
- package/src/api/algo/AlgoSignTransaction.ts +4 -0
- package/src/api/allnetwork/AllNetworkGetAddress.ts +21 -21
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +45 -32
- package/src/api/aptos/AptosGetAddress.ts +4 -0
- package/src/api/aptos/AptosGetPublicKey.ts +4 -0
- package/src/api/aptos/AptosSignInMessage.ts +4 -0
- package/src/api/aptos/AptosSignMessage.ts +4 -0
- package/src/api/aptos/AptosSignTransaction.ts +4 -0
- package/src/api/benfen/BenfenGetAddress.ts +11 -7
- package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
- package/src/api/benfen/BenfenSignMessage.ts +0 -4
- package/src/api/benfen/BenfenSignTransaction.ts +0 -4
- package/src/api/btc/BTCGetAddress.ts +8 -1
- package/src/api/btc/BTCGetPublicKey.ts +9 -2
- package/src/api/btc/BTCSignMessage.ts +8 -1
- package/src/api/btc/BTCSignPsbt.ts +4 -0
- package/src/api/btc/BTCSignTransaction.ts +8 -1
- package/src/api/btc/BTCVerifyMessage.ts +8 -1
- package/src/api/btc/helpers/versionLimit.ts +7 -4
- package/src/api/cardano/CardanoGetAddress.ts +4 -0
- package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
- package/src/api/cardano/CardanoSignMessage.ts +5 -1
- package/src/api/cardano/CardanoSignTransaction.ts +5 -1
- package/src/api/conflux/ConfluxGetAddress.ts +6 -0
- package/src/api/conflux/ConfluxSignMessage.ts +6 -0
- package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
- package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
- package/src/api/cosmos/CosmosGetAddress.ts +4 -0
- package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
- package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
- package/src/api/device/DeviceCancel.ts +5 -0
- package/src/api/device/DeviceChangePin.ts +28 -0
- package/src/api/device/DeviceFullyUploadResource.ts +4 -5
- package/src/api/device/DeviceLock.ts +5 -0
- package/src/api/device/DeviceRebootToBoardloader.ts +5 -0
- package/src/api/device/DeviceRebootToBootloader.ts +5 -0
- package/src/api/device/DeviceSettings.ts +195 -1
- package/src/api/device/DeviceSupportFeatures.ts +4 -0
- package/src/api/device/DeviceUnlock.ts +21 -3
- package/src/api/device/DeviceUpdateBootloader.ts +152 -8
- package/src/api/device/DeviceWipe.ts +25 -0
- package/src/api/device/PreInitialize.ts +4 -0
- package/src/api/dynex/DnxGetAddress.ts +0 -6
- package/src/api/dynex/DnxSignTransaction.ts +0 -6
- package/src/api/evm/EVMGetAddress.ts +6 -2
- package/src/api/evm/EVMGetPublicKey.ts +6 -2
- package/src/api/evm/EVMSignMessage.ts +6 -2
- package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
- package/src/api/evm/EVMSignTransaction.ts +6 -2
- package/src/api/evm/EVMSignTypedData.ts +42 -50
- package/src/api/evm/EVMVerifyMessage.ts +6 -2
- package/src/api/evm/legacyV1/getAddress.ts +2 -2
- package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
- package/src/api/evm/legacyV1/signMessage.ts +2 -2
- package/src/api/evm/legacyV1/signTypedData.ts +2 -2
- package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
- package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
- package/src/api/evm/protocol.ts +6 -0
- package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
- package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
- package/src/api/firmware/FirmwareArtifactSource.ts +305 -0
- package/src/api/firmware/FirmwareHostBinding.ts +123 -0
- package/src/api/firmware/FirmwareMemoryHost.ts +143 -0
- package/src/api/firmware/FirmwarePreparationError.ts +12 -0
- package/src/api/firmware/FirmwarePreparedResourceArchive.ts +187 -0
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +214 -77
- package/src/api/firmware/FirmwareUpdateCapabilities.ts +9 -0
- package/src/api/firmware/FirmwareUpdatePlan.ts +946 -0
- package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +486 -0
- package/src/api/firmware/getBinary.ts +8 -3
- package/src/api/firmware/protocolV2Release.ts +168 -0
- package/src/api/firmware/updateBootloader.ts +19 -4
- package/src/api/firmware/uploadFirmware.ts +157 -26
- package/src/api/helpers/base64Data.ts +85 -0
- package/src/api/helpers/batchGetPublickeys.ts +2 -2
- package/src/api/helpers/filesystemValidation.ts +61 -0
- package/src/api/helpers/paramsValidator.ts +1 -1
- package/src/api/helpers/protocolV2FileWrite.ts +392 -0
- package/src/api/index.ts +7 -31
- package/src/api/kaspa/KaspaGetAddress.ts +7 -0
- package/src/api/kaspa/KaspaSignTransaction.ts +369 -29
- package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
- package/src/api/lightning/LnurlAuth.ts +0 -4
- package/src/api/near/NearGetAddress.ts +4 -0
- package/src/api/near/NearSignTransaction.ts +4 -0
- package/src/api/nem/NEMGetAddress.ts +4 -0
- package/src/api/nem/NEMSignTransaction.ts +4 -0
- package/src/api/neo/NeoGetAddress.ts +0 -4
- package/src/api/neo/NeoSignTransaction.ts +0 -4
- package/src/api/nervos/NervosGetAddress.ts +0 -4
- package/src/api/nervos/NervosSignTransaction.ts +2 -6
- package/src/api/nexa/NexaGetAddress.ts +0 -4
- package/src/api/nexa/NexaSignTransaction.ts +3 -5
- package/src/api/nostr/NostrDecryptMessage.ts +4 -0
- package/src/api/nostr/NostrEncryptMessage.ts +4 -0
- package/src/api/nostr/NostrGetPublicKey.ts +4 -0
- package/src/api/nostr/NostrSignEvent.ts +4 -0
- package/src/api/nostr/NostrSignSchnorr.ts +4 -0
- package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
- package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
- package/src/api/polkadot/networks.ts +3 -3
- package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +5 -2
- package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +5 -2
- package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +8 -5
- package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +10 -6
- package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +21 -0
- package/src/api/protocol-v2/DeviceInfoGet.ts +8 -15
- package/src/api/protocol-v2/DeviceReboot.ts +7 -3
- package/src/api/protocol-v2/DeviceStatusGet.ts +6 -1
- package/src/api/protocol-v2/DeviceUploadNft.ts +245 -0
- package/src/api/protocol-v2/DeviceUploadWallpaper.ts +66 -73
- package/src/api/protocol-v2/FilesystemFormat.ts +5 -2
- package/src/api/protocol-v2/FilesystemPermissionFix.ts +5 -2
- package/src/api/protocol-v2/Ping.ts +37 -3
- package/src/api/protocol-v2/ProtocolInfoRequest.ts +8 -3
- package/src/api/protocol-v2/helpers.ts +1 -4
- package/src/api/scdo/ScdoGetAddress.ts +0 -4
- package/src/api/scdo/ScdoSignMessage.ts +0 -4
- package/src/api/scdo/ScdoSignTransaction.ts +0 -4
- package/src/api/solana/SolGetAddress.ts +4 -0
- package/src/api/solana/SolSignMessage.ts +5 -1
- package/src/api/solana/SolSignOffchainMessage.ts +5 -1
- package/src/api/solana/SolSignTransaction.ts +6 -2
- package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
- package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
- package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
- package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
- package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
- package/src/api/stellar/StellarGetAddress.ts +1 -10
- package/src/api/stellar/StellarSignTransaction.ts +1 -14
- package/src/api/sui/SuiGetAddress.ts +5 -1
- package/src/api/sui/SuiGetPublicKey.ts +5 -1
- package/src/api/sui/SuiSignMessage.ts +5 -1
- package/src/api/sui/SuiSignTransaction.ts +5 -1
- package/src/api/ton/TonGetAddress.ts +5 -1
- package/src/api/ton/TonSignData.ts +5 -1
- package/src/api/ton/TonSignMessage.ts +10 -4
- package/src/api/ton/TonSignProof.ts +5 -1
- package/src/api/tron/TronGetAddress.ts +4 -0
- package/src/api/tron/TronSignMessage.ts +19 -8
- package/src/api/tron/TronSignTransaction.ts +5 -1
- package/src/api/utils.ts +32 -3
- package/src/api/xrp/XrpGetAddress.ts +4 -0
- package/src/api/xrp/XrpSignTransaction.ts +5 -1
- package/src/constants/index.ts +1 -4
- package/src/core/RequestQueue.ts +0 -18
- package/src/core/deviceEventRegistration.ts +27 -0
- package/src/core/index.ts +387 -163
- package/src/core/uiPromiseRegistry.ts +63 -0
- package/src/data/messages/messages-protocol-v2.json +1030 -567
- package/src/data/messages/messages.json +286 -9
- package/src/data-manager/DataManager.ts +154 -43
- package/src/data-manager/TransportManager.ts +7 -1
- package/src/data-manager/connectSettings.ts +11 -0
- package/src/device/Device.ts +880 -278
- package/src/device/DeviceCommands.ts +177 -158
- package/src/device/DeviceConnector.ts +44 -21
- package/src/device/DeviceFeaturesState.ts +25 -0
- package/src/device/DevicePool.ts +105 -23
- package/src/device/DeviceStateMapper.ts +416 -0
- package/src/device/DeviceStateProjector.ts +152 -0
- package/src/device/DeviceStateStore.ts +232 -0
- package/src/device/DeviceWalletSessionStore.ts +72 -6
- package/src/device/cloneDeviceState.ts +39 -0
- package/src/device/deviceIdentity.ts +18 -0
- package/src/deviceProfile/buildDeviceFeatures.ts +223 -189
- package/src/deviceProfile/index.ts +0 -1
- package/src/deviceProfile/protocolV2DeviceIdentity.ts +35 -0
- package/src/events/call.ts +0 -6
- package/src/events/core.ts +0 -2
- package/src/events/device.ts +22 -1
- package/src/events/iframe.ts +0 -1
- package/src/events/logBlockEvent.ts +93 -2
- package/src/events/ui-promise.ts +4 -2
- package/src/events/ui-request.ts +61 -4
- package/src/events/ui-response.ts +12 -2
- package/src/index.ts +17 -4
- package/src/inject.ts +91 -57
- package/src/lowLevelInject.ts +11 -7
- package/src/protocols/protocol-v2/deviceSession.ts +24 -0
- package/src/protocols/protocol-v2/features.ts +117 -33
- package/src/protocols/protocol-v2/firmware.ts +3 -1
- package/src/protocols/protocol-v2/index.ts +9 -1
- package/src/protocols/protocol-v2/resources.ts +210 -0
- package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
- package/src/protocols/protocol-v2/uiInteraction.ts +250 -0
- package/src/protocols/protocol-v2/unlockPolicy.ts +1 -0
- package/src/protocols/protocol-v2/unlockPolicyRunner.ts +131 -0
- package/src/protocols/protocol-v2/walletSession.ts +420 -49
- package/src/topLevelInject.ts +11 -6
- package/src/types/api/checkAllFirmwareRelease.ts +72 -9
- package/src/types/api/checkBLEFirmwareRelease.ts +4 -13
- package/src/types/api/checkBootloaderRelease.ts +2 -6
- package/src/types/api/checkFirmwareRelease.ts +2 -13
- package/src/types/api/checkFirmwareTypeAvailable.ts +2 -2
- package/src/types/api/detectDeviceConnectProtocol.ts +6 -0
- package/src/types/api/deviceSettings.ts +26 -2
- package/src/types/api/deviceUnlock.ts +13 -2
- package/src/types/api/deviceUpdateBootloader.ts +7 -0
- package/src/types/api/export.ts +33 -1
- package/src/types/api/firmwareUpdate.ts +85 -11
- package/src/types/api/firmwareUpdateCapabilities.ts +9 -0
- package/src/types/api/firmwareUpdatePlan.ts +38 -0
- package/src/types/api/firmwareUpdatePreparedPlan.ts +53 -0
- package/src/types/api/getDeviceState.ts +19 -0
- package/src/types/api/getFeatures.ts +3 -0
- package/src/types/api/getOnekeyFeatures.ts +3 -0
- package/src/types/api/getPassphraseState.ts +7 -0
- package/src/types/api/index.ts +45 -75
- package/src/types/api/kaspaSignTransaction.ts +60 -4
- package/src/types/api/openWalletSession.ts +54 -0
- package/src/types/api/protocolV2.ts +24 -189
- package/src/types/api/sessionCache.ts +9 -4
- package/src/types/device.ts +217 -10
- package/src/types/params.ts +9 -2
- package/src/types/settings.ts +67 -25
- package/src/utils/assets.ts +4 -1
- package/src/utils/deviceFeaturesCompat.ts +191 -0
- package/src/utils/deviceFeaturesUtils.ts +42 -9
- package/src/utils/deviceInfoUtils.ts +29 -69
- package/src/utils/deviceSettings.ts +174 -39
- package/src/utils/deviceVersionUtils.ts +25 -44
- package/src/utils/findDefectiveBatchDevice.ts +3 -3
- package/src/utils/homescreen.ts +40 -0
- package/src/utils/index.ts +25 -7
- package/src/utils/networkUtils.ts +274 -16
- package/src/utils/pro2Nft.ts +165 -0
- package/src/utils/pro2Wallpaper.ts +44 -25
- package/src/utils/tracing.ts +3 -1
- package/src/utils/uiProgressThrottle.ts +63 -0
- package/tsconfig.type-tests.json +12 -0
- package/__tests__/RequestQueue.test.ts +0 -34
- package/dist/api/GetDeviceInfo.d.ts +0 -9
- package/dist/api/GetDeviceInfo.d.ts.map +0 -1
- package/dist/api/firmware/progressThrottle.d.ts +0 -3
- package/dist/api/firmware/progressThrottle.d.ts.map +0 -1
- package/dist/api/protocol-v2/DeviceSessionGet.d.ts +0 -6
- package/dist/api/protocol-v2/DeviceSessionGet.d.ts.map +0 -1
- package/dist/api/protocol-v2/DeviceSettingsGet.d.ts +0 -6
- package/dist/api/protocol-v2/DeviceSettingsGet.d.ts.map +0 -1
- package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts +0 -16
- package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts.map +0 -1
- package/dist/api/protocol-v2/DeviceSettingsSet.d.ts +0 -12
- package/dist/api/protocol-v2/DeviceSettingsSet.d.ts.map +0 -1
- package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
- package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
- package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
- package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
- package/dist/protocols/protocol-v2/unlockRetry.d.ts +0 -9
- package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +0 -1
- package/dist/types/api/getDeviceInfo.d.ts +0 -87
- package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
- package/src/api/GetDeviceInfo.ts +0 -145
- package/src/api/firmware/progressThrottle.ts +0 -44
- package/src/api/protocol-v2/DeviceSessionGet.ts +0 -15
- package/src/api/protocol-v2/DeviceSettingsGet.ts +0 -16
- package/src/api/protocol-v2/DeviceSettingsPageShow.ts +0 -59
- package/src/api/protocol-v2/DeviceSettingsSet.ts +0 -39
- package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
- package/src/deviceProfile/buildDeviceProfile.ts +0 -352
- package/src/protocols/protocol-v2/unlockRetry.ts +0 -46
- package/src/types/api/getDeviceInfo.ts +0 -101
package/src/core/index.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import semver from 'semver';
|
|
2
2
|
import EventEmitter from 'events';
|
|
3
|
+
import { DeviceSessionPinType, TRANSPORT_EVENT } from '@onekeyfe/hd-transport';
|
|
3
4
|
import {
|
|
4
5
|
ERRORS,
|
|
6
|
+
ERROR_CODES_REQUIRE_DISCONNECT,
|
|
5
7
|
ERROR_CODES_REQUIRE_RELEASE,
|
|
6
8
|
HardwareError,
|
|
7
9
|
HardwareErrorCode,
|
|
@@ -14,14 +16,7 @@ import {
|
|
|
14
16
|
createNewFirmwareUnReleaseHardwareError,
|
|
15
17
|
} from '@onekeyfe/hd-shared';
|
|
16
18
|
|
|
17
|
-
import {
|
|
18
|
-
LoggerNames,
|
|
19
|
-
enableLog,
|
|
20
|
-
getLogger,
|
|
21
|
-
isMethodVersionRangeUnsupported,
|
|
22
|
-
setLoggerPostMessage,
|
|
23
|
-
wait,
|
|
24
|
-
} from '../utils';
|
|
19
|
+
import { LoggerNames, enableLog, getLogger, setLoggerPostMessage, wait } from '../utils';
|
|
25
20
|
import {
|
|
26
21
|
findDefectiveBatchDevice,
|
|
27
22
|
getDefectiveDeviceInfo,
|
|
@@ -32,10 +27,12 @@ import {
|
|
|
32
27
|
createRequestContext,
|
|
33
28
|
createSdkTracingContext,
|
|
34
29
|
formatRequestContext,
|
|
30
|
+
generateInstanceId,
|
|
35
31
|
getActiveRequestsByDeviceInstance,
|
|
36
32
|
updateRequestContext,
|
|
37
33
|
} from '../utils/tracing';
|
|
38
34
|
import { Device } from '../device/Device';
|
|
35
|
+
import { checkLiveDeviceId } from '../device/deviceIdentity';
|
|
39
36
|
import { DeviceList } from '../device/DeviceList';
|
|
40
37
|
import { DevicePool } from '../device/DevicePool';
|
|
41
38
|
import { PollingStateManager } from './PollingStateManager';
|
|
@@ -51,19 +48,33 @@ import {
|
|
|
51
48
|
createDeviceMessage,
|
|
52
49
|
createResponseMessage,
|
|
53
50
|
createUiMessage,
|
|
51
|
+
formatLogMethodLabel,
|
|
52
|
+
getLogBlockLabel,
|
|
53
|
+
getSafeLogPayload,
|
|
54
54
|
} from '../events';
|
|
55
55
|
import TransportManager from '../data-manager/TransportManager';
|
|
56
56
|
import DeviceConnector from '../device/DeviceConnector';
|
|
57
57
|
import RequestQueue from './RequestQueue';
|
|
58
|
+
import { consumeUiPromise, findUiPromiseForResponse, rejectUiPromises } from './uiPromiseRegistry';
|
|
59
|
+
import { registerHardwareUiEventListeners } from './deviceEventRegistration';
|
|
58
60
|
import { getSynchronize } from '../utils/getSynchronize';
|
|
59
|
-
import {
|
|
61
|
+
import { runMethodWithUnlockPolicy } from '../protocols/protocol-v2/unlockPolicyRunner';
|
|
62
|
+
import {
|
|
63
|
+
ProtocolV2UiInteractionCoordinator,
|
|
64
|
+
isProtocolV2UiEnabled,
|
|
65
|
+
} from '../protocols/protocol-v2/uiInteraction';
|
|
66
|
+
import { createUiProgressMessageFilter } from '../utils/uiProgressThrottle';
|
|
60
67
|
|
|
61
68
|
import type { ConnectSettings, Features, KnownDevice } from '../types';
|
|
62
69
|
import type { CoreMessage, IFrameCallMessage, UiPromise, UiPromiseResponse } from '../events';
|
|
63
70
|
import type { DeviceEvents, InitOptions, RunOptions } from '../device/Device';
|
|
64
71
|
import type { SdkTracingContext } from '../utils/tracing';
|
|
65
72
|
import type { Deferred } from '@onekeyfe/hd-shared';
|
|
66
|
-
import type {
|
|
73
|
+
import type {
|
|
74
|
+
LowlevelTransportSharedPlugin,
|
|
75
|
+
OneKeyDeviceInfo,
|
|
76
|
+
TransportDeviceDisconnectEvent,
|
|
77
|
+
} from '@onekeyfe/hd-transport';
|
|
67
78
|
import type { BaseMethod } from '../api/BaseMethod';
|
|
68
79
|
|
|
69
80
|
const Log = getLogger(LoggerNames.Core);
|
|
@@ -92,14 +103,15 @@ function hasDeriveCardano(method: BaseMethod): boolean {
|
|
|
92
103
|
|
|
93
104
|
const parseInitOptions = (method?: BaseMethod): InitOptions => ({
|
|
94
105
|
initSession: method?.payload.initSession,
|
|
95
|
-
passphraseState: method?.payload.passphraseState,
|
|
106
|
+
passphraseState: method?.payload.useEmptyPassphrase ? undefined : method?.payload.passphraseState,
|
|
96
107
|
deviceId: method?.payload.deviceId,
|
|
97
108
|
deriveCardano: method && hasDeriveCardano(method),
|
|
98
109
|
connectProtocol: method?.payload.connectProtocol,
|
|
110
|
+
forceProtocolDetection: method?.payload.forceProtocolDetection,
|
|
99
111
|
protocolV2DeviceInfoTimeoutMs: method?.payload.protocolV2DeviceInfoTimeoutMs,
|
|
100
112
|
});
|
|
101
113
|
|
|
102
|
-
let _core: Core;
|
|
114
|
+
let _core: Core | undefined;
|
|
103
115
|
let _deviceList: DeviceList | undefined;
|
|
104
116
|
let _connector: DeviceConnector | undefined;
|
|
105
117
|
let _uiPromises: UiPromise<UiPromiseResponse['type']>[] = []; // Waiting for ui response
|
|
@@ -124,6 +136,9 @@ const toError = (error: unknown): Error | undefined => {
|
|
|
124
136
|
}
|
|
125
137
|
};
|
|
126
138
|
|
|
139
|
+
const isExpectedCompatibilityError = (error: unknown) =>
|
|
140
|
+
error instanceof HardwareError && error.errorCode === HardwareErrorCode.DeviceNotSupportMethod;
|
|
141
|
+
|
|
127
142
|
const updateMethodRequestContext = (method: BaseMethod, updates: any) => {
|
|
128
143
|
if (method.requestContext) {
|
|
129
144
|
updateRequestContext(method.requestContext.responseID, updates);
|
|
@@ -143,11 +158,16 @@ export const callAPI = async (context: CoreContext, message: CoreMessage) => {
|
|
|
143
158
|
}
|
|
144
159
|
|
|
145
160
|
// find api method
|
|
146
|
-
let method
|
|
161
|
+
let method!: BaseMethod;
|
|
147
162
|
try {
|
|
148
163
|
method = findMethod(message as IFrameCallMessage);
|
|
149
164
|
method.connector = _connector;
|
|
150
|
-
|
|
165
|
+
const shouldPostMessage = createUiProgressMessageFilter();
|
|
166
|
+
method.postMessage = event => {
|
|
167
|
+
if (shouldPostMessage(event)) {
|
|
168
|
+
postMessage(event);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
151
171
|
method.setContext?.(context);
|
|
152
172
|
|
|
153
173
|
method.requestContext = createRequestContext(method.responseID, method.name, {
|
|
@@ -159,11 +179,13 @@ export const callAPI = async (context: CoreContext, message: CoreMessage) => {
|
|
|
159
179
|
|
|
160
180
|
method.init();
|
|
161
181
|
} catch (error) {
|
|
162
|
-
|
|
182
|
+
if (method) {
|
|
183
|
+
completeMethodRequestContext(method, error);
|
|
184
|
+
method.dispose();
|
|
185
|
+
}
|
|
186
|
+
return createResponseMessage(method?.responseID ?? message.id, false, { error });
|
|
163
187
|
}
|
|
164
188
|
|
|
165
|
-
DevicePool.emitter.on(DEVICE.CONNECT, onDeviceConnectHandler);
|
|
166
|
-
|
|
167
189
|
if (!method.useDevice) {
|
|
168
190
|
updateMethodRequestContext(method, { status: 'running' });
|
|
169
191
|
try {
|
|
@@ -358,7 +380,7 @@ const onCallDevice = async (
|
|
|
358
380
|
);
|
|
359
381
|
} catch (e) {
|
|
360
382
|
preWarmCallbackTask?.resolve();
|
|
361
|
-
|
|
383
|
+
Log.debug('ensureConnected error: ', e);
|
|
362
384
|
|
|
363
385
|
completeMethodRequestContext(method, e);
|
|
364
386
|
|
|
@@ -395,18 +417,28 @@ const onCallDevice = async (
|
|
|
395
417
|
);
|
|
396
418
|
}
|
|
397
419
|
|
|
398
|
-
device
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
420
|
+
registerHardwareUiEventListeners(device, {
|
|
421
|
+
pin: onDevicePinHandler,
|
|
422
|
+
pinOnDevice: onEnterPinOnDeviceHandler,
|
|
423
|
+
pinOnDeviceComplete: onPinOnDeviceCompleteHandler,
|
|
424
|
+
button: onDeviceButtonHandler,
|
|
425
|
+
passphrase: message.payload.useEmptyPassphrase
|
|
426
|
+
? onEmptyPassphraseHandler
|
|
427
|
+
: onDevicePassphraseHandler,
|
|
428
|
+
passphraseOnDevice: onEnterPassphraseOnDeviceHandler,
|
|
429
|
+
attachPinOnDevice: onEnterAttachPinOnDeviceHandler,
|
|
430
|
+
});
|
|
405
431
|
device.on(DEVICE.FEATURES, onDeviceFeaturesHandler);
|
|
432
|
+
device.on(DEVICE.STATE, onDeviceStateHandler);
|
|
406
433
|
device.on(
|
|
407
434
|
DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE,
|
|
408
435
|
onSelectDeviceInBootloaderForWebDeviceHandler
|
|
409
436
|
);
|
|
437
|
+
|
|
438
|
+
const protocolV2UiCoordinator = new ProtocolV2UiInteractionCoordinator(device, postMessage);
|
|
439
|
+
let protocolV2Operation = false;
|
|
440
|
+
let protocolV2CloseEmitted = false;
|
|
441
|
+
device.beginProtocolV2UiInteraction();
|
|
410
442
|
device.on(
|
|
411
443
|
DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE,
|
|
412
444
|
onSelectDeviceForSwitchFirmwareWebDeviceHandler
|
|
@@ -421,11 +453,10 @@ const onCallDevice = async (
|
|
|
421
453
|
await waitForPendingPromise(getPrePendingCallPromise, setPrePendingCallPromise);
|
|
422
454
|
|
|
423
455
|
const inner = async (): Promise<void> => {
|
|
424
|
-
// Protocol
|
|
425
|
-
//
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
}
|
|
456
|
+
// Protocol is established from an active device response during acquire/initialize.
|
|
457
|
+
// Reject unsupported methods before any method-specific device command is sent.
|
|
458
|
+
method.assertProtocolSupported(device.getProtocol(), device.getCurrentFirmwareType());
|
|
459
|
+
protocolV2Operation = device.isProtocolV2();
|
|
429
460
|
|
|
430
461
|
// check firmware version
|
|
431
462
|
const versionRange = device.getCurrentMethodVersionRange(
|
|
@@ -436,8 +467,8 @@ const onCallDevice = async (
|
|
|
436
467
|
const deviceFirmwareType = device.getCurrentFirmwareType();
|
|
437
468
|
let newVersionStatus: ReturnType<typeof DataManager.getFirmwareStatus> | undefined;
|
|
438
469
|
|
|
439
|
-
//
|
|
440
|
-
// Pro2
|
|
470
|
+
// Defective-batch and forced-update gates depend on V1 features/remote config.
|
|
471
|
+
// Pro2 joins after DataManager supports its profile firmwareStatus.
|
|
441
472
|
if (device.features && !device.isProtocolV2()) {
|
|
442
473
|
await DataManager.checkAndReloadData();
|
|
443
474
|
|
|
@@ -485,10 +516,6 @@ const onCallDevice = async (
|
|
|
485
516
|
}
|
|
486
517
|
}
|
|
487
518
|
|
|
488
|
-
if (isMethodVersionRangeUnsupported(versionRange)) {
|
|
489
|
-
throw createDeviceNotSupportMethodError(method.name, deviceFirmwareType);
|
|
490
|
-
}
|
|
491
|
-
|
|
492
519
|
if (versionRange) {
|
|
493
520
|
if (semver.valid(versionRange.min) && semver.lt(currentFirmwareVersion, versionRange.min)) {
|
|
494
521
|
if (newVersionStatus === 'none' || newVersionStatus === 'valid') {
|
|
@@ -539,89 +566,102 @@ const onCallDevice = async (
|
|
|
539
566
|
);
|
|
540
567
|
}
|
|
541
568
|
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
569
|
+
try {
|
|
570
|
+
let deviceIdCheckedDuringUnlockPreflight = false;
|
|
571
|
+
const response = await runMethodWithUnlockPolicy<object>(method, device, {
|
|
572
|
+
uiCoordinator: protocolV2UiCoordinator,
|
|
573
|
+
afterStatusBeforeUnlock: () => {
|
|
574
|
+
if (method.deviceId && method.checkDeviceId) {
|
|
575
|
+
if (!device.checkDeviceId(method.deviceId)) {
|
|
576
|
+
throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckDeviceIdError);
|
|
577
|
+
}
|
|
578
|
+
deviceIdCheckedDuringUnlockPreflight = true;
|
|
579
|
+
}
|
|
580
|
+
},
|
|
581
|
+
prepare: async () => {
|
|
582
|
+
if (method.deviceId && method.checkDeviceId && !deviceIdCheckedDuringUnlockPreflight) {
|
|
583
|
+
const isSameDeviceID = await checkLiveDeviceId(device, method.deviceId);
|
|
584
|
+
if (!isSameDeviceID) {
|
|
585
|
+
throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckDeviceIdError);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
553
588
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
589
|
+
/**
|
|
590
|
+
* check firmware release info
|
|
591
|
+
*/
|
|
592
|
+
method.checkFirmwareRelease();
|
|
558
593
|
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
594
|
+
/**
|
|
595
|
+
* check additional supported feature
|
|
596
|
+
*/
|
|
597
|
+
method.checkDeviceSupportFeature();
|
|
563
598
|
|
|
564
|
-
|
|
565
|
-
|
|
599
|
+
// reconfigure messages
|
|
600
|
+
if (_deviceList && device.features && !device.isProtocolV2()) {
|
|
601
|
+
await TransportManager.reconfigure(device.features);
|
|
602
|
+
}
|
|
566
603
|
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
604
|
+
// Check to see if it is safe to use Passphrase
|
|
605
|
+
checkPassphraseEnableState(method, device.features);
|
|
606
|
+
|
|
607
|
+
if (shouldCheckPassphraseState(method, device)) {
|
|
608
|
+
// check version
|
|
609
|
+
const support = device.supportNewPassphrase();
|
|
610
|
+
if (!support.support) {
|
|
611
|
+
throw ERRORS.TypedError(
|
|
612
|
+
HardwareErrorCode.DeviceNotSupportPassphrase,
|
|
613
|
+
`Device not support passphrase, please update to ${support.require}`,
|
|
614
|
+
{
|
|
615
|
+
require: support.require,
|
|
616
|
+
}
|
|
617
|
+
);
|
|
577
618
|
}
|
|
578
|
-
)
|
|
579
|
-
);
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
// Check Device passphrase State
|
|
583
|
-
const passphraseStateSafety = await device.checkPassphraseStateSafety(
|
|
584
|
-
method.payload?.passphraseState,
|
|
585
|
-
method.payload?.useEmptyPassphrase,
|
|
586
|
-
method.payload?.skipPassphraseCheck
|
|
587
|
-
);
|
|
588
619
|
|
|
589
|
-
|
|
590
|
-
|
|
620
|
+
// Check Device passphrase State after the Protocol V2 pre-unlock gate.
|
|
621
|
+
const passphraseStateSafety = await device.checkPassphraseStateSafety(
|
|
622
|
+
method.payload?.passphraseState,
|
|
623
|
+
method.payload?.useEmptyPassphrase,
|
|
624
|
+
method.payload?.skipPassphraseCheck,
|
|
625
|
+
hasDeriveCardano(method)
|
|
626
|
+
);
|
|
591
627
|
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
return Promise.reject(
|
|
595
|
-
ERRORS.TypedError(HardwareErrorCode.DeviceCheckPassphraseStateError)
|
|
596
|
-
);
|
|
597
|
-
}
|
|
628
|
+
// Double check, handles the special case of Touch/Pro
|
|
629
|
+
checkPassphraseEnableState(method, device.features);
|
|
598
630
|
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
631
|
+
if (!passphraseStateSafety) {
|
|
632
|
+
DevicePool.clearDeviceCache(method.payload.connectId);
|
|
633
|
+
throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckPassphraseStateError);
|
|
634
|
+
}
|
|
602
635
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
? e
|
|
610
|
-
: ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'open safety check failed.');
|
|
611
|
-
// messageResponse = createResponseMessage(method.responseID, false, { error });
|
|
612
|
-
// requestQueue.resolveRequest(method.responseID, messageResponse);
|
|
613
|
-
// return;
|
|
614
|
-
throw error;
|
|
615
|
-
}
|
|
636
|
+
// Protocol V2 emits the PIN phase completion from DeviceSessionAskPin.
|
|
637
|
+
// Keep the legacy compatibility close for Protocol V1 only.
|
|
638
|
+
if (!device.isProtocolV2()) {
|
|
639
|
+
postMessage(createUiMessage(UI_REQUEST.CLOSE_UI_PIN_WINDOW));
|
|
640
|
+
}
|
|
641
|
+
}
|
|
616
642
|
|
|
617
|
-
|
|
643
|
+
// Automatic check safety_check level for Kovan, Ropsten, Rinkeby, Goerli test networks.
|
|
644
|
+
try {
|
|
645
|
+
await method.checkSafetyLevelOnTestNet();
|
|
646
|
+
} catch (e) {
|
|
647
|
+
throw e instanceof HardwareError
|
|
648
|
+
? e
|
|
649
|
+
: ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'open safety check failed.');
|
|
650
|
+
}
|
|
618
651
|
|
|
619
|
-
|
|
620
|
-
|
|
652
|
+
method.device?.commands?.checkDisposed();
|
|
653
|
+
},
|
|
654
|
+
});
|
|
621
655
|
messageResponse = createResponseMessage(method.responseID, true, response);
|
|
622
656
|
requestQueue.resolveRequest(method.responseID, messageResponse);
|
|
623
657
|
completeMethodRequestContext(method);
|
|
624
658
|
} catch (error) {
|
|
659
|
+
// Device.run may release the request before transport callbacks finish after a timeout.
|
|
660
|
+
// Ignore the stale callback because the caller already received the connection error.
|
|
661
|
+
if (!requestQueue.getTask(method.responseID)) {
|
|
662
|
+
Log.debug(`Call API - Ignore late inner method result`, error);
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
625
665
|
Log.debug(`Call API - Inner Method Run Error`, error);
|
|
626
666
|
messageResponse = createResponseMessage(method.responseID, false, { error });
|
|
627
667
|
requestQueue.resolveRequest(method.responseID, messageResponse);
|
|
@@ -634,6 +674,13 @@ const onCallDevice = async (
|
|
|
634
674
|
) {
|
|
635
675
|
throw error;
|
|
636
676
|
}
|
|
677
|
+
} finally {
|
|
678
|
+
if (isProtocolV2UiEnabled(method)) {
|
|
679
|
+
protocolV2CloseEmitted = protocolV2UiCoordinator.close({
|
|
680
|
+
ensureOperationClose: protocolV2Operation,
|
|
681
|
+
protocolV2Operation,
|
|
682
|
+
});
|
|
683
|
+
}
|
|
637
684
|
}
|
|
638
685
|
};
|
|
639
686
|
Log.debug('Call API - Device Run: ', device.mainId);
|
|
@@ -649,7 +696,9 @@ const onCallDevice = async (
|
|
|
649
696
|
try {
|
|
650
697
|
return await task.callPromise.promise;
|
|
651
698
|
} catch (e) {
|
|
652
|
-
|
|
699
|
+
if (!isExpectedCompatibilityError(e)) {
|
|
700
|
+
Log.debug('Device Run Error: ', e);
|
|
701
|
+
}
|
|
653
702
|
completeMethodRequestContext(method, e);
|
|
654
703
|
return createResponseMessage(method.responseID, false, { error: e });
|
|
655
704
|
}
|
|
@@ -687,7 +736,17 @@ const onCallDevice = async (
|
|
|
687
736
|
|
|
688
737
|
requestQueue.releaseTask(method.responseID);
|
|
689
738
|
|
|
690
|
-
|
|
739
|
+
if (isProtocolV2UiEnabled(method)) {
|
|
740
|
+
if (!protocolV2CloseEmitted && protocolV2Operation) {
|
|
741
|
+
protocolV2CloseEmitted = protocolV2UiCoordinator.close({
|
|
742
|
+
ensureOperationClose: true,
|
|
743
|
+
protocolV2Operation: true,
|
|
744
|
+
});
|
|
745
|
+
}
|
|
746
|
+
if (!protocolV2CloseEmitted) {
|
|
747
|
+
closePopup();
|
|
748
|
+
}
|
|
749
|
+
}
|
|
691
750
|
|
|
692
751
|
cleanup();
|
|
693
752
|
|
|
@@ -849,8 +908,23 @@ function isRetryableBleProtocolV2ProbeError(method: BaseMethod, error: unknown)
|
|
|
849
908
|
*/
|
|
850
909
|
async function connectDeviceForBle(method: BaseMethod, device: Device, retryCount = 0) {
|
|
851
910
|
try {
|
|
852
|
-
|
|
911
|
+
if (method.payload.forceProtocolDetection && device.hasDeviceAcquire()) {
|
|
912
|
+
await device.release();
|
|
913
|
+
}
|
|
914
|
+
const shouldAcquire =
|
|
915
|
+
method.payload.forceProtocolDetection ||
|
|
916
|
+
!device.hasDeviceAcquire() ||
|
|
917
|
+
!device.commands ||
|
|
918
|
+
device.commands.disposed;
|
|
919
|
+
if (shouldAcquire) {
|
|
920
|
+
await device.acquire(method.payload.connectProtocol, {
|
|
921
|
+
forceProtocolDetection: method.payload.forceProtocolDetection,
|
|
922
|
+
});
|
|
923
|
+
}
|
|
853
924
|
if (method.payload?.onlyConnectBleDevice) {
|
|
925
|
+
if (shouldAcquire) {
|
|
926
|
+
DevicePool.emitter.emit(DEVICE.CONNECT, device);
|
|
927
|
+
}
|
|
854
928
|
return;
|
|
855
929
|
}
|
|
856
930
|
// Skip initialize if conditions are met
|
|
@@ -861,7 +935,25 @@ async function connectDeviceForBle(method: BaseMethod, device: Device, retryCoun
|
|
|
861
935
|
passphraseState: initOptions.passphraseState,
|
|
862
936
|
});
|
|
863
937
|
}
|
|
938
|
+
if (shouldAcquire) {
|
|
939
|
+
DevicePool.emitter.emit(DEVICE.CONNECT, device);
|
|
940
|
+
}
|
|
864
941
|
} catch (err) {
|
|
942
|
+
// Device.run()'s REQUIRE_DISCONNECT handling never sees acquire/initialize
|
|
943
|
+
// failures, so with keep-alive a wedged link would be reused by every retry
|
|
944
|
+
// (field case: Initialize timing out at 25s per attempt, forever). Drop it
|
|
945
|
+
// here so the next retry cold-connects.
|
|
946
|
+
if (
|
|
947
|
+
ERROR_CODES_REQUIRE_DISCONNECT.includes(err.errorCode) &&
|
|
948
|
+
device.mainId &&
|
|
949
|
+
device.deviceConnector
|
|
950
|
+
) {
|
|
951
|
+
await device.deviceConnector.disconnect(device.mainId).catch(() => undefined);
|
|
952
|
+
// The connector only drops the link; `deviceAcquired` is reset by
|
|
953
|
+
// release()/markTransportDisconnected() alone. Leaving it set makes the
|
|
954
|
+
// next attempt skip acquire and initialize onto the link we just cut.
|
|
955
|
+
device.markTransportDisconnected();
|
|
956
|
+
}
|
|
865
957
|
if (
|
|
866
958
|
(err.errorCode === HardwareErrorCode.BleTimeoutError ||
|
|
867
959
|
err.errorCode === HardwareErrorCode.BleConnectedError ||
|
|
@@ -1155,14 +1247,16 @@ const shouldCheckPassphraseState = (method: BaseMethod, device: Device) => {
|
|
|
1155
1247
|
};
|
|
1156
1248
|
|
|
1157
1249
|
const cleanup = () => {
|
|
1250
|
+
const pendingUiPromises = _uiPromises;
|
|
1158
1251
|
_uiPromises = [];
|
|
1159
|
-
|
|
1252
|
+
rejectUiPromises(
|
|
1253
|
+
pendingUiPromises,
|
|
1254
|
+
ERRORS.TypedError(HardwareErrorCode.ActionCancelled, 'UI request was cancelled')
|
|
1255
|
+
);
|
|
1160
1256
|
};
|
|
1161
1257
|
|
|
1162
1258
|
const removeDeviceListener = (device: Device) => {
|
|
1163
1259
|
device.removeAllListeners();
|
|
1164
|
-
DevicePool.emitter.removeAllListeners(DEVICE.CONNECT);
|
|
1165
|
-
// DevicePool.emitter.removeListener(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
|
|
1166
1260
|
};
|
|
1167
1261
|
|
|
1168
1262
|
/**
|
|
@@ -1173,19 +1267,33 @@ const closePopup = () => {
|
|
|
1173
1267
|
};
|
|
1174
1268
|
|
|
1175
1269
|
const onDeviceConnectHandler = (device: Device) => {
|
|
1176
|
-
const
|
|
1177
|
-
|
|
1178
|
-
postMessage(createDeviceMessage(DEVICE.CONNECT, { device: deviceObject
|
|
1270
|
+
const deviceObject = device.toMessageObject();
|
|
1271
|
+
if (!deviceObject) return;
|
|
1272
|
+
postMessage(createDeviceMessage(DEVICE.CONNECT, { device: deviceObject }));
|
|
1179
1273
|
};
|
|
1180
1274
|
|
|
1181
1275
|
const onDeviceDisconnectHandler = (device: Device) => {
|
|
1182
1276
|
device.clearPreInitialized();
|
|
1183
|
-
const
|
|
1184
|
-
|
|
1185
|
-
postMessage(createDeviceMessage(DEVICE.DISCONNECT, { device: deviceObject
|
|
1277
|
+
const deviceObject = device.toMessageObject();
|
|
1278
|
+
if (!deviceObject) return;
|
|
1279
|
+
postMessage(createDeviceMessage(DEVICE.DISCONNECT, { device: deviceObject }));
|
|
1280
|
+
};
|
|
1281
|
+
|
|
1282
|
+
const onTransportDeviceDisconnectHandler = (event: TransportDeviceDisconnectEvent) => {
|
|
1283
|
+
const device =
|
|
1284
|
+
deviceCacheMap.get(event.connectId) ??
|
|
1285
|
+
DevicePool.devicesCache[event.connectId] ??
|
|
1286
|
+
DevicePool.getDeviceByPath(event.connectId);
|
|
1287
|
+
if (!device) {
|
|
1288
|
+
Log.debug('Ignoring transport disconnect for an unknown device:', event.connectId);
|
|
1289
|
+
return;
|
|
1290
|
+
}
|
|
1291
|
+
|
|
1292
|
+
device.markTransportDisconnected();
|
|
1293
|
+
DevicePool.emitter.emit(DEVICE.DISCONNECT, device);
|
|
1186
1294
|
};
|
|
1187
1295
|
|
|
1188
|
-
const onDevicePinHandler =
|
|
1296
|
+
const onDevicePinHandler = (...[device, type, callback]: DeviceEvents['pin']) => {
|
|
1189
1297
|
Log.log('request Input PIN');
|
|
1190
1298
|
// create ui promise
|
|
1191
1299
|
const uiPromise = createUiPromise(UI_RESPONSE.RECEIVE_PIN, device);
|
|
@@ -1194,12 +1302,14 @@ const onDevicePinHandler = async (...[device, type, callback]: DeviceEvents['pin
|
|
|
1194
1302
|
createUiMessage(UI_REQUEST.REQUEST_PIN, {
|
|
1195
1303
|
device: device.toMessageObject() as unknown as KnownDevice,
|
|
1196
1304
|
type,
|
|
1305
|
+
responseCorrelation: uiPromise.responseCorrelation,
|
|
1197
1306
|
})
|
|
1198
1307
|
);
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1308
|
+
consumeUiPromise(
|
|
1309
|
+
uiPromise.promise,
|
|
1310
|
+
uiResp => callback(null, uiResp.payload),
|
|
1311
|
+
error => callback(error, '')
|
|
1312
|
+
);
|
|
1203
1313
|
};
|
|
1204
1314
|
|
|
1205
1315
|
export const onDeviceButtonHandler = (...[device, request]: [...DeviceEvents['button']]) => {
|
|
@@ -1223,7 +1333,11 @@ const onDeviceFeaturesHandler = (...[_, features]: [...DeviceEvents['features']]
|
|
|
1223
1333
|
postMessage(createDeviceMessage(DEVICE.FEATURES, { ...features }));
|
|
1224
1334
|
};
|
|
1225
1335
|
|
|
1226
|
-
const
|
|
1336
|
+
const onDeviceStateHandler = (...[_, stateEvent]: [...DeviceEvents['state']]) => {
|
|
1337
|
+
postMessage(createDeviceMessage(DEVICE.STATE, stateEvent));
|
|
1338
|
+
};
|
|
1339
|
+
|
|
1340
|
+
const onDevicePassphraseHandler = (
|
|
1227
1341
|
...[device, requestPayload, callback]: DeviceEvents['passphrase']
|
|
1228
1342
|
) => {
|
|
1229
1343
|
Log.debug('onDevicePassphraseHandler');
|
|
@@ -1233,18 +1347,27 @@ const onDevicePassphraseHandler = async (
|
|
|
1233
1347
|
device: device.toMessageObject() as KnownDevice,
|
|
1234
1348
|
passphraseState: device.passphraseState,
|
|
1235
1349
|
existsAttachPinUser: requestPayload.existsAttachPinUser,
|
|
1350
|
+
deviceOnly: requestPayload.deviceOnly,
|
|
1351
|
+
source: requestPayload.source,
|
|
1352
|
+
reason: requestPayload.reason,
|
|
1353
|
+
expectedPassphraseState: requestPayload.expectedPassphraseState,
|
|
1354
|
+
...(requestPayload.interaction ? { interaction: requestPayload.interaction } : {}),
|
|
1355
|
+
responseCorrelation: uiPromise.responseCorrelation,
|
|
1236
1356
|
})
|
|
1237
1357
|
);
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1358
|
+
consumeUiPromise(
|
|
1359
|
+
uiPromise.promise,
|
|
1360
|
+
uiResp => {
|
|
1361
|
+
const { value, passphraseOnDevice, save, attachPinOnDevice } = uiResp.payload;
|
|
1362
|
+
callback({
|
|
1363
|
+
passphrase: value.normalize('NFKD'),
|
|
1364
|
+
passphraseOnDevice,
|
|
1365
|
+
attachPinOnDevice,
|
|
1366
|
+
cache: save,
|
|
1367
|
+
});
|
|
1368
|
+
},
|
|
1369
|
+
error => callback({}, error)
|
|
1370
|
+
);
|
|
1248
1371
|
};
|
|
1249
1372
|
|
|
1250
1373
|
const onEmptyPassphraseHandler = (...[_, , callback]: DeviceEvents['passphrase']) => {
|
|
@@ -1254,17 +1377,62 @@ const onEmptyPassphraseHandler = (...[_, , callback]: DeviceEvents['passphrase']
|
|
|
1254
1377
|
};
|
|
1255
1378
|
|
|
1256
1379
|
const onEnterPassphraseOnDeviceHandler = (
|
|
1257
|
-
...[device]: [...DeviceEvents['passphrase_on_device']]
|
|
1380
|
+
...[device, requestPayload]: [...DeviceEvents['passphrase_on_device']]
|
|
1258
1381
|
) => {
|
|
1259
1382
|
postMessage(
|
|
1260
1383
|
createUiMessage(UI_REQUEST.REQUEST_PASSPHRASE_ON_DEVICE, {
|
|
1261
1384
|
device: device.toMessageObject() as KnownDevice,
|
|
1262
1385
|
passphraseState: device.passphraseState,
|
|
1386
|
+
source: requestPayload?.source,
|
|
1387
|
+
reason: requestPayload?.reason,
|
|
1388
|
+
...(requestPayload?.interaction ? { interaction: requestPayload.interaction } : {}),
|
|
1389
|
+
})
|
|
1390
|
+
);
|
|
1391
|
+
};
|
|
1392
|
+
|
|
1393
|
+
const onEnterAttachPinOnDeviceHandler = (
|
|
1394
|
+
...[device, requestPayload]: [...DeviceEvents['attach_pin_on_device']]
|
|
1395
|
+
) => {
|
|
1396
|
+
postMessage(
|
|
1397
|
+
createUiMessage(UI_REQUEST.REQUEST_PIN, {
|
|
1398
|
+
device: device.toMessageObject() as KnownDevice,
|
|
1399
|
+
type: 'ButtonRequest_AttachPin',
|
|
1400
|
+
source: requestPayload?.source,
|
|
1401
|
+
reason: requestPayload?.reason,
|
|
1402
|
+
...(requestPayload?.interaction ? { interaction: requestPayload.interaction } : {}),
|
|
1403
|
+
})
|
|
1404
|
+
);
|
|
1405
|
+
};
|
|
1406
|
+
|
|
1407
|
+
const onEnterPinOnDeviceHandler = (
|
|
1408
|
+
...[device, pinType, metadata]: [...DeviceEvents['pin_on_device']]
|
|
1409
|
+
) => {
|
|
1410
|
+
postMessage(
|
|
1411
|
+
createUiMessage(UI_REQUEST.REQUEST_PIN, {
|
|
1412
|
+
device: device.toMessageObject() as KnownDevice,
|
|
1413
|
+
type:
|
|
1414
|
+
pinType === DeviceSessionPinType.AttachToPin
|
|
1415
|
+
? 'ButtonRequest_AttachPin'
|
|
1416
|
+
: 'ButtonRequest_PinEntry',
|
|
1417
|
+
source: metadata?.source,
|
|
1418
|
+
reason: metadata?.reason,
|
|
1419
|
+
deviceOnly: metadata?.deviceOnly ?? true,
|
|
1420
|
+
completion: metadata?.completion,
|
|
1421
|
+
method: metadata?.method,
|
|
1422
|
+
page: metadata?.page,
|
|
1423
|
+
operation: metadata?.operation,
|
|
1424
|
+
...(metadata?.interaction ? { interaction: metadata.interaction } : {}),
|
|
1263
1425
|
})
|
|
1264
1426
|
);
|
|
1265
1427
|
};
|
|
1266
1428
|
|
|
1267
|
-
const
|
|
1429
|
+
const onPinOnDeviceCompleteHandler = (
|
|
1430
|
+
...[_, metadata]: [...DeviceEvents['pin_on_device_complete']]
|
|
1431
|
+
) => {
|
|
1432
|
+
postMessage(createUiMessage(UI_REQUEST.CLOSE_UI_PIN_WINDOW, metadata));
|
|
1433
|
+
};
|
|
1434
|
+
|
|
1435
|
+
const onSelectDeviceInBootloaderForWebDeviceHandler = (
|
|
1268
1436
|
...[device, callback]: [...DeviceEvents['select_device_in_bootloader_for_web_device']]
|
|
1269
1437
|
) => {
|
|
1270
1438
|
Log.debug('onSelectDeviceInBootloaderForWebDeviceHandler');
|
|
@@ -1274,11 +1442,14 @@ const onSelectDeviceInBootloaderForWebDeviceHandler = async (
|
|
|
1274
1442
|
device: device.toMessageObject() as KnownDevice,
|
|
1275
1443
|
})
|
|
1276
1444
|
);
|
|
1277
|
-
|
|
1278
|
-
|
|
1445
|
+
consumeUiPromise(
|
|
1446
|
+
uiPromise.promise,
|
|
1447
|
+
uiResp => callback(null, uiResp.payload.deviceId),
|
|
1448
|
+
error => callback(error, '')
|
|
1449
|
+
);
|
|
1279
1450
|
};
|
|
1280
1451
|
|
|
1281
|
-
const onSelectDeviceForSwitchFirmwareWebDeviceHandler =
|
|
1452
|
+
const onSelectDeviceForSwitchFirmwareWebDeviceHandler = (
|
|
1282
1453
|
...[device, callback]: [...DeviceEvents['select_device_for_switch_firmware_web_device']]
|
|
1283
1454
|
) => {
|
|
1284
1455
|
Log.debug('onSelectDeviceForSwitchFirmwareWebDeviceHandler');
|
|
@@ -1291,8 +1462,11 @@ const onSelectDeviceForSwitchFirmwareWebDeviceHandler = async (
|
|
|
1291
1462
|
device: device.toMessageObject() as KnownDevice,
|
|
1292
1463
|
})
|
|
1293
1464
|
);
|
|
1294
|
-
|
|
1295
|
-
|
|
1465
|
+
consumeUiPromise(
|
|
1466
|
+
uiPromise.promise,
|
|
1467
|
+
uiResp => callback(null, uiResp.payload.deviceId),
|
|
1468
|
+
error => callback(error, '')
|
|
1469
|
+
);
|
|
1296
1470
|
};
|
|
1297
1471
|
|
|
1298
1472
|
/**
|
|
@@ -1311,14 +1485,21 @@ const postMessage = (message: CoreMessage) => {
|
|
|
1311
1485
|
|
|
1312
1486
|
const createUiPromise = <T extends UiPromiseResponse['type']>(promiseEvent: T, device?: Device) => {
|
|
1313
1487
|
const uiPromise: UiPromise<T> = createDeferred(promiseEvent, device);
|
|
1488
|
+
if (
|
|
1489
|
+
device &&
|
|
1490
|
+
(promiseEvent === UI_RESPONSE.RECEIVE_PIN || promiseEvent === UI_RESPONSE.RECEIVE_PASSPHRASE)
|
|
1491
|
+
) {
|
|
1492
|
+
const publicDeviceId = device.toMessageObject()?.deviceId;
|
|
1493
|
+
uiPromise.responseCorrelation = {
|
|
1494
|
+
interactionId: generateInstanceId('UiResponse', device.sdkInstanceId),
|
|
1495
|
+
deviceId: publicDeviceId || device.instanceId,
|
|
1496
|
+
};
|
|
1497
|
+
}
|
|
1314
1498
|
_uiPromises.push(uiPromise as any);
|
|
1315
1499
|
|
|
1316
1500
|
return uiPromise;
|
|
1317
1501
|
};
|
|
1318
1502
|
|
|
1319
|
-
const findUiPromise = <T extends UiPromiseResponse['type']>(promiseEvent: T) =>
|
|
1320
|
-
_uiPromises.find(p => p.id === promiseEvent);
|
|
1321
|
-
|
|
1322
1503
|
const removeUiPromise = (promise: Deferred<any>) => {
|
|
1323
1504
|
_uiPromises = _uiPromises.filter(p => p !== promise);
|
|
1324
1505
|
};
|
|
@@ -1330,6 +1511,8 @@ export default class Core extends EventEmitter {
|
|
|
1330
1511
|
|
|
1331
1512
|
private requestQueue = new RequestQueue();
|
|
1332
1513
|
|
|
1514
|
+
private disposePromise?: Promise<void>;
|
|
1515
|
+
|
|
1333
1516
|
// background task
|
|
1334
1517
|
private prePendingCallPromise: Promise<void> | undefined;
|
|
1335
1518
|
|
|
@@ -1342,10 +1525,6 @@ export default class Core extends EventEmitter {
|
|
|
1342
1525
|
Log.debug(`[Core] Created SDK instance: ${this.sdkInstanceId}`);
|
|
1343
1526
|
}
|
|
1344
1527
|
|
|
1345
|
-
cancelOperation(operationId: string) {
|
|
1346
|
-
this.requestQueue.abortOperation(operationId);
|
|
1347
|
-
}
|
|
1348
|
-
|
|
1349
1528
|
private getCoreContext() {
|
|
1350
1529
|
return {
|
|
1351
1530
|
sdkInstanceId: this.sdkInstanceId,
|
|
@@ -1372,11 +1551,16 @@ export default class Core extends EventEmitter {
|
|
|
1372
1551
|
case UI_RESPONSE.RECEIVE_PASSPHRASE:
|
|
1373
1552
|
case UI_RESPONSE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE:
|
|
1374
1553
|
case UI_RESPONSE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: {
|
|
1375
|
-
const uiPromise =
|
|
1554
|
+
const uiPromise = findUiPromiseForResponse(_uiPromises, message);
|
|
1376
1555
|
if (uiPromise) {
|
|
1377
1556
|
Log.log('receive UI Response: ', message.type);
|
|
1378
1557
|
uiPromise.resolve(message);
|
|
1379
1558
|
removeUiPromise(uiPromise);
|
|
1559
|
+
} else if (
|
|
1560
|
+
message.type === UI_RESPONSE.RECEIVE_PIN ||
|
|
1561
|
+
message.type === UI_RESPONSE.RECEIVE_PASSPHRASE
|
|
1562
|
+
) {
|
|
1563
|
+
Log.warn('Ignored unmatched or ambiguous sensitive UI response:', message.type);
|
|
1380
1564
|
}
|
|
1381
1565
|
break;
|
|
1382
1566
|
}
|
|
@@ -1392,10 +1576,17 @@ export default class Core extends EventEmitter {
|
|
|
1392
1576
|
}
|
|
1393
1577
|
|
|
1394
1578
|
case IFRAME.CALL: {
|
|
1395
|
-
|
|
1579
|
+
const logBlockLabel = getLogBlockLabel(message);
|
|
1580
|
+
Log.log(
|
|
1581
|
+
formatLogMethodLabel(`[${Date.now()}][CALL_API]`, logBlockLabel),
|
|
1582
|
+
getSafeLogPayload(message, logBlockLabel)
|
|
1583
|
+
);
|
|
1396
1584
|
const response = await callAPI(this.getCoreContext(), message);
|
|
1397
1585
|
const { success, payload } = response;
|
|
1398
|
-
Log.log(
|
|
1586
|
+
Log.log(
|
|
1587
|
+
formatLogMethodLabel(`[${Date.now()}][CALL_API_RESPONSE]`, logBlockLabel),
|
|
1588
|
+
getSafeLogPayload(response, logBlockLabel)
|
|
1589
|
+
);
|
|
1399
1590
|
if (success) {
|
|
1400
1591
|
return response;
|
|
1401
1592
|
}
|
|
@@ -1414,10 +1605,6 @@ export default class Core extends EventEmitter {
|
|
|
1414
1605
|
cancel(this.getCoreContext(), message.payload.connectId);
|
|
1415
1606
|
break;
|
|
1416
1607
|
}
|
|
1417
|
-
case IFRAME.CANCEL_OPERATION: {
|
|
1418
|
-
this.cancelOperation(message.payload.operationId);
|
|
1419
|
-
break;
|
|
1420
|
-
}
|
|
1421
1608
|
case IFRAME.CALLBACK: {
|
|
1422
1609
|
Log.log('callback message: ', message);
|
|
1423
1610
|
postMessage(message);
|
|
@@ -1429,25 +1616,65 @@ export default class Core extends EventEmitter {
|
|
|
1429
1616
|
return Promise.resolve(message);
|
|
1430
1617
|
}
|
|
1431
1618
|
|
|
1432
|
-
dispose() {
|
|
1619
|
+
dispose(): Promise<void> {
|
|
1620
|
+
if (!this.disposePromise) {
|
|
1621
|
+
this.disposePromise = this.disposeResources();
|
|
1622
|
+
}
|
|
1623
|
+
return this.disposePromise;
|
|
1624
|
+
}
|
|
1625
|
+
|
|
1626
|
+
private async disposeResources(): Promise<void> {
|
|
1627
|
+
Log.debug(`[Core] Disposing SDK instance: ${this.sdkInstanceId}`);
|
|
1628
|
+
pollingManager.stopAll();
|
|
1629
|
+
this.requestQueue.abortAllRequests();
|
|
1630
|
+
cleanup();
|
|
1631
|
+
|
|
1632
|
+
_connector?.stop();
|
|
1633
|
+
let transportCleanup: Promise<void>;
|
|
1634
|
+
try {
|
|
1635
|
+
transportCleanup = Promise.resolve(TransportManager.getTransport()?.stop?.()).catch(error => {
|
|
1636
|
+
Log.warn('[Core] Transport cleanup failed:', error);
|
|
1637
|
+
});
|
|
1638
|
+
} catch (error) {
|
|
1639
|
+
Log.warn('[Core] Transport cleanup failed:', error);
|
|
1640
|
+
transportCleanup = Promise.resolve();
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
// Preserve synchronous dispose semantics for in-memory state and listeners.
|
|
1433
1644
|
_deviceList = undefined;
|
|
1434
1645
|
_connector = undefined;
|
|
1646
|
+
DevicePool.dispose();
|
|
1435
1647
|
deviceCacheMap.clear();
|
|
1436
1648
|
preWarmInflight.clear();
|
|
1437
1649
|
preWarmDoneAt.clear();
|
|
1438
|
-
|
|
1650
|
+
preConnectCache = { passphraseState: undefined };
|
|
1651
|
+
this.prePendingCallPromise = undefined;
|
|
1652
|
+
this.removeAllListeners();
|
|
1439
1653
|
cleanupSdkInstance(this.sdkInstanceId);
|
|
1654
|
+
if (_core === this) _core = undefined;
|
|
1655
|
+
|
|
1656
|
+
// Transports, especially Node USB, may release native handles asynchronously.
|
|
1657
|
+
await transportCleanup;
|
|
1440
1658
|
}
|
|
1441
1659
|
}
|
|
1442
1660
|
|
|
1443
1661
|
export const initCore = () => {
|
|
1444
|
-
|
|
1445
|
-
|
|
1662
|
+
const core = new Core();
|
|
1663
|
+
_core = core;
|
|
1664
|
+
return core;
|
|
1446
1665
|
};
|
|
1447
1666
|
|
|
1448
1667
|
export const initConnector = () => {
|
|
1449
1668
|
_connector = new DeviceConnector();
|
|
1669
|
+
DevicePool.emitter.removeListener(DEVICE.CONNECT, onDeviceConnectHandler);
|
|
1670
|
+
DevicePool.emitter.removeListener(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
|
|
1671
|
+
DevicePool.emitter.removeListener(
|
|
1672
|
+
TRANSPORT_EVENT.DEVICE_DISCONNECT,
|
|
1673
|
+
onTransportDeviceDisconnectHandler
|
|
1674
|
+
);
|
|
1675
|
+
DevicePool.emitter.on(DEVICE.CONNECT, onDeviceConnectHandler);
|
|
1450
1676
|
DevicePool.emitter.on(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
|
|
1677
|
+
DevicePool.emitter.on(TRANSPORT_EVENT.DEVICE_DISCONNECT, onTransportDeviceDisconnectHandler);
|
|
1451
1678
|
return _connector;
|
|
1452
1679
|
};
|
|
1453
1680
|
|
|
@@ -1461,12 +1688,8 @@ export const init = async (
|
|
|
1461
1688
|
plugin?: LowlevelTransportSharedPlugin
|
|
1462
1689
|
) => {
|
|
1463
1690
|
try {
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
initTransport(Transport, plugin);
|
|
1467
|
-
} catch {
|
|
1468
|
-
Log.error('DataManager.load error');
|
|
1469
|
-
}
|
|
1691
|
+
await DataManager.load(settings);
|
|
1692
|
+
initTransport(Transport, plugin);
|
|
1470
1693
|
enableLog(DataManager.getSettings('debug'));
|
|
1471
1694
|
if (DataManager.getSettings('env') !== 'react-native') {
|
|
1472
1695
|
setLoggerPostMessage(postMessage);
|
|
@@ -1477,6 +1700,7 @@ export const init = async (
|
|
|
1477
1700
|
return _core;
|
|
1478
1701
|
} catch (error) {
|
|
1479
1702
|
Log.error('core init', error);
|
|
1703
|
+
throw error;
|
|
1480
1704
|
}
|
|
1481
1705
|
};
|
|
1482
1706
|
|