@onekeyfe/hd-core 1.2.2-alpha.100 → 1.2.2-alpha.12

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.
Files changed (79) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +20 -4
  2. package/__tests__/DeviceCommands.test.ts +13 -0
  3. package/__tests__/check-all-firmware-release-protocol-v2.test.ts +0 -2
  4. package/__tests__/check-firmware-release-protocol-v2.test.ts +0 -2
  5. package/__tests__/device-lifecycle-events.test.ts +86 -0
  6. package/__tests__/deviceUploadNft.test.ts +68 -0
  7. package/__tests__/evmSignTypedData.test.ts +42 -0
  8. package/__tests__/firmware-update/firmware-update-v4-install-poll.test.ts +825 -12
  9. package/__tests__/logBlockEvent.test.ts +45 -122
  10. package/__tests__/open-wallet-session.test.ts +781 -69
  11. package/__tests__/pro2HostAssetPackage.test.ts +165 -0
  12. package/__tests__/protocol-v2-resources.test.ts +7 -4
  13. package/__tests__/protocol-v2-unlock-policy.test.ts +35 -1
  14. package/__tests__/protocol-v2.test.ts +925 -97
  15. package/__tests__/protocolV2FileWrite.test.ts +40 -0
  16. package/dist/api/FirmwareUpdateV4.d.ts +5 -0
  17. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  18. package/dist/api/OpenWalletSession.d.ts.map +1 -1
  19. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  20. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  21. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +2 -2
  22. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  23. package/dist/api/firmware/getBinary.d.ts +2 -2
  24. package/dist/api/helpers/protocolV2FileWrite.d.ts +1 -0
  25. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -1
  26. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  27. package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -1
  28. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -1
  29. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  30. package/dist/core/RequestQueue.d.ts +2 -0
  31. package/dist/core/RequestQueue.d.ts.map +1 -1
  32. package/dist/core/index.d.ts +3 -1
  33. package/dist/core/index.d.ts.map +1 -1
  34. package/dist/device/Device.d.ts +1 -1
  35. package/dist/device/Device.d.ts.map +1 -1
  36. package/dist/device/DeviceConnector.d.ts +1 -1
  37. package/dist/device/DeviceConnector.d.ts.map +1 -1
  38. package/dist/events/logBlockEvent.d.ts.map +1 -1
  39. package/dist/events/ui-request.d.ts +3 -0
  40. package/dist/events/ui-request.d.ts.map +1 -1
  41. package/dist/index.d.ts +21 -5
  42. package/dist/index.js +2511 -1538
  43. package/dist/protocols/protocol-v2/resources.d.ts.map +1 -1
  44. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +2 -0
  45. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -1
  46. package/dist/protocols/protocol-v2/walletSession.d.ts +3 -0
  47. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -1
  48. package/dist/types/settings.d.ts +2 -2
  49. package/dist/types/settings.d.ts.map +1 -1
  50. package/dist/utils/deviceFeaturesUtils.d.ts +3 -0
  51. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  52. package/dist/utils/patch.d.ts +1 -1
  53. package/dist/utils/patch.d.ts.map +1 -1
  54. package/dist/utils/pro2HostAssetPackage.d.ts +8 -0
  55. package/dist/utils/pro2HostAssetPackage.d.ts.map +1 -0
  56. package/package.json +4 -4
  57. package/src/api/FirmwareUpdateV4.ts +474 -83
  58. package/src/api/OpenWalletSession.ts +39 -12
  59. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +5 -2
  60. package/src/api/evm/EVMSignTypedData.ts +1 -0
  61. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +9 -3
  62. package/src/api/helpers/protocolV2FileWrite.ts +11 -5
  63. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +7 -1
  64. package/src/api/protocol-v2/DeviceUploadNft.ts +31 -8
  65. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +33 -8
  66. package/src/api/protocol-v2/helpers.ts +8 -0
  67. package/src/core/RequestQueue.ts +16 -1
  68. package/src/core/index.ts +164 -26
  69. package/src/data/messages/messages-protocol-v2.json +1589 -1375
  70. package/src/device/Device.ts +3 -1
  71. package/src/device/DeviceConnector.ts +7 -3
  72. package/src/events/logBlockEvent.ts +6 -75
  73. package/src/events/ui-request.ts +3 -0
  74. package/src/protocols/protocol-v2/resources.ts +9 -1
  75. package/src/protocols/protocol-v2/unlockPolicyRunner.ts +8 -1
  76. package/src/protocols/protocol-v2/walletSession.ts +223 -56
  77. package/src/types/settings.ts +4 -2
  78. package/src/utils/deviceFeaturesUtils.ts +4 -0
  79. 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
- it('blocks openWalletSession wallet identifiers in direct and iframe call logging', () => {
60
- const payload = {
61
- method: 'openWalletSession',
62
- mode: 'resume-hidden',
63
- deviceId: 'device-id',
64
- passphraseState: 'wallet-identifier',
65
- };
66
-
67
- expect(getLogBlockLabel(payload)).toBe('openWalletSession');
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
- 'keeps metadata and replaces binary payloads with their size for %s',
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: new Uint8Array(1024) };
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
- path: 'resource.bin',
127
- data: '[BINARY:1024]',
50
+ payload: '[REDACTED]',
128
51
  });
129
52
  }
130
53
  );
131
54
 
132
- it.each(['evmSignMessage', 'btcSignMessage', 'evmSignTransaction'])(
133
- 'blocks request and response payload logging for signing method %s',
134
- method => {
135
- expect(getLogBlockLabel({ method, message: 'sensitive signing payload' })).toBe(method);
136
- expect(
137
- getLogBlockLabel({
138
- event: 'iframe-call',
139
- payload: { method, message: 'sensitive signing payload' },
140
- })
141
- ).toBe(method);
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)).toEqual(request);
151
- expect(getSafeLogPayload(response)).toEqual(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 sensitive API method names in the log label', () => {
167
- expect(formatLogMethodLabel('response:', 'openWalletSession')).toBe(
168
- 'response: [openWalletSession]'
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
  });