@onekeyfe/hd-core 1.2.0-alpha.2 → 1.2.0-alpha.21
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 +75 -0
- package/__tests__/DeviceCommands.test.ts +285 -0
- package/__tests__/DeviceEventRegistration.test.ts +43 -0
- package/__tests__/connectSettings.test.ts +19 -0
- package/__tests__/core-dispose.test.ts +34 -0
- package/__tests__/core-error-output.test.ts +39 -0
- package/__tests__/device-features-state.test.ts +78 -0
- package/__tests__/device-identity.test.ts +30 -0
- package/__tests__/device-lifecycle-events.test.ts +117 -0
- package/__tests__/device-pool-state.test.ts +132 -0
- package/__tests__/device-settings.test.ts +391 -0
- package/__tests__/device-state-contract.test.ts +27 -0
- package/__tests__/device-state-events.test.ts +162 -0
- package/__tests__/device-state-mapper.test.ts +241 -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 +106 -0
- package/__tests__/device-wallet-session-store.test.ts +213 -0
- package/__tests__/deviceFeaturesUtils.test.ts +39 -0
- package/__tests__/deviceSettings.test.ts +103 -0
- package/__tests__/evmLedgerLegacySafety.test.ts +10 -6
- package/__tests__/evmSignTypedData.test.ts +80 -0
- package/__tests__/filesystemValidation.test.ts +53 -0
- package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +402 -0
- package/__tests__/get-device-state.test.ts +410 -0
- package/__tests__/homescreen.test.ts +24 -0
- package/__tests__/kaspaSignTransaction.test.ts +591 -0
- package/__tests__/logBlockEvent.test.ts +26 -0
- package/__tests__/networkUtils.test.ts +386 -0
- package/__tests__/open-wallet-session-error-response.test.ts +43 -0
- package/__tests__/open-wallet-session.test.ts +559 -0
- package/__tests__/preInitialize.test.ts +33 -0
- package/__tests__/pro2Wallpaper.test.ts +50 -0
- package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
- package/__tests__/protocol-v2-firmware-targets.test.ts +19 -0
- package/__tests__/protocol-v2.test.ts +3954 -1191
- package/__tests__/protocolV2FileWrite.test.ts +92 -0
- package/__tests__/protocolV2UiInteraction.test.ts +266 -0
- package/__tests__/public-device-state-api.test.ts +257 -0
- package/__tests__/public-pro2-api-boundary.test.ts +110 -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 +136 -0
- package/dist/api/BaseMethod.d.ts +8 -0
- package/dist/api/BaseMethod.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/ClearSessionCache.d.ts +9 -0
- package/dist/api/ClearSessionCache.d.ts.map +1 -0
- package/dist/api/DirList.d.ts.map +1 -1
- package/dist/api/FileRead.d.ts.map +1 -1
- package/dist/api/FileWrite.d.ts +1 -0
- package/dist/api/FileWrite.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV2.d.ts +2 -2
- package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV4.d.ts +25 -5
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/GetDeviceState.d.ts +7 -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 -6
- package/dist/api/GetPassphraseState.d.ts.map +1 -1
- package/dist/api/OpenWalletSession.d.ts +14 -0
- package/dist/api/OpenWalletSession.d.ts.map +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/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/api/device/DeviceCancel.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceSettings.d.ts.map +1 -1
- package/dist/api/device/DeviceUnlock.d.ts +1 -1
- package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
- package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceWipe.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +1 -0
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
- package/dist/api/firmware/getBinary.d.ts +11 -3
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- package/dist/api/firmware/progressThrottle.d.ts +3 -0
- package/dist/api/firmware/progressThrottle.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 +33 -0
- package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
- package/dist/api/index.d.ts +12 -19
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts +5 -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/protocol-v2/DeviceFactoryInfoGet.d.ts +6 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +7 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +3 -2
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts +28 -0
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts +6 -0
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +26 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
- package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
- package/dist/api/protocol-v2/{FilesystemFixPermission.d.ts → FilesystemPermissionFix.d.ts} +2 -2
- package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -0
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +6 -0
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -0
- package/dist/api/protocol-v2/helpers.d.ts +27 -19
- package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
- package/dist/api/ton/TonSignData.d.ts +1 -5
- package/dist/api/ton/TonSignData.d.ts.map +1 -1
- package/dist/api/utils.d.ts +2 -1
- package/dist/api/utils.d.ts.map +1 -1
- package/dist/constants/index.d.ts +2 -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 +11 -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/data-manager/DataManager.d.ts +1 -1
- package/dist/data-manager/DataManager.d.ts.map +1 -1
- package/dist/data-manager/connectSettings.d.ts.map +1 -1
- package/dist/device/Device.d.ts +35 -11
- 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/DeviceFeaturesState.d.ts +3 -0
- package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
- package/dist/device/DevicePool.d.ts +4 -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 +20 -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/events/device.d.ts +11 -2
- package/dist/events/device.d.ts.map +1 -1
- package/dist/events/logBlockEvent.d.ts.map +1 -1
- package/dist/events/ui-request.d.ts +18 -2
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/index.d.ts +1361 -609
- package/dist/index.js +5898 -2860
- package/dist/inject.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 +23 -28
- package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/firmware.d.ts +11 -9
- 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/lockedError.d.ts +2 -0
- package/dist/protocols/protocol-v2/lockedError.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +16 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/unlockRetry.d.ts +11 -0
- package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts +19 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
- package/dist/types/api/checkAllFirmwareRelease.d.ts +1 -2
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- 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 +2 -2
- package/dist/types/api/deviceUnlock.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +6 -6
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- 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 +22 -25
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/api/kaspaSignTransaction.d.ts +27 -2
- package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
- package/dist/types/api/openWalletSession.d.ts +41 -0
- package/dist/types/api/openWalletSession.d.ts.map +1 -0
- package/dist/types/api/protocolV2.d.ts +23 -28
- package/dist/types/api/protocolV2.d.ts.map +1 -1
- package/dist/types/api/sessionCache.d.ts +10 -0
- package/dist/types/api/sessionCache.d.ts.map +1 -0
- package/dist/types/device.d.ts +121 -5
- 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 +21 -1
- 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 +13 -0
- package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
- package/dist/utils/deviceFeaturesUtils.d.ts +13 -3
- package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
- package/dist/utils/deviceInfoUtils.d.ts +9 -8
- 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 +6 -5
- package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
- package/dist/utils/homescreen.d.ts.map +1 -1
- package/dist/utils/index.d.ts +5 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/networkUtils.d.ts +9 -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/pro2Wallpaper.d.ts +12 -0
- package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
- package/dist/utils/tracing.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/api/BaseMethod.ts +36 -9
- package/src/api/CheckBootloaderRelease.ts +1 -2
- package/src/api/CheckFirmwareRelease.ts +1 -2
- package/src/api/ClearSessionCache.ts +28 -0
- package/src/api/DirList.ts +5 -3
- package/src/api/DirMake.ts +3 -3
- package/src/api/DirRemove.ts +3 -3
- package/src/api/FileDelete.ts +3 -3
- package/src/api/FileRead.ts +23 -7
- package/src/api/FileWrite.ts +23 -168
- package/src/api/FirmwareUpdate.ts +4 -4
- package/src/api/FirmwareUpdateV2.ts +133 -45
- package/src/api/FirmwareUpdateV3.ts +3 -5
- package/src/api/FirmwareUpdateV4.ts +1138 -357
- package/src/api/GetDeviceState.ts +55 -0
- package/src/api/GetFeatures.ts +8 -3
- package/src/api/GetOnekeyFeatures.ts +3 -72
- package/src/api/GetPassphraseState.ts +11 -18
- package/src/api/OpenWalletSession.ts +221 -0
- package/src/api/PathInfo.ts +5 -3
- package/src/api/PromptWebDeviceAccess.ts +2 -3
- package/src/api/SearchDevices.ts +29 -4
- package/src/api/UploadPortfolio.ts +40 -0
- package/src/api/alephium/AlephiumSignTransaction.ts +2 -2
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +4 -8
- package/src/api/benfen/BenfenGetAddress.ts +1 -1
- package/src/api/btc/BTCGetPublicKey.ts +1 -1
- package/src/api/cardano/CardanoSignMessage.ts +1 -1
- package/src/api/cardano/CardanoSignTransaction.ts +1 -1
- package/src/api/device/DeviceCancel.ts +1 -0
- package/src/api/device/DeviceChangePin.ts +24 -0
- package/src/api/device/DeviceFullyUploadResource.ts +4 -5
- package/src/api/device/DeviceLock.ts +1 -0
- package/src/api/device/DeviceRebootToBoardloader.ts +5 -4
- package/src/api/device/DeviceRebootToBootloader.ts +5 -4
- package/src/api/device/DeviceSettings.ts +183 -1
- package/src/api/device/DeviceUnlock.ts +11 -1
- package/src/api/device/DeviceUpdateBootloader.ts +1 -2
- package/src/api/device/DeviceWipe.ts +19 -0
- package/src/api/evm/EVMSignTypedData.ts +3 -5
- 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/firmware/FirmwareUpdateBaseMethod.ts +21 -7
- package/src/api/firmware/getBinary.ts +8 -3
- package/src/api/firmware/progressThrottle.ts +44 -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 +193 -0
- package/src/api/index.ts +14 -20
- package/src/api/kaspa/KaspaSignTransaction.ts +341 -22
- package/src/api/kaspa/helpers/TransferSerialize.ts +14 -0
- package/src/api/nervos/NervosSignTransaction.ts +2 -2
- package/src/api/nexa/NexaSignTransaction.ts +1 -1
- package/src/api/protocol-v2/{FactoryGetDeviceInfo.ts → DeviceFactoryInfoGet.ts} +4 -4
- package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +32 -0
- package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +7 -9
- package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +41 -6
- package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +6 -4
- package/src/api/protocol-v2/DeviceInfoGet.ts +145 -0
- package/src/api/protocol-v2/DeviceReboot.ts +5 -3
- package/src/api/protocol-v2/DeviceStatusGet.ts +16 -0
- package/src/api/protocol-v2/DeviceUploadWallpaper.ts +131 -0
- package/src/api/protocol-v2/FilesystemFormat.ts +5 -2
- package/src/api/protocol-v2/{FilesystemFixPermission.ts → FilesystemPermissionFix.ts} +3 -3
- package/src/api/protocol-v2/Ping.ts +1 -1
- package/src/api/protocol-v2/{GetProtoVersion.ts → ProtocolInfoRequest.ts} +3 -3
- package/src/api/protocol-v2/helpers.ts +58 -62
- package/src/api/ton/TonSignData.ts +1 -5
- package/src/api/utils.ts +7 -3
- package/src/constants/index.ts +7 -1
- package/src/core/RequestQueue.ts +1 -0
- package/src/core/deviceEventRegistration.ts +23 -0
- package/src/core/index.ts +140 -35
- package/src/data/messages/messages-protocol-v2.json +825 -709
- package/src/data/messages/messages.json +286 -1
- package/src/data-manager/DataManager.ts +13 -6
- package/src/data-manager/connectSettings.ts +4 -0
- package/src/device/Device.ts +480 -192
- package/src/device/DeviceCommands.ts +81 -25
- package/src/device/DeviceFeaturesState.ts +25 -0
- package/src/device/DevicePool.ts +67 -19
- package/src/device/DeviceStateMapper.ts +349 -0
- package/src/device/DeviceStateProjector.ts +95 -0
- package/src/device/DeviceStateStore.ts +201 -0
- package/src/device/DeviceWalletSessionStore.ts +105 -0
- package/src/device/cloneDeviceState.ts +39 -0
- package/src/device/deviceIdentity.ts +18 -0
- package/src/deviceProfile/buildDeviceFeatures.ts +235 -210
- package/src/deviceProfile/index.ts +0 -1
- package/src/events/device.ts +17 -1
- package/src/events/logBlockEvent.ts +8 -1
- package/src/events/ui-request.ts +24 -2
- package/src/inject.ts +23 -34
- package/src/protocols/protocol-v2/deviceSession.ts +24 -0
- package/src/protocols/protocol-v2/features.ts +68 -82
- package/src/protocols/protocol-v2/firmware.ts +12 -36
- package/src/protocols/protocol-v2/index.ts +3 -1
- package/src/protocols/protocol-v2/lockedError.ts +10 -0
- package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +61 -0
- package/src/protocols/protocol-v2/uiInteraction.ts +210 -0
- package/src/protocols/protocol-v2/unlockRetry.ts +76 -0
- package/src/protocols/protocol-v2/walletSession.ts +107 -0
- package/src/types/api/checkAllFirmwareRelease.ts +1 -2
- package/src/types/api/deviceSettings.ts +26 -2
- package/src/types/api/deviceUnlock.ts +5 -2
- package/src/types/api/firmwareUpdate.ts +28 -20
- 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 +8 -11
- package/src/types/api/index.ts +30 -53
- package/src/types/api/kaspaSignTransaction.ts +40 -2
- package/src/types/api/openWalletSession.ts +64 -0
- package/src/types/api/protocolV2.ts +58 -55
- package/src/types/api/sessionCache.ts +14 -0
- package/src/types/device.ts +170 -4
- package/src/types/params.ts +4 -0
- package/src/types/settings.ts +42 -30
- package/src/utils/assets.ts +4 -1
- package/src/utils/deviceFeaturesCompat.ts +173 -0
- package/src/utils/deviceFeaturesUtils.ts +68 -24
- package/src/utils/deviceInfoUtils.ts +26 -64
- package/src/utils/deviceSettings.ts +161 -39
- package/src/utils/deviceVersionUtils.ts +25 -44
- package/src/utils/findDefectiveBatchDevice.ts +3 -3
- package/src/utils/homescreen.ts +10 -0
- package/src/utils/index.ts +21 -1
- package/src/utils/networkUtils.ts +270 -14
- package/src/utils/pro2Wallpaper.ts +109 -0
- package/src/utils/tracing.ts +3 -1
- package/dist/api/GetDeviceInfo.d.ts +0 -9
- package/dist/api/GetDeviceInfo.d.ts.map +0 -1
- package/dist/api/protocol-v2/DevReboot.d.ts +0 -7
- package/dist/api/protocol-v2/DevReboot.d.ts.map +0 -1
- package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts +0 -29
- package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts.map +0 -1
- package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts +0 -7
- package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts.map +0 -1
- package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts +0 -6
- package/dist/api/protocol-v2/FactoryGetDeviceInfo.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/api/protocol-v2/FilesystemFixPermission.d.ts.map +0 -1
- package/dist/api/protocol-v2/GetProtoVersion.d.ts +0 -6
- package/dist/api/protocol-v2/GetProtoVersion.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 -85
- package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
- package/src/api/GetDeviceInfo.ts +0 -145
- package/src/api/protocol-v2/DevReboot.ts +0 -24
- package/src/api/protocol-v2/DeviceGetDeviceInfo.ts +0 -118
- package/src/api/protocol-v2/FactoryDeviceInfoSettings.ts +0 -29
- package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
- package/src/deviceProfile/buildDeviceProfile.ts +0 -334
- package/src/types/api/getDeviceInfo.ts +0 -99
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { ERRORS, HardwareError, HardwareErrorCode } from '@onekeyfe/hd-shared';
|
|
2
|
+
import {
|
|
3
|
+
DeviceErrorCode,
|
|
4
|
+
type FailureType,
|
|
5
|
+
type Messages,
|
|
6
|
+
type Transport,
|
|
7
|
+
type TransportCallOptions,
|
|
8
|
+
} from '@onekeyfe/hd-transport';
|
|
2
9
|
|
|
3
10
|
import TransportManager from '../data-manager/TransportManager';
|
|
4
11
|
import DataManager from '../data-manager/DataManager';
|
|
@@ -12,12 +19,6 @@ import {
|
|
|
12
19
|
} from '../utils/tracing';
|
|
13
20
|
|
|
14
21
|
import type { Device } from './Device';
|
|
15
|
-
import type {
|
|
16
|
-
FailureType,
|
|
17
|
-
Messages,
|
|
18
|
-
Transport,
|
|
19
|
-
TransportCallOptions,
|
|
20
|
-
} from '@onekeyfe/hd-transport';
|
|
21
22
|
|
|
22
23
|
export type PassphrasePromptResponse = {
|
|
23
24
|
passphrase?: string;
|
|
@@ -51,11 +52,16 @@ const HIGH_VOLUME_DEBUG_CALLS = new Set([
|
|
|
51
52
|
'FirmwareUpload',
|
|
52
53
|
'ResourceAck',
|
|
53
54
|
]);
|
|
55
|
+
const SENSITIVE_DEBUG_CALLS = new Set(['DeviceSessionGet']);
|
|
54
56
|
|
|
55
57
|
function shouldReduceDebugForCall(type: string) {
|
|
56
58
|
return HIGH_VOLUME_DEBUG_CALLS.has(type);
|
|
57
59
|
}
|
|
58
60
|
|
|
61
|
+
function shouldBlockDebugForCall(type: string) {
|
|
62
|
+
return SENSITIVE_DEBUG_CALLS.has(type);
|
|
63
|
+
}
|
|
64
|
+
|
|
59
65
|
function getBinaryByteLength(value: unknown): number | undefined {
|
|
60
66
|
if (value instanceof ArrayBuffer) {
|
|
61
67
|
return value.byteLength;
|
|
@@ -98,6 +104,12 @@ function sanitizeDebugPayload(value: unknown, key = '', depth = 0): unknown {
|
|
|
98
104
|
return summarizeRedactedData(value);
|
|
99
105
|
}
|
|
100
106
|
|
|
107
|
+
// Redact passphrase-bearing keys as defense in depth so wallet identifiers and
|
|
108
|
+
// host passphrases cannot reach diagnostic logs through a future call path.
|
|
109
|
+
if (key && /passphrase/i.test(key)) {
|
|
110
|
+
return '[redacted passphrase]';
|
|
111
|
+
}
|
|
112
|
+
|
|
101
113
|
const byteLength = getBinaryByteLength(value);
|
|
102
114
|
if (byteLength !== undefined) {
|
|
103
115
|
return `[binary: ${byteLength} bytes]`;
|
|
@@ -141,10 +153,9 @@ function sanitizeDebugPayload(value: unknown, key = '', depth = 0): unknown {
|
|
|
141
153
|
}
|
|
142
154
|
|
|
143
155
|
/**
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* 等与响应类型相关的选项。
|
|
156
|
+
* Interactive acknowledgements must not inherit timeoutMs from the original call.
|
|
157
|
+
* User confirmation and PIN/passphrase entry have unbounded think time. Preserve only
|
|
158
|
+
* response-related options such as expectedTypes and intermediateTypes.
|
|
148
159
|
*/
|
|
149
160
|
const stripInteractiveAckTimeout = (
|
|
150
161
|
options?: TransportCallOptions
|
|
@@ -440,6 +451,7 @@ export class DeviceCommands {
|
|
|
440
451
|
'PinMatrixAck',
|
|
441
452
|
'PassphraseAck',
|
|
442
453
|
'Cancel',
|
|
454
|
+
'DeviceSessionGet',
|
|
443
455
|
'BixinPinInputOnDevice',
|
|
444
456
|
'FilesystemFileRead',
|
|
445
457
|
'FilesystemFileWrite',
|
|
@@ -450,7 +462,7 @@ export class DeviceCommands {
|
|
|
450
462
|
'FirmwareUpload',
|
|
451
463
|
'ResourceAck',
|
|
452
464
|
] as any;
|
|
453
|
-
if (!skipTypes.includes(type) && msg) {
|
|
465
|
+
if (!skipTypes.includes(type) && !shouldBlockDebugForCall(type) && msg) {
|
|
454
466
|
// Use debug channel to avoid noise escalation
|
|
455
467
|
Log.debug('[DeviceCommands] [typedCall] Sending payload', type, sanitizeDebugPayload(msg));
|
|
456
468
|
}
|
|
@@ -475,12 +487,14 @@ export class DeviceCommands {
|
|
|
475
487
|
// throw bridge network error
|
|
476
488
|
if (error instanceof HardwareError) {
|
|
477
489
|
if (error.errorCode === HardwareErrorCode.ResponseUnexpectTypeError) {
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
490
|
+
if (!shouldBlockDebugForCall(type)) {
|
|
491
|
+
Log.debug('[DeviceCommands] [typedCall] Unexpected response type', {
|
|
492
|
+
request: type,
|
|
493
|
+
expected: resType,
|
|
494
|
+
received: response.type,
|
|
495
|
+
response: sanitizeDebugPayload(response.message),
|
|
496
|
+
});
|
|
497
|
+
}
|
|
484
498
|
// Do not intercept CallMethodError
|
|
485
499
|
// Do not intercept “assertType: Response of unexpected type” error
|
|
486
500
|
// Blocking the above two messages will not know what the specific error message is, and the specific error should be handled by the subsequent business logic.
|
|
@@ -519,8 +533,8 @@ export class DeviceCommands {
|
|
|
519
533
|
options?: TransportCallOptions
|
|
520
534
|
): Promise<DefaultMessageResponse> {
|
|
521
535
|
try {
|
|
522
|
-
if (shouldReduceDebugForCall(callType)) {
|
|
523
|
-
//
|
|
536
|
+
if (shouldReduceDebugForCall(callType) || shouldBlockDebugForCall(callType)) {
|
|
537
|
+
// Skip high-volume or security-sensitive response payloads.
|
|
524
538
|
} else if (DataManager.getSettings('env') === 'react-native') {
|
|
525
539
|
Log.debug('_filterCommonTypes: ', JSON.stringify(sanitizeDebugPayload(res)));
|
|
526
540
|
} else {
|
|
@@ -532,8 +546,9 @@ export class DeviceCommands {
|
|
|
532
546
|
|
|
533
547
|
this.device.clearCancelableAction();
|
|
534
548
|
if (res.type === 'Failure') {
|
|
535
|
-
const { code, message } = res.message as {
|
|
549
|
+
const { code, subcode, message } = res.message as {
|
|
536
550
|
code?: string | FailureType;
|
|
551
|
+
subcode?: number;
|
|
537
552
|
message?: string;
|
|
538
553
|
};
|
|
539
554
|
let error: HardwareError | null = null;
|
|
@@ -577,8 +592,31 @@ export class DeviceCommands {
|
|
|
577
592
|
}
|
|
578
593
|
|
|
579
594
|
if (code === 'Failure_ProcessError') {
|
|
580
|
-
|
|
595
|
+
const normalizedMessage = message?.trim() ?? '';
|
|
596
|
+
const isLegacyProtocolV2ActionCancelledFailure =
|
|
597
|
+
this.device.isProtocolV2() &&
|
|
598
|
+
/^(?:cancelled on device|confirm dismissed)$/i.test(normalizedMessage);
|
|
599
|
+
const isLegacyProtocolV2LockedFailure =
|
|
600
|
+
this.device.isProtocolV2() && /^device (?:is )?locked$/i.test(normalizedMessage);
|
|
581
601
|
if (
|
|
602
|
+
subcode === DeviceErrorCode.DeviceError_ActionCancelled ||
|
|
603
|
+
isLegacyProtocolV2ActionCancelledFailure
|
|
604
|
+
) {
|
|
605
|
+
error = ERRORS.TypedError(HardwareErrorCode.ActionCancelled, message, {
|
|
606
|
+
failureCode: code,
|
|
607
|
+
subcode,
|
|
608
|
+
firmwareMessage: message,
|
|
609
|
+
});
|
|
610
|
+
} else if (
|
|
611
|
+
subcode === DeviceErrorCode.DeviceError_DeviceLocked ||
|
|
612
|
+
isLegacyProtocolV2LockedFailure
|
|
613
|
+
) {
|
|
614
|
+
error = ERRORS.TypedError(HardwareErrorCode.DeviceLocked, message, {
|
|
615
|
+
failureCode: code,
|
|
616
|
+
subcode,
|
|
617
|
+
firmwareMessage: message,
|
|
618
|
+
});
|
|
619
|
+
} else if (
|
|
582
620
|
message?.includes('Bootloader file verify failed') ||
|
|
583
621
|
message?.includes('verify failed')
|
|
584
622
|
) {
|
|
@@ -655,7 +693,7 @@ export class DeviceCommands {
|
|
|
655
693
|
|
|
656
694
|
if (res.type === 'PassphraseRequest') {
|
|
657
695
|
const existsAttachPinUser = res.message.exists_attach_pin_user;
|
|
658
|
-
return this.
|
|
696
|
+
return this.promptPassphrase({
|
|
659
697
|
existsAttachPinUser,
|
|
660
698
|
}).then(response => {
|
|
661
699
|
const { passphrase, passphraseOnDevice, attachPinOnDevice } = response;
|
|
@@ -753,10 +791,27 @@ export class DeviceCommands {
|
|
|
753
791
|
});
|
|
754
792
|
}
|
|
755
793
|
|
|
756
|
-
|
|
794
|
+
promptPassphrase(
|
|
795
|
+
options: PassphraseRequestPayload,
|
|
796
|
+
promptOptions: { cancelDeviceOnReject?: boolean } = {}
|
|
797
|
+
) {
|
|
757
798
|
return new Promise<PassphrasePromptResponse>((resolve, reject) => {
|
|
758
|
-
const cancelAndReject = (_error?: Error) =>
|
|
759
|
-
|
|
799
|
+
const cancelAndReject = (_error?: Error) => {
|
|
800
|
+
const rejectWithCancelledError = () => {
|
|
801
|
+
reject(
|
|
802
|
+
ERRORS.TypedError(
|
|
803
|
+
HardwareErrorCode.CallQueueActionCancelled,
|
|
804
|
+
`${DEVICE.PASSPHRASE} canceled`
|
|
805
|
+
)
|
|
806
|
+
);
|
|
807
|
+
};
|
|
808
|
+
|
|
809
|
+
if (promptOptions.cancelDeviceOnReject === false) {
|
|
810
|
+
rejectWithCancelledError();
|
|
811
|
+
return Promise.resolve();
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
return cancelDeviceInPrompt(this.device, false)
|
|
760
815
|
.then(onCancel => {
|
|
761
816
|
const error = ERRORS.TypedError(
|
|
762
817
|
HardwareErrorCode.CallQueueActionCancelled,
|
|
@@ -773,6 +828,7 @@ export class DeviceCommands {
|
|
|
773
828
|
.catch(error => {
|
|
774
829
|
reject(error);
|
|
775
830
|
});
|
|
831
|
+
};
|
|
776
832
|
|
|
777
833
|
if (this.device.listenerCount(DEVICE.PASSPHRASE) > 0) {
|
|
778
834
|
this.device.setCancelableAction(cancelAndReject);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Features } from '../types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Merge a field-level device-state patch.
|
|
5
|
+
*
|
|
6
|
+
* `undefined` means the response omitted a field and preserves the cache; `null`
|
|
7
|
+
* means the device explicitly returned an empty value and must be cached. Callers
|
|
8
|
+
* provide complete object fields such as raw; this function does not deep-merge.
|
|
9
|
+
*/
|
|
10
|
+
export function mergeDeviceFeaturesPatch(previous: Features, patch: Partial<Features>): Features {
|
|
11
|
+
let next = previous;
|
|
12
|
+
|
|
13
|
+
for (const [key, value] of Object.entries(patch) as Array<
|
|
14
|
+
[keyof Features, Features[keyof Features] | undefined]
|
|
15
|
+
>) {
|
|
16
|
+
if (value !== undefined && !Object.is(previous[key], value)) {
|
|
17
|
+
if (next === previous) {
|
|
18
|
+
next = { ...previous };
|
|
19
|
+
}
|
|
20
|
+
(next as Record<keyof Features, Features[keyof Features]>)[key] = value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return next;
|
|
25
|
+
}
|
package/src/device/DevicePool.ts
CHANGED
|
@@ -106,26 +106,32 @@ export class DevicePool extends EventEmitter {
|
|
|
106
106
|
if (exist) {
|
|
107
107
|
// Log.debug('find existed Device: ', connectId);
|
|
108
108
|
device.updateDescriptor(exist, true);
|
|
109
|
+
await this._refreshRuntimeState(device, initOptions);
|
|
109
110
|
devices[connectId] = device;
|
|
110
111
|
deviceList.push(device);
|
|
111
|
-
await this._checkDevicePool(initOptions);
|
|
112
|
+
await this._checkDevicePool(initOptions, connectId);
|
|
112
113
|
return { devices, deviceList };
|
|
113
114
|
}
|
|
114
115
|
Log.debug('found device in cache, but path is different: ', connectId);
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
|
|
118
|
-
|
|
119
|
+
const matchedDescriptor = connectId
|
|
120
|
+
? descriptorList.find(descriptor => descriptor.path === connectId)
|
|
121
|
+
: undefined;
|
|
122
|
+
const descriptorsToInitialize = matchedDescriptor ? [matchedDescriptor] : descriptorList;
|
|
123
|
+
|
|
124
|
+
for await (const descriptor of descriptorsToInitialize) {
|
|
119
125
|
const device = await this._createDevice(descriptor, initOptions);
|
|
120
126
|
|
|
121
|
-
const
|
|
122
|
-
if (
|
|
123
|
-
if (this.devicesCache[
|
|
124
|
-
const cache = this.devicesCache[
|
|
127
|
+
const connectId = device.getConnectId();
|
|
128
|
+
if (connectId) {
|
|
129
|
+
if (this.devicesCache[connectId]) {
|
|
130
|
+
const cache = this.devicesCache[connectId];
|
|
125
131
|
cache.updateDescriptor(descriptor, true);
|
|
126
132
|
}
|
|
127
|
-
this.devicesCache[
|
|
128
|
-
devices[
|
|
133
|
+
this.devicesCache[connectId] = device;
|
|
134
|
+
devices[connectId] = device;
|
|
129
135
|
}
|
|
130
136
|
|
|
131
137
|
deviceList.push(device);
|
|
@@ -133,7 +139,7 @@ export class DevicePool extends EventEmitter {
|
|
|
133
139
|
// Log.debug('get devices result : ', devices, deviceList);
|
|
134
140
|
// console.log('device poll -> connected: ', this.connectedPool);
|
|
135
141
|
// console.log('device poll -> disconnected: ', this.disconnectPool);
|
|
136
|
-
await this._checkDevicePool(initOptions);
|
|
142
|
+
await this._checkDevicePool(initOptions, matchedDescriptor ? connectId : undefined);
|
|
137
143
|
return { devices, deviceList };
|
|
138
144
|
}
|
|
139
145
|
|
|
@@ -151,32 +157,73 @@ export class DevicePool extends EventEmitter {
|
|
|
151
157
|
device = Device.fromDescriptor(descriptor);
|
|
152
158
|
device.deviceConnector = this.connector;
|
|
153
159
|
await device.connect(initOptions?.connectProtocol);
|
|
154
|
-
|
|
155
|
-
|
|
160
|
+
try {
|
|
161
|
+
await device.initialize(initOptions);
|
|
162
|
+
if (initOptions?.refreshRuntimeState && device.isProtocolV2()) {
|
|
163
|
+
await this._refreshProtocolV2DiscoveryState(device);
|
|
164
|
+
}
|
|
165
|
+
} finally {
|
|
166
|
+
await device.release();
|
|
167
|
+
}
|
|
156
168
|
}
|
|
157
169
|
return device;
|
|
158
170
|
}
|
|
159
171
|
|
|
160
|
-
static async
|
|
161
|
-
|
|
172
|
+
static async _refreshRuntimeState(device: Device, initOptions?: InitOptions) {
|
|
173
|
+
if (!initOptions?.refreshRuntimeState || !device.isProtocolV2()) return;
|
|
174
|
+
let refreshError: unknown;
|
|
175
|
+
await device.run(
|
|
176
|
+
async () => {
|
|
177
|
+
try {
|
|
178
|
+
await this._refreshProtocolV2DiscoveryState(device);
|
|
179
|
+
} catch (error) {
|
|
180
|
+
// Device.run releases after the callback; then propagate the actual read error.
|
|
181
|
+
refreshError = error;
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
{ connectProtocol: initOptions.connectProtocol }
|
|
185
|
+
);
|
|
186
|
+
if (refreshError instanceof Error) throw refreshError;
|
|
187
|
+
if (refreshError) throw new Error(String(refreshError));
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Device lists require live mode and name data. A status failure remains a connection
|
|
192
|
+
* error; settings only supplies a label, so its failure retains the existing name.
|
|
193
|
+
* Device.getDeviceState skips unsupported status/settings calls in loader mode.
|
|
194
|
+
*/
|
|
195
|
+
static async _refreshProtocolV2DiscoveryState(device: Device) {
|
|
196
|
+
await device.getDeviceState({ refreshSections: ['status'] });
|
|
197
|
+
try {
|
|
198
|
+
await device.getDeviceState({ refreshSections: ['settings'] });
|
|
199
|
+
} catch (error) {
|
|
200
|
+
Log.debug('Unable to refresh Protocol V2 device label during discovery', error);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
static async _checkDevicePool(initOptions?: InitOptions, connectId?: string) {
|
|
205
|
+
await this._sendConnectMessage(initOptions, connectId);
|
|
162
206
|
this._sendDisconnectMessage();
|
|
163
207
|
}
|
|
164
208
|
|
|
165
|
-
static async _sendConnectMessage(initOptions?: InitOptions) {
|
|
209
|
+
static async _sendConnectMessage(initOptions?: InitOptions, connectId?: string) {
|
|
166
210
|
for (let i = this.connectedPool.length - 1; i >= 0; i--) {
|
|
167
211
|
const descriptor = this.connectedPool[i];
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
212
|
+
if (!connectId || descriptor.path === connectId) {
|
|
213
|
+
const device = await this._createDevice(descriptor, initOptions);
|
|
214
|
+
Log.debug('emit DEVICE.CONNECT: ', device?.features);
|
|
215
|
+
this.emitter.emit(DEVICE.CONNECT, device);
|
|
216
|
+
this.connectedPool.splice(i, 1);
|
|
217
|
+
}
|
|
172
218
|
}
|
|
173
219
|
}
|
|
174
220
|
|
|
175
221
|
static _sendDisconnectMessage() {
|
|
176
222
|
for (let i = this.disconnectPool.length - 1; i >= 0; i--) {
|
|
177
|
-
const descriptor = this.
|
|
223
|
+
const descriptor = this.disconnectPool[i];
|
|
178
224
|
const device = descriptor?.path ? this.getDeviceByPath(descriptor.path) : null;
|
|
179
225
|
if (device) {
|
|
226
|
+
device.markTransportDisconnected();
|
|
180
227
|
this.emitter.emit(DEVICE.DISCONNECT, device);
|
|
181
228
|
}
|
|
182
229
|
this.disconnectPool.splice(i, 1);
|
|
@@ -216,6 +263,7 @@ export class DevicePool extends EventEmitter {
|
|
|
216
263
|
}
|
|
217
264
|
|
|
218
265
|
Log.debug('emit DEVICE.DISCONNECT: ', device.features);
|
|
266
|
+
device.markTransportDisconnected();
|
|
219
267
|
this.emitter.emit(DEVICE.DISCONNECT, device);
|
|
220
268
|
});
|
|
221
269
|
}
|