@onekeyfe/hd-core 1.2.0-alpha.98 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +20 -4
- package/__tests__/DeviceCommands.test.ts +203 -27
- package/__tests__/base64Data.test.ts +69 -0
- package/__tests__/check-all-firmware-release-protocol-v2.test.ts +89 -38
- package/__tests__/check-firmware-release-protocol-v2.test.ts +83 -14
- package/__tests__/device-connector-protocol.test.ts +21 -0
- package/__tests__/device-lifecycle-events.test.ts +427 -7
- package/__tests__/device-pool-state.test.ts +25 -0
- package/__tests__/device-settings.test.ts +237 -9
- package/__tests__/device-state-events.test.ts +2 -2
- package/__tests__/device-state-mapper.test.ts +61 -5
- package/__tests__/device-utils.test.ts +15 -1
- package/__tests__/device-wallet-session-store.test.ts +147 -21
- package/__tests__/deviceSettings.test.ts +7 -3
- package/__tests__/deviceUploadNft.test.ts +36 -4
- package/__tests__/firmware-update/device-update-bootloader.test.ts +14 -3
- package/__tests__/firmware-update/firmware-artifact-source.test.ts +61 -9
- package/__tests__/firmware-update/firmware-prepared-host-digest.test.ts +19 -9
- package/__tests__/firmware-update/firmware-prepared-resource-archive.test.ts +21 -0
- package/__tests__/firmware-update/firmware-update-bootloader-poll.test.ts +128 -2
- package/__tests__/firmware-update/firmware-update-plan-bootloader-identity.test.ts +80 -0
- package/__tests__/firmware-update/firmware-update-plan.test.ts +114 -50
- package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +19 -5
- package/__tests__/firmware-update/firmware-update-v3-reconnect.test.ts +116 -0
- package/__tests__/firmware-update/firmware-update-v4-install-poll.test.ts +678 -0
- package/__tests__/firmware-update/firmware-update-v4-parameters.test.ts +85 -0
- package/__tests__/get-device-state.test.ts +60 -21
- package/__tests__/logBlockEvent.test.ts +13 -1
- package/__tests__/open-wallet-session.test.ts +127 -1
- package/__tests__/protocol-v2-firmware-targets.test.ts +39 -0
- package/__tests__/protocol-v2-resources.test.ts +185 -88
- package/__tests__/protocol-v2-unlock-policy.test.ts +235 -2
- package/__tests__/protocol-v2.test.ts +2274 -466
- package/__tests__/refresh-device-state.test.ts +3 -1
- package/__tests__/resourceBase64Boundary.test.ts +48 -0
- package/__tests__/search-devices.test.ts +79 -32
- package/__tests__/ton-sign-message.test.ts +84 -0
- package/dist/api/BaseMethod.d.ts +2 -1
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV4.d.ts +22 -7
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/OpenWalletSession.d.ts.map +1 -1
- package/dist/api/SearchDevices.d.ts.map +1 -1
- package/dist/api/UploadPortfolio.d.ts +1 -1
- package/dist/api/UploadPortfolio.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/api/device/DeviceChangePin.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/DeviceVerify.d.ts +1 -0
- package/dist/api/device/DeviceVerify.d.ts.map +1 -1
- package/dist/api/device/DeviceWipe.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareArtifactSource.d.ts +5 -1
- package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareHostBinding.d.ts.map +1 -1
- package/dist/api/firmware/FirmwarePreparedResourceArchive.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +2 -2
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts +0 -15
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +1 -0
- package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +1 -1
- package/dist/api/firmware/getBinary.d.ts +3 -2
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- package/dist/api/firmware/protocolV2Release.d.ts.map +1 -1
- package/dist/api/helpers/base64Data.d.ts +16 -0
- package/dist/api/helpers/base64Data.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +3 -1
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
- 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 -1
- package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts +2 -3
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +2 -3
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -1
- package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
- package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
- package/dist/core/index.d.ts +6 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/data-manager/DataManager.d.ts +4 -3
- package/dist/data-manager/DataManager.d.ts.map +1 -1
- package/dist/data-manager/TransportManager.d.ts.map +1 -1
- package/dist/device/Device.d.ts +16 -3
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/device/DeviceCommands.d.ts +4 -4
- package/dist/device/DeviceCommands.d.ts.map +1 -1
- package/dist/device/DeviceConnector.d.ts +1 -1
- package/dist/device/DeviceConnector.d.ts.map +1 -1
- package/dist/device/DevicePool.d.ts.map +1 -1
- package/dist/device/DeviceStateMapper.d.ts.map +1 -1
- package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
- package/dist/events/logBlockEvent.d.ts.map +1 -1
- package/dist/events/ui-request.d.ts +3 -0
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/index.d.ts +54 -84
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2333 -1515
- package/dist/protocols/protocol-v2/features.d.ts +13 -5
- package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/index.d.ts +2 -2
- package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/resources.d.ts +12 -7
- package/dist/protocols/protocol-v2/resources.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +3 -1
- package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/walletSession.d.ts +3 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdatePlan.d.ts +2 -2
- package/dist/types/api/firmwareUpdatePlan.d.ts.map +1 -1
- package/dist/types/api/protocolV2.d.ts +1 -1
- package/dist/types/api/protocolV2.d.ts.map +1 -1
- package/dist/types/device.d.ts.map +1 -1
- package/dist/types/settings.d.ts +3 -31
- package/dist/types/settings.d.ts.map +1 -1
- package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -1
- package/dist/utils/deviceFeaturesUtils.d.ts +3 -0
- package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
- package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
- package/dist/utils/deviceSettings.d.ts +1 -0
- package/dist/utils/deviceSettings.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.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 +7 -0
- package/dist/utils/pro2Nft.d.ts.map +1 -1
- package/package.json +6 -4
- package/src/api/BaseMethod.ts +8 -1
- package/src/api/CheckAllFirmwareRelease.ts +8 -5
- package/src/api/CheckBLEFirmwareRelease.ts +2 -2
- package/src/api/CheckBootloaderRelease.ts +3 -2
- package/src/api/CheckFirmwareRelease.ts +2 -2
- package/src/api/FirmwareUpdateV2.ts +130 -69
- package/src/api/FirmwareUpdateV3.ts +29 -19
- package/src/api/FirmwareUpdateV4.ts +966 -743
- package/src/api/OpenWalletSession.ts +39 -9
- package/src/api/PromptWebDeviceAccess.ts +2 -2
- package/src/api/SearchDevices.ts +6 -3
- package/src/api/UploadPortfolio.ts +9 -2
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +2 -1
- package/src/api/device/DeviceChangePin.ts +4 -1
- package/src/api/device/DeviceRebootToBoardloader.ts +3 -1
- package/src/api/device/DeviceRebootToBootloader.ts +3 -1
- package/src/api/device/DeviceSettings.ts +34 -20
- package/src/api/device/DeviceVerify.ts +25 -0
- package/src/api/device/DeviceWipe.ts +4 -1
- package/src/api/firmware/FirmwareArtifactSource.ts +41 -14
- package/src/api/firmware/FirmwareHostBinding.ts +10 -0
- package/src/api/firmware/FirmwarePreparedResourceArchive.ts +16 -27
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +131 -76
- package/src/api/firmware/FirmwareUpdatePlan.ts +55 -82
- package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +32 -15
- package/src/api/firmware/protocolV2Release.ts +7 -2
- package/src/api/helpers/base64Data.ts +85 -0
- package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +1 -1
- package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +6 -28
- package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +7 -1
- package/src/api/protocol-v2/DeviceInfoGet.ts +3 -3
- package/src/api/protocol-v2/DeviceReboot.ts +5 -0
- package/src/api/protocol-v2/DeviceUploadNft.ts +61 -9
- package/src/api/protocol-v2/DeviceUploadWallpaper.ts +53 -19
- package/src/api/protocol-v2/helpers.ts +8 -0
- package/src/api/ton/TonSignMessage.ts +5 -3
- package/src/core/index.ts +264 -55
- package/src/data/messages/messages-protocol-v2.json +140 -13
- package/src/data-manager/DataManager.ts +46 -39
- package/src/data-manager/TransportManager.ts +3 -1
- package/src/device/Device.ts +210 -44
- package/src/device/DeviceCommands.ts +27 -18
- package/src/device/DeviceConnector.ts +17 -3
- package/src/device/DevicePool.ts +9 -2
- package/src/device/DeviceStateMapper.ts +30 -24
- package/src/deviceProfile/buildDeviceFeatures.ts +10 -5
- package/src/events/logBlockEvent.ts +14 -1
- package/src/events/ui-request.ts +3 -0
- package/src/index.ts +0 -10
- package/src/protocols/protocol-v2/features.ts +22 -5
- package/src/protocols/protocol-v2/index.ts +2 -0
- package/src/protocols/protocol-v2/resources.ts +110 -147
- package/src/protocols/protocol-v2/unlockPolicyRunner.ts +13 -1
- package/src/protocols/protocol-v2/walletSession.ts +65 -22
- package/src/types/api/firmwareUpdate.ts +1 -1
- package/src/types/api/firmwareUpdatePlan.ts +2 -2
- package/src/types/api/protocolV2.ts +1 -1
- package/src/types/device.ts +2 -1
- package/src/types/settings.ts +6 -34
- package/src/utils/deviceFeaturesCompat.ts +9 -4
- package/src/utils/deviceFeaturesUtils.ts +4 -0
- package/src/utils/deviceInfoUtils.ts +9 -2
- package/src/utils/deviceSettings.ts +11 -4
- package/src/utils/index.ts +1 -0
- package/src/utils/pro2Nft.ts +31 -8
- package/__tests__/firmware-memory-host.test.ts +0 -112
- package/dist/api/firmware/FirmwareMemoryHost.d.ts +0 -22
- package/dist/api/firmware/FirmwareMemoryHost.d.ts.map +0 -1
- package/src/api/firmware/FirmwareMemoryHost.ts +0 -142
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { sha256 } from '@noble/hashes/sha256';
|
|
2
|
-
import { bytesToHex } from '@noble/hashes/utils';
|
|
3
|
-
import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
|
|
4
|
-
|
|
5
|
-
import type { CoreApi } from '../../types/api';
|
|
6
|
-
import type {
|
|
7
|
-
FirmwareArtifactReader,
|
|
8
|
-
FirmwareArtifactReference,
|
|
9
|
-
} from '../../types/api/firmwareUpdate';
|
|
10
|
-
import type { FirmwareUpdatePlan } from '../../types/api/firmwareUpdatePlan';
|
|
11
|
-
|
|
12
|
-
export type FirmwareMemoryArtifactEntry = {
|
|
13
|
-
entryName: string;
|
|
14
|
-
binary: ArrayBuffer;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export type FirmwareMemoryArtifact = {
|
|
18
|
-
artifactId: string;
|
|
19
|
-
binary: ArrayBuffer;
|
|
20
|
-
materializedEntries?: FirmwareMemoryArtifactEntry[];
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export type FirmwareUpdateV4MemoryHost = {
|
|
24
|
-
preparedPlan: ReturnType<CoreApi['prepareFirmwareUpdatePlan']>;
|
|
25
|
-
hostBindingGeneration: number;
|
|
26
|
-
release: () => void;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
let memoryHostSequence = 0;
|
|
30
|
-
|
|
31
|
-
const createReference = (binary: ArrayBuffer, prefix: string): FirmwareArtifactReference => {
|
|
32
|
-
const digest = bytesToHex(sha256(new Uint8Array(binary)));
|
|
33
|
-
return {
|
|
34
|
-
artifactRef: `fwmem:${prefix}:${digest.slice(0, 32)}`,
|
|
35
|
-
size: binary.byteLength,
|
|
36
|
-
sha256: digest,
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
export function prepareFirmwareUpdateV4MemoryHost({
|
|
41
|
-
sdk,
|
|
42
|
-
plan,
|
|
43
|
-
artifacts,
|
|
44
|
-
}: {
|
|
45
|
-
sdk: Pick<
|
|
46
|
-
CoreApi,
|
|
47
|
-
| 'prepareFirmwareUpdatePlan'
|
|
48
|
-
| 'registerFirmwareUpdateHostBinding'
|
|
49
|
-
| 'unregisterFirmwareUpdateHostBinding'
|
|
50
|
-
>;
|
|
51
|
-
plan: FirmwareUpdatePlan;
|
|
52
|
-
artifacts: FirmwareMemoryArtifact[];
|
|
53
|
-
}): FirmwareUpdateV4MemoryHost {
|
|
54
|
-
if (plan.executor !== 'v4') {
|
|
55
|
-
throw ERRORS.TypedError(
|
|
56
|
-
HardwareErrorCode.RuntimeError,
|
|
57
|
-
'Firmware memory host only supports V4 plans'
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
memoryHostSequence += 1;
|
|
61
|
-
const hostId = `${Date.now()}:${memoryHostSequence}`;
|
|
62
|
-
const binaries = new Map<string, Uint8Array>();
|
|
63
|
-
const inputs = artifacts.map((input, artifactIndex) => {
|
|
64
|
-
const artifactBinary = new Uint8Array(input.binary).slice();
|
|
65
|
-
const artifact = createReference(
|
|
66
|
-
artifactBinary.buffer as ArrayBuffer,
|
|
67
|
-
`${hostId}:artifact:${artifactIndex}`
|
|
68
|
-
);
|
|
69
|
-
binaries.set(artifact.artifactRef, artifactBinary);
|
|
70
|
-
const materializedEntries = input.materializedEntries?.map((entry, entryIndex) => {
|
|
71
|
-
const entryBinary = new Uint8Array(entry.binary).slice();
|
|
72
|
-
const entryArtifact = createReference(
|
|
73
|
-
entryBinary.buffer as ArrayBuffer,
|
|
74
|
-
`${hostId}:entry:${artifactIndex}:${entryIndex}`
|
|
75
|
-
);
|
|
76
|
-
binaries.set(entryArtifact.artifactRef, entryBinary);
|
|
77
|
-
return {
|
|
78
|
-
entryName: entry.entryName,
|
|
79
|
-
artifact: entryArtifact,
|
|
80
|
-
};
|
|
81
|
-
});
|
|
82
|
-
return {
|
|
83
|
-
artifactId: input.artifactId,
|
|
84
|
-
artifact,
|
|
85
|
-
...(materializedEntries?.length ? { materializedEntries } : {}),
|
|
86
|
-
};
|
|
87
|
-
});
|
|
88
|
-
const preparedPlan = sdk.prepareFirmwareUpdatePlan({
|
|
89
|
-
plan,
|
|
90
|
-
leaseRef: `fwmemlease:${hostId}`,
|
|
91
|
-
artifacts: inputs,
|
|
92
|
-
});
|
|
93
|
-
const readers = new Map<string, Uint8Array>();
|
|
94
|
-
let readerSequence = 0;
|
|
95
|
-
const artifactReader: FirmwareArtifactReader = {
|
|
96
|
-
open({ artifactRef }) {
|
|
97
|
-
const binary = binaries.get(artifactRef);
|
|
98
|
-
if (!binary) {
|
|
99
|
-
throw ERRORS.TypedError(
|
|
100
|
-
HardwareErrorCode.RuntimeError,
|
|
101
|
-
'Firmware memory artifact is unavailable'
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
readerSequence += 1;
|
|
105
|
-
const readerId = `fwmemreader:${hostId}:${readerSequence}`;
|
|
106
|
-
readers.set(readerId, binary);
|
|
107
|
-
return Promise.resolve({ readerId, size: binary.byteLength });
|
|
108
|
-
},
|
|
109
|
-
read({ readerId, offset, length }) {
|
|
110
|
-
const binary = readers.get(readerId);
|
|
111
|
-
if (!binary || offset < 0 || length <= 0 || offset + length > binary.byteLength) {
|
|
112
|
-
throw ERRORS.TypedError(
|
|
113
|
-
HardwareErrorCode.RuntimeError,
|
|
114
|
-
'Firmware memory artifact read is invalid'
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
const data = binary.slice(offset, offset + length).buffer;
|
|
118
|
-
return Promise.resolve({
|
|
119
|
-
data,
|
|
120
|
-
bytesRead: data.byteLength,
|
|
121
|
-
eof: offset + length === binary.byteLength,
|
|
122
|
-
});
|
|
123
|
-
},
|
|
124
|
-
close({ readerId }) {
|
|
125
|
-
readers.delete(readerId);
|
|
126
|
-
return Promise.resolve();
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
const hostBindingGeneration = sdk.registerFirmwareUpdateHostBinding({
|
|
130
|
-
artifactReader,
|
|
131
|
-
preparedPlanDigest: preparedPlan.preparedPlanDigest,
|
|
132
|
-
});
|
|
133
|
-
return {
|
|
134
|
-
preparedPlan,
|
|
135
|
-
hostBindingGeneration,
|
|
136
|
-
release: () => {
|
|
137
|
-
sdk.unregisterFirmwareUpdateHostBinding(hostBindingGeneration);
|
|
138
|
-
readers.clear();
|
|
139
|
-
binaries.clear();
|
|
140
|
-
},
|
|
141
|
-
};
|
|
142
|
-
}
|