@onekeyfe/hd-transport 1.1.34-alpha.3 → 1.1.34-alpha.4

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 (93) hide show
  1. package/__tests__/build-receive.test.js +8 -6
  2. package/__tests__/decode-features.test.js +2 -3
  3. package/__tests__/messages.test.js +0 -131
  4. package/dist/constants.d.ts +5 -16
  5. package/dist/constants.d.ts.map +1 -1
  6. package/dist/index.d.ts +45 -1398
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +85 -1102
  9. package/dist/serialization/index.d.ts +3 -6
  10. package/dist/serialization/index.d.ts.map +1 -1
  11. package/dist/serialization/protobuf/decode.d.ts.map +1 -1
  12. package/dist/serialization/protobuf/messages.d.ts +1 -1
  13. package/dist/serialization/protobuf/messages.d.ts.map +1 -1
  14. package/dist/serialization/protocol/decode.d.ts +11 -0
  15. package/dist/serialization/protocol/decode.d.ts.map +1 -0
  16. package/dist/serialization/protocol/encode.d.ts +11 -0
  17. package/dist/serialization/protocol/encode.d.ts.map +1 -0
  18. package/dist/serialization/protocol/index.d.ts +3 -0
  19. package/dist/serialization/protocol/index.d.ts.map +1 -0
  20. package/dist/{protocols/v1 → serialization}/receive.d.ts +1 -1
  21. package/dist/serialization/receive.d.ts.map +1 -0
  22. package/dist/serialization/send.d.ts +7 -0
  23. package/dist/serialization/send.d.ts.map +1 -0
  24. package/dist/types/messages.d.ts +12 -707
  25. package/dist/types/messages.d.ts.map +1 -1
  26. package/dist/types/transport.d.ts +5 -19
  27. package/dist/types/transport.d.ts.map +1 -1
  28. package/dist/utils/logBlockCommand.d.ts.map +1 -1
  29. package/package.json +3 -3
  30. package/scripts/protobuf-patches/TxInputType.js +0 -1
  31. package/scripts/protobuf-patches/index.js +0 -2
  32. package/scripts/protobuf-types.js +18 -233
  33. package/src/constants.ts +6 -48
  34. package/src/index.ts +11 -47
  35. package/src/serialization/index.ts +5 -6
  36. package/src/serialization/protobuf/decode.ts +0 -7
  37. package/src/serialization/protobuf/messages.ts +5 -14
  38. package/src/{protocols/v1 → serialization/protocol}/decode.ts +4 -4
  39. package/src/{protocols/v1 → serialization/protocol}/encode.ts +13 -18
  40. package/src/serialization/protocol/index.ts +2 -0
  41. package/src/{protocols/v1 → serialization}/receive.ts +5 -5
  42. package/src/serialization/send.ts +58 -0
  43. package/src/types/messages.ts +13 -903
  44. package/src/types/transport.ts +5 -29
  45. package/src/utils/logBlockCommand.ts +1 -9
  46. package/__tests__/protocol-v2-link-manager.test.js +0 -351
  47. package/__tests__/protocol-v2-usb-transport-base.test.js +0 -296
  48. package/__tests__/protocol-v2.test.js +0 -899
  49. package/dist/protocols/index.d.ts +0 -50
  50. package/dist/protocols/index.d.ts.map +0 -1
  51. package/dist/protocols/v1/decode.d.ts +0 -11
  52. package/dist/protocols/v1/decode.d.ts.map +0 -1
  53. package/dist/protocols/v1/encode.d.ts +0 -11
  54. package/dist/protocols/v1/encode.d.ts.map +0 -1
  55. package/dist/protocols/v1/index.d.ts +0 -5
  56. package/dist/protocols/v1/index.d.ts.map +0 -1
  57. package/dist/protocols/v1/packets.d.ts +0 -7
  58. package/dist/protocols/v1/packets.d.ts.map +0 -1
  59. package/dist/protocols/v1/receive.d.ts.map +0 -1
  60. package/dist/protocols/v2/constants.d.ts +0 -8
  61. package/dist/protocols/v2/constants.d.ts.map +0 -1
  62. package/dist/protocols/v2/crc8.d.ts +0 -3
  63. package/dist/protocols/v2/crc8.d.ts.map +0 -1
  64. package/dist/protocols/v2/decode.d.ts +0 -8
  65. package/dist/protocols/v2/decode.d.ts.map +0 -1
  66. package/dist/protocols/v2/encode.d.ts +0 -4
  67. package/dist/protocols/v2/encode.d.ts.map +0 -1
  68. package/dist/protocols/v2/frame-assembler.d.ts +0 -12
  69. package/dist/protocols/v2/frame-assembler.d.ts.map +0 -1
  70. package/dist/protocols/v2/index.d.ts +0 -6
  71. package/dist/protocols/v2/index.d.ts.map +0 -1
  72. package/dist/protocols/v2/link-manager.d.ts +0 -36
  73. package/dist/protocols/v2/link-manager.d.ts.map +0 -1
  74. package/dist/protocols/v2/sequence-cursor.d.ts +0 -5
  75. package/dist/protocols/v2/sequence-cursor.d.ts.map +0 -1
  76. package/dist/protocols/v2/session.d.ts +0 -63
  77. package/dist/protocols/v2/session.d.ts.map +0 -1
  78. package/dist/protocols/v2/usb-transport-base.d.ts +0 -31
  79. package/dist/protocols/v2/usb-transport-base.d.ts.map +0 -1
  80. package/messages-protocol-v2.json +0 -13544
  81. package/src/protocols/index.ts +0 -124
  82. package/src/protocols/v1/index.ts +0 -4
  83. package/src/protocols/v1/packets.ts +0 -53
  84. package/src/protocols/v2/constants.ts +0 -7
  85. package/src/protocols/v2/crc8.ts +0 -34
  86. package/src/protocols/v2/decode.ts +0 -89
  87. package/src/protocols/v2/encode.ts +0 -90
  88. package/src/protocols/v2/frame-assembler.ts +0 -98
  89. package/src/protocols/v2/index.ts +0 -5
  90. package/src/protocols/v2/link-manager.ts +0 -162
  91. package/src/protocols/v2/sequence-cursor.ts +0 -10
  92. package/src/protocols/v2/session.ts +0 -339
  93. package/src/protocols/v2/usb-transport-base.ts +0 -194
@@ -1,5 +1,7 @@
1
1
  const { parseConfigure } = require('../src/serialization/protobuf/messages');
2
- const { ProtocolV1 } = require('../src/protocols');
2
+ const { buildOne } = require('../src/serialization/send');
3
+ const { receiveOne } = require('../src/serialization/receive');
4
+ const { buildEncodeBuffers } = require('../src/serialization/send');
3
5
 
4
6
  const messages = {
5
7
  StellarPaymentOp: {
@@ -94,17 +96,17 @@ const parsedMessages = parseConfigure({
94
96
  describe('encoding json -> protobuf -> json', () => {
95
97
  fixtures.forEach(f => {
96
98
  describe(f.name, () => {
97
- test('encodeEnvelope - decodeMessage', () => {
99
+ test('buildOne - receiveOne', () => {
98
100
  // encoded message
99
- const encodedMessage = ProtocolV1.encodeEnvelope(parsedMessages, f.name, f.in);
101
+ const encodedMessage = buildOne(parsedMessages, f.name, f.in);
100
102
  // then decode message and check, whether decoded message matches original json
101
- const decodedMessage = ProtocolV1.decodeMessage(parsedMessages, encodedMessage);
103
+ const decodedMessage = receiveOne(parsedMessages, encodedMessage);
102
104
  expect(decodedMessage.type).toEqual(f.name);
103
105
  expect(decodedMessage.message).toEqual(f.in);
104
106
  });
105
107
 
106
- test('encodeMessageChunks - receiveAndParse', () => {
107
- const result = ProtocolV1.encodeMessageChunks(parsedMessages, f.name, f.in);
108
+ test('buildBuffers - receiveAndParse', () => {
109
+ const result = buildEncodeBuffers(parsedMessages, f.name, f.in);
108
110
  result.forEach(r => {
109
111
  expect(r.byteLength).toBeLessThanOrEqual(63);
110
112
  });
@@ -1,9 +1,8 @@
1
- /* eslint-disable import/order */
2
1
  const ProtoBuf = require('protobufjs/light');
3
2
  const ByteBuffer = require('bytebuffer');
4
3
 
5
4
  const { decode } = require('../src/serialization/protobuf/decode');
6
- const { decodeEnvelope } = require('../src/protocols/v1/decode');
5
+ const { decode: decodeProtocol } = require('../src/serialization/protocol/decode');
7
6
 
8
7
  // Reuse the messages.json already committed alongside @onekeyfe/hd-core
9
8
  // (runtime data for DataManager). hd-transport's own messages.json is
@@ -62,7 +61,7 @@ describe('Fix messages decode', () => {
62
61
  test('decode', () => {
63
62
  // deserialize
64
63
  const encoded = ByteBuffer.fromHex(f.encodeMessage);
65
- const { buffer } = decodeEnvelope(encoded);
64
+ const { buffer } = decodeProtocol(encoded);
66
65
  const decoded = decode(Message, buffer);
67
66
 
68
67
  // filter null values
@@ -3,11 +3,6 @@ const {
3
3
  createMessageFromType,
4
4
  parseConfigure,
5
5
  } = require('../src/serialization/protobuf/messages');
6
- const v1Messages = require('../../core/src/data/messages/messages.json');
7
- const v2Messages = require('../messages-protocol-v2.json');
8
- const coreV2Messages = require('../../core/src/data/messages/messages-protocol-v2.json');
9
- const generatedTypes = require('../src/types/messages');
10
-
11
6
  // const json = require('./data/messages.json');
12
7
 
13
8
  const json = {
@@ -63,116 +58,6 @@ const json = {
63
58
  };
64
59
 
65
60
  describe('messages', () => {
66
- test('V1 GetPassphraseState matches the current firmware schema', () => {
67
- const { fields } = v1Messages.nested.GetPassphraseState;
68
-
69
- expect(fields.passphrase_state).toMatchObject({ id: 1, type: 'string' });
70
- expect(fields).not.toHaveProperty('_only_main_pin');
71
- expect(fields).not.toHaveProperty('allow_create_attach_pin');
72
- });
73
-
74
- test('Protocol V2 firmware targets match the current firmware-pro2 enum', () => {
75
- expect(v2Messages.nested.DeviceFirmwareTargetType.values).toEqual({
76
- FW_MGMT_TARGET_INVALID: 0,
77
- FW_MGMT_TARGET_CRATE: 1,
78
- FW_MGMT_TARGET_ROMLOADER: 2,
79
- FW_MGMT_TARGET_BOOTLOADER: 3,
80
- FW_MGMT_TARGET_APPLICATION_P1: 4,
81
- FW_MGMT_TARGET_APPLICATION_P2: 5,
82
- FW_MGMT_TARGET_COPROCESSOR: 6,
83
- FW_MGMT_TARGET_SE01: 7,
84
- FW_MGMT_TARGET_SE02: 8,
85
- FW_MGMT_TARGET_SE03: 9,
86
- FW_MGMT_TARGET_SE04: 10,
87
- });
88
- });
89
-
90
- test('Protocol V2 conflicting enums keep their own wire values', () => {
91
- expect(generatedTypes.ProtocolV2FailureType).toMatchObject({
92
- Failure_DataError: 4,
93
- Failure_ProcessError: 5,
94
- });
95
- expect(generatedTypes.Enum_ProtocolV2Capability).toMatchObject({
96
- Capability_AttachToPin: 18,
97
- });
98
- });
99
-
100
- test('Protocol V2 device status and session messages match firmware-pro2', () => {
101
- expect(v2Messages.nested.MessageType.values).toMatchObject({
102
- MessageType_DeviceStatusGet: 60602,
103
- MessageType_DeviceStatus: 60603,
104
- MessageType_DeviceSessionOpen: 60606,
105
- MessageType_DeviceSession: 60607,
106
- MessageType_DeviceSessionAskPin: 60608,
107
- });
108
- expect(v2Messages.nested.DeviceStatusGet).toEqual({ fields: {} });
109
- expect(v2Messages.nested.DeviceSessionResume.fields.session_id).toMatchObject({
110
- id: 1,
111
- type: 'bytes',
112
- });
113
- expect(v2Messages.nested.DeviceWalletSelect.oneofs.access.oneof).toEqual([
114
- 'host_passphrase',
115
- 'passphrase_on_device',
116
- 'attach_pin_on_device',
117
- ]);
118
- expect(v2Messages.nested.DeviceSessionOpen.oneofs.mode.oneof).toEqual(['resume', 'select']);
119
- expect(v2Messages.nested).not.toHaveProperty('DeviceWalletType');
120
- expect(v2Messages.nested).not.toHaveProperty('DeviceHiddenWalletSelect');
121
- expect(v2Messages.nested.DeviceSession.fields).toMatchObject({
122
- session_id: { id: 1, type: 'bytes' },
123
- btc_test_address: { id: 2, type: 'string' },
124
- });
125
- expect(v2Messages.nested.DeviceSessionAskPin).toEqual({ fields: {} });
126
- expect(v2Messages.nested.DeviceSessionAskPin_FailureSubCodes.values).toEqual({
127
- UserCancel: 1,
128
- });
129
- expect(v2Messages.nested.MessageType.values).not.toHaveProperty(
130
- 'MessageType_DeviceSessionPinResult'
131
- );
132
- expect(v2Messages.nested.MessageType.values).not.toHaveProperty('MessageType_DeviceSessionGet');
133
- });
134
-
135
- test('Protocol V2 onboarding status matches the current firmware-pro2 schema', () => {
136
- expect(v2Messages.nested.DevOnboardingStep.values).toMatchObject({
137
- DEV_ONBOARDING_STEP_UNKNOWN: 0,
138
- DEV_ONBOARDING_STEP_CHECKING: 1,
139
- DEV_ONBOARDING_STEP_PERSONALIZATION: 2,
140
- DEV_ONBOARDING_STEP_PIN: 3,
141
- DEV_ONBOARDING_STEP_SETUP: 4,
142
- DEV_ONBOARDING_STEP_DONE: 5,
143
- });
144
- expect(v2Messages.nested.DevOnboardingPhase.values).toBeDefined();
145
- expect(v2Messages.nested.DevOnboardingSetupKind.values).toBeDefined();
146
- expect(v2Messages.nested.DevOnboardingSetupMethod.values).toBeDefined();
147
- expect(v2Messages.nested.DevOnboardingSetupStatus.fields).toMatchObject({
148
- kind: { id: 1, type: 'DevOnboardingSetupKind' },
149
- method: { id: 2, type: 'DevOnboardingSetupMethod' },
150
- });
151
- expect(v2Messages.nested.DevOnboardingStatus.fields).toMatchObject({
152
- step: { id: 1, type: 'DevOnboardingStep' },
153
- phase: { id: 2, type: 'DevOnboardingPhase' },
154
- setup: { id: 3, type: 'DevOnboardingSetupStatus' },
155
- pin_set: { id: 4, type: 'bool' },
156
- wallet_initialized: { id: 5, type: 'bool' },
157
- });
158
- expect(v2Messages.nested).not.toHaveProperty('DevOnboardingStage');
159
- });
160
-
161
- test('Protocol V2 does not restore retired unlock or passphrase ids', () => {
162
- expect(v2Messages.nested.MessageType.values).not.toHaveProperty('MessageType_UnLockDevice');
163
- expect(v2Messages.nested.MessageType.values).not.toHaveProperty(
164
- 'MessageType_UnLockDeviceResponse'
165
- );
166
- expect(v2Messages.nested.MessageType.values).not.toHaveProperty(
167
- 'MessageType_GetPassphraseState'
168
- );
169
- expect(v2Messages.nested.MessageType.values).not.toHaveProperty('MessageType_PassphraseState');
170
- });
171
-
172
- test('Protocol V2 transport and core schemas stay identical', () => {
173
- expect(coreV2Messages).toEqual(v2Messages);
174
- });
175
-
176
61
  test('createMessageFromName (common case)', () => {
177
62
  const messages = parseConfigure(json);
178
63
  const name = 'Initialize';
@@ -185,14 +70,6 @@ describe('messages', () => {
185
70
  expect(() => createMessageFromType(messages, 0)).not.toThrow();
186
71
  });
187
72
 
188
- test('createMessageFromType throws a readable error for unknown ids', () => {
189
- const messages = parseConfigure(json);
190
-
191
- expect(() => createMessageFromType(messages, 99999)).toThrow(
192
- 'MessageType id "99999" is not defined in protobuf schema'
193
- );
194
- });
195
-
196
73
  test('createMessageFromName (wire_type case)', () => {
197
74
  const messages = parseConfigure(json);
198
75
  const name = 'TxAckInput';
@@ -206,12 +83,4 @@ describe('messages', () => {
206
83
 
207
84
  expect(() => createMessageFromName(messages, name)).not.toThrow();
208
85
  });
209
-
210
- test('createMessageFromName throws when message type id is missing', () => {
211
- const messages = parseConfigure(json);
212
-
213
- expect(() => createMessageFromName(messages, 'TxAckInputWrapper')).toThrow(
214
- 'MessageType for "TxAckInputWrapper" is not defined in protobuf schema'
215
- );
216
- });
217
86
  });
@@ -1,17 +1,6 @@
1
- export declare const PROTOCOL_V1_REPORT_ID = 63;
2
- export declare const PROTOCOL_V1_HEADER_BYTE = 35;
3
- export declare const PROTOCOL_V1_CHUNK_PAYLOAD_SIZE = 63;
4
- export declare const PROTOCOL_V1_USB_PACKET_SIZE: number;
5
- export declare const PROTOCOL_V1_MESSAGE_HEADER_SIZE: number;
6
- export declare const PROTOCOL_V1_ENVELOPE_HEADER_SIZE: number;
7
- export declare const PROTOCOL_V2_FRAME_MAX_BYTES = 4608;
8
- export declare const PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE = 4000;
9
- export declare const PROTOCOL_V2_BLE_FILE_CHUNK_SIZE = 1800;
10
- export declare const PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE = 900;
11
- export declare const PROTOCOL_V2_BLE_FRAME_MAX_BYTES = 2048;
12
- export declare const PROTOCOL_V2_FILE_CHUNK_SIZE = 4000;
13
- export declare const PROTOCOL_V2_CHANNEL_USB = 0;
14
- export declare const PROTOCOL_V2_CHANNEL_BLE_UART = 1;
15
- export declare const PROTOCOL_V2_CHANNEL_SOCKET = 2;
16
- export declare const PROTOCOL_V2_PACKET_SRC_COMMAND = 0;
1
+ export declare const MESSAGE_TOP_CHAR = 63;
2
+ export declare const MESSAGE_HEADER_BYTE = 35;
3
+ export declare const HEADER_SIZE: number;
4
+ export declare const BUFFER_SIZE = 63;
5
+ export declare const COMMON_HEADER_SIZE = 6;
17
6
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB,KAAO,CAAC;AAG1C,eAAO,MAAM,uBAAuB,KAAO,CAAC;AAG5C,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAGjD,eAAO,MAAM,2BAA2B,QAAqC,CAAC;AAG9E,eAAO,MAAM,+BAA+B,QAAQ,CAAC;AAGrD,eAAO,MAAM,gCAAgC,QAA0C,CAAC;AAKxF,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAGhD,eAAO,MAAM,kCAAkC,OAAO,CAAC;AAGvD,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAGpD,eAAO,MAAM,oCAAoC,MAAM,CAAC;AAGxD,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAGpD,eAAO,MAAM,2BAA2B,OAAqC,CAAC;AAM9E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAG5C,eAAO,MAAM,8BAA8B,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,KAAS,CAAC;AACvC,eAAO,MAAM,mBAAmB,KAAO,CAAC;AACxC,eAAO,MAAM,WAAW,QAAgB,CAAC;AACzC,eAAO,MAAM,WAAW,KAAK,CAAC;AAI9B,eAAO,MAAM,kBAAkB,IAAI,CAAC"}