@onekeyfe/hd-core 1.2.2-alpha.100 → 1.2.2-alpha.11
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 +13 -0
- package/__tests__/check-all-firmware-release-protocol-v2.test.ts +0 -2
- package/__tests__/check-firmware-release-protocol-v2.test.ts +0 -2
- package/__tests__/device-lifecycle-events.test.ts +86 -0
- package/__tests__/deviceUploadNft.test.ts +68 -0
- package/__tests__/evmSignTypedData.test.ts +42 -0
- package/__tests__/firmware-update/firmware-update-v4-install-poll.test.ts +825 -12
- package/__tests__/logBlockEvent.test.ts +45 -122
- package/__tests__/open-wallet-session.test.ts +781 -69
- package/__tests__/pro2HostAssetPackage.test.ts +165 -0
- package/__tests__/protocol-v2-resources.test.ts +7 -4
- package/__tests__/protocol-v2-unlock-policy.test.ts +35 -1
- package/__tests__/protocol-v2.test.ts +925 -97
- package/__tests__/protocolV2FileWrite.test.ts +40 -0
- package/dist/api/FirmwareUpdateV4.d.ts +5 -0
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/OpenWalletSession.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTypedData.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/getBinary.d.ts +2 -2
- package/dist/api/helpers/protocolV2FileWrite.d.ts +1 -0
- package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -1
- package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
- package/dist/core/RequestQueue.d.ts +2 -0
- package/dist/core/RequestQueue.d.ts.map +1 -1
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/device/Device.d.ts +1 -1
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/device/DeviceConnector.d.ts +1 -1
- package/dist/device/DeviceConnector.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 +21 -5
- package/dist/index.js +2511 -1538
- package/dist/protocols/protocol-v2/resources.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +2 -0
- 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/settings.d.ts +2 -2
- package/dist/types/settings.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/patch.d.ts +1 -1
- package/dist/utils/patch.d.ts.map +1 -1
- package/dist/utils/pro2HostAssetPackage.d.ts +8 -0
- package/dist/utils/pro2HostAssetPackage.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/api/FirmwareUpdateV4.ts +474 -83
- package/src/api/OpenWalletSession.ts +39 -12
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +5 -2
- package/src/api/evm/EVMSignTypedData.ts +1 -0
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +9 -3
- package/src/api/helpers/protocolV2FileWrite.ts +11 -5
- package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +7 -1
- package/src/api/protocol-v2/DeviceUploadNft.ts +31 -8
- package/src/api/protocol-v2/DeviceUploadWallpaper.ts +33 -8
- package/src/api/protocol-v2/helpers.ts +8 -0
- package/src/core/RequestQueue.ts +16 -1
- package/src/core/index.ts +164 -26
- package/src/data/messages/messages-protocol-v2.json +1589 -1375
- package/src/device/Device.ts +3 -1
- package/src/device/DeviceConnector.ts +7 -3
- package/src/events/logBlockEvent.ts +6 -75
- package/src/events/ui-request.ts +3 -0
- package/src/protocols/protocol-v2/resources.ts +9 -1
- package/src/protocols/protocol-v2/unlockPolicyRunner.ts +8 -1
- package/src/protocols/protocol-v2/walletSession.ts +223 -56
- package/src/types/settings.ts +4 -2
- package/src/utils/deviceFeaturesUtils.ts +4 -0
- package/src/utils/pro2HostAssetPackage.ts +400 -0
|
@@ -7,36 +7,6 @@ import {
|
|
|
7
7
|
} from '../src/events';
|
|
8
8
|
|
|
9
9
|
describe('getLogBlockLabel', () => {
|
|
10
|
-
it('blocks evmSignTypedData params before logging large typed data', () => {
|
|
11
|
-
expect(
|
|
12
|
-
getLogBlockLabel({
|
|
13
|
-
method: 'evmSignTypedData',
|
|
14
|
-
data: {
|
|
15
|
-
message: {
|
|
16
|
-
data: `0x${'ab'.repeat(4096)}`,
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
})
|
|
20
|
-
).toBe('evmSignTypedData');
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it('blocks evmSignTypedData iframe call payload before bridge logging', () => {
|
|
24
|
-
expect(
|
|
25
|
-
getLogBlockLabel({
|
|
26
|
-
event: 'iframe-call',
|
|
27
|
-
type: 'iframe-call',
|
|
28
|
-
payload: {
|
|
29
|
-
method: 'evmSignTypedData',
|
|
30
|
-
data: {
|
|
31
|
-
message: {
|
|
32
|
-
data: `0x${'ab'.repeat(4096)}`,
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
})
|
|
37
|
-
).toBe('evmSignTypedData');
|
|
38
|
-
});
|
|
39
|
-
|
|
40
10
|
it('keeps existing sensitive UI response blocking', () => {
|
|
41
11
|
expect(getLogBlockLabel({ type: UI_RESPONSE.RECEIVE_PIN })).toBe(UI_RESPONSE.RECEIVE_PIN);
|
|
42
12
|
});
|
|
@@ -53,119 +23,72 @@ describe('getLogBlockLabel', () => {
|
|
|
53
23
|
},
|
|
54
24
|
})
|
|
55
25
|
).toBe(type);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
expect(
|
|
69
|
-
getLogBlockLabel({
|
|
70
|
-
event: 'iframe-call',
|
|
71
|
-
type: 'iframe-call',
|
|
72
|
-
payload,
|
|
73
|
-
})
|
|
74
|
-
).toBe('openWalletSession');
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it('keeps openWalletSession metadata while redacting wallet session identifiers', () => {
|
|
78
|
-
const safeResponse = getSafeLogPayload(
|
|
79
|
-
{
|
|
80
|
-
success: true,
|
|
81
|
-
payload: {
|
|
82
|
-
protocol: 'V2',
|
|
83
|
-
walletType: 'hidden',
|
|
84
|
-
deviceId: 'device-id',
|
|
85
|
-
passphraseState: 'wallet-identifier',
|
|
86
|
-
sessionId: 'wallet-session-id',
|
|
87
|
-
resumed: false,
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
'openWalletSession'
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
expect(safeResponse).toEqual({
|
|
94
|
-
method: 'openWalletSession',
|
|
95
|
-
success: true,
|
|
96
|
-
payload: {
|
|
97
|
-
protocol: 'V2',
|
|
98
|
-
walletType: 'hidden',
|
|
99
|
-
deviceId: 'device-id',
|
|
100
|
-
passphraseState: '[REDACTED]',
|
|
101
|
-
sessionId: '[REDACTED]',
|
|
102
|
-
resumed: false,
|
|
103
|
-
},
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
it.each(['deviceUploadNft', 'deviceUploadWallpaper', 'uploadPortfolio'])(
|
|
108
|
-
'skips large Base64 resource payload logging for %s',
|
|
109
|
-
method => {
|
|
110
|
-
const request = { method, path: 'resource.bin', data: 'A'.repeat(1024 * 1024) };
|
|
111
|
-
expect(getLogBlockLabel(request)).toBe(method);
|
|
112
|
-
expect(getSafeLogPayload(request, method)).toEqual({
|
|
113
|
-
method,
|
|
26
|
+
expect(
|
|
27
|
+
getSafeLogPayload(
|
|
28
|
+
{
|
|
29
|
+
type,
|
|
30
|
+
payload: {
|
|
31
|
+
passphraseState: 'wallet-identifier',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
type
|
|
35
|
+
)
|
|
36
|
+
).toEqual({
|
|
37
|
+
method: type,
|
|
114
38
|
payload: '[REDACTED]',
|
|
115
39
|
});
|
|
116
40
|
}
|
|
117
41
|
);
|
|
118
42
|
|
|
119
|
-
it.each(['fileWrite', 'fileRead'])(
|
|
120
|
-
'
|
|
43
|
+
it.each(['deviceUploadNft', 'deviceUploadWallpaper', 'uploadPortfolio', 'fileWrite', 'fileRead'])(
|
|
44
|
+
'skips large resource or binary payload logging for %s',
|
|
121
45
|
method => {
|
|
122
|
-
const request = { method, path: 'resource.bin', data:
|
|
46
|
+
const request = { method, path: 'resource.bin', data: 'A'.repeat(1024) };
|
|
123
47
|
expect(getLogBlockLabel(request)).toBe(method);
|
|
124
48
|
expect(getSafeLogPayload(request, method)).toEqual({
|
|
125
49
|
method,
|
|
126
|
-
|
|
127
|
-
data: '[BINARY:1024]',
|
|
50
|
+
payload: '[REDACTED]',
|
|
128
51
|
});
|
|
129
52
|
}
|
|
130
53
|
);
|
|
131
54
|
|
|
132
|
-
it
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
|
|
55
|
+
it('logs signing requests and responses as-is', () => {
|
|
56
|
+
const request = {
|
|
57
|
+
method: 'btcSignMessage',
|
|
58
|
+
path: "m/44'/0'/0'/0/0",
|
|
59
|
+
messageHex: '68656c6c6f',
|
|
60
|
+
coin: 'Bitcoin',
|
|
61
|
+
};
|
|
62
|
+
const iframeRequest = {
|
|
63
|
+
event: 'iframe-call',
|
|
64
|
+
payload: request,
|
|
65
|
+
};
|
|
66
|
+
const response = {
|
|
67
|
+
success: true,
|
|
68
|
+
payload: {
|
|
69
|
+
signature: 'signature-bytes',
|
|
70
|
+
address: 'bc1qexample',
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
expect(getLogBlockLabel(request)).toBeUndefined();
|
|
75
|
+
expect(getLogBlockLabel(iframeRequest)).toBeUndefined();
|
|
76
|
+
expect(getSafeLogPayload(request)).toBe(request);
|
|
77
|
+
expect(getSafeLogPayload(response)).toBe(response);
|
|
78
|
+
});
|
|
144
79
|
|
|
145
80
|
it('keeps ordinary API requests and responses visible', () => {
|
|
146
81
|
const request = { method: 'getDeviceState', connectId: 'connect-id', scope: 'runtime' };
|
|
147
82
|
const response = { success: true, payload: { protocol: 'V2', initialized: true } };
|
|
148
83
|
|
|
149
84
|
expect(getLogBlockLabel(request)).toBeUndefined();
|
|
150
|
-
expect(getSafeLogPayload(request)).
|
|
151
|
-
expect(getSafeLogPayload(response)).
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
it('redacts sensitive keys even for ordinary API payloads', () => {
|
|
155
|
-
expect(
|
|
156
|
-
getSafeLogPayload({
|
|
157
|
-
method: 'ordinaryMethod',
|
|
158
|
-
payload: { session_id: 'session-secret', nested: { pin: '1234' } },
|
|
159
|
-
})
|
|
160
|
-
).toEqual({
|
|
161
|
-
method: 'ordinaryMethod',
|
|
162
|
-
payload: { session_id: '[REDACTED]', nested: { pin: '[REDACTED]' } },
|
|
163
|
-
});
|
|
85
|
+
expect(getSafeLogPayload(request)).toBe(request);
|
|
86
|
+
expect(getSafeLogPayload(response)).toBe(response);
|
|
164
87
|
});
|
|
165
88
|
|
|
166
|
-
it('puts
|
|
167
|
-
expect(formatLogMethodLabel('response:', '
|
|
168
|
-
'response: [
|
|
89
|
+
it('puts blocked method names in the log label', () => {
|
|
90
|
+
expect(formatLogMethodLabel('response:', 'deviceUploadNft')).toBe(
|
|
91
|
+
'response: [deviceUploadNft]'
|
|
169
92
|
);
|
|
170
93
|
expect(formatLogMethodLabel('response:')).toBe('response:');
|
|
171
94
|
});
|