@onekeyfe/hd-core 1.2.0-alpha.7 → 1.2.0-alpha.70
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 +563 -0
- package/__tests__/DeviceEventRegistration.test.ts +49 -0
- package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
- package/__tests__/check-all-firmware-release-protocol-v2.test.ts +477 -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 +351 -0
- package/__tests__/device-pool-state.test.ts +166 -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 +273 -0
- package/__tests__/device-state-projector.test.ts +94 -0
- package/__tests__/device-state-store.test.ts +82 -0
- package/__tests__/device-utils.test.ts +154 -0
- package/__tests__/device-wallet-session-store.test.ts +478 -0
- package/__tests__/deviceFeaturesUtils.test.ts +39 -0
- package/__tests__/deviceSettings.test.ts +113 -0
- package/__tests__/deviceUploadNft.test.ts +316 -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-update/check-all-firmware-release.test.ts +175 -0
- package/__tests__/firmware-update/device-update-bootloader.test.ts +87 -0
- package/__tests__/firmware-update/firmware-artifact-source.test.ts +119 -0
- package/__tests__/firmware-update/firmware-host-binding.test.ts +70 -0
- package/__tests__/firmware-update/firmware-preparation-error.test.ts +27 -0
- package/__tests__/firmware-update/firmware-update-bootloader-poll.test.ts +200 -0
- package/__tests__/firmware-update/firmware-update-capabilities.test.ts +13 -0
- package/__tests__/firmware-update/firmware-update-plan-bootloader-identity.test.ts +394 -0
- package/__tests__/firmware-update/firmware-update-plan.test.ts +593 -0
- package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +231 -0
- package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +430 -0
- package/__tests__/firmware-update/firmware-update-v3-reconnect.test.ts +63 -0
- package/__tests__/firmware-update/firmware-upload-source.test.ts +70 -0
- package/__tests__/get-device-state.test.ts +578 -0
- package/__tests__/homescreen.test.ts +64 -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 +128 -1
- package/__tests__/method-protocol-support.test.ts +132 -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 +39 -0
- 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 +37 -0
- package/__tests__/protocol-v2-ping.test.ts +28 -0
- package/__tests__/protocol-v2-resources.test.ts +340 -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 +6815 -2596
- package/__tests__/protocolV2FileWrite.test.ts +244 -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 +101 -0
- package/__tests__/request-context-logging.test.ts +16 -0
- package/__tests__/search-devices.test.ts +145 -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 +16 -1
- 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/CheckBootloaderRelease.d.ts.map +1 -1
- 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 +9 -0
- package/dist/api/ClearSessionCache.d.ts.map +1 -0
- 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 +12 -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 +49 -18
- 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 +2 -6
- 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 +17 -0
- package/dist/api/UploadPortfolio.d.ts.map +1 -0
- 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 +25 -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/FirmwarePreparationError.d.ts +3 -0
- package/dist/api/firmware/FirmwarePreparationError.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 +25 -0
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -0
- package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +32 -0
- package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -0
- package/dist/api/firmware/getBinary.d.ts +15 -4
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- 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/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 +42 -0
- package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
- package/dist/api/index.d.ts +9 -25
- 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 +7 -0
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts +31 -0
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
- 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 +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 +2 -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.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 -1
- 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 +10 -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 +72 -17
- 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 +3 -2
- 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 +5 -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 +27 -0
- package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
- 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/device.d.ts +16 -2
- package/dist/events/device.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 +1770 -772
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10827 -4143
- package/dist/inject.d.ts +6 -1
- package/dist/inject.d.ts.map +1 -1
- 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 +21 -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 +3 -2
- package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/resources.d.ts +30 -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 +27 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
- package/dist/topLevelInject.d.ts.map +1 -1
- package/dist/types/api/checkAllFirmwareRelease.d.ts +31 -4
- package/dist/types/api/checkAllFirmwareRelease.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 +7 -2
- package/dist/types/api/export.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +76 -1
- 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 +2 -10
- package/dist/types/api/getPassphraseState.d.ts.map +1 -1
- package/dist/types/api/index.d.ts +32 -31
- 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 +18 -84
- package/dist/types/api/protocolV2.d.ts.map +1 -1
- package/dist/types/api/sessionCache.d.ts +13 -0
- package/dist/types/api/sessionCache.d.ts.map +1 -0
- package/dist/types/device.d.ts +134 -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 +57 -21
- 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 -3
- 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 +6 -3
- 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 +31 -0
- package/dist/utils/pro2Nft.d.ts.map +1 -0
- package/dist/utils/pro2Wallpaper.d.ts +22 -0
- package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
- 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 +4 -4
- package/src/api/BaseMethod.ts +53 -20
- package/src/api/CheckAllFirmwareRelease.ts +394 -4
- package/src/api/CheckBootloaderRelease.ts +1 -2
- package/src/api/CheckFirmwareRelease.ts +1 -2
- package/src/api/CipherKeyValue.ts +4 -0
- package/src/api/ClearSessionCache.ts +32 -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 +15 -9
- package/src/api/FileWrite.ts +26 -181
- package/src/api/FirmwareUpdate.ts +30 -15
- package/src/api/FirmwareUpdateV2.ts +373 -115
- package/src/api/FirmwareUpdateV3.ts +272 -70
- package/src/api/FirmwareUpdateV4.ts +1487 -688
- 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 -21
- 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 +40 -0
- 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 +126 -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 +278 -0
- package/src/api/firmware/FirmwareHostBinding.ts +100 -0
- package/src/api/firmware/FirmwarePreparationError.ts +12 -0
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +102 -16
- package/src/api/firmware/FirmwareUpdateCapabilities.ts +9 -0
- package/src/api/firmware/FirmwareUpdatePlan.ts +772 -0
- package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +449 -0
- package/src/api/firmware/getBinary.ts +8 -3
- package/src/api/firmware/updateBootloader.ts +19 -4
- package/src/api/firmware/uploadFirmware.ts +157 -26
- 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 +338 -0
- package/src/api/index.ts +10 -26
- 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 +19 -0
- package/src/api/protocol-v2/DeviceUploadNft.ts +197 -0
- package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
- package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
- 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 +17 -17
- 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 +5 -1
- 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 +7 -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 +1 -0
- package/src/core/deviceEventRegistration.ts +27 -0
- package/src/core/index.ts +365 -152
- package/src/core/uiPromiseRegistry.ts +63 -0
- package/src/data/messages/messages-protocol-v2.json +1138 -441
- package/src/data/messages/messages.json +286 -1
- package/src/data-manager/DataManager.ts +121 -41
- package/src/data-manager/TransportManager.ts +7 -1
- package/src/data-manager/connectSettings.ts +11 -0
- package/src/device/Device.ts +896 -295
- package/src/device/DeviceCommands.ts +193 -158
- package/src/device/DeviceConnector.ts +43 -20
- package/src/device/DeviceFeaturesState.ts +25 -0
- package/src/device/DevicePool.ts +86 -22
- package/src/device/DeviceStateMapper.ts +374 -0
- package/src/device/DeviceStateProjector.ts +94 -0
- package/src/device/DeviceStateStore.ts +201 -0
- package/src/device/DeviceWalletSessionStore.ts +144 -0
- 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/device.ts +22 -1
- package/src/events/logBlockEvent.ts +80 -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 +5 -0
- package/src/inject.ts +95 -45
- package/src/lowLevelInject.ts +11 -4
- package/src/protocols/protocol-v2/deviceSession.ts +24 -0
- package/src/protocols/protocol-v2/features.ts +100 -33
- package/src/protocols/protocol-v2/firmware.ts +3 -1
- package/src/protocols/protocol-v2/index.ts +8 -1
- package/src/protocols/protocol-v2/resources.ts +390 -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 +463 -0
- package/src/topLevelInject.ts +11 -4
- package/src/types/api/checkAllFirmwareRelease.ts +52 -4
- 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 +6 -0
- package/src/types/api/export.ts +27 -0
- package/src/types/api/firmwareUpdate.ts +101 -5
- 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 +9 -11
- package/src/types/api/index.ts +52 -64
- package/src/types/api/kaspaSignTransaction.ts +60 -4
- package/src/types/api/openWalletSession.ts +54 -0
- package/src/types/api/protocolV2.ts +33 -141
- package/src/types/api/sessionCache.ts +19 -0
- package/src/types/device.ts +200 -10
- package/src/types/params.ts +9 -2
- package/src/types/settings.ts +89 -24
- package/src/utils/assets.ts +4 -1
- package/src/utils/deviceFeaturesCompat.ts +191 -0
- package/src/utils/deviceFeaturesUtils.ts +65 -47
- 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 +36 -0
- package/src/utils/index.ts +27 -3
- package/src/utils/networkUtils.ts +274 -16
- package/src/utils/pro2Nft.ts +142 -0
- package/src/utils/pro2Wallpaper.ts +130 -0
- package/src/utils/tracing.ts +3 -1
- package/src/utils/uiProgressThrottle.ts +63 -0
- package/tsconfig.type-tests.json +12 -0
- 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/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/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/FilesystemDiskControl.ts +0 -50
- package/src/deviceProfile/buildDeviceProfile.ts +0 -352
- package/src/types/api/getDeviceInfo.ts +0 -101
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { DeviceSEState, DeviceSeType } from '@onekeyfe/hd-transport';
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
DeviceInfoGet,
|
|
5
|
+
DeviceSEInfo,
|
|
6
|
+
DeviceStatus,
|
|
7
|
+
ProtocolInfo,
|
|
8
|
+
ProtocolV2DeviceInfo,
|
|
9
|
+
} from '@onekeyfe/hd-transport';
|
|
4
10
|
import type { DeviceCommands } from '../../device/DeviceCommands';
|
|
5
11
|
|
|
6
|
-
//
|
|
7
|
-
// DeviceFirmwareImageInfo(与 firmware-pro2 proto 一致),不再维护手写副本。
|
|
12
|
+
// Use hd-transport generated Protocol V2 types as the single source of truth.
|
|
8
13
|
export type { ProtocolV2DeviceInfo };
|
|
9
14
|
export type { DeviceFirmwareImageInfo as ProtocolV2FirmwareImageInfo } from '@onekeyfe/hd-transport';
|
|
10
15
|
export type { DeviceSEInfo as ProtocolV2SEInfo } from '@onekeyfe/hd-transport';
|
|
@@ -12,8 +17,8 @@ export type { DeviceSEInfo as ProtocolV2SEInfo } from '@onekeyfe/hd-transport';
|
|
|
12
17
|
export type ProtocolV2SeStateLabel = 'BOOT' | 'APP_FACTORY' | 'APP';
|
|
13
18
|
|
|
14
19
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
20
|
+
* The transport historically decodes scalar proto enums as name strings.
|
|
21
|
+
* Accept both that SDK representation and numeric enums for low-level callers.
|
|
17
22
|
*/
|
|
18
23
|
const normalizeEnumValue = <T extends Record<string | number, string | number>>(
|
|
19
24
|
enumObject: T,
|
|
@@ -26,8 +31,8 @@ const normalizeEnumValue = <T extends Record<string | number, string | number>>(
|
|
|
26
31
|
};
|
|
27
32
|
|
|
28
33
|
/**
|
|
29
|
-
* DeviceSEInfo.state
|
|
30
|
-
*
|
|
34
|
+
* Map DeviceSEInfo.state to a readable label. This is the SDK's canonical mapping
|
|
35
|
+
* used by DeviceState and the legacy Features projection.
|
|
31
36
|
*/
|
|
32
37
|
export const getProtocolV2SeState = (se?: DeviceSEInfo): ProtocolV2SeStateLabel | null => {
|
|
33
38
|
const label = normalizeEnumValue(DeviceSEState, se?.state);
|
|
@@ -44,21 +49,64 @@ export const getProtocolV2SeState = (se?: DeviceSEInfo): ProtocolV2SeStateLabel
|
|
|
44
49
|
};
|
|
45
50
|
|
|
46
51
|
/**
|
|
47
|
-
* DeviceSEInfo.type
|
|
48
|
-
* 的 SE 类型归一化从这里取。
|
|
52
|
+
* Map DeviceSEInfo.type to a readable label such as `THD89`.
|
|
49
53
|
*/
|
|
50
54
|
export const getProtocolV2SeType = (se?: DeviceSEInfo): string | null =>
|
|
51
55
|
normalizeEnumValue(DeviceSeType, se?.type);
|
|
52
56
|
|
|
53
|
-
export
|
|
54
|
-
|
|
57
|
+
export type ProtocolV2RuntimeMode = 'normal' | 'bootloader' | 'romloader';
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Protocol V2 fingerprints use:
|
|
61
|
+
* <binary>__<version>__<commit>__<PROD|DEV>__<DEBUG|RELEASE>
|
|
62
|
+
*/
|
|
63
|
+
export type ProtocolV2BuildFingerprint = {
|
|
64
|
+
binary: 'application' | 'bootloader' | 'romloader';
|
|
65
|
+
version: string;
|
|
66
|
+
commit: string;
|
|
67
|
+
environment: 'PROD' | 'DEV';
|
|
68
|
+
buildType: 'DEBUG' | 'RELEASE';
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export const parseProtocolV2BuildFingerprint = (
|
|
72
|
+
buildFingerprint: string | null | undefined
|
|
73
|
+
): ProtocolV2BuildFingerprint | null => {
|
|
74
|
+
if (!buildFingerprint) return null;
|
|
75
|
+
const [binary, version, commit, environment, buildType, ...extra] = buildFingerprint.split('__');
|
|
76
|
+
if (
|
|
77
|
+
extra.length > 0 ||
|
|
78
|
+
(binary !== 'application' && binary !== 'bootloader' && binary !== 'romloader') ||
|
|
79
|
+
!version ||
|
|
80
|
+
!commit ||
|
|
81
|
+
(environment !== 'PROD' && environment !== 'DEV') ||
|
|
82
|
+
(buildType !== 'DEBUG' && buildType !== 'RELEASE')
|
|
83
|
+
) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
return { binary, version, commit, environment, buildType };
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export const getProtocolV2RuntimeMode = (
|
|
90
|
+
protocolInfo: ProtocolInfo
|
|
91
|
+
): ProtocolV2RuntimeMode | undefined => {
|
|
92
|
+
const binary = parseProtocolV2BuildFingerprint(protocolInfo.build_fingerprint)?.binary;
|
|
93
|
+
if (binary === 'application') return 'normal';
|
|
94
|
+
return binary;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// MessageType_DeviceStatusGet in the Protocol V2 protobuf registry.
|
|
98
|
+
export const PROTOCOL_V2_DEVICE_STATUS_GET_MESSAGE_TYPE = 60602;
|
|
99
|
+
|
|
100
|
+
export const supportsProtocolV2Message = (
|
|
101
|
+
protocolInfo: ProtocolInfo,
|
|
102
|
+
messageType: number
|
|
103
|
+
): boolean => protocolInfo.supported_messages.includes(messageType);
|
|
55
104
|
|
|
56
105
|
export const PROTOCOL_V2_FEATURES_DEVICE_INFO_REQUEST = {
|
|
57
106
|
targets: {
|
|
58
107
|
hw: true,
|
|
59
108
|
fw: true,
|
|
60
109
|
coprocessor: true,
|
|
61
|
-
status: true,
|
|
62
110
|
},
|
|
63
111
|
types: {
|
|
64
112
|
version: true,
|
|
@@ -67,23 +115,9 @@ export const PROTOCOL_V2_FEATURES_DEVICE_INFO_REQUEST = {
|
|
|
67
115
|
};
|
|
68
116
|
|
|
69
117
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* status 提供 init_states / passphrase_enabled 等会在设备端变化的字段;
|
|
73
|
-
* hw / coprocessor 提供 serialNo / bleName 等身份字段;不含 fw/SE targets,单帧请求开销很小。
|
|
118
|
+
* Version probe used after firmware update completion.
|
|
119
|
+
* It reads hardware and firmware component data without requesting DeviceStatus.
|
|
74
120
|
*/
|
|
75
|
-
export const PROTOCOL_V2_STATUS_DEVICE_INFO_REQUEST = {
|
|
76
|
-
targets: {
|
|
77
|
-
hw: true,
|
|
78
|
-
coprocessor: true,
|
|
79
|
-
status: true,
|
|
80
|
-
},
|
|
81
|
-
types: {
|
|
82
|
-
version: true,
|
|
83
|
-
specific: true,
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
|
|
87
121
|
export const PROTOCOL_V2_VERSIONS_DEVICE_INFO_REQUEST = {
|
|
88
122
|
targets: {
|
|
89
123
|
hw: true,
|
|
@@ -93,7 +127,6 @@ export const PROTOCOL_V2_VERSIONS_DEVICE_INFO_REQUEST = {
|
|
|
93
127
|
se2: true,
|
|
94
128
|
se3: true,
|
|
95
129
|
se4: true,
|
|
96
|
-
status: true,
|
|
97
130
|
},
|
|
98
131
|
types: {
|
|
99
132
|
version: true,
|
|
@@ -110,7 +143,6 @@ export const PROTOCOL_V2_FULL_DEVICE_INFO_REQUEST = {
|
|
|
110
143
|
se2: true,
|
|
111
144
|
se3: true,
|
|
112
145
|
se4: true,
|
|
113
|
-
status: true,
|
|
114
146
|
},
|
|
115
147
|
types: {
|
|
116
148
|
version: true,
|
|
@@ -121,7 +153,28 @@ export const PROTOCOL_V2_FULL_DEVICE_INFO_REQUEST = {
|
|
|
121
153
|
};
|
|
122
154
|
|
|
123
155
|
export const PROTOCOL_V2_DEVICE_INFO_REQUEST = PROTOCOL_V2_FULL_DEVICE_INFO_REQUEST;
|
|
124
|
-
export const PROTOCOL_V2_DEVICE_INFO_TIMEOUT_MS =
|
|
156
|
+
export const PROTOCOL_V2_DEVICE_INFO_TIMEOUT_MS = 30 * 1000;
|
|
157
|
+
|
|
158
|
+
export async function requestProtocolV2ProtocolInfo({
|
|
159
|
+
commands,
|
|
160
|
+
timeoutMs,
|
|
161
|
+
}: {
|
|
162
|
+
commands: DeviceCommands;
|
|
163
|
+
timeoutMs?: number;
|
|
164
|
+
}): Promise<ProtocolInfo> {
|
|
165
|
+
const response =
|
|
166
|
+
timeoutMs === undefined
|
|
167
|
+
? await commands.typedCall('ProtocolInfoRequest', 'ProtocolInfo', {
|
|
168
|
+
eventless_wallet_session: true,
|
|
169
|
+
})
|
|
170
|
+
: await commands.typedCall(
|
|
171
|
+
'ProtocolInfoRequest',
|
|
172
|
+
'ProtocolInfo',
|
|
173
|
+
{ eventless_wallet_session: true },
|
|
174
|
+
{ timeoutMs }
|
|
175
|
+
);
|
|
176
|
+
return response.message;
|
|
177
|
+
}
|
|
125
178
|
|
|
126
179
|
export async function requestProtocolV2DeviceInfo({
|
|
127
180
|
commands,
|
|
@@ -135,7 +188,21 @@ export async function requestProtocolV2DeviceInfo({
|
|
|
135
188
|
const { message } = await commands.typedCall('DeviceInfoGet', 'DeviceInfo', request, {
|
|
136
189
|
timeoutMs,
|
|
137
190
|
});
|
|
138
|
-
//
|
|
139
|
-
// DeviceInfoGet 是 V2-only 消息,这里收窄到 V2 形态。
|
|
191
|
+
// Generated DeviceInfo is a V1/V2 union; DeviceInfoGet narrows it to the V2 shape.
|
|
140
192
|
return message as ProtocolV2DeviceInfo;
|
|
141
193
|
}
|
|
194
|
+
|
|
195
|
+
export async function requestProtocolV2DeviceStatus({
|
|
196
|
+
commands,
|
|
197
|
+
timeoutMs,
|
|
198
|
+
}: {
|
|
199
|
+
commands: DeviceCommands;
|
|
200
|
+
timeoutMs?: number;
|
|
201
|
+
}): Promise<DeviceStatus> {
|
|
202
|
+
const response =
|
|
203
|
+
timeoutMs === undefined
|
|
204
|
+
? await commands.typedCall('DeviceStatusGet', 'DeviceStatus', {})
|
|
205
|
+
: await commands.typedCall('DeviceStatusGet', 'DeviceStatus', {}, { timeoutMs });
|
|
206
|
+
const { message } = response;
|
|
207
|
+
return message;
|
|
208
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* DeviceFirmwareTargetType from the current firmware-pro2 submodule.
|
|
3
3
|
*/
|
|
4
4
|
export const ProtocolV2FirmwareTargetType = {
|
|
5
5
|
FW_MGMT_TARGET_INVALID: 0,
|
|
@@ -15,5 +15,7 @@ export const ProtocolV2FirmwareTargetType = {
|
|
|
15
15
|
FW_MGMT_TARGET_SE04: 10,
|
|
16
16
|
} as const;
|
|
17
17
|
|
|
18
|
+
// 这里有意同时导出同名值与类型,以保持现有公共 API 不变。
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
18
20
|
export type ProtocolV2FirmwareTargetType =
|
|
19
21
|
(typeof ProtocolV2FirmwareTargetType)[keyof typeof ProtocolV2FirmwareTargetType];
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
export {
|
|
2
2
|
PROTOCOL_V2_DEVICE_INFO_REQUEST,
|
|
3
3
|
PROTOCOL_V2_DEVICE_INFO_TIMEOUT_MS,
|
|
4
|
+
PROTOCOL_V2_DEVICE_STATUS_GET_MESSAGE_TYPE,
|
|
4
5
|
PROTOCOL_V2_FEATURES_DEVICE_INFO_REQUEST,
|
|
5
|
-
PROTOCOL_V2_STATUS_DEVICE_INFO_REQUEST,
|
|
6
6
|
PROTOCOL_V2_VERSIONS_DEVICE_INFO_REQUEST,
|
|
7
|
+
getProtocolV2RuntimeMode,
|
|
7
8
|
getProtocolV2SeState,
|
|
8
9
|
getProtocolV2SeType,
|
|
10
|
+
parseProtocolV2BuildFingerprint,
|
|
11
|
+
requestProtocolV2ProtocolInfo,
|
|
12
|
+
supportsProtocolV2Message,
|
|
9
13
|
} from './features';
|
|
10
14
|
export type {
|
|
15
|
+
ProtocolV2BuildFingerprint,
|
|
11
16
|
ProtocolV2DeviceInfo,
|
|
12
17
|
ProtocolV2FirmwareImageInfo,
|
|
13
18
|
ProtocolV2SEInfo,
|
|
14
19
|
ProtocolV2SeStateLabel,
|
|
20
|
+
ProtocolV2RuntimeMode,
|
|
15
21
|
} from './features';
|
|
16
22
|
export * from './firmware';
|
|
23
|
+
export * from './walletSession';
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import { sha256 } from '@noble/hashes/sha256';
|
|
2
|
+
import { PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE } from '@onekeyfe/hd-transport';
|
|
3
|
+
|
|
4
|
+
import type {
|
|
5
|
+
IProtocolV2BootResources,
|
|
6
|
+
IProtocolV2Resource,
|
|
7
|
+
IProtocolV2ResourceFile,
|
|
8
|
+
IProtocolV2ResourceType,
|
|
9
|
+
IProtocolV2Resources,
|
|
10
|
+
} from '../../types';
|
|
11
|
+
import type { DeviceCommands } from '../../device/DeviceCommands';
|
|
12
|
+
|
|
13
|
+
export const PROTOCOL_V2_RESOURCE_TYPES = [
|
|
14
|
+
'images',
|
|
15
|
+
'animation',
|
|
16
|
+
'wallpaper',
|
|
17
|
+
'translations',
|
|
18
|
+
'roobert',
|
|
19
|
+
'noto',
|
|
20
|
+
] as const satisfies readonly IProtocolV2ResourceType[];
|
|
21
|
+
|
|
22
|
+
export const PROTOCOL_V2_RESOURCE_DEVICE_PATHS: Readonly<Record<IProtocolV2ResourceType, string>> =
|
|
23
|
+
{
|
|
24
|
+
images: 'vol0:/bundles/images/images.okpkg',
|
|
25
|
+
animation: 'vol0:/bundles/images/animation.okpkg',
|
|
26
|
+
wallpaper: 'vol0:/bundles/images/wallpaper.okpkg',
|
|
27
|
+
translations: 'vol0:/bundles/translations/translations.okpkg',
|
|
28
|
+
roobert: 'vol0:/bundles/font/roobert.okpkg',
|
|
29
|
+
noto: 'vol0:/bundles/font/noto.okpkg',
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const RESOURCE_TYPE_SET = new Set<string>(PROTOCOL_V2_RESOURCE_TYPES);
|
|
33
|
+
const SHA256_HEX_LENGTH = 64;
|
|
34
|
+
const SHA3_512_HEX_LENGTH = 128;
|
|
35
|
+
const PROTOCOL_V2_OKPP_HEADER_SIZE = 0x52a0;
|
|
36
|
+
const PROTOCOL_V2_OKPP_TYPE_OFFSET = 0x08;
|
|
37
|
+
const PROTOCOL_V2_OKPP_HEADER_LENGTH_OFFSET = 0x0c;
|
|
38
|
+
const PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET = 0x240;
|
|
39
|
+
const PROTOCOL_V2_OKPP_HASH_SIZE = 64;
|
|
40
|
+
const PROTOCOL_V2_RESOURCE_IDENTITY_READ_SIZE =
|
|
41
|
+
PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET + PROTOCOL_V2_OKPP_HASH_SIZE;
|
|
42
|
+
const PROTOCOL_V2_MIN_FILE_READ_CHUNK_SIZE = 64;
|
|
43
|
+
export const PROTOCOL_V2_RESOURCE_INVENTORY_TIMEOUT_MS = 5 * 1000;
|
|
44
|
+
|
|
45
|
+
export type ProtocolV2ResourceInventoryItem = {
|
|
46
|
+
type: IProtocolV2ResourceType;
|
|
47
|
+
size: number;
|
|
48
|
+
headerHash: string;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export type ProtocolV2ResourceUpdateMode = 'application' | 'bootloader-recovery';
|
|
52
|
+
|
|
53
|
+
export type ProtocolV2ResourceUpdatePlan = {
|
|
54
|
+
status: 'valid' | 'outdated' | 'unknown';
|
|
55
|
+
resources: IProtocolV2Resource[];
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
function toFiniteNumber(value: unknown): number | undefined {
|
|
59
|
+
if (typeof value === 'number' && Number.isFinite(value)) return value;
|
|
60
|
+
if (typeof value === 'string') {
|
|
61
|
+
const numeric = Number(value);
|
|
62
|
+
return Number.isFinite(numeric) ? numeric : undefined;
|
|
63
|
+
}
|
|
64
|
+
if (value && typeof value === 'object') {
|
|
65
|
+
const longLike = value as { toNumber?: () => number };
|
|
66
|
+
if (typeof longLike.toNumber === 'function') {
|
|
67
|
+
const numeric = longLike.toNumber();
|
|
68
|
+
return Number.isFinite(numeric) ? numeric : undefined;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function toUint8Array(value: unknown): Uint8Array {
|
|
75
|
+
if (value instanceof Uint8Array) return value;
|
|
76
|
+
if (value instanceof ArrayBuffer) return new Uint8Array(value);
|
|
77
|
+
if (ArrayBuffer.isView(value)) {
|
|
78
|
+
return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
|
|
79
|
+
}
|
|
80
|
+
if (typeof value === 'string') {
|
|
81
|
+
const hex = value.replace(/^0x/i, '');
|
|
82
|
+
if (!hex || hex.length % 2 !== 0 || /[^0-9a-f]/i.test(hex)) {
|
|
83
|
+
return new Uint8Array(0);
|
|
84
|
+
}
|
|
85
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
86
|
+
for (let index = 0; index < bytes.length; index += 1) {
|
|
87
|
+
bytes[index] = Number.parseInt(hex.slice(index * 2, index * 2 + 2), 16);
|
|
88
|
+
}
|
|
89
|
+
return bytes;
|
|
90
|
+
}
|
|
91
|
+
return new Uint8Array(0);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function readAscii(bytes: Uint8Array, offset: number, length: number): string {
|
|
95
|
+
return Array.from(bytes.slice(offset, offset + length), byte => String.fromCharCode(byte)).join(
|
|
96
|
+
''
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function parseProtocolV2ResourceHeaderHash(bytes: Uint8Array): string | undefined {
|
|
101
|
+
if (bytes.byteLength < PROTOCOL_V2_RESOURCE_IDENTITY_READ_SIZE) return undefined;
|
|
102
|
+
if (readAscii(bytes, 0, 4) !== 'OKPP') return undefined;
|
|
103
|
+
if (readAscii(bytes, PROTOCOL_V2_OKPP_TYPE_OFFSET, 4) !== 'RESC') return undefined;
|
|
104
|
+
|
|
105
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
106
|
+
if (
|
|
107
|
+
view.getUint32(PROTOCOL_V2_OKPP_HEADER_LENGTH_OFFSET, true) !== PROTOCOL_V2_OKPP_HEADER_SIZE
|
|
108
|
+
) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
return bytesToHex(
|
|
112
|
+
bytes.slice(
|
|
113
|
+
PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET,
|
|
114
|
+
PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET + PROTOCOL_V2_OKPP_HASH_SIZE
|
|
115
|
+
)
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
async function readProtocolV2ResourceIdentity({
|
|
120
|
+
commands,
|
|
121
|
+
resource,
|
|
122
|
+
chunkSize,
|
|
123
|
+
timeoutMs = PROTOCOL_V2_RESOURCE_INVENTORY_TIMEOUT_MS,
|
|
124
|
+
}: {
|
|
125
|
+
commands: Pick<DeviceCommands, 'typedCall'>;
|
|
126
|
+
resource: IProtocolV2Resource;
|
|
127
|
+
chunkSize: number;
|
|
128
|
+
timeoutMs?: number;
|
|
129
|
+
}): Promise<ProtocolV2ResourceInventoryItem | undefined> {
|
|
130
|
+
const path = PROTOCOL_V2_RESOURCE_DEVICE_PATHS[resource.type];
|
|
131
|
+
const pathInfo = await commands.typedCall(
|
|
132
|
+
'FilesystemPathInfoQuery',
|
|
133
|
+
'FilesystemPathInfo',
|
|
134
|
+
{ path },
|
|
135
|
+
{ timeoutMs }
|
|
136
|
+
);
|
|
137
|
+
const size = toFiniteNumber(pathInfo.message?.size);
|
|
138
|
+
if (
|
|
139
|
+
!pathInfo.message?.exist ||
|
|
140
|
+
pathInfo.message?.directory ||
|
|
141
|
+
!Number.isSafeInteger(size) ||
|
|
142
|
+
size !== resource.size ||
|
|
143
|
+
size < PROTOCOL_V2_OKPP_HEADER_SIZE
|
|
144
|
+
) {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const header = new Uint8Array(PROTOCOL_V2_RESOURCE_IDENTITY_READ_SIZE);
|
|
149
|
+
let offset = 0;
|
|
150
|
+
while (offset < header.byteLength) {
|
|
151
|
+
const readLength = Math.min(chunkSize, header.byteLength - offset);
|
|
152
|
+
const response = await commands.typedCall(
|
|
153
|
+
'FilesystemFileRead',
|
|
154
|
+
'FilesystemFile',
|
|
155
|
+
{
|
|
156
|
+
file: { path, offset, total_size: 0 },
|
|
157
|
+
chunk_len: readLength,
|
|
158
|
+
},
|
|
159
|
+
{ timeoutMs }
|
|
160
|
+
);
|
|
161
|
+
const data = toUint8Array(response.message?.data);
|
|
162
|
+
if (data.byteLength === 0) return undefined;
|
|
163
|
+
const copied = Math.min(data.byteLength, header.byteLength - offset);
|
|
164
|
+
header.set(data.subarray(0, copied), offset);
|
|
165
|
+
offset += copied;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const headerHash = parseProtocolV2ResourceHeaderHash(header);
|
|
169
|
+
return headerHash ? { type: resource.type, size, headerHash } : undefined;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* 使用已发布 Pro2 固件支持的文件系统消息构建资源清单。
|
|
174
|
+
* 缺失、无法读取或格式错误的文件不会进入清单,因此会被选中重写。
|
|
175
|
+
*/
|
|
176
|
+
export async function readProtocolV2ResourceInventory({
|
|
177
|
+
commands,
|
|
178
|
+
resources,
|
|
179
|
+
chunkSize = PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE,
|
|
180
|
+
timeoutMs = PROTOCOL_V2_RESOURCE_INVENTORY_TIMEOUT_MS,
|
|
181
|
+
}: {
|
|
182
|
+
commands: Pick<DeviceCommands, 'typedCall'>;
|
|
183
|
+
resources: readonly IProtocolV2Resource[];
|
|
184
|
+
chunkSize?: number;
|
|
185
|
+
timeoutMs?: number;
|
|
186
|
+
}): Promise<ProtocolV2ResourceInventoryItem[]> {
|
|
187
|
+
const normalizedChunkSize = Number.isFinite(chunkSize)
|
|
188
|
+
? Math.max(Math.floor(chunkSize), PROTOCOL_V2_MIN_FILE_READ_CHUNK_SIZE)
|
|
189
|
+
: PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE;
|
|
190
|
+
const inventory: ProtocolV2ResourceInventoryItem[] = [];
|
|
191
|
+
for (const resource of resources) {
|
|
192
|
+
try {
|
|
193
|
+
const item = await readProtocolV2ResourceIdentity({
|
|
194
|
+
commands,
|
|
195
|
+
resource,
|
|
196
|
+
chunkSize: normalizedChunkSize,
|
|
197
|
+
timeoutMs,
|
|
198
|
+
});
|
|
199
|
+
if (item) inventory.push(item);
|
|
200
|
+
} catch {
|
|
201
|
+
// 单个资源无法读取时按缺失处理,不阻断其余资源的增量检查。
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return inventory;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function normalizeHex(value: unknown, expectedLength: number, field: string): string {
|
|
208
|
+
if (typeof value !== 'string') {
|
|
209
|
+
throw new Error(`Invalid Pro2 resource ${field}: expected a hexadecimal string`);
|
|
210
|
+
}
|
|
211
|
+
const normalized = value.replace(/^0x/i, '').toLowerCase();
|
|
212
|
+
if (normalized.length !== expectedLength || !/^[0-9a-f]+$/.test(normalized)) {
|
|
213
|
+
throw new Error(
|
|
214
|
+
`Invalid Pro2 resource ${field}: expected ${expectedLength} hexadecimal characters`
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
return normalized;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function validateResource(value: unknown, index: number): IProtocolV2Resource {
|
|
221
|
+
if (!value || typeof value !== 'object') {
|
|
222
|
+
throw new Error(`Invalid Pro2 resource at stable[${index}]`);
|
|
223
|
+
}
|
|
224
|
+
const resource = value as Partial<IProtocolV2Resource>;
|
|
225
|
+
if (typeof resource.type !== 'string' || !RESOURCE_TYPE_SET.has(resource.type)) {
|
|
226
|
+
throw new Error(`Invalid Pro2 resource type at stable[${index}]`);
|
|
227
|
+
}
|
|
228
|
+
if (typeof resource.url !== 'string' || !resource.url.startsWith('https://')) {
|
|
229
|
+
throw new Error(`Invalid Pro2 resource url at stable[${index}]`);
|
|
230
|
+
}
|
|
231
|
+
if (!Number.isSafeInteger(resource.size) || Number(resource.size) <= 0) {
|
|
232
|
+
throw new Error(`Invalid Pro2 resource size at stable[${index}]`);
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
type: resource.type,
|
|
236
|
+
url: resource.url,
|
|
237
|
+
size: Number(resource.size),
|
|
238
|
+
fileHash: normalizeHex(resource.fileHash, SHA256_HEX_LENGTH, 'fileHash'),
|
|
239
|
+
headerHash: normalizeHex(resource.headerHash, SHA3_512_HEX_LENGTH, 'headerHash'),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function validateBootResources(value: unknown): IProtocolV2BootResources {
|
|
244
|
+
if (!value || typeof value !== 'object') {
|
|
245
|
+
throw new Error('Invalid Pro2 boot resources config');
|
|
246
|
+
}
|
|
247
|
+
const resource = value as Partial<IProtocolV2BootResources>;
|
|
248
|
+
if (resource.required !== false) {
|
|
249
|
+
throw new Error('Invalid Pro2 boot resources required flag: expected false');
|
|
250
|
+
}
|
|
251
|
+
if (resource.target !== 'RES') {
|
|
252
|
+
throw new Error('Invalid Pro2 boot resources target: expected RES');
|
|
253
|
+
}
|
|
254
|
+
if (
|
|
255
|
+
resource.manifestUrl !== undefined &&
|
|
256
|
+
(typeof resource.manifestUrl !== 'string' || !resource.manifestUrl.startsWith('https://'))
|
|
257
|
+
) {
|
|
258
|
+
throw new Error('Invalid Pro2 boot resources manifestUrl');
|
|
259
|
+
}
|
|
260
|
+
if (!Array.isArray(resource.files) || resource.files.length === 0) {
|
|
261
|
+
throw new Error('Invalid Pro2 boot resources files');
|
|
262
|
+
}
|
|
263
|
+
const files = resource.files.map((value, index): IProtocolV2ResourceFile => {
|
|
264
|
+
if (!value || typeof value !== 'object') {
|
|
265
|
+
throw new Error(`Invalid Pro2 boot resource file at files[${index}]`);
|
|
266
|
+
}
|
|
267
|
+
const file = value as Partial<IProtocolV2ResourceFile>;
|
|
268
|
+
if (typeof file.url !== 'string' || !file.url.startsWith('https://')) {
|
|
269
|
+
throw new Error(`Invalid Pro2 boot resource url at files[${index}]`);
|
|
270
|
+
}
|
|
271
|
+
if (
|
|
272
|
+
typeof file.devicePath !== 'string' ||
|
|
273
|
+
!file.devicePath.startsWith('vol0:/') ||
|
|
274
|
+
file.devicePath.includes('..') ||
|
|
275
|
+
file.devicePath.includes('\\')
|
|
276
|
+
) {
|
|
277
|
+
throw new Error(`Invalid Pro2 boot resource devicePath at files[${index}]`);
|
|
278
|
+
}
|
|
279
|
+
if (!Number.isSafeInteger(file.size) || Number(file.size) <= 0) {
|
|
280
|
+
throw new Error(`Invalid Pro2 boot resource size at files[${index}]`);
|
|
281
|
+
}
|
|
282
|
+
return {
|
|
283
|
+
...(typeof file.name === 'string' && file.name ? { name: file.name } : undefined),
|
|
284
|
+
url: file.url,
|
|
285
|
+
devicePath: file.devicePath,
|
|
286
|
+
size: Number(file.size),
|
|
287
|
+
fileHash: normalizeHex(file.fileHash, SHA256_HEX_LENGTH, `boot files[${index}].fileHash`),
|
|
288
|
+
};
|
|
289
|
+
});
|
|
290
|
+
if (new Set(files.map(file => file.devicePath)).size !== files.length) {
|
|
291
|
+
throw new Error('Invalid Pro2 boot resources files: duplicate devicePath');
|
|
292
|
+
}
|
|
293
|
+
return {
|
|
294
|
+
required: false,
|
|
295
|
+
target: 'RES',
|
|
296
|
+
...(resource.manifestUrl ? { manifestUrl: resource.manifestUrl } : undefined),
|
|
297
|
+
files,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/** Validate a complete Pro2 stable resource set from remote configuration. */
|
|
302
|
+
export function parseProtocolV2Resources(value: unknown): IProtocolV2Resources | undefined {
|
|
303
|
+
if (value === undefined) return undefined;
|
|
304
|
+
if (
|
|
305
|
+
!value ||
|
|
306
|
+
typeof value !== 'object' ||
|
|
307
|
+
!Array.isArray((value as { stable?: unknown }).stable)
|
|
308
|
+
) {
|
|
309
|
+
throw new Error('Invalid Pro2 resources config: stable must be an array');
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
const config = value as { stable: unknown[]; boot?: unknown };
|
|
313
|
+
const stable = config.stable.map(validateResource);
|
|
314
|
+
const types = new Set(stable.map(resource => resource.type));
|
|
315
|
+
if (stable.length !== PROTOCOL_V2_RESOURCE_TYPES.length || types.size !== stable.length) {
|
|
316
|
+
throw new Error('Invalid Pro2 resources config: stable must contain six unique resource types');
|
|
317
|
+
}
|
|
318
|
+
for (const type of PROTOCOL_V2_RESOURCE_TYPES) {
|
|
319
|
+
if (!types.has(type)) {
|
|
320
|
+
throw new Error(`Invalid Pro2 resources config: stable is missing ${type}`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
const boot = config.boot === undefined ? undefined : validateBootResources(config.boot);
|
|
324
|
+
return {
|
|
325
|
+
stable: PROTOCOL_V2_RESOURCE_TYPES.map(type => {
|
|
326
|
+
const resource = stable.find(item => item.type === type);
|
|
327
|
+
if (!resource) {
|
|
328
|
+
throw new Error(`Invalid Pro2 resources config: stable is missing ${type}`);
|
|
329
|
+
}
|
|
330
|
+
return resource;
|
|
331
|
+
}),
|
|
332
|
+
...(boot ? { boot } : undefined),
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/** 比较文件系统资源清单;恢复模式无法取得清单时回退到全量更新。 */
|
|
337
|
+
export function buildProtocolV2ResourceUpdatePlan({
|
|
338
|
+
resources,
|
|
339
|
+
inventory,
|
|
340
|
+
mode,
|
|
341
|
+
forced = false,
|
|
342
|
+
}: {
|
|
343
|
+
resources: readonly IProtocolV2Resource[];
|
|
344
|
+
inventory?: readonly ProtocolV2ResourceInventoryItem[];
|
|
345
|
+
mode: ProtocolV2ResourceUpdateMode;
|
|
346
|
+
forced?: boolean;
|
|
347
|
+
}): ProtocolV2ResourceUpdatePlan {
|
|
348
|
+
if (forced) {
|
|
349
|
+
return {
|
|
350
|
+
status: resources.length > 0 ? 'outdated' : 'valid',
|
|
351
|
+
resources: [...resources],
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
if (!inventory) {
|
|
355
|
+
return mode === 'bootloader-recovery'
|
|
356
|
+
? {
|
|
357
|
+
status: resources.length > 0 ? 'outdated' : 'valid',
|
|
358
|
+
resources: [...resources],
|
|
359
|
+
}
|
|
360
|
+
: { status: 'unknown', resources: [] };
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
const inventoryByType = new Map(inventory.map(item => [item.type, item]));
|
|
364
|
+
const changedResources = resources.filter(resource => {
|
|
365
|
+
const current = inventoryByType.get(resource.type);
|
|
366
|
+
return (
|
|
367
|
+
!current ||
|
|
368
|
+
current.size !== resource.size ||
|
|
369
|
+
current.headerHash.toLowerCase() !== resource.headerHash.toLowerCase()
|
|
370
|
+
);
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
return {
|
|
374
|
+
status: changedResources.length === 0 ? 'valid' : 'outdated',
|
|
375
|
+
resources: changedResources,
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
function bytesToHex(bytes: Uint8Array): string {
|
|
380
|
+
return Array.from(bytes, byte => byte.toString(16).padStart(2, '0')).join('');
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/** Verify the complete downloaded file before any device mutation. */
|
|
384
|
+
export function isProtocolV2ResourceFileValid(
|
|
385
|
+
binary: ArrayBuffer,
|
|
386
|
+
resource: Pick<IProtocolV2ResourceFile, 'size' | 'fileHash'>
|
|
387
|
+
): boolean {
|
|
388
|
+
if (binary.byteLength !== resource.size) return false;
|
|
389
|
+
return bytesToHex(sha256(new Uint8Array(binary))) === resource.fileHash.toLowerCase();
|
|
390
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { DeviceSettings, DeviceSettingsPage } from '@onekeyfe/hd-transport';
|
|
2
|
+
import type { UnlockPolicy } from '../../api/BaseMethod';
|
|
3
|
+
import type { ProtocolV2InteractionDescriptor } from './uiInteraction';
|
|
4
|
+
|
|
5
|
+
export const PROTOCOL_V2_LOCK_FREE_DEVICE_SETTINGS = [
|
|
6
|
+
'language',
|
|
7
|
+
'brightness',
|
|
8
|
+
'animation_enable',
|
|
9
|
+
'tap_to_wake',
|
|
10
|
+
'haptic_feedback',
|
|
11
|
+
'device_name_display_enabled',
|
|
12
|
+
] as const satisfies readonly (keyof DeviceSettings)[];
|
|
13
|
+
|
|
14
|
+
const lockFreeDeviceSettings = new Set<keyof DeviceSettings>(PROTOCOL_V2_LOCK_FREE_DEVICE_SETTINGS);
|
|
15
|
+
|
|
16
|
+
export const getProtocolV2SettingsUnlockPolicy = (settings: DeviceSettings): UnlockPolicy =>
|
|
17
|
+
Object.keys(settings).every(key => lockFreeDeviceSettings.has(key as keyof DeviceSettings))
|
|
18
|
+
? 'none'
|
|
19
|
+
: 'unlock-before-run';
|
|
20
|
+
|
|
21
|
+
export type ProtocolV2SettingsOperation =
|
|
22
|
+
| {
|
|
23
|
+
kind: 'direct';
|
|
24
|
+
settings: DeviceSettings;
|
|
25
|
+
}
|
|
26
|
+
| {
|
|
27
|
+
kind: 'page';
|
|
28
|
+
page: DeviceSettingsPage;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const getProtocolV2SettingsBehavior = (
|
|
32
|
+
operation: ProtocolV2SettingsOperation
|
|
33
|
+
): {
|
|
34
|
+
unlockPolicy: UnlockPolicy;
|
|
35
|
+
uiInteraction?: ProtocolV2InteractionDescriptor;
|
|
36
|
+
} => {
|
|
37
|
+
if (operation.kind === 'page') {
|
|
38
|
+
return {
|
|
39
|
+
unlockPolicy: 'unlock-before-run',
|
|
40
|
+
uiInteraction: {
|
|
41
|
+
request: 'button',
|
|
42
|
+
source: 'method-lifecycle',
|
|
43
|
+
reason: 'settings-page',
|
|
44
|
+
completion: 'operation-completed',
|
|
45
|
+
deviceOnly: true,
|
|
46
|
+
page: operation.page,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
unlockPolicy: getProtocolV2SettingsUnlockPolicy(operation.settings),
|
|
53
|
+
uiInteraction:
|
|
54
|
+
typeof operation.settings.label === 'string'
|
|
55
|
+
? {
|
|
56
|
+
request: 'button',
|
|
57
|
+
source: 'method-lifecycle',
|
|
58
|
+
reason: 'device-management',
|
|
59
|
+
completion: 'operation-completed',
|
|
60
|
+
deviceOnly: true,
|
|
61
|
+
operation: 'change-label',
|
|
62
|
+
}
|
|
63
|
+
: undefined,
|
|
64
|
+
};
|
|
65
|
+
};
|