@onekeyfe/hd-core 1.2.8-alpha.5 → 1.2.8-alpha.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -0
- package/__tests__/btc-derive-context-hash.test.ts +200 -0
- package/__tests__/device-lifecycle-events.test.ts +9 -7
- package/__tests__/protocol-v2-bootloader-mode.test.ts +12 -0
- package/__tests__/usb-identity-probe.test.ts +245 -0
- package/dist/api/SearchDevices.d.ts +21 -1
- package/dist/api/SearchDevices.d.ts.map +1 -1
- package/dist/api/btc/BTCDeriveContextHash.d.ts +16 -0
- package/dist/api/btc/BTCDeriveContextHash.d.ts.map +1 -0
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/events/logBlockEvent.d.ts.map +1 -1
- package/dist/index.d.ts +41 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2755 -2517
- package/dist/inject.d.ts.map +1 -1
- package/dist/types/api/btcDeriveContextHash.d.ts +10 -0
- package/dist/types/api/btcDeriveContextHash.d.ts.map +1 -0
- package/dist/types/api/export.d.ts +1 -0
- package/dist/types/api/export.d.ts.map +1 -1
- package/dist/types/api/index.d.ts +2 -0
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/device.d.ts +8 -0
- package/dist/types/device.d.ts.map +1 -1
- package/dist/utils/patch.d.ts +1 -1
- package/dist/utils/patch.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/api/SearchDevices.ts +159 -7
- package/src/api/btc/BTCDeriveContextHash.ts +90 -0
- package/src/api/index.ts +1 -0
- package/src/api/protocol-v2/DeviceReboot.ts +2 -0
- package/src/core/index.ts +5 -0
- package/src/data/messages/messages.json +51 -0
- package/src/events/logBlockEvent.ts +1 -0
- package/src/index.ts +1 -0
- package/src/inject.ts +2 -0
- package/src/types/api/btcDeriveContextHash.ts +15 -0
- package/src/types/api/export.ts +1 -0
- package/src/types/api/index.ts +2 -0
- package/src/types/device.ts +10 -0
package/README.md
CHANGED
|
@@ -29,4 +29,31 @@ import Core from '@onekeyfe/hd-core';
|
|
|
29
29
|
Documentation is available [Hardware SDK Getting Started](https://developer.onekey.so/en/hardware-sdk/getting-started)
|
|
30
30
|
|
|
31
31
|
## Examples
|
|
32
|
+
|
|
33
|
+
### Babylon context hash
|
|
34
|
+
|
|
35
|
+
`btcDeriveContextHash(connectId, deviceId, params)` requires Classic 1s firmware
|
|
36
|
+
3.21.0 or later and Protocol V1. It uses the existing wallet session and device
|
|
37
|
+
confirmation flow. Other device families and Protocol V2 are not supported.
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
const result = await HardwareSDK.btcDeriveContextHash(connectId, deviceId, {
|
|
41
|
+
path: "m/84'/0'/0'/0/0", // The currently selected Bitcoin key, not the IKM path.
|
|
42
|
+
appName: 'babylon-btc-vault',
|
|
43
|
+
context: 'deadbeef',
|
|
44
|
+
network: 'bitcoin-mainnet',
|
|
45
|
+
});
|
|
46
|
+
// result.payload.secret is a 32-byte value encoded as 64 lowercase hex characters.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`appName` must contain 1–64 ASCII lowercase letters, digits or hyphens. `context`
|
|
50
|
+
must be lowercase hex without `0x`, containing 1–1024 decoded bytes. `network` is
|
|
51
|
+
required: `bitcoin-mainnet`, `bitcoin-testnet` (testnet3/testnet4), `bitcoin-signet`,
|
|
52
|
+
or `bitcoin-regtest`. The SDK infers the Bitcoin input script type from `path` and
|
|
53
|
+
encodes `appName` as ASCII bytes; the device performs the derivation internally.
|
|
54
|
+
Device rejection and unsupported firmware errors propagate through the normal
|
|
55
|
+
SDK response. Treat the returned secret as sensitive and do not log or persist it.
|
|
56
|
+
|
|
57
|
+
See the [Babylon specification](https://github.com/babylonlabs-io/babylon-toolkit/blob/main/docs/specs/derive-context-hash.md).
|
|
58
|
+
|
|
32
59
|
// TODO: add example url
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { EDeviceType, EFirmwareType, HardwareErrorCode } from '@onekeyfe/hd-shared';
|
|
2
|
+
|
|
3
|
+
import BTCDeriveContextHash from '../src/api/btc/BTCDeriveContextHash';
|
|
4
|
+
import { findMethod } from '../src/api/utils';
|
|
5
|
+
import { getLogBlockLabel, getSafeLogPayload } from '../src/events/logBlockEvent';
|
|
6
|
+
import { createCoreApi } from '../src/inject';
|
|
7
|
+
import { Device } from '../src/device/Device';
|
|
8
|
+
|
|
9
|
+
import type { DeviceFirmwareRange } from '../src/types';
|
|
10
|
+
|
|
11
|
+
jest.mock('../src/data/config', () => ({
|
|
12
|
+
getSDKVersion: jest.fn(() => '1.0.0'),
|
|
13
|
+
DEFAULT_DOMAIN: 'https://jssdk.onekey.so/1.0.0/',
|
|
14
|
+
}));
|
|
15
|
+
|
|
16
|
+
const createMethod = (overrides: Record<string, unknown> = {}) =>
|
|
17
|
+
new BTCDeriveContextHash({
|
|
18
|
+
id: 1,
|
|
19
|
+
payload: {
|
|
20
|
+
method: 'btcDeriveContextHash',
|
|
21
|
+
path: "m/84'/0'/0'/0/0",
|
|
22
|
+
appName: 'test-app',
|
|
23
|
+
context: 'deadbeef',
|
|
24
|
+
network: 'bitcoin-mainnet',
|
|
25
|
+
...overrides,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
describe('btcDeriveContextHash', () => {
|
|
30
|
+
test('forwards the public API call through the existing dispatcher', async () => {
|
|
31
|
+
const call = jest
|
|
32
|
+
.fn()
|
|
33
|
+
.mockResolvedValue({ success: true, payload: { secret: '00'.repeat(32) } });
|
|
34
|
+
const api = createCoreApi(call);
|
|
35
|
+
const params = {
|
|
36
|
+
path: "m/84'/0'/0'/0/0",
|
|
37
|
+
appName: 'test-app',
|
|
38
|
+
context: 'deadbeef',
|
|
39
|
+
network: 'bitcoin-mainnet' as const,
|
|
40
|
+
};
|
|
41
|
+
await api.btcDeriveContextHash('connect-id', 'device-id', params);
|
|
42
|
+
expect(call).toHaveBeenCalledWith({
|
|
43
|
+
...params,
|
|
44
|
+
connectId: 'connect-id',
|
|
45
|
+
deviceId: 'device-id',
|
|
46
|
+
method: 'btcDeriveContextHash',
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test.each([
|
|
51
|
+
['bitcoin-mainnet', 'BITCOIN_MAINNET'],
|
|
52
|
+
['bitcoin-testnet', 'BITCOIN_TESTNET'],
|
|
53
|
+
['bitcoin-signet', 'BITCOIN_SIGNET'],
|
|
54
|
+
['bitcoin-regtest', 'BITCOIN_REGTEST'],
|
|
55
|
+
])('maps %s and returns the device result', async (network, wireNetwork) => {
|
|
56
|
+
const method = createMethod({ network });
|
|
57
|
+
method.init();
|
|
58
|
+
const response = { secret: '00'.repeat(32) };
|
|
59
|
+
const typedCall = jest.fn().mockResolvedValue({ message: response });
|
|
60
|
+
method.device = { commands: { typedCall } } as unknown as Device;
|
|
61
|
+
|
|
62
|
+
await expect(method.run()).resolves.toBe(response);
|
|
63
|
+
expect(typedCall).toHaveBeenCalledWith(
|
|
64
|
+
'BabylonDeriveContextHash',
|
|
65
|
+
'BabylonDerivedContextHash',
|
|
66
|
+
{
|
|
67
|
+
address_n: [2147483732, 2147483648, 2147483648, 0, 0],
|
|
68
|
+
script_type: 'SPENDWITNESS',
|
|
69
|
+
app_name: '746573742d617070',
|
|
70
|
+
context: 'deadbeef',
|
|
71
|
+
network: wireNetwork,
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
test.each([
|
|
77
|
+
["m/44'/0'/0'/0/0", 'SPENDADDRESS'],
|
|
78
|
+
["m/49'/0'/0'/0/0", 'SPENDP2SHWITNESS'],
|
|
79
|
+
[[2147483734, 2147483648, 2147483648, 0, 0], 'SPENDTAPROOT'],
|
|
80
|
+
])('uses the selected path script type for %s', (path, scriptType) => {
|
|
81
|
+
const method = createMethod({ path });
|
|
82
|
+
method.init();
|
|
83
|
+
expect(method.params.script_type).toBe(scriptType);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
test('accepts the maximum app name and context sizes', () => {
|
|
87
|
+
const method = createMethod({ appName: 'a'.repeat(64), context: 'ab'.repeat(1024) });
|
|
88
|
+
expect(() => method.init()).not.toThrow();
|
|
89
|
+
expect(method.params.context).toHaveLength(2048);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
test.each([
|
|
93
|
+
{ appName: '' },
|
|
94
|
+
{ appName: 'a'.repeat(65) },
|
|
95
|
+
{ appName: 'Test-App' },
|
|
96
|
+
{ appName: 'test_app' },
|
|
97
|
+
{ appName: '你好' },
|
|
98
|
+
{ appName: null },
|
|
99
|
+
{ context: '' },
|
|
100
|
+
{ context: 'abc' },
|
|
101
|
+
{ context: 'DEADBEEF' },
|
|
102
|
+
{ context: '0xdeadbeef' },
|
|
103
|
+
{ context: 'gg' },
|
|
104
|
+
{ context: 'ab'.repeat(1025) },
|
|
105
|
+
{ context: null },
|
|
106
|
+
{ network: '' },
|
|
107
|
+
{ network: 'litecoin' },
|
|
108
|
+
{ network: 'toString' },
|
|
109
|
+
{ network: 1 },
|
|
110
|
+
{ path: 'm' },
|
|
111
|
+
{ path: "m/84x'/0'/0'/0/0" },
|
|
112
|
+
{ path: "m/2147483648'/0'/0'/0/0" },
|
|
113
|
+
{ path: [2147483732, 2147483648, 2147483648, 0, 0.5] },
|
|
114
|
+
{ path: [2147483732, 2147483648, 2147483648, 0, 4294967296] },
|
|
115
|
+
])('rejects invalid inputs before a device call: %j', overrides => {
|
|
116
|
+
expect(() => createMethod(overrides).init()).toThrow(
|
|
117
|
+
expect.objectContaining({ errorCode: HardwareErrorCode.CallMethodInvalidParameter })
|
|
118
|
+
);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
test('rejects sparse numeric paths before a device call', () => {
|
|
122
|
+
const sparsePath = [2147483732, 2147483648, 2147483648, 0, 5];
|
|
123
|
+
delete sparsePath[3];
|
|
124
|
+
|
|
125
|
+
[Array<number>(3), sparsePath].forEach(path => {
|
|
126
|
+
expect(() => createMethod({ path }).init()).toThrow(
|
|
127
|
+
expect.objectContaining({ errorCode: HardwareErrorCode.CallMethodInvalidParameter })
|
|
128
|
+
);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
test('registers the public method and restricts it to supported firmware and protocol', () => {
|
|
133
|
+
const method = findMethod({ id: 1, payload: { ...createMethod().payload } });
|
|
134
|
+
method.init();
|
|
135
|
+
expect(method).toBeInstanceOf(BTCDeriveContextHash);
|
|
136
|
+
expect(method.strictCheckDeviceSupport).toBe(true);
|
|
137
|
+
expect(() => method.assertProtocolSupported('V2', EFirmwareType.Universal)).toThrow(
|
|
138
|
+
expect.objectContaining({ errorCode: HardwareErrorCode.DeviceNotSupportMethod })
|
|
139
|
+
);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
test.each([EDeviceType.Classic1s, EDeviceType.ClassicPure])(
|
|
143
|
+
'resolves the firmware requirement for %s through the device support check',
|
|
144
|
+
deviceType => {
|
|
145
|
+
const method = createMethod();
|
|
146
|
+
const device = Object.create(Device.prototype) as Device;
|
|
147
|
+
device.getCurrentDeviceType = jest.fn(() => deviceType);
|
|
148
|
+
const range: DeviceFirmwareRange = method.getVersionRange();
|
|
149
|
+
|
|
150
|
+
expect(device.getCurrentMethodVersionRange(type => range[type])).toEqual({ min: '3.21.0' });
|
|
151
|
+
expect(() => method.assertProtocolSupported('V1', EFirmwareType.Universal)).not.toThrow();
|
|
152
|
+
}
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
test.each([EDeviceType.Classic, EDeviceType.Mini, EDeviceType.Touch, EDeviceType.Pro])(
|
|
156
|
+
'keeps %s outside the supported firmware range',
|
|
157
|
+
deviceType => {
|
|
158
|
+
const method = createMethod();
|
|
159
|
+
const device = Object.create(Device.prototype) as Device;
|
|
160
|
+
device.getCurrentDeviceType = jest.fn(() => deviceType);
|
|
161
|
+
const range: DeviceFirmwareRange = method.getVersionRange();
|
|
162
|
+
|
|
163
|
+
expect(device.getCurrentMethodVersionRange(type => range[type])).toBeUndefined();
|
|
164
|
+
}
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
test('propagates device rejection without returning a secret', async () => {
|
|
168
|
+
const method = createMethod();
|
|
169
|
+
method.init();
|
|
170
|
+
const error = new Error('User rejected');
|
|
171
|
+
method.device = {
|
|
172
|
+
commands: { typedCall: jest.fn().mockRejectedValue(error) },
|
|
173
|
+
} as unknown as Device;
|
|
174
|
+
await expect(method.run()).rejects.toBe(error);
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
test.each([undefined, '00', '00'.repeat(33)])(
|
|
178
|
+
'rejects malformed device responses',
|
|
179
|
+
async secret => {
|
|
180
|
+
const method = createMethod();
|
|
181
|
+
method.init();
|
|
182
|
+
method.device = {
|
|
183
|
+
commands: { typedCall: jest.fn().mockResolvedValue({ message: { secret } }) },
|
|
184
|
+
} as unknown as Device;
|
|
185
|
+
await expect(method.run()).rejects.toMatchObject({
|
|
186
|
+
errorCode: HardwareErrorCode.CallMethodError,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
);
|
|
190
|
+
|
|
191
|
+
test('blocks API request and response payloads in logs', () => {
|
|
192
|
+
const request = { payload: { method: 'btcDeriveContextHash' } };
|
|
193
|
+
const label = getLogBlockLabel(request);
|
|
194
|
+
expect(label).toBe('btcDeriveContextHash');
|
|
195
|
+
expect(getSafeLogPayload({ payload: { secret: '00'.repeat(32) } }, label)).toEqual({
|
|
196
|
+
method: 'btcDeriveContextHash',
|
|
197
|
+
payload: '[REDACTED]',
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
});
|
|
@@ -363,11 +363,11 @@ describe('public device lifecycle events', () => {
|
|
|
363
363
|
|
|
364
364
|
test('clears the cleanup barrier when its deadline expires', async () => {
|
|
365
365
|
const realSetTimeout = setTimeout;
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
.
|
|
369
|
-
|
|
370
|
-
|
|
366
|
+
const cleanupDeadline = createDeferred<() => void>();
|
|
367
|
+
jest.spyOn(global, 'setTimeout').mockImplementation((callback, delay, ...args) => {
|
|
368
|
+
if (delay === 5_000) cleanupDeadline.resolve(() => callback(...args));
|
|
369
|
+
return realSetTimeout(callback, delay, ...args);
|
|
370
|
+
});
|
|
371
371
|
{
|
|
372
372
|
jest.spyOn(DataManager, 'getSettings').mockReturnValue('react-native' as never);
|
|
373
373
|
const acquire = jest.spyOn(Device.prototype, 'acquire').mockResolvedValue(undefined);
|
|
@@ -381,13 +381,15 @@ describe('public device lifecycle events', () => {
|
|
|
381
381
|
type: IFRAME.CALL,
|
|
382
382
|
payload: { method: 'getDeviceState', connectId: 'draining-device', connectProtocol: 'V2' },
|
|
383
383
|
} as CoreMessage);
|
|
384
|
-
|
|
384
|
+
const expireCleanupDeadline = await cleanupDeadline.promise;
|
|
385
|
+
cancel(context, 'draining-device');
|
|
386
|
+
expireCleanupDeadline();
|
|
385
387
|
await expect(result).resolves.toBeDefined();
|
|
386
|
-
gate.resolve();
|
|
387
388
|
await new Promise(resolve => {
|
|
388
389
|
setImmediate(resolve);
|
|
389
390
|
});
|
|
390
391
|
expect(context.getPrePendingCallPromise('draining-device')).toBeUndefined();
|
|
392
|
+
gate.resolve();
|
|
391
393
|
}
|
|
392
394
|
});
|
|
393
395
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EDeviceType } from '@onekeyfe/hd-shared';
|
|
2
2
|
|
|
3
|
+
import DeviceReboot from '../src/api/protocol-v2/DeviceReboot';
|
|
3
4
|
import { Device } from '../src/device/Device';
|
|
4
5
|
import { UI_REQUEST } from '../src/events/ui-request';
|
|
5
6
|
|
|
@@ -25,6 +26,17 @@ const createBootloaderDevice = (protocolType: 'V1' | 'V2') => {
|
|
|
25
26
|
};
|
|
26
27
|
|
|
27
28
|
describe('Pro2 bootloader mode', () => {
|
|
29
|
+
test('allows deviceReboot to return a Protocol V2 bootloader to normal mode', () => {
|
|
30
|
+
const device = createBootloaderDevice('V2');
|
|
31
|
+
const method = new DeviceReboot({
|
|
32
|
+
id: 1,
|
|
33
|
+
payload: { method: 'deviceReboot', rebootType: 'normal' },
|
|
34
|
+
});
|
|
35
|
+
method.init();
|
|
36
|
+
|
|
37
|
+
expect(device.hasUnexpectedMode(method.allowDeviceMode, method.requireDeviceMode)).toBeNull();
|
|
38
|
+
});
|
|
39
|
+
|
|
28
40
|
test('blocks Protocol V2 methods that are not allowed in bootloader mode', () => {
|
|
29
41
|
const device = createBootloaderDevice('V2');
|
|
30
42
|
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { DeviceType } from '@onekeyfe/hd-transport';
|
|
2
|
+
import { EDeviceType } from '@onekeyfe/hd-shared';
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
getOwnedUsbDeviceIdentity,
|
|
6
|
+
probeUsbDeviceIdentitiesWithTransport,
|
|
7
|
+
} from '../src/api/SearchDevices';
|
|
8
|
+
import DataManager from '../src/data-manager/DataManager';
|
|
9
|
+
import TransportManager from '../src/data-manager/TransportManager';
|
|
10
|
+
|
|
11
|
+
import type { UsbIdentityProbeTransport } from '../src/api/SearchDevices';
|
|
12
|
+
import type { OneKeyDeviceInfo, Transport } from '@onekeyfe/hd-transport';
|
|
13
|
+
import type { ConnectSettings } from '../src/types';
|
|
14
|
+
import type { Device } from '../src/device/Device';
|
|
15
|
+
|
|
16
|
+
jest.mock('../src/data/config', () => ({
|
|
17
|
+
getSDKVersion: () => '1.2.8-alpha.12',
|
|
18
|
+
DEFAULT_DOMAIN: 'https://jssdk.onekey.so/1.2.8-alpha.12/',
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
const descriptor = { path: 'USB_DESCRIPTOR_PATH', commType: 'webusb' } as OneKeyDeviceInfo;
|
|
22
|
+
const createTransport = () => ({
|
|
23
|
+
init: jest.fn(),
|
|
24
|
+
configure: jest.fn(),
|
|
25
|
+
configureProtocolV2: jest.fn(),
|
|
26
|
+
enumerate: jest.fn().mockResolvedValue([descriptor]),
|
|
27
|
+
acquire: jest.fn().mockResolvedValue('usb-transport-handle'),
|
|
28
|
+
release: jest.fn().mockResolvedValue(undefined),
|
|
29
|
+
getProtocolType: jest.fn().mockReturnValue('V1'),
|
|
30
|
+
call: jest.fn().mockResolvedValue({
|
|
31
|
+
type: 'Features',
|
|
32
|
+
message: {
|
|
33
|
+
onekey_serial_no: 'PHYSICAL_SERIAL',
|
|
34
|
+
onekey_device_type: 'CLASSIC1S',
|
|
35
|
+
device_id: 'WALLET_ID',
|
|
36
|
+
},
|
|
37
|
+
}),
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
describe('isolated USB identity probe', () => {
|
|
41
|
+
test('identifies V1 by live identity while preserving the active BLE settings and transport', async () => {
|
|
42
|
+
const previousSettings = DataManager.settings;
|
|
43
|
+
const previousTransport = TransportManager.transport;
|
|
44
|
+
const activeBLE = { name: 'active-ble', pendingOperation: true } as unknown as Transport;
|
|
45
|
+
const settings = { env: 'desktop-web-ble' } as ConnectSettings;
|
|
46
|
+
DataManager.settings = settings;
|
|
47
|
+
TransportManager.transport = activeBLE;
|
|
48
|
+
const transport = createTransport();
|
|
49
|
+
try {
|
|
50
|
+
await expect(probeUsbDeviceIdentitiesWithTransport(transport, 'webusb')).resolves.toEqual([
|
|
51
|
+
{
|
|
52
|
+
path: 'USB_DESCRIPTOR_PATH',
|
|
53
|
+
serialNo: 'PHYSICAL_SERIAL',
|
|
54
|
+
deviceId: 'WALLET_ID',
|
|
55
|
+
deviceType: EDeviceType.Classic1s,
|
|
56
|
+
connectProtocol: 'V1',
|
|
57
|
+
commType: 'webusb',
|
|
58
|
+
},
|
|
59
|
+
]);
|
|
60
|
+
expect(DataManager.settings).toBe(settings);
|
|
61
|
+
expect(TransportManager.transport).toBe(activeBLE);
|
|
62
|
+
expect(transport.call).toHaveBeenCalledWith(
|
|
63
|
+
'usb-transport-handle',
|
|
64
|
+
'GetFeatures',
|
|
65
|
+
{},
|
|
66
|
+
{ timeoutMs: 3000 }
|
|
67
|
+
);
|
|
68
|
+
expect(transport.release).toHaveBeenCalledWith('usb-transport-handle', false);
|
|
69
|
+
} finally {
|
|
70
|
+
DataManager.settings = previousSettings;
|
|
71
|
+
TransportManager.transport = previousTransport;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
test.each([
|
|
76
|
+
EDeviceType.Classic,
|
|
77
|
+
EDeviceType.Classic1s,
|
|
78
|
+
EDeviceType.ClassicPure,
|
|
79
|
+
EDeviceType.Mini,
|
|
80
|
+
EDeviceType.Touch,
|
|
81
|
+
EDeviceType.Pro,
|
|
82
|
+
])('reads the V1 identity for %s without initializing a wallet', async deviceType => {
|
|
83
|
+
const transport = createTransport();
|
|
84
|
+
transport.call.mockResolvedValue({
|
|
85
|
+
type: 'Features',
|
|
86
|
+
message: {
|
|
87
|
+
onekey_serial_no: 'V1_PHYSICAL_SERIAL',
|
|
88
|
+
onekey_device_type:
|
|
89
|
+
deviceType === EDeviceType.ClassicPure ? 'PURE' : deviceType.toUpperCase(),
|
|
90
|
+
device_id: 'V1_WALLET_ID',
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
const result = await probeUsbDeviceIdentitiesWithTransport(transport, 'webusb');
|
|
94
|
+
expect(result).toMatchObject([
|
|
95
|
+
{
|
|
96
|
+
serialNo: 'V1_PHYSICAL_SERIAL',
|
|
97
|
+
deviceId: 'V1_WALLET_ID',
|
|
98
|
+
deviceType,
|
|
99
|
+
connectProtocol: 'V1',
|
|
100
|
+
},
|
|
101
|
+
]);
|
|
102
|
+
expect(transport.call.mock.calls.map(call => call[1])).toEqual(['GetFeatures']);
|
|
103
|
+
expect(transport.release).toHaveBeenCalledTimes(1);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
test('continues identifying other devices after one device disconnects', async () => {
|
|
107
|
+
const transport = createTransport();
|
|
108
|
+
transport.enumerate.mockResolvedValue([descriptor, { ...descriptor, path: 'SECOND_USB_PATH' }]);
|
|
109
|
+
transport.call.mockRejectedValueOnce(new Error('Disconnected'));
|
|
110
|
+
const result = await probeUsbDeviceIdentitiesWithTransport(transport, 'webusb');
|
|
111
|
+
expect(result).toMatchObject([{ path: 'SECOND_USB_PATH', serialNo: 'PHYSICAL_SERIAL' }]);
|
|
112
|
+
expect(transport.release).toHaveBeenCalledTimes(2);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
test.each([DeviceType.PRO2, DeviceType.NEO])(
|
|
116
|
+
'reads V2 hardware identity without opening a wallet (%s)',
|
|
117
|
+
async deviceType => {
|
|
118
|
+
const transport = createTransport();
|
|
119
|
+
transport.getProtocolType.mockReturnValue('V2');
|
|
120
|
+
transport.call.mockResolvedValue({
|
|
121
|
+
type: 'DeviceInfo',
|
|
122
|
+
message: { hw: { Device_type: deviceType, serial_no: 'V2_PHYSICAL_SERIAL' } },
|
|
123
|
+
});
|
|
124
|
+
const result = await probeUsbDeviceIdentitiesWithTransport(transport, 'webusb');
|
|
125
|
+
expect(result[0]).toMatchObject({
|
|
126
|
+
serialNo: 'V2_PHYSICAL_SERIAL',
|
|
127
|
+
connectProtocol: 'V2',
|
|
128
|
+
deviceId: null,
|
|
129
|
+
});
|
|
130
|
+
expect(transport.call.mock.calls.map(call => call[1])).toEqual(['DeviceInfoGet']);
|
|
131
|
+
expect(transport.release).toHaveBeenCalledTimes(1);
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
test('reads vendor identity when legacy Features do not report a physical serial', async () => {
|
|
136
|
+
const transport = createTransport();
|
|
137
|
+
transport.call
|
|
138
|
+
.mockResolvedValueOnce({
|
|
139
|
+
type: 'Features',
|
|
140
|
+
message: { device_id: 'WALLET_ID', onekey_device_type: 'CLASSIC1S' },
|
|
141
|
+
})
|
|
142
|
+
.mockResolvedValueOnce({
|
|
143
|
+
type: 'OnekeyFeatures',
|
|
144
|
+
message: { onekey_serial_no: 'VENDOR_SERIAL' },
|
|
145
|
+
});
|
|
146
|
+
await expect(probeUsbDeviceIdentitiesWithTransport(transport, 'webusb')).resolves.toMatchObject(
|
|
147
|
+
[{ serialNo: 'VENDOR_SERIAL', deviceId: 'WALLET_ID' }]
|
|
148
|
+
);
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
test('does not substitute a USB path for a missing business identity', async () => {
|
|
152
|
+
const transport = createTransport();
|
|
153
|
+
transport.call
|
|
154
|
+
.mockResolvedValueOnce({ type: 'Features', message: { onekey_device_type: 'MINI' } })
|
|
155
|
+
.mockResolvedValueOnce({ type: 'Failure', message: {} });
|
|
156
|
+
await expect(probeUsbDeviceIdentitiesWithTransport(transport, 'webusb')).resolves.toMatchObject(
|
|
157
|
+
[{ path: 'USB_DESCRIPTOR_PATH', serialNo: null, deviceId: null }]
|
|
158
|
+
);
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
test.each([
|
|
162
|
+
{ ...descriptor, device: { opened: true } },
|
|
163
|
+
{ ...descriptor, commType: 'bridge', session: 'owned-bridge-transport' },
|
|
164
|
+
])('leaves an owned USB connection untouched', async occupied => {
|
|
165
|
+
const transport = createTransport();
|
|
166
|
+
transport.enumerate.mockResolvedValue([occupied]);
|
|
167
|
+
await expect(
|
|
168
|
+
probeUsbDeviceIdentitiesWithTransport(transport, occupied.commType as 'webusb' | 'bridge')
|
|
169
|
+
).resolves.toEqual([]);
|
|
170
|
+
expect(transport.acquire).not.toHaveBeenCalled();
|
|
171
|
+
expect(transport.release).not.toHaveBeenCalled();
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
test('reuses identity only for the exact active WebUSB handle', () => {
|
|
175
|
+
const handle = {};
|
|
176
|
+
const endpoint = { ...descriptor, device: handle };
|
|
177
|
+
const device = {
|
|
178
|
+
features: {},
|
|
179
|
+
mainId: descriptor.path,
|
|
180
|
+
originalDescriptor: endpoint,
|
|
181
|
+
getCurrentSerialNo: () => 'OWNER_SERIAL',
|
|
182
|
+
getCurrentDeviceId: () => 'OWNER_WALLET',
|
|
183
|
+
getCurrentDeviceType: () => EDeviceType.Pro,
|
|
184
|
+
getProtocol: () => 'V1',
|
|
185
|
+
} as unknown as Device;
|
|
186
|
+
const queue = {
|
|
187
|
+
getRequestTasksIdByConnectId: () => [1],
|
|
188
|
+
getTask: () => ({ method: { device } }),
|
|
189
|
+
};
|
|
190
|
+
expect(getOwnedUsbDeviceIdentity(endpoint, queue)).toMatchObject({ serialNo: 'OWNER_SERIAL' });
|
|
191
|
+
expect(
|
|
192
|
+
getOwnedUsbDeviceIdentity({ ...endpoint, device: {} } as typeof endpoint, queue)
|
|
193
|
+
).toBeUndefined();
|
|
194
|
+
expect(getOwnedUsbDeviceIdentity({ ...endpoint, commType: 'ble' }, queue)).toBeUndefined();
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
test('returns the active request owner identity without acquiring its USB handle', async () => {
|
|
198
|
+
const transport = createTransport();
|
|
199
|
+
transport.enumerate.mockResolvedValue([{ ...descriptor, device: { opened: true } }]);
|
|
200
|
+
const owner = {
|
|
201
|
+
path: descriptor.path,
|
|
202
|
+
serialNo: 'OWNER_SERIAL',
|
|
203
|
+
deviceId: 'OWNER_WALLET',
|
|
204
|
+
deviceType: EDeviceType.Pro,
|
|
205
|
+
connectProtocol: 'V1' as const,
|
|
206
|
+
commType: 'webusb' as const,
|
|
207
|
+
};
|
|
208
|
+
await expect(
|
|
209
|
+
probeUsbDeviceIdentitiesWithTransport(transport, 'webusb', () => owner)
|
|
210
|
+
).resolves.toEqual([owner]);
|
|
211
|
+
expect(transport.acquire).not.toHaveBeenCalled();
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
test('rejects ambiguous paths rather than probing a different USB handle', async () => {
|
|
215
|
+
const transport = createTransport();
|
|
216
|
+
transport.enumerate.mockResolvedValue([descriptor, { ...descriptor }]);
|
|
217
|
+
await expect(probeUsbDeviceIdentitiesWithTransport(transport, 'webusb')).resolves.toEqual([]);
|
|
218
|
+
expect(transport.acquire).not.toHaveBeenCalled();
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
test.each(['read failure', 'unexpected response', 'release failure'] as const)(
|
|
222
|
+
'cleans up without approving the target after %s',
|
|
223
|
+
async failure => {
|
|
224
|
+
const transport = createTransport();
|
|
225
|
+
if (failure === 'read failure')
|
|
226
|
+
transport.call.mockRejectedValue(new Error('USB disconnected'));
|
|
227
|
+
if (failure === 'unexpected response')
|
|
228
|
+
transport.call.mockResolvedValue({ type: 'Failure', message: {} });
|
|
229
|
+
if (failure === 'release failure')
|
|
230
|
+
transport.release.mockRejectedValue(new Error('release failed'));
|
|
231
|
+
await expect(probeUsbDeviceIdentitiesWithTransport(transport, 'webusb')).resolves.toEqual([]);
|
|
232
|
+
expect(transport.release).toHaveBeenCalledTimes(1);
|
|
233
|
+
}
|
|
234
|
+
);
|
|
235
|
+
|
|
236
|
+
test('does not approve an endpoint without a wire-confirmed protocol', async () => {
|
|
237
|
+
const transport = createTransport();
|
|
238
|
+
transport.getProtocolType.mockReturnValue(undefined);
|
|
239
|
+
await expect(
|
|
240
|
+
probeUsbDeviceIdentitiesWithTransport(transport as UsbIdentityProbeTransport, 'webusb')
|
|
241
|
+
).resolves.toEqual([]);
|
|
242
|
+
expect(transport.call).not.toHaveBeenCalled();
|
|
243
|
+
expect(transport.release).toHaveBeenCalledTimes(1);
|
|
244
|
+
});
|
|
245
|
+
});
|
|
@@ -1,9 +1,29 @@
|
|
|
1
1
|
import { BaseMethod } from './BaseMethod';
|
|
2
|
-
import type { SearchDevice } from '../types/device';
|
|
2
|
+
import type { SearchDevice, UsbDeviceIdentity } from '../types/device';
|
|
3
3
|
import type DeviceConnector from '../device/DeviceConnector';
|
|
4
|
+
import type { AcquireInput, OneKeyDeviceInfo as DeviceDescriptor, Transport } from '@onekeyfe/hd-transport';
|
|
5
|
+
import type { Device } from '../device/Device';
|
|
6
|
+
type RequestQueueLookup = {
|
|
7
|
+
getRequestTasksIdByConnectId: (connectId: string) => number[];
|
|
8
|
+
getTask: (requestId: number) => {
|
|
9
|
+
method: {
|
|
10
|
+
device?: Device;
|
|
11
|
+
};
|
|
12
|
+
} | undefined;
|
|
13
|
+
};
|
|
14
|
+
export type UsbIdentityProbeDescriptor = Pick<DeviceDescriptor, 'path' | 'commType'> & Partial<Pick<DeviceDescriptor, 'id' | 'session'>>;
|
|
15
|
+
export declare const getOwnedUsbDeviceIdentity: (descriptor: UsbIdentityProbeDescriptor, requestQueue: RequestQueueLookup) => UsbDeviceIdentity | undefined;
|
|
16
|
+
export type UsbIdentityProbeTransport = Pick<Transport, 'release' | 'call' | 'getProtocolType' | 'configureProtocolV2'> & {
|
|
17
|
+
init: (logger: object) => unknown;
|
|
18
|
+
enumerate: () => Promise<UsbIdentityProbeDescriptor[]>;
|
|
19
|
+
acquire: (input: AcquireInput) => Promise<string | undefined>;
|
|
20
|
+
configure: (signedData: string) => void | Promise<void>;
|
|
21
|
+
};
|
|
22
|
+
export declare const probeUsbDeviceIdentitiesWithTransport: (transport: UsbIdentityProbeTransport, commType: UsbDeviceIdentity['commType'], getOwnedIdentity?: ((descriptor: UsbIdentityProbeDescriptor) => UsbDeviceIdentity | undefined) | undefined) => Promise<UsbDeviceIdentity[]>;
|
|
4
23
|
export default class SearchDevices extends BaseMethod {
|
|
5
24
|
connector?: DeviceConnector;
|
|
6
25
|
init(): void;
|
|
7
26
|
run(): Promise<SearchDevice[]>;
|
|
8
27
|
}
|
|
28
|
+
export {};
|
|
9
29
|
//# sourceMappingURL=SearchDevices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchDevices.d.ts","sourceRoot":"","sources":["../../src/api/SearchDevices.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchDevices.d.ts","sourceRoot":"","sources":["../../src/api/SearchDevices.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU1C,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,IAAI,gBAAgB,EAEpC,SAAS,EACV,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI/C,KAAK,kBAAkB,GAAG;IACxB,4BAA4B,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IAC9D,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;QAAE,MAAM,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,SAAS,CAAC;CAC7E,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,UAAU,CAAC,GAClF,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;AA4CpD,eAAO,MAAM,yBAAyB,eACxB,0BAA0B,gBACxB,kBAAkB,KAC/B,iBAAiB,GAAG,SAYtB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,SAAS,EACT,SAAS,GAAG,MAAM,GAAG,iBAAiB,GAAG,qBAAqB,CAC/D,GAAG;IACF,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,SAAS,EAAE,MAAM,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,CAAC;AAYF,eAAO,MAAM,qCAAqC,cACrC,yBAAyB,YAC1B,iBAAiB,CAAC,UAAU,CAAC,mCACP,0BAA0B,KAAK,iBAAiB,GAAG,SAAS,kBAC3F,QAAQ,iBAAiB,EAAE,CAgG7B,CAAC;AAsBF,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IACnD,SAAS,CAAC,EAAE,eAAe,CAAa;IAExC,IAAI;IAME,GAAG,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAuFrC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseMethod } from '../BaseMethod';
|
|
2
|
+
import type { BabylonDeriveContextHash } from '@onekeyfe/hd-transport';
|
|
3
|
+
export default class BTCDeriveContextHash extends BaseMethod<BabylonDeriveContextHash> {
|
|
4
|
+
strictCheckDeviceSupport: boolean;
|
|
5
|
+
init(): void;
|
|
6
|
+
getVersionRange(): {
|
|
7
|
+
classic1s: {
|
|
8
|
+
min: string;
|
|
9
|
+
};
|
|
10
|
+
classicpure: {
|
|
11
|
+
min: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<import("@onekeyfe/hd-transport").BabylonDerivedContextHash>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=BTCDeriveContextHash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BTCDeriveContextHash.d.ts","sourceRoot":"","sources":["../../../src/api/btc/BTCDeriveContextHash.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,OAAO,KAAK,EAAE,wBAAwB,EAA2B,MAAM,wBAAwB,CAAC;AAUhG,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,UAAU,CAAC,wBAAwB,CAAC;IACpF,wBAAwB,UAAQ;IAEhC,IAAI;IAgDJ,eAAe;;;;;;;;IAOT,GAAG;CAcV"}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ export { default as allNetworkGetAddress } from './allnetwork/AllNetworkGetAddre
|
|
|
52
52
|
export { default as allNetworkGetAddressByLoop } from './allnetwork/AllNetworkGetAddressByLoop';
|
|
53
53
|
export { default as btcGetAddress } from './btc/BTCGetAddress';
|
|
54
54
|
export { default as btcGetPublicKey } from './btc/BTCGetPublicKey';
|
|
55
|
+
export { default as btcDeriveContextHash } from './btc/BTCDeriveContextHash';
|
|
55
56
|
export { default as btcSignMessage } from './btc/BTCSignMessage';
|
|
56
57
|
export { default as btcSignPsbt } from './btc/BTCSignPsbt';
|
|
57
58
|
export { default as btcSignTransaction } from './btc/BTCSignTransaction';
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceReboot.d.ts","sourceRoot":"","sources":["../../../src/api/protocol-v2/DeviceReboot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DeviceReboot.d.ts","sourceRoot":"","sources":["../../../src/api/protocol-v2/DeviceReboot.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,UAAU,CAAC,kBAAkB,CAAC;IACtE,qBAAqB;IAIrB,IAAI;IAaE,GAAG;CAQV"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import { getOwnedUsbDeviceIdentity } from '../api/SearchDevices';
|
|
2
3
|
import EventEmitter from 'events';
|
|
3
4
|
import { type LowlevelTransportSharedPlugin, type ProtocolType } from '@onekeyfe/hd-transport';
|
|
4
5
|
import { Device } from '../device/Device';
|
|
@@ -20,6 +21,7 @@ export default class Core extends EventEmitter {
|
|
|
20
21
|
private tracingContext;
|
|
21
22
|
readonly sdkInstanceId: string;
|
|
22
23
|
private requestQueue;
|
|
24
|
+
getOwnedUsbDeviceIdentity(descriptor: Parameters<typeof getOwnedUsbDeviceIdentity>[0]): import("../types").UsbDeviceIdentity | undefined;
|
|
23
25
|
private disposePromise?;
|
|
24
26
|
private prePendingCallPromises;
|
|
25
27
|
private methodSynchronize;
|