@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.
- package/__tests__/build-receive.test.js +8 -6
- package/__tests__/decode-features.test.js +2 -3
- package/__tests__/messages.test.js +0 -131
- package/dist/constants.d.ts +5 -16
- package/dist/constants.d.ts.map +1 -1
- package/dist/index.d.ts +45 -1398
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -1102
- package/dist/serialization/index.d.ts +3 -6
- package/dist/serialization/index.d.ts.map +1 -1
- package/dist/serialization/protobuf/decode.d.ts.map +1 -1
- package/dist/serialization/protobuf/messages.d.ts +1 -1
- package/dist/serialization/protobuf/messages.d.ts.map +1 -1
- package/dist/serialization/protocol/decode.d.ts +11 -0
- package/dist/serialization/protocol/decode.d.ts.map +1 -0
- package/dist/serialization/protocol/encode.d.ts +11 -0
- package/dist/serialization/protocol/encode.d.ts.map +1 -0
- package/dist/serialization/protocol/index.d.ts +3 -0
- package/dist/serialization/protocol/index.d.ts.map +1 -0
- package/dist/{protocols/v1 → serialization}/receive.d.ts +1 -1
- package/dist/serialization/receive.d.ts.map +1 -0
- package/dist/serialization/send.d.ts +7 -0
- package/dist/serialization/send.d.ts.map +1 -0
- package/dist/types/messages.d.ts +12 -707
- package/dist/types/messages.d.ts.map +1 -1
- package/dist/types/transport.d.ts +5 -19
- package/dist/types/transport.d.ts.map +1 -1
- package/dist/utils/logBlockCommand.d.ts.map +1 -1
- package/package.json +3 -3
- package/scripts/protobuf-patches/TxInputType.js +0 -1
- package/scripts/protobuf-patches/index.js +0 -2
- package/scripts/protobuf-types.js +18 -233
- package/src/constants.ts +6 -48
- package/src/index.ts +11 -47
- package/src/serialization/index.ts +5 -6
- package/src/serialization/protobuf/decode.ts +0 -7
- package/src/serialization/protobuf/messages.ts +5 -14
- package/src/{protocols/v1 → serialization/protocol}/decode.ts +4 -4
- package/src/{protocols/v1 → serialization/protocol}/encode.ts +13 -18
- package/src/serialization/protocol/index.ts +2 -0
- package/src/{protocols/v1 → serialization}/receive.ts +5 -5
- package/src/serialization/send.ts +58 -0
- package/src/types/messages.ts +13 -903
- package/src/types/transport.ts +5 -29
- package/src/utils/logBlockCommand.ts +1 -9
- package/__tests__/protocol-v2-link-manager.test.js +0 -351
- package/__tests__/protocol-v2-usb-transport-base.test.js +0 -296
- package/__tests__/protocol-v2.test.js +0 -899
- package/dist/protocols/index.d.ts +0 -50
- package/dist/protocols/index.d.ts.map +0 -1
- package/dist/protocols/v1/decode.d.ts +0 -11
- package/dist/protocols/v1/decode.d.ts.map +0 -1
- package/dist/protocols/v1/encode.d.ts +0 -11
- package/dist/protocols/v1/encode.d.ts.map +0 -1
- package/dist/protocols/v1/index.d.ts +0 -5
- package/dist/protocols/v1/index.d.ts.map +0 -1
- package/dist/protocols/v1/packets.d.ts +0 -7
- package/dist/protocols/v1/packets.d.ts.map +0 -1
- package/dist/protocols/v1/receive.d.ts.map +0 -1
- package/dist/protocols/v2/constants.d.ts +0 -8
- package/dist/protocols/v2/constants.d.ts.map +0 -1
- package/dist/protocols/v2/crc8.d.ts +0 -3
- package/dist/protocols/v2/crc8.d.ts.map +0 -1
- package/dist/protocols/v2/decode.d.ts +0 -8
- package/dist/protocols/v2/decode.d.ts.map +0 -1
- package/dist/protocols/v2/encode.d.ts +0 -4
- package/dist/protocols/v2/encode.d.ts.map +0 -1
- package/dist/protocols/v2/frame-assembler.d.ts +0 -12
- package/dist/protocols/v2/frame-assembler.d.ts.map +0 -1
- package/dist/protocols/v2/index.d.ts +0 -6
- package/dist/protocols/v2/index.d.ts.map +0 -1
- package/dist/protocols/v2/link-manager.d.ts +0 -36
- package/dist/protocols/v2/link-manager.d.ts.map +0 -1
- package/dist/protocols/v2/sequence-cursor.d.ts +0 -5
- package/dist/protocols/v2/sequence-cursor.d.ts.map +0 -1
- package/dist/protocols/v2/session.d.ts +0 -63
- package/dist/protocols/v2/session.d.ts.map +0 -1
- package/dist/protocols/v2/usb-transport-base.d.ts +0 -31
- package/dist/protocols/v2/usb-transport-base.d.ts.map +0 -1
- package/messages-protocol-v2.json +0 -13544
- package/src/protocols/index.ts +0 -124
- package/src/protocols/v1/index.ts +0 -4
- package/src/protocols/v1/packets.ts +0 -53
- package/src/protocols/v2/constants.ts +0 -7
- package/src/protocols/v2/crc8.ts +0 -34
- package/src/protocols/v2/decode.ts +0 -89
- package/src/protocols/v2/encode.ts +0 -90
- package/src/protocols/v2/frame-assembler.ts +0 -98
- package/src/protocols/v2/index.ts +0 -5
- package/src/protocols/v2/link-manager.ts +0 -162
- package/src/protocols/v2/sequence-cursor.ts +0 -10
- package/src/protocols/v2/session.ts +0 -339
- 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 {
|
|
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('
|
|
99
|
+
test('buildOne - receiveOne', () => {
|
|
98
100
|
// encoded message
|
|
99
|
-
const encodedMessage =
|
|
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 =
|
|
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('
|
|
107
|
-
const result =
|
|
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 {
|
|
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 } =
|
|
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
|
});
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,17 +1,6 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
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
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
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"}
|