@onekeyfe/hd-transport 1.2.0-alpha.2 → 1.2.0-alpha.20
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 +1 -1
- package/__tests__/messages.test.js +122 -0
- package/__tests__/protocol-v2-link-manager.test.js +351 -0
- package/__tests__/protocol-v2-usb-transport-base.test.js +296 -0
- package/__tests__/protocol-v2.test.js +384 -108
- package/dist/constants.d.ts +5 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/index.d.ts +920 -369
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +587 -251
- package/dist/protocols/index.d.ts +11 -5
- package/dist/protocols/index.d.ts.map +1 -1
- package/dist/protocols/v2/constants.d.ts +1 -0
- package/dist/protocols/v2/constants.d.ts.map +1 -1
- package/dist/protocols/v2/decode.d.ts +3 -2
- package/dist/protocols/v2/decode.d.ts.map +1 -1
- package/dist/protocols/v2/encode.d.ts +2 -3
- package/dist/protocols/v2/encode.d.ts.map +1 -1
- package/dist/protocols/v2/index.d.ts +0 -1
- package/dist/protocols/v2/index.d.ts.map +1 -1
- package/dist/protocols/v2/link-manager.d.ts +36 -0
- package/dist/protocols/v2/link-manager.d.ts.map +1 -0
- package/dist/protocols/v2/sequence-cursor.d.ts +5 -0
- package/dist/protocols/v2/sequence-cursor.d.ts.map +1 -0
- package/dist/protocols/v2/session.d.ts +18 -3
- package/dist/protocols/v2/session.d.ts.map +1 -1
- package/dist/protocols/v2/usb-transport-base.d.ts +31 -0
- package/dist/protocols/v2/usb-transport-base.d.ts.map +1 -0
- package/dist/serialization/protobuf/decode.d.ts.map +1 -1
- package/dist/serialization/protobuf/messages.d.ts.map +1 -1
- package/dist/types/messages.d.ts +534 -225
- package/dist/types/messages.d.ts.map +1 -1
- package/dist/types/transport.d.ts +5 -3
- package/dist/types/transport.d.ts.map +1 -1
- package/messages-protocol-v2.json +825 -709
- package/package.json +3 -3
- package/scripts/protobuf-build.sh +96 -310
- package/scripts/protobuf-patches/index.js +1 -0
- package/scripts/protobuf-types.js +12 -0
- package/src/constants.ts +21 -15
- package/src/index.ts +8 -0
- package/src/protocols/index.ts +25 -39
- package/src/protocols/v2/constants.ts +1 -0
- package/src/protocols/v2/crc8.ts +1 -1
- package/src/protocols/v2/decode.ts +38 -34
- package/src/protocols/v2/encode.ts +2 -28
- package/src/protocols/v2/index.ts +0 -1
- package/src/protocols/v2/link-manager.ts +162 -0
- package/src/protocols/v2/sequence-cursor.ts +10 -0
- package/src/protocols/v2/session.ts +132 -178
- package/src/protocols/v2/usb-transport-base.ts +194 -0
- package/src/serialization/protobuf/decode.ts +4 -1
- package/src/serialization/protobuf/messages.ts +6 -1
- package/src/types/messages.ts +636 -265
- package/src/types/transport.ts +3 -3
- package/dist/protocols/v2/debug.d.ts +0 -13
- package/dist/protocols/v2/debug.d.ts.map +0 -1
- package/src/protocols/v2/debug.ts +0 -26
package/dist/index.js
CHANGED
|
@@ -140,7 +140,7 @@ function messageToJSON(Message, fields) {
|
|
|
140
140
|
res[key] = field.resolvedType.valuesById[value];
|
|
141
141
|
}
|
|
142
142
|
else if (field.resolvedType.fields) {
|
|
143
|
-
res[key] = messageToJSON(value, field.resolvedType.fields);
|
|
143
|
+
res[key] = value == null ? null : messageToJSON(value, field.resolvedType.fields);
|
|
144
144
|
}
|
|
145
145
|
else {
|
|
146
146
|
throw new Error(`case not handled: ${key}`);
|
|
@@ -249,7 +249,11 @@ const createMessageFromName = (messages, name) => {
|
|
|
249
249
|
};
|
|
250
250
|
const createMessageFromType = (messages, typeId) => {
|
|
251
251
|
const MessageType = messages.lookupEnum('MessageType');
|
|
252
|
-
const
|
|
252
|
+
const rawMessageName = MessageType.valuesById[typeId];
|
|
253
|
+
if (!rawMessageName) {
|
|
254
|
+
throw new Error(`MessageType id "${typeId}" is not defined in protobuf schema`);
|
|
255
|
+
}
|
|
256
|
+
const messageName = rawMessageName.replace('MessageType_', '');
|
|
253
257
|
const Message = messages.lookupType(messageName);
|
|
254
258
|
return {
|
|
255
259
|
Message,
|
|
@@ -263,9 +267,11 @@ const PROTOCOL_V1_CHUNK_PAYLOAD_SIZE = 63;
|
|
|
263
267
|
const PROTOCOL_V1_USB_PACKET_SIZE = PROTOCOL_V1_CHUNK_PAYLOAD_SIZE + 1;
|
|
264
268
|
const PROTOCOL_V1_MESSAGE_HEADER_SIZE = 2 + 4;
|
|
265
269
|
const PROTOCOL_V1_ENVELOPE_HEADER_SIZE = 1 + 1 + PROTOCOL_V1_MESSAGE_HEADER_SIZE;
|
|
266
|
-
const PROTOCOL_V2_FRAME_MAX_BYTES =
|
|
267
|
-
const PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE =
|
|
270
|
+
const PROTOCOL_V2_FRAME_MAX_BYTES = 4200;
|
|
271
|
+
const PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE = 4000;
|
|
268
272
|
const PROTOCOL_V2_BLE_FILE_CHUNK_SIZE = 1800;
|
|
273
|
+
const PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE = 900;
|
|
274
|
+
const PROTOCOL_V2_BLE_FRAME_MAX_BYTES = 2048;
|
|
269
275
|
const PROTOCOL_V2_FILE_CHUNK_SIZE = PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE;
|
|
270
276
|
const PROTOCOL_V2_CHANNEL_USB = 0;
|
|
271
277
|
const PROTOCOL_V2_CHANNEL_BLE_UART = 1;
|
|
@@ -377,6 +383,7 @@ const PROTO_HEAD_CRC_SIZE = 8;
|
|
|
377
383
|
const CRC8_INIT = 0x30;
|
|
378
384
|
const PACKET_SIZE = 4096;
|
|
379
385
|
const PROTO_DATA_TYPE_PACKET = 0;
|
|
386
|
+
const PROTO_DATA_TYPE_ACK = 1;
|
|
380
387
|
|
|
381
388
|
const CRC8_TABLE = new Uint8Array([
|
|
382
389
|
0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83, 0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41,
|
|
@@ -404,16 +411,11 @@ function crc8(data, len) {
|
|
|
404
411
|
return crc;
|
|
405
412
|
}
|
|
406
413
|
|
|
407
|
-
function logProtocolV2Debug(options, stage, details) {
|
|
408
|
-
var _a, _b, _c;
|
|
409
|
-
(_b = (_a = options === null || options === void 0 ? void 0 : options.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, `[${(_c = options.logPrefix) !== null && _c !== void 0 ? _c : 'ProtocolV2'}] ${stage}`, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (options.context ? { context: options.context } : {})), (options.messageName ? { messageName: options.messageName } : {})), (options.messageTypeId !== undefined ? { messageTypeId: options.messageTypeId } : {})), (options.pbPayloadLength !== undefined ? { pbPayloadLength: options.pbPayloadLength } : {})), details));
|
|
410
|
-
}
|
|
411
|
-
|
|
412
414
|
const PROTO_SEQ_DEFAULT = 1;
|
|
413
415
|
function nextProtoSeq(current) {
|
|
414
416
|
return current >= 255 ? 1 : current + 1;
|
|
415
417
|
}
|
|
416
|
-
function encodeFrame(payload, packetSrc, router,
|
|
418
|
+
function encodeFrame(payload, packetSrc, router, seq) {
|
|
417
419
|
const resolvedPacketSrc = packetSrc !== null && packetSrc !== void 0 ? packetSrc : 0;
|
|
418
420
|
const resolvedRouter = router !== null && router !== void 0 ? router : 0;
|
|
419
421
|
const resolvedSeq = seq !== null && seq !== void 0 ? seq : PROTO_SEQ_DEFAULT;
|
|
@@ -423,7 +425,7 @@ function encodeFrame(payload, packetSrc, router, debugOptions, seq) {
|
|
|
423
425
|
const payloadLen = payload ? payload.length : 0;
|
|
424
426
|
const frameLen = payloadLen + PROTO_HEAD_CRC_SIZE;
|
|
425
427
|
if (frameLen > PROTOCOL_V2_FRAME_MAX_BYTES) {
|
|
426
|
-
throw new Error(`Protocol V2 frame too large: ${frameLen}`);
|
|
428
|
+
throw new Error(`Protocol V2 frame too large: ${frameLen} > ${PROTOCOL_V2_FRAME_MAX_BYTES}`);
|
|
427
429
|
}
|
|
428
430
|
const frame = new Uint8Array(frameLen);
|
|
429
431
|
frame[0] = PROTO_HEAD_SOF;
|
|
@@ -438,27 +440,17 @@ function encodeFrame(payload, packetSrc, router, debugOptions, seq) {
|
|
|
438
440
|
frame.set(payload, 7);
|
|
439
441
|
}
|
|
440
442
|
frame[frameLen - 1] = crc8(frame, frameLen - 1);
|
|
441
|
-
logProtocolV2Debug(debugOptions, 'encode raw frame', {
|
|
442
|
-
frameLen,
|
|
443
|
-
payloadLen,
|
|
444
|
-
packetSrc: resolvedPacketSrc,
|
|
445
|
-
router: frame[4],
|
|
446
|
-
attr: frame[5],
|
|
447
|
-
seq: frame[6],
|
|
448
|
-
headerCrc: frame[3],
|
|
449
|
-
frameCrc: frame[frameLen - 1],
|
|
450
|
-
});
|
|
451
443
|
return frame;
|
|
452
444
|
}
|
|
453
|
-
function encodeProtobufFrame(messageTypeId, pbPayload, packetSrc, router,
|
|
445
|
+
function encodeProtobufFrame(messageTypeId, pbPayload, packetSrc, router, seq) {
|
|
454
446
|
const payload = new Uint8Array(2 + pbPayload.length);
|
|
455
447
|
payload[0] = messageTypeId % 256;
|
|
456
448
|
payload[1] = Math.floor(messageTypeId / 256) % 256;
|
|
457
449
|
payload.set(pbPayload, 2);
|
|
458
|
-
return encodeFrame(payload, packetSrc, router,
|
|
450
|
+
return encodeFrame(payload, packetSrc, router, seq);
|
|
459
451
|
}
|
|
460
452
|
|
|
461
|
-
function
|
|
453
|
+
function validateFrame(data) {
|
|
462
454
|
if (data.length < PROTO_HEAD_CRC_SIZE) {
|
|
463
455
|
throw new Error(`Protocol V2 frame too short: ${data.length} bytes`);
|
|
464
456
|
}
|
|
@@ -481,6 +473,26 @@ function decodeFrame(data, debugOptions) {
|
|
|
481
473
|
.toString(16)
|
|
482
474
|
.padStart(2, '0')}, got 0x${data[frameLen - 1].toString(16).padStart(2, '0')}`);
|
|
483
475
|
}
|
|
476
|
+
return frameLen;
|
|
477
|
+
}
|
|
478
|
+
function isAckFrame(data) {
|
|
479
|
+
if (data.length < 6 || (data[5] & 0x03) !== PROTO_DATA_TYPE_ACK) {
|
|
480
|
+
return false;
|
|
481
|
+
}
|
|
482
|
+
const frameLen = validateFrame(data);
|
|
483
|
+
if (frameLen !== PROTO_HEAD_CRC_SIZE) {
|
|
484
|
+
throw new Error(`Invalid Protocol V2 ACK frame length: ${frameLen}`);
|
|
485
|
+
}
|
|
486
|
+
return true;
|
|
487
|
+
}
|
|
488
|
+
function getAckSequence(data) {
|
|
489
|
+
if (!isAckFrame(data)) {
|
|
490
|
+
return undefined;
|
|
491
|
+
}
|
|
492
|
+
return data[6];
|
|
493
|
+
}
|
|
494
|
+
function decodeFrame(data) {
|
|
495
|
+
const frameLen = validateFrame(data);
|
|
484
496
|
const seq = data[6];
|
|
485
497
|
const payloadData = data.slice(7, frameLen - 1);
|
|
486
498
|
if (payloadData.length < 2) {
|
|
@@ -488,19 +500,6 @@ function decodeFrame(data, debugOptions) {
|
|
|
488
500
|
}
|
|
489
501
|
const messageTypeId = payloadData[0] + payloadData[1] * 256;
|
|
490
502
|
const pbPayload = payloadData.slice(2);
|
|
491
|
-
logProtocolV2Debug(debugOptions, 'decode raw frame', {
|
|
492
|
-
frameLen,
|
|
493
|
-
dataLength: data.length,
|
|
494
|
-
router: data[4],
|
|
495
|
-
attr: data[5],
|
|
496
|
-
seq,
|
|
497
|
-
headerCrc: data[3],
|
|
498
|
-
expectedHeaderCrc,
|
|
499
|
-
frameCrc: data[frameLen - 1],
|
|
500
|
-
expectedFrameCrc,
|
|
501
|
-
messageTypeId,
|
|
502
|
-
pbPayloadLength: pbPayload.length,
|
|
503
|
-
});
|
|
504
503
|
return { messageTypeId, pbPayload, seq };
|
|
505
504
|
}
|
|
506
505
|
|
|
@@ -583,12 +582,14 @@ var protocolV2Codec = /*#__PURE__*/Object.freeze({
|
|
|
583
582
|
CRC8_INIT: CRC8_INIT,
|
|
584
583
|
PACKET_SIZE: PACKET_SIZE,
|
|
585
584
|
PROTO_DATA_TYPE_PACKET: PROTO_DATA_TYPE_PACKET,
|
|
585
|
+
PROTO_DATA_TYPE_ACK: PROTO_DATA_TYPE_ACK,
|
|
586
586
|
CRC8_TABLE: CRC8_TABLE,
|
|
587
587
|
crc8: crc8,
|
|
588
|
-
logProtocolV2Debug: logProtocolV2Debug,
|
|
589
588
|
nextProtoSeq: nextProtoSeq,
|
|
590
589
|
encodeFrame: encodeFrame,
|
|
591
590
|
encodeProtobufFrame: encodeProtobufFrame,
|
|
591
|
+
isAckFrame: isAckFrame,
|
|
592
|
+
getAckSequence: getAckSequence,
|
|
592
593
|
decodeFrame: decodeFrame,
|
|
593
594
|
concatUint8Arrays: concatUint8Arrays,
|
|
594
595
|
ProtocolV2FrameAssembler: ProtocolV2FrameAssembler
|
|
@@ -605,6 +606,7 @@ const resolveProtocolV2EncodeSchema = (name, schemas) => {
|
|
|
605
606
|
}
|
|
606
607
|
};
|
|
607
608
|
const PROTOCOL_V2_LEGACY_DECODE_ALLOWLIST = new Set([
|
|
609
|
+
'Failure',
|
|
608
610
|
'ButtonRequest',
|
|
609
611
|
'EntropyRequest',
|
|
610
612
|
'PinMatrixRequest',
|
|
@@ -638,46 +640,33 @@ const ProtocolV1 = {
|
|
|
638
640
|
decodeMessage: decodeMessage,
|
|
639
641
|
};
|
|
640
642
|
const ProtocolV2 = {
|
|
643
|
+
isAckFrame,
|
|
644
|
+
getAckSequence,
|
|
645
|
+
inspectFrame(schemas, frame) {
|
|
646
|
+
const { messageTypeId, pbPayload, seq } = decodeFrame(frame);
|
|
647
|
+
const { messageName } = createProtocolV2MessageFromType(messageTypeId, schemas);
|
|
648
|
+
return {
|
|
649
|
+
messageName,
|
|
650
|
+
messageTypeId,
|
|
651
|
+
pbPayload,
|
|
652
|
+
seq,
|
|
653
|
+
type: messageName,
|
|
654
|
+
};
|
|
655
|
+
},
|
|
641
656
|
encodeFrame(schemas, name, data, options = {}) {
|
|
642
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
643
657
|
const encodeMessages = resolveProtocolV2EncodeSchema(name, schemas);
|
|
644
658
|
const { Message, messageTypeId } = createMessageFromName(encodeMessages, name);
|
|
645
659
|
const pbBuffer = encode(Message, data);
|
|
646
660
|
pbBuffer.reset();
|
|
647
661
|
const rawPbBuffer = pbBuffer.toBuffer();
|
|
648
662
|
const pbBytes = new Uint8Array(rawPbBuffer);
|
|
649
|
-
|
|
650
|
-
context: (_d = options.context) !== null && _d !== void 0 ? _d : `encode:${name}`,
|
|
651
|
-
messageName: name,
|
|
652
|
-
messageTypeId,
|
|
653
|
-
pbPayloadLength: pbBytes.length,
|
|
654
|
-
packetSrc: (_e = options.packetSrc) !== null && _e !== void 0 ? _e : 0,
|
|
655
|
-
router: (_f = options.router) !== null && _f !== void 0 ? _f : 0,
|
|
656
|
-
});
|
|
657
|
-
return encodeProtobufFrame(messageTypeId, pbBytes, options.packetSrc, options.router, {
|
|
658
|
-
logger: options.logger,
|
|
659
|
-
logPrefix: options.logPrefix,
|
|
660
|
-
context: (_g = options.context) !== null && _g !== void 0 ? _g : `encode:${name}`,
|
|
661
|
-
messageName: name,
|
|
662
|
-
}, options.seq);
|
|
663
|
+
return encodeProtobufFrame(messageTypeId, pbBytes, options.packetSrc, options.router, options.seq);
|
|
663
664
|
},
|
|
664
|
-
decodeFrame(schemas, frame
|
|
665
|
-
|
|
666
|
-
const {
|
|
667
|
-
logger: options.logger,
|
|
668
|
-
logPrefix: options.logPrefix,
|
|
669
|
-
context: (_a = options.context) !== null && _a !== void 0 ? _a : 'decode',
|
|
670
|
-
});
|
|
671
|
-
const { Message, messageName } = createProtocolV2MessageFromType(messageTypeId, schemas);
|
|
665
|
+
decodeFrame(schemas, frame) {
|
|
666
|
+
const { messageTypeId, pbPayload, seq, messageName } = this.inspectFrame(schemas, frame);
|
|
667
|
+
const { Message } = createProtocolV2MessageFromType(messageTypeId, schemas);
|
|
672
668
|
const rxByteBuffer = ByteBuffer__default["default"].wrap(Buffer.from(pbPayload));
|
|
673
669
|
const message = decode(Message, rxByteBuffer);
|
|
674
|
-
(_c = (_b = options.logger) === null || _b === void 0 ? void 0 : _b.debug) === null || _c === void 0 ? void 0 : _c.call(_b, `[${(_d = options.logPrefix) !== null && _d !== void 0 ? _d : 'ProtocolV2'}] decode protobuf`, {
|
|
675
|
-
context: (_e = options.context) !== null && _e !== void 0 ? _e : `decode:${messageName}`,
|
|
676
|
-
messageName,
|
|
677
|
-
messageTypeId,
|
|
678
|
-
pbPayloadLength: pbPayload.length,
|
|
679
|
-
seq,
|
|
680
|
-
});
|
|
681
670
|
return {
|
|
682
671
|
message,
|
|
683
672
|
messageName,
|
|
@@ -700,6 +689,16 @@ var index$1 = /*#__PURE__*/Object.freeze({
|
|
|
700
689
|
decodeMessage: decodeMessage
|
|
701
690
|
});
|
|
702
691
|
|
|
692
|
+
class ProtocolV2SequenceCursor {
|
|
693
|
+
constructor() {
|
|
694
|
+
this.current = 0;
|
|
695
|
+
}
|
|
696
|
+
next() {
|
|
697
|
+
this.current = nextProtoSeq(this.current);
|
|
698
|
+
return this.current;
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
|
|
703
702
|
const ERROR = 'Wrong result type.';
|
|
704
703
|
function info(res) {
|
|
705
704
|
if (typeof res !== 'object' || res == null) {
|
|
@@ -816,11 +815,6 @@ function bytesToHex(bytes) {
|
|
|
816
815
|
.map(b => b.toString(16).padStart(2, '0'))
|
|
817
816
|
.join('');
|
|
818
817
|
}
|
|
819
|
-
const PROTOCOL_V2_DEBUG_HEADER_BYTES = 7;
|
|
820
|
-
const PROTOCOL_V2_DEBUG_ARRAY_ITEMS_LIMIT = 20;
|
|
821
|
-
const PROTOCOL_V2_DEBUG_OBJECT_KEYS_LIMIT = 40;
|
|
822
|
-
const PROTOCOL_V2_DEBUG_STRING_LIMIT = 512;
|
|
823
|
-
const PROTOCOL_V2_DEBUG_DEPTH_LIMIT = 4;
|
|
824
818
|
const HIGH_VOLUME_PROTOCOL_V2_CALLS = new Set([
|
|
825
819
|
...LogBlockCommand,
|
|
826
820
|
'FilesystemFileRead',
|
|
@@ -830,80 +824,6 @@ const HIGH_VOLUME_PROTOCOL_V2_CALLS = new Set([
|
|
|
830
824
|
function shouldReduceProtocolV2Debug(name) {
|
|
831
825
|
return HIGH_VOLUME_PROTOCOL_V2_CALLS.has(name);
|
|
832
826
|
}
|
|
833
|
-
function frameHeaderDebugHex(frame) {
|
|
834
|
-
return bytesToHex(frame.slice(0, PROTOCOL_V2_DEBUG_HEADER_BYTES));
|
|
835
|
-
}
|
|
836
|
-
function getBinaryByteLength(value) {
|
|
837
|
-
if (value instanceof ArrayBuffer) {
|
|
838
|
-
return value.byteLength;
|
|
839
|
-
}
|
|
840
|
-
if (ArrayBuffer.isView(value)) {
|
|
841
|
-
return value.byteLength;
|
|
842
|
-
}
|
|
843
|
-
if (typeof Blob !== 'undefined' && value instanceof Blob) {
|
|
844
|
-
return value.size;
|
|
845
|
-
}
|
|
846
|
-
return undefined;
|
|
847
|
-
}
|
|
848
|
-
function summarizeRedactedData(value) {
|
|
849
|
-
const byteLength = getBinaryByteLength(value);
|
|
850
|
-
if (byteLength !== undefined) {
|
|
851
|
-
return `[redacted data: ${byteLength} bytes]`;
|
|
852
|
-
}
|
|
853
|
-
if (typeof value === 'string') {
|
|
854
|
-
return `[redacted data: string length=${value.length}]`;
|
|
855
|
-
}
|
|
856
|
-
if (Array.isArray(value)) {
|
|
857
|
-
return `[redacted data: array length=${value.length}]`;
|
|
858
|
-
}
|
|
859
|
-
if (value && typeof value === 'object') {
|
|
860
|
-
return `[redacted data: object keys=${Object.keys(value).length}]`;
|
|
861
|
-
}
|
|
862
|
-
return `[redacted data: ${typeof value}]`;
|
|
863
|
-
}
|
|
864
|
-
function sanitizeProtocolV2DebugPayload(value, key = '', depth = 0) {
|
|
865
|
-
if (/^(data|payload)$/i.test(key) && value !== null && value !== undefined) {
|
|
866
|
-
return summarizeRedactedData(value);
|
|
867
|
-
}
|
|
868
|
-
if (/(passphrase|pin|mnemonic|seed|private)/i.test(key)) {
|
|
869
|
-
return '[redacted sensitive value]';
|
|
870
|
-
}
|
|
871
|
-
const byteLength = getBinaryByteLength(value);
|
|
872
|
-
if (byteLength !== undefined) {
|
|
873
|
-
return `[binary: ${byteLength} bytes]`;
|
|
874
|
-
}
|
|
875
|
-
if (typeof value === 'string') {
|
|
876
|
-
return value.length > PROTOCOL_V2_DEBUG_STRING_LIMIT
|
|
877
|
-
? `${value.slice(0, PROTOCOL_V2_DEBUG_STRING_LIMIT)}... (len=${value.length})`
|
|
878
|
-
: value;
|
|
879
|
-
}
|
|
880
|
-
if (!value || typeof value !== 'object') {
|
|
881
|
-
return value;
|
|
882
|
-
}
|
|
883
|
-
if (depth >= PROTOCOL_V2_DEBUG_DEPTH_LIMIT) {
|
|
884
|
-
return Array.isArray(value)
|
|
885
|
-
? `[array length=${value.length}]`
|
|
886
|
-
: `[object keys=${Object.keys(value).length}]`;
|
|
887
|
-
}
|
|
888
|
-
if (Array.isArray(value)) {
|
|
889
|
-
const items = value
|
|
890
|
-
.slice(0, PROTOCOL_V2_DEBUG_ARRAY_ITEMS_LIMIT)
|
|
891
|
-
.map(item => sanitizeProtocolV2DebugPayload(item, key, depth + 1));
|
|
892
|
-
if (value.length > PROTOCOL_V2_DEBUG_ARRAY_ITEMS_LIMIT) {
|
|
893
|
-
items.push(`... (${value.length - PROTOCOL_V2_DEBUG_ARRAY_ITEMS_LIMIT} more)`);
|
|
894
|
-
}
|
|
895
|
-
return items;
|
|
896
|
-
}
|
|
897
|
-
const entries = Object.entries(value).slice(0, PROTOCOL_V2_DEBUG_OBJECT_KEYS_LIMIT);
|
|
898
|
-
const sanitized = {};
|
|
899
|
-
entries.forEach(([entryKey, entryValue]) => {
|
|
900
|
-
sanitized[entryKey] = sanitizeProtocolV2DebugPayload(entryValue, entryKey, depth + 1);
|
|
901
|
-
});
|
|
902
|
-
if (Object.keys(value).length > PROTOCOL_V2_DEBUG_OBJECT_KEYS_LIMIT) {
|
|
903
|
-
sanitized.__truncated__ = `${Object.keys(value).length - PROTOCOL_V2_DEBUG_OBJECT_KEYS_LIMIT} more keys`;
|
|
904
|
-
}
|
|
905
|
-
return sanitized;
|
|
906
|
-
}
|
|
907
827
|
const COMMON_TERMINAL_RESPONSE_TYPES = new Set([
|
|
908
828
|
'Failure',
|
|
909
829
|
'ButtonRequest',
|
|
@@ -952,11 +872,13 @@ function withProtocolTimeout(promise, timeoutMs, createTimeoutError, onTimeout)
|
|
|
952
872
|
});
|
|
953
873
|
}
|
|
954
874
|
const PROTOCOL_V2_WRITE_WATCHDOG_TIMEOUT_MS = 30000;
|
|
875
|
+
const PROTOCOL_V2_DELIVERY_WATCHDOG_TIMEOUT_MS = 5000;
|
|
955
876
|
class ProtocolV2Session {
|
|
956
877
|
constructor(options) {
|
|
878
|
+
var _a;
|
|
957
879
|
this.pendingCall = Promise.resolve();
|
|
958
|
-
this.protoSeq = 0;
|
|
959
880
|
this.options = options;
|
|
881
|
+
this.sequenceCursor = (_a = options.sequenceCursor) !== null && _a !== void 0 ? _a : new ProtocolV2SequenceCursor();
|
|
960
882
|
}
|
|
961
883
|
call(name, data, callOptions = {}) {
|
|
962
884
|
const run = () => this.executeCall(name, data, callOptions);
|
|
@@ -965,62 +887,68 @@ class ProtocolV2Session {
|
|
|
965
887
|
return result;
|
|
966
888
|
}
|
|
967
889
|
executeCall(name, data, callOptions) {
|
|
968
|
-
var _a, _b;
|
|
969
890
|
return __awaiter(this, void 0, void 0, function* () {
|
|
970
|
-
const { schemas, router, packetSrc = PROTOCOL_V2_PACKET_SRC_COMMAND, writeFrame, readFrame, logger, logPrefix = 'ProtocolV2', createTimeoutError, } = this.options;
|
|
891
|
+
const { schemas, router, packetSrc = PROTOCOL_V2_PACKET_SRC_COMMAND, maxFrameBytes, prepareCall, writeFrame, readFrame, logger, logPrefix = 'ProtocolV2', createTimeoutError, generation = 0, writeTimeoutMs = PROTOCOL_V2_WRITE_WATCHDOG_TIMEOUT_MS, deliveryTimeoutMs = PROTOCOL_V2_DELIVERY_WATCHDOG_TIMEOUT_MS, } = this.options;
|
|
971
892
|
const shouldReduceDebug = shouldReduceProtocolV2Debug(name);
|
|
972
|
-
|
|
893
|
+
const callContext = {
|
|
894
|
+
messageName: name,
|
|
895
|
+
timeoutMs: callOptions.timeoutMs,
|
|
896
|
+
highVolume: shouldReduceDebug,
|
|
897
|
+
generation,
|
|
898
|
+
};
|
|
899
|
+
yield (prepareCall === null || prepareCall === void 0 ? void 0 : prepareCall(callContext));
|
|
900
|
+
const protoSeq = this.sequenceCursor.next();
|
|
973
901
|
const frame = ProtocolV2.encodeFrame(schemas, name, data, {
|
|
974
902
|
packetSrc,
|
|
975
903
|
router,
|
|
976
|
-
seq:
|
|
977
|
-
logger: shouldReduceDebug ? undefined : logger,
|
|
978
|
-
logPrefix,
|
|
979
|
-
context: `tx:${name}`,
|
|
904
|
+
seq: protoSeq,
|
|
980
905
|
});
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
(_a = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _a === void 0 ? void 0 : _a.call(logger, `[${logPrefix}] TX payload name=${name}`, sanitizeProtocolV2DebugPayload(data));
|
|
984
|
-
(_b = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _b === void 0 ? void 0 : _b.call(logger, `[${logPrefix}] TX frame name=${name} len=${frame.length} router=${frame[4]} attr=${frame[5]} seq=${expectedSeq} headerHex=${frameHeaderDebugHex(frame)}`);
|
|
906
|
+
if (maxFrameBytes !== undefined && frame.length > maxFrameBytes) {
|
|
907
|
+
throw new Error(`Protocol V2 frame too large for transport: ${frame.length} > ${maxFrameBytes}`);
|
|
985
908
|
}
|
|
986
|
-
yield withProtocolTimeout(writeFrame(frame),
|
|
909
|
+
yield withProtocolTimeout(writeFrame(frame, callContext), writeTimeoutMs, () => new Error(`Protocol V2 write timeout after ${writeTimeoutMs}ms for ${name}`));
|
|
987
910
|
const cancellation = { cancelled: false };
|
|
911
|
+
let resolveDelivery = () => undefined;
|
|
912
|
+
let deliveryConfirmed = false;
|
|
913
|
+
const deliveryPromise = new Promise(resolve => {
|
|
914
|
+
resolveDelivery = () => {
|
|
915
|
+
if (deliveryConfirmed)
|
|
916
|
+
return;
|
|
917
|
+
deliveryConfirmed = true;
|
|
918
|
+
resolve();
|
|
919
|
+
};
|
|
920
|
+
});
|
|
988
921
|
const readResponse = () => __awaiter(this, void 0, void 0, function* () {
|
|
989
|
-
var
|
|
922
|
+
var _a, _b, _c, _d;
|
|
990
923
|
while (!cancellation.cancelled) {
|
|
991
|
-
const rxFrame = yield readFrame();
|
|
924
|
+
const rxFrame = yield readFrame(callContext);
|
|
992
925
|
if (cancellation.cancelled) {
|
|
993
926
|
break;
|
|
994
927
|
}
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
logPrefix,
|
|
1001
|
-
context: `rx:${name}`,
|
|
1002
|
-
});
|
|
1003
|
-
if (!shouldReduceDebug && decoded.seq !== expectedSeq) {
|
|
1004
|
-
(_d = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _d === void 0 ? void 0 : _d.call(logger, `[${logPrefix}] seq differs for ${name}: tx=${expectedSeq}, rx=${decoded.seq}`);
|
|
1005
|
-
}
|
|
1006
|
-
if (!shouldReduceDebug) {
|
|
1007
|
-
(_e = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _e === void 0 ? void 0 : _e.call(logger, `[${logPrefix}] TX name=${name} seq=${expectedSeq} | RX seq=${decoded.seq} messageTypeId=${decoded.messageTypeId} pbPayload=${decoded.pbPayload.length}B`);
|
|
1008
|
-
(_f = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _f === void 0 ? void 0 : _f.call(logger, `[${logPrefix}] RX payload type=${decoded.type} messageTypeId=${decoded.messageTypeId}`, sanitizeProtocolV2DebugPayload(decoded.message));
|
|
928
|
+
const ackSequence = ProtocolV2.getAckSequence(rxFrame);
|
|
929
|
+
if (ackSequence !== undefined) {
|
|
930
|
+
if (ackSequence === protoSeq) {
|
|
931
|
+
resolveDelivery();
|
|
932
|
+
}
|
|
1009
933
|
}
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
934
|
+
else {
|
|
935
|
+
resolveDelivery();
|
|
936
|
+
const decoded = ProtocolV2.decodeFrame(schemas, rxFrame);
|
|
937
|
+
const response = call(decoded);
|
|
938
|
+
if ((_a = callOptions.intermediateTypes) === null || _a === void 0 ? void 0 : _a.includes(response.type)) {
|
|
939
|
+
(_b = callOptions.onIntermediateResponse) === null || _b === void 0 ? void 0 : _b.call(callOptions, response);
|
|
940
|
+
}
|
|
941
|
+
else if (isExpectedTerminalResponse(response, callOptions.expectedTypes)) {
|
|
942
|
+
return response;
|
|
943
|
+
}
|
|
944
|
+
else if (!shouldReduceDebug) {
|
|
945
|
+
(_c = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _c === void 0 ? void 0 : _c.call(logger, `[${logPrefix}] skip unexpected response for ${name}: expected=${(_d = callOptions.expectedTypes) === null || _d === void 0 ? void 0 : _d.join('|')} got=${response.type}`);
|
|
946
|
+
}
|
|
1019
947
|
}
|
|
1020
948
|
}
|
|
1021
949
|
throw new Error(`Protocol V2 read loop cancelled after timeout for ${name}`);
|
|
1022
950
|
});
|
|
1023
|
-
|
|
951
|
+
const responsePromise = withProtocolTimeout(readResponse(), callOptions.timeoutMs, () => {
|
|
1024
952
|
var _a;
|
|
1025
953
|
return createTimeoutError
|
|
1026
954
|
? createTimeoutError(name, (_a = callOptions.timeoutMs) !== null && _a !== void 0 ? _a : 0)
|
|
@@ -1028,6 +956,26 @@ class ProtocolV2Session {
|
|
|
1028
956
|
}, () => {
|
|
1029
957
|
cancellation.cancelled = true;
|
|
1030
958
|
});
|
|
959
|
+
const deliverySignal = Promise.race([deliveryPromise, responsePromise.then(() => undefined)]);
|
|
960
|
+
const deliveryWatchdog = withProtocolTimeout(deliverySignal, deliveryTimeoutMs, () => new Error(`Protocol V2 delivery timeout after ${deliveryTimeoutMs}ms for ${name}`), () => {
|
|
961
|
+
cancellation.cancelled = true;
|
|
962
|
+
});
|
|
963
|
+
try {
|
|
964
|
+
const firstResult = yield Promise.race([
|
|
965
|
+
deliveryWatchdog.then(() => ({ kind: 'delivered' })),
|
|
966
|
+
responsePromise.then(response => ({ kind: 'response', response })),
|
|
967
|
+
]);
|
|
968
|
+
if (firstResult.kind === 'response') {
|
|
969
|
+
return firstResult.response;
|
|
970
|
+
}
|
|
971
|
+
return yield responsePromise;
|
|
972
|
+
}
|
|
973
|
+
catch (error) {
|
|
974
|
+
cancellation.cancelled = true;
|
|
975
|
+
deliveryWatchdog.catch(() => undefined);
|
|
976
|
+
responsePromise.catch(() => undefined);
|
|
977
|
+
throw error;
|
|
978
|
+
}
|
|
1031
979
|
});
|
|
1032
980
|
}
|
|
1033
981
|
}
|
|
@@ -1052,6 +1000,248 @@ function probeProtocolV2({ call, timeoutMs, logger, logPrefix = 'ProtocolV2', on
|
|
|
1052
1000
|
});
|
|
1053
1001
|
}
|
|
1054
1002
|
|
|
1003
|
+
class ProtocolV2LinkManager {
|
|
1004
|
+
constructor(options) {
|
|
1005
|
+
this.links = new Map();
|
|
1006
|
+
this.sequences = new Map();
|
|
1007
|
+
this.callQueues = new Map();
|
|
1008
|
+
this.options = options;
|
|
1009
|
+
}
|
|
1010
|
+
call(key, createAdapter, name, data, options) {
|
|
1011
|
+
var _a;
|
|
1012
|
+
const run = () => this.executeCall(key, createAdapter, name, data, options);
|
|
1013
|
+
const previous = (_a = this.callQueues.get(key)) !== null && _a !== void 0 ? _a : Promise.resolve();
|
|
1014
|
+
const result = previous.then(run, run);
|
|
1015
|
+
const queue = result.catch(() => undefined);
|
|
1016
|
+
this.callQueues.set(key, queue);
|
|
1017
|
+
result
|
|
1018
|
+
.then(() => this.clearSettledCallQueue(key, queue), () => this.clearSettledCallQueue(key, queue))
|
|
1019
|
+
.catch(() => undefined);
|
|
1020
|
+
return result;
|
|
1021
|
+
}
|
|
1022
|
+
invalidateLink(key, reason) {
|
|
1023
|
+
var _a, _b;
|
|
1024
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1025
|
+
const link = this.links.get(key);
|
|
1026
|
+
if (!link)
|
|
1027
|
+
return;
|
|
1028
|
+
this.links.delete(key);
|
|
1029
|
+
link.state.invalidatedReason = reason;
|
|
1030
|
+
yield link.adapter.reset(reason);
|
|
1031
|
+
yield ((_b = (_a = this.options).onLinkInvalidated) === null || _b === void 0 ? void 0 : _b.call(_a, key, reason));
|
|
1032
|
+
});
|
|
1033
|
+
}
|
|
1034
|
+
invalidateAllLinks(reason) {
|
|
1035
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1036
|
+
yield Promise.all(Array.from(this.links.keys(), key => this.invalidateLink(key, reason)));
|
|
1037
|
+
});
|
|
1038
|
+
}
|
|
1039
|
+
dispose(reason) {
|
|
1040
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1041
|
+
yield this.invalidateAllLinks(reason);
|
|
1042
|
+
this.sequences.clear();
|
|
1043
|
+
this.callQueues.clear();
|
|
1044
|
+
});
|
|
1045
|
+
}
|
|
1046
|
+
getOrCreateLink(key, createAdapter) {
|
|
1047
|
+
const existing = this.links.get(key);
|
|
1048
|
+
if (existing)
|
|
1049
|
+
return existing;
|
|
1050
|
+
const adapter = createAdapter();
|
|
1051
|
+
const state = {};
|
|
1052
|
+
const assertLinkActive = () => {
|
|
1053
|
+
if (state.invalidatedReason) {
|
|
1054
|
+
throw new Error(state.invalidatedReason);
|
|
1055
|
+
}
|
|
1056
|
+
};
|
|
1057
|
+
let sequenceCursor = this.sequences.get(key);
|
|
1058
|
+
if (!sequenceCursor) {
|
|
1059
|
+
sequenceCursor = new ProtocolV2SequenceCursor();
|
|
1060
|
+
this.sequences.set(key, sequenceCursor);
|
|
1061
|
+
}
|
|
1062
|
+
const session = new ProtocolV2Session({
|
|
1063
|
+
schemas: this.options.getSchemas(),
|
|
1064
|
+
router: adapter.router,
|
|
1065
|
+
maxFrameBytes: adapter.maxFrameBytes,
|
|
1066
|
+
generation: adapter.generation,
|
|
1067
|
+
sequenceCursor,
|
|
1068
|
+
prepareCall: (context) => __awaiter(this, void 0, void 0, function* () {
|
|
1069
|
+
assertLinkActive();
|
|
1070
|
+
yield adapter.prepareCall(context);
|
|
1071
|
+
assertLinkActive();
|
|
1072
|
+
}),
|
|
1073
|
+
writeFrame: (frame, context) => __awaiter(this, void 0, void 0, function* () {
|
|
1074
|
+
assertLinkActive();
|
|
1075
|
+
yield adapter.writeFrame(frame, context);
|
|
1076
|
+
assertLinkActive();
|
|
1077
|
+
}),
|
|
1078
|
+
readFrame: (context) => __awaiter(this, void 0, void 0, function* () {
|
|
1079
|
+
assertLinkActive();
|
|
1080
|
+
const frame = yield adapter.readFrame(context);
|
|
1081
|
+
assertLinkActive();
|
|
1082
|
+
return frame;
|
|
1083
|
+
}),
|
|
1084
|
+
logger: adapter.logger,
|
|
1085
|
+
logPrefix: adapter.logPrefix,
|
|
1086
|
+
createTimeoutError: adapter.createTimeoutError,
|
|
1087
|
+
writeTimeoutMs: adapter.writeTimeoutMs,
|
|
1088
|
+
});
|
|
1089
|
+
const link = { adapter, session, state };
|
|
1090
|
+
this.links.set(key, link);
|
|
1091
|
+
return link;
|
|
1092
|
+
}
|
|
1093
|
+
executeCall(key, createAdapter, name, data, options) {
|
|
1094
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1095
|
+
try {
|
|
1096
|
+
return yield this.getOrCreateLink(key, createAdapter).session.call(name, data, options);
|
|
1097
|
+
}
|
|
1098
|
+
catch (error) {
|
|
1099
|
+
if (this.options.classifyError(error) === 'link-fatal') {
|
|
1100
|
+
const errorMessage = getErrorMessage(error) || 'unknown error';
|
|
1101
|
+
yield this.invalidateLink(key, `Protocol V2 link-fatal error: ${errorMessage}`);
|
|
1102
|
+
}
|
|
1103
|
+
throw error;
|
|
1104
|
+
}
|
|
1105
|
+
});
|
|
1106
|
+
}
|
|
1107
|
+
clearSettledCallQueue(key, queue) {
|
|
1108
|
+
if (this.callQueues.get(key) === queue) {
|
|
1109
|
+
this.callQueues.delete(key);
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
class ProtocolV2UsbTransportBase {
|
|
1115
|
+
constructor(options) {
|
|
1116
|
+
this.protocolV2UsbAssemblers = new Map();
|
|
1117
|
+
this.protocolV2UsbGenerations = new Map();
|
|
1118
|
+
this.protocolV2UsbCancellations = new Map();
|
|
1119
|
+
this.protocolV2UsbOptions = options;
|
|
1120
|
+
this.protocolV2UsbLinks = new ProtocolV2LinkManager({
|
|
1121
|
+
getSchemas: () => this.getProtocolV2UsbSchemas(),
|
|
1122
|
+
classifyError: () => 'link-fatal',
|
|
1123
|
+
onLinkInvalidated: (key, reason) => __awaiter(this, void 0, void 0, function* () {
|
|
1124
|
+
var _a;
|
|
1125
|
+
(_a = this.protocolV2UsbAssemblers.get(key)) === null || _a === void 0 ? void 0 : _a.reset();
|
|
1126
|
+
yield this.resetProtocolV2UsbNativeLink(key, reason);
|
|
1127
|
+
yield this.onProtocolV2UsbLinkInvalidated(key, reason);
|
|
1128
|
+
}),
|
|
1129
|
+
});
|
|
1130
|
+
}
|
|
1131
|
+
onProtocolV2UsbLinkInvalidated(_key, _reason) {
|
|
1132
|
+
}
|
|
1133
|
+
rotateProtocolV2UsbGeneration(key, reason) {
|
|
1134
|
+
var _a;
|
|
1135
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1136
|
+
yield this.protocolV2UsbLinks.invalidateLink(key, reason);
|
|
1137
|
+
const generation = ((_a = this.protocolV2UsbGenerations.get(key)) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
1138
|
+
this.protocolV2UsbGenerations.set(key, generation);
|
|
1139
|
+
this.protocolV2UsbCancellations.set(key, this.createProtocolV2UsbCancellation(generation));
|
|
1140
|
+
this.protocolV2UsbAssemblers.set(key, new ProtocolV2FrameAssembler(this.protocolV2UsbOptions.maxFrameBytes));
|
|
1141
|
+
return generation;
|
|
1142
|
+
});
|
|
1143
|
+
}
|
|
1144
|
+
callProtocolV2Usb(key, name, data, options) {
|
|
1145
|
+
return this.protocolV2UsbLinks.call(key, () => this.createProtocolV2UsbAdapter(key), name, data, options);
|
|
1146
|
+
}
|
|
1147
|
+
invalidateProtocolV2UsbLink(key, reason) {
|
|
1148
|
+
return this.protocolV2UsbLinks.invalidateLink(key, reason);
|
|
1149
|
+
}
|
|
1150
|
+
invalidateAllProtocolV2UsbLinks(reason) {
|
|
1151
|
+
return this.protocolV2UsbLinks.invalidateAllLinks(reason);
|
|
1152
|
+
}
|
|
1153
|
+
disposeProtocolV2UsbLinks(reason) {
|
|
1154
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1155
|
+
yield this.protocolV2UsbLinks.dispose(reason);
|
|
1156
|
+
this.protocolV2UsbAssemblers.clear();
|
|
1157
|
+
this.protocolV2UsbGenerations.clear();
|
|
1158
|
+
this.protocolV2UsbCancellations.clear();
|
|
1159
|
+
});
|
|
1160
|
+
}
|
|
1161
|
+
createProtocolV2UsbAdapter(key) {
|
|
1162
|
+
const generation = this.protocolV2UsbGenerations.get(key);
|
|
1163
|
+
if (generation === undefined) {
|
|
1164
|
+
throw new Error('Protocol V2 USB generation has not been initialized');
|
|
1165
|
+
}
|
|
1166
|
+
const cancellation = this.protocolV2UsbCancellations.get(key);
|
|
1167
|
+
if (!cancellation || cancellation.generation !== generation) {
|
|
1168
|
+
throw new Error('Protocol V2 USB cancellation state has not been initialized');
|
|
1169
|
+
}
|
|
1170
|
+
const assertCurrentGeneration = () => {
|
|
1171
|
+
if (cancellation.reason) {
|
|
1172
|
+
throw new Error(cancellation.reason);
|
|
1173
|
+
}
|
|
1174
|
+
if (this.protocolV2UsbGenerations.get(key) !== generation) {
|
|
1175
|
+
throw new Error('Protocol V2 USB connection generation changed');
|
|
1176
|
+
}
|
|
1177
|
+
};
|
|
1178
|
+
return {
|
|
1179
|
+
router: this.protocolV2UsbOptions.router,
|
|
1180
|
+
maxFrameBytes: this.protocolV2UsbOptions.maxFrameBytes,
|
|
1181
|
+
generation,
|
|
1182
|
+
prepareCall: () => {
|
|
1183
|
+
assertCurrentGeneration();
|
|
1184
|
+
this.getProtocolV2UsbAssembler(key).reset();
|
|
1185
|
+
},
|
|
1186
|
+
writeFrame: (frame, context) => __awaiter(this, void 0, void 0, function* () {
|
|
1187
|
+
assertCurrentGeneration();
|
|
1188
|
+
yield this.writeProtocolV2UsbPacket(key, frame, context);
|
|
1189
|
+
assertCurrentGeneration();
|
|
1190
|
+
}),
|
|
1191
|
+
readFrame: (context) => __awaiter(this, void 0, void 0, function* () {
|
|
1192
|
+
assertCurrentGeneration();
|
|
1193
|
+
const assembler = this.getProtocolV2UsbAssembler(key);
|
|
1194
|
+
let frame = assembler.push(new Uint8Array(0));
|
|
1195
|
+
while (!frame) {
|
|
1196
|
+
const packetRead = this.readProtocolV2UsbPacket(key, context).then(packet => ({
|
|
1197
|
+
packet,
|
|
1198
|
+
}));
|
|
1199
|
+
const cancelled = cancellation.promise.then(reason => ({ reason }));
|
|
1200
|
+
const result = yield Promise.race([packetRead, cancelled]);
|
|
1201
|
+
if ('reason' in result) {
|
|
1202
|
+
throw new Error(result.reason);
|
|
1203
|
+
}
|
|
1204
|
+
assertCurrentGeneration();
|
|
1205
|
+
frame = assembler.push(result.packet);
|
|
1206
|
+
}
|
|
1207
|
+
assertCurrentGeneration();
|
|
1208
|
+
return frame;
|
|
1209
|
+
}),
|
|
1210
|
+
reset: (reason) => {
|
|
1211
|
+
var _a;
|
|
1212
|
+
cancellation.cancel(reason);
|
|
1213
|
+
(_a = this.protocolV2UsbAssemblers.get(key)) === null || _a === void 0 ? void 0 : _a.reset();
|
|
1214
|
+
},
|
|
1215
|
+
logger: this.getProtocolV2UsbLogger(),
|
|
1216
|
+
logPrefix: this.protocolV2UsbOptions.logPrefix,
|
|
1217
|
+
createTimeoutError: (messageName, timeoutMs) => this.createProtocolV2UsbTimeoutError(messageName, timeoutMs),
|
|
1218
|
+
};
|
|
1219
|
+
}
|
|
1220
|
+
getProtocolV2UsbAssembler(key) {
|
|
1221
|
+
const assembler = this.protocolV2UsbAssemblers.get(key);
|
|
1222
|
+
if (!assembler) {
|
|
1223
|
+
throw new Error('Protocol V2 USB assembler has not been initialized');
|
|
1224
|
+
}
|
|
1225
|
+
return assembler;
|
|
1226
|
+
}
|
|
1227
|
+
createProtocolV2UsbCancellation(generation) {
|
|
1228
|
+
let resolveCancellation = () => undefined;
|
|
1229
|
+
const cancellation = {
|
|
1230
|
+
generation,
|
|
1231
|
+
promise: new Promise(resolve => {
|
|
1232
|
+
resolveCancellation = resolve;
|
|
1233
|
+
}),
|
|
1234
|
+
cancel: reason => {
|
|
1235
|
+
if (cancellation.reason)
|
|
1236
|
+
return;
|
|
1237
|
+
cancellation.reason = reason;
|
|
1238
|
+
resolveCancellation(reason);
|
|
1239
|
+
},
|
|
1240
|
+
};
|
|
1241
|
+
return cancellation;
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1055
1245
|
exports.AptosTransactionType = void 0;
|
|
1056
1246
|
(function (AptosTransactionType) {
|
|
1057
1247
|
AptosTransactionType[AptosTransactionType["STANDARD"] = 0] = "STANDARD";
|
|
@@ -1227,6 +1417,9 @@ exports.FailureType = void 0;
|
|
|
1227
1417
|
FailureType[FailureType["Failure_WipeCodeMismatch"] = 13] = "Failure_WipeCodeMismatch";
|
|
1228
1418
|
FailureType[FailureType["Failure_InvalidSession"] = 14] = "Failure_InvalidSession";
|
|
1229
1419
|
FailureType[FailureType["Failure_FirmwareError"] = 99] = "Failure_FirmwareError";
|
|
1420
|
+
FailureType[FailureType["Failure_InvalidMessage"] = 1] = "Failure_InvalidMessage";
|
|
1421
|
+
FailureType[FailureType["Failure_UndefinedError"] = 2] = "Failure_UndefinedError";
|
|
1422
|
+
FailureType[FailureType["Failure_UsageError"] = 3] = "Failure_UsageError";
|
|
1230
1423
|
})(exports.FailureType || (exports.FailureType = {}));
|
|
1231
1424
|
exports.Enum_ButtonRequestType = void 0;
|
|
1232
1425
|
(function (Enum_ButtonRequestType) {
|
|
@@ -1295,6 +1488,24 @@ exports.EthereumDataType = void 0;
|
|
|
1295
1488
|
EthereumDataType[EthereumDataType["ARRAY"] = 7] = "ARRAY";
|
|
1296
1489
|
EthereumDataType[EthereumDataType["STRUCT"] = 8] = "STRUCT";
|
|
1297
1490
|
})(exports.EthereumDataType || (exports.EthereumDataType = {}));
|
|
1491
|
+
exports.Enum_KaspaInputScriptType = void 0;
|
|
1492
|
+
(function (Enum_KaspaInputScriptType) {
|
|
1493
|
+
Enum_KaspaInputScriptType[Enum_KaspaInputScriptType["KASPA_SPEND_P2PK_SCHNORR"] = 0] = "KASPA_SPEND_P2PK_SCHNORR";
|
|
1494
|
+
Enum_KaspaInputScriptType[Enum_KaspaInputScriptType["KASPA_SPEND_P2PK_ECDSA"] = 1] = "KASPA_SPEND_P2PK_ECDSA";
|
|
1495
|
+
})(exports.Enum_KaspaInputScriptType || (exports.Enum_KaspaInputScriptType = {}));
|
|
1496
|
+
exports.Enum_KaspaOutputScriptType = void 0;
|
|
1497
|
+
(function (Enum_KaspaOutputScriptType) {
|
|
1498
|
+
Enum_KaspaOutputScriptType[Enum_KaspaOutputScriptType["KASPA_PAYTOADDRESS"] = 0] = "KASPA_PAYTOADDRESS";
|
|
1499
|
+
Enum_KaspaOutputScriptType[Enum_KaspaOutputScriptType["KASPA_PAYTOCHANGE"] = 1] = "KASPA_PAYTOCHANGE";
|
|
1500
|
+
})(exports.Enum_KaspaOutputScriptType || (exports.Enum_KaspaOutputScriptType = {}));
|
|
1501
|
+
exports.Enum_KaspaRequestType = void 0;
|
|
1502
|
+
(function (Enum_KaspaRequestType) {
|
|
1503
|
+
Enum_KaspaRequestType[Enum_KaspaRequestType["KASPA_TX_INPUT"] = 0] = "KASPA_TX_INPUT";
|
|
1504
|
+
Enum_KaspaRequestType[Enum_KaspaRequestType["KASPA_TX_OUTPUT"] = 1] = "KASPA_TX_OUTPUT";
|
|
1505
|
+
Enum_KaspaRequestType[Enum_KaspaRequestType["KASPA_TX_PAYLOAD"] = 2] = "KASPA_TX_PAYLOAD";
|
|
1506
|
+
Enum_KaspaRequestType[Enum_KaspaRequestType["KASPA_TX_FINISHED"] = 3] = "KASPA_TX_FINISHED";
|
|
1507
|
+
Enum_KaspaRequestType[Enum_KaspaRequestType["KASPA_TX_PREV_META"] = 4] = "KASPA_TX_PREV_META";
|
|
1508
|
+
})(exports.Enum_KaspaRequestType || (exports.Enum_KaspaRequestType = {}));
|
|
1298
1509
|
exports.Enum_BackupType = void 0;
|
|
1299
1510
|
(function (Enum_BackupType) {
|
|
1300
1511
|
Enum_BackupType[Enum_BackupType["Bip39"] = 0] = "Bip39";
|
|
@@ -1488,6 +1699,11 @@ exports.CommandFlags = void 0;
|
|
|
1488
1699
|
CommandFlags[CommandFlags["Default"] = 0] = "Default";
|
|
1489
1700
|
CommandFlags[CommandFlags["Factory_Only"] = 1] = "Factory_Only";
|
|
1490
1701
|
})(exports.CommandFlags || (exports.CommandFlags = {}));
|
|
1702
|
+
exports.WallpaperTarget = void 0;
|
|
1703
|
+
(function (WallpaperTarget) {
|
|
1704
|
+
WallpaperTarget[WallpaperTarget["Home"] = 0] = "Home";
|
|
1705
|
+
WallpaperTarget[WallpaperTarget["Lock"] = 1] = "Lock";
|
|
1706
|
+
})(exports.WallpaperTarget || (exports.WallpaperTarget = {}));
|
|
1491
1707
|
exports.MoneroNetworkType = void 0;
|
|
1492
1708
|
(function (MoneroNetworkType) {
|
|
1493
1709
|
MoneroNetworkType[MoneroNetworkType["MAINNET"] = 0] = "MAINNET";
|
|
@@ -1495,23 +1711,82 @@ exports.MoneroNetworkType = void 0;
|
|
|
1495
1711
|
MoneroNetworkType[MoneroNetworkType["STAGENET"] = 2] = "STAGENET";
|
|
1496
1712
|
MoneroNetworkType[MoneroNetworkType["FAKECHAIN"] = 3] = "FAKECHAIN";
|
|
1497
1713
|
})(exports.MoneroNetworkType || (exports.MoneroNetworkType = {}));
|
|
1498
|
-
exports.
|
|
1499
|
-
(function (
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1714
|
+
exports.ViewTipType = void 0;
|
|
1715
|
+
(function (ViewTipType) {
|
|
1716
|
+
ViewTipType[ViewTipType["Default"] = 0] = "Default";
|
|
1717
|
+
ViewTipType[ViewTipType["Highlight"] = 1] = "Highlight";
|
|
1718
|
+
ViewTipType[ViewTipType["Recommend"] = 2] = "Recommend";
|
|
1719
|
+
ViewTipType[ViewTipType["Warning"] = 3] = "Warning";
|
|
1720
|
+
ViewTipType[ViewTipType["Danger"] = 4] = "Danger";
|
|
1721
|
+
})(exports.ViewTipType || (exports.ViewTipType = {}));
|
|
1722
|
+
exports.ViewSignLayout = void 0;
|
|
1723
|
+
(function (ViewSignLayout) {
|
|
1724
|
+
ViewSignLayout[ViewSignLayout["LayoutDefault"] = 0] = "LayoutDefault";
|
|
1725
|
+
ViewSignLayout[ViewSignLayout["LayoutSafeTxCreate"] = 1] = "LayoutSafeTxCreate";
|
|
1726
|
+
ViewSignLayout[ViewSignLayout["LayoutFinalConfirm"] = 2] = "LayoutFinalConfirm";
|
|
1727
|
+
ViewSignLayout[ViewSignLayout["Layout7702"] = 3] = "Layout7702";
|
|
1728
|
+
ViewSignLayout[ViewSignLayout["LayoutFlat"] = 4] = "LayoutFlat";
|
|
1729
|
+
ViewSignLayout[ViewSignLayout["LayoutEthApprove"] = 5] = "LayoutEthApprove";
|
|
1730
|
+
})(exports.ViewSignLayout || (exports.ViewSignLayout = {}));
|
|
1731
|
+
exports.DeviceErrorCode = void 0;
|
|
1732
|
+
(function (DeviceErrorCode) {
|
|
1733
|
+
DeviceErrorCode[DeviceErrorCode["DeviceError_None"] = 0] = "DeviceError_None";
|
|
1734
|
+
DeviceErrorCode[DeviceErrorCode["DeviceError_Busy"] = 1] = "DeviceError_Busy";
|
|
1735
|
+
DeviceErrorCode[DeviceErrorCode["DeviceError_NotInitialized"] = 2] = "DeviceError_NotInitialized";
|
|
1736
|
+
DeviceErrorCode[DeviceErrorCode["DeviceError_ActionCancelled"] = 3] = "DeviceError_ActionCancelled";
|
|
1737
|
+
DeviceErrorCode[DeviceErrorCode["DeviceError_PinAlreadyUsed"] = 4] = "DeviceError_PinAlreadyUsed";
|
|
1738
|
+
DeviceErrorCode[DeviceErrorCode["DeviceError_PersistFailed"] = 5] = "DeviceError_PersistFailed";
|
|
1739
|
+
DeviceErrorCode[DeviceErrorCode["DeviceError_SeError"] = 6] = "DeviceError_SeError";
|
|
1740
|
+
DeviceErrorCode[DeviceErrorCode["DeviceError_InvalidLanguage"] = 7] = "DeviceError_InvalidLanguage";
|
|
1741
|
+
DeviceErrorCode[DeviceErrorCode["DeviceError_WallpaperNotUsable"] = 8] = "DeviceError_WallpaperNotUsable";
|
|
1742
|
+
DeviceErrorCode[DeviceErrorCode["DeviceError_DeviceLocked"] = 9] = "DeviceError_DeviceLocked";
|
|
1743
|
+
})(exports.DeviceErrorCode || (exports.DeviceErrorCode = {}));
|
|
1509
1744
|
exports.DeviceRebootType = void 0;
|
|
1510
1745
|
(function (DeviceRebootType) {
|
|
1511
1746
|
DeviceRebootType[DeviceRebootType["Normal"] = 0] = "Normal";
|
|
1512
1747
|
DeviceRebootType[DeviceRebootType["Romloader"] = 1] = "Romloader";
|
|
1513
1748
|
DeviceRebootType[DeviceRebootType["Bootloader"] = 2] = "Bootloader";
|
|
1514
1749
|
})(exports.DeviceRebootType || (exports.DeviceRebootType = {}));
|
|
1750
|
+
exports.DeviceSettingsPage = void 0;
|
|
1751
|
+
(function (DeviceSettingsPage) {
|
|
1752
|
+
DeviceSettingsPage[DeviceSettingsPage["DeviceReset"] = 0] = "DeviceReset";
|
|
1753
|
+
DeviceSettingsPage[DeviceSettingsPage["DevicePinChange"] = 1] = "DevicePinChange";
|
|
1754
|
+
DeviceSettingsPage[DeviceSettingsPage["DevicePassphrase"] = 2] = "DevicePassphrase";
|
|
1755
|
+
DeviceSettingsPage[DeviceSettingsPage["DeviceAirgap"] = 3] = "DeviceAirgap";
|
|
1756
|
+
})(exports.DeviceSettingsPage || (exports.DeviceSettingsPage = {}));
|
|
1757
|
+
exports.DeviceFirmwareTargetType = void 0;
|
|
1758
|
+
(function (DeviceFirmwareTargetType) {
|
|
1759
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_INVALID"] = 0] = "FW_MGMT_TARGET_INVALID";
|
|
1760
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_CRATE"] = 1] = "FW_MGMT_TARGET_CRATE";
|
|
1761
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_ROMLOADER"] = 2] = "FW_MGMT_TARGET_ROMLOADER";
|
|
1762
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_BOOTLOADER"] = 3] = "FW_MGMT_TARGET_BOOTLOADER";
|
|
1763
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_APPLICATION_P1"] = 4] = "FW_MGMT_TARGET_APPLICATION_P1";
|
|
1764
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_APPLICATION_P2"] = 5] = "FW_MGMT_TARGET_APPLICATION_P2";
|
|
1765
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_COPROCESSOR"] = 6] = "FW_MGMT_TARGET_COPROCESSOR";
|
|
1766
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_SE01"] = 7] = "FW_MGMT_TARGET_SE01";
|
|
1767
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_SE02"] = 8] = "FW_MGMT_TARGET_SE02";
|
|
1768
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_SE03"] = 9] = "FW_MGMT_TARGET_SE03";
|
|
1769
|
+
DeviceFirmwareTargetType[DeviceFirmwareTargetType["FW_MGMT_TARGET_SE04"] = 10] = "FW_MGMT_TARGET_SE04";
|
|
1770
|
+
})(exports.DeviceFirmwareTargetType || (exports.DeviceFirmwareTargetType = {}));
|
|
1771
|
+
exports.DeviceFirmwareUpdateTaskStatus = void 0;
|
|
1772
|
+
(function (DeviceFirmwareUpdateTaskStatus) {
|
|
1773
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_PENDING"] = 0] = "FW_MGMT_UPDATER_TASK_STATUS_PENDING";
|
|
1774
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_IN_PROGRESS"] = 1] = "FW_MGMT_UPDATER_TASK_STATUS_IN_PROGRESS";
|
|
1775
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_FINISHED"] = 2] = "FW_MGMT_UPDATER_TASK_STATUS_FINISHED";
|
|
1776
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_FAILED_FILE_NOT_FOUND"] = 3] = "FW_MGMT_UPDATER_TASK_STATUS_FAILED_FILE_NOT_FOUND";
|
|
1777
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_FAILED_FILE_READ"] = 4] = "FW_MGMT_UPDATER_TASK_STATUS_FAILED_FILE_READ";
|
|
1778
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_FAILED_FILE_WRITE"] = 5] = "FW_MGMT_UPDATER_TASK_STATUS_FAILED_FILE_WRITE";
|
|
1779
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_FAILED_VERIFY"] = 6] = "FW_MGMT_UPDATER_TASK_STATUS_FAILED_VERIFY";
|
|
1780
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_FAILED_INSTALL"] = 7] = "FW_MGMT_UPDATER_TASK_STATUS_FAILED_INSTALL";
|
|
1781
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_FAILED_ABORT"] = 8] = "FW_MGMT_UPDATER_TASK_STATUS_FAILED_ABORT";
|
|
1782
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_FAILED_BUSY"] = 9] = "FW_MGMT_UPDATER_TASK_STATUS_FAILED_BUSY";
|
|
1783
|
+
DeviceFirmwareUpdateTaskStatus[DeviceFirmwareUpdateTaskStatus["FW_MGMT_UPDATER_TASK_STATUS_FAILED_ENTRY_OUT_OF_BOUNDS"] = 10] = "FW_MGMT_UPDATER_TASK_STATUS_FAILED_ENTRY_OUT_OF_BOUNDS";
|
|
1784
|
+
})(exports.DeviceFirmwareUpdateTaskStatus || (exports.DeviceFirmwareUpdateTaskStatus = {}));
|
|
1785
|
+
exports.DeviceFactoryAck = void 0;
|
|
1786
|
+
(function (DeviceFactoryAck) {
|
|
1787
|
+
DeviceFactoryAck[DeviceFactoryAck["FACTORY_ACK_SUCCESS"] = 0] = "FACTORY_ACK_SUCCESS";
|
|
1788
|
+
DeviceFactoryAck[DeviceFactoryAck["FACTORY_ACK_FAIL"] = 1] = "FACTORY_ACK_FAIL";
|
|
1789
|
+
})(exports.DeviceFactoryAck || (exports.DeviceFactoryAck = {}));
|
|
1515
1790
|
exports.DeviceType = void 0;
|
|
1516
1791
|
(function (DeviceType) {
|
|
1517
1792
|
DeviceType[DeviceType["CLASSIC1"] = 0] = "CLASSIC1";
|
|
@@ -1520,54 +1795,93 @@ exports.DeviceType = void 0;
|
|
|
1520
1795
|
DeviceType[DeviceType["TOUCH"] = 3] = "TOUCH";
|
|
1521
1796
|
DeviceType[DeviceType["PRO"] = 5] = "PRO";
|
|
1522
1797
|
DeviceType[DeviceType["CLASSIC1S_PURE"] = 6] = "CLASSIC1S_PURE";
|
|
1798
|
+
DeviceType[DeviceType["PRO2"] = 7] = "PRO2";
|
|
1799
|
+
DeviceType[DeviceType["NEO"] = 8] = "NEO";
|
|
1523
1800
|
})(exports.DeviceType || (exports.DeviceType = {}));
|
|
1524
|
-
exports.
|
|
1525
|
-
(function (
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
})(exports.
|
|
1529
|
-
exports.
|
|
1530
|
-
(function (
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
})(exports.
|
|
1535
|
-
exports.
|
|
1536
|
-
(function (
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
(
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1801
|
+
exports.DeviceSeType = void 0;
|
|
1802
|
+
(function (DeviceSeType) {
|
|
1803
|
+
DeviceSeType[DeviceSeType["THD89"] = 0] = "THD89";
|
|
1804
|
+
DeviceSeType[DeviceSeType["SE608A"] = 1] = "SE608A";
|
|
1805
|
+
})(exports.DeviceSeType || (exports.DeviceSeType = {}));
|
|
1806
|
+
exports.DeviceSEState = void 0;
|
|
1807
|
+
(function (DeviceSEState) {
|
|
1808
|
+
DeviceSEState[DeviceSEState["BOOT"] = 0] = "BOOT";
|
|
1809
|
+
DeviceSEState[DeviceSEState["APP_FACTORY"] = 51] = "APP_FACTORY";
|
|
1810
|
+
DeviceSEState[DeviceSEState["APP"] = 85] = "APP";
|
|
1811
|
+
})(exports.DeviceSEState || (exports.DeviceSEState = {}));
|
|
1812
|
+
exports.DeviceSessionAskPin_FailureSubCodes = void 0;
|
|
1813
|
+
(function (DeviceSessionAskPin_FailureSubCodes) {
|
|
1814
|
+
DeviceSessionAskPin_FailureSubCodes[DeviceSessionAskPin_FailureSubCodes["UserCancel"] = 1] = "UserCancel";
|
|
1815
|
+
})(exports.DeviceSessionAskPin_FailureSubCodes || (exports.DeviceSessionAskPin_FailureSubCodes = {}));
|
|
1816
|
+
exports.DevOnboardingStep = void 0;
|
|
1817
|
+
(function (DevOnboardingStep) {
|
|
1818
|
+
DevOnboardingStep[DevOnboardingStep["DEV_ONBOARDING_STEP_UNKNOWN"] = 0] = "DEV_ONBOARDING_STEP_UNKNOWN";
|
|
1819
|
+
DevOnboardingStep[DevOnboardingStep["DEV_ONBOARDING_STEP_CHECKING"] = 1] = "DEV_ONBOARDING_STEP_CHECKING";
|
|
1820
|
+
DevOnboardingStep[DevOnboardingStep["DEV_ONBOARDING_STEP_PERSONALIZATION"] = 2] = "DEV_ONBOARDING_STEP_PERSONALIZATION";
|
|
1821
|
+
DevOnboardingStep[DevOnboardingStep["DEV_ONBOARDING_STEP_PIN"] = 3] = "DEV_ONBOARDING_STEP_PIN";
|
|
1822
|
+
DevOnboardingStep[DevOnboardingStep["DEV_ONBOARDING_STEP_SETUP"] = 4] = "DEV_ONBOARDING_STEP_SETUP";
|
|
1823
|
+
DevOnboardingStep[DevOnboardingStep["DEV_ONBOARDING_STEP_DONE"] = 5] = "DEV_ONBOARDING_STEP_DONE";
|
|
1824
|
+
})(exports.DevOnboardingStep || (exports.DevOnboardingStep = {}));
|
|
1825
|
+
exports.DevOnboardingPhase = void 0;
|
|
1826
|
+
(function (DevOnboardingPhase) {
|
|
1827
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_UNKNOWN"] = 0] = "DEV_ONBOARDING_PHASE_UNKNOWN";
|
|
1828
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_SAFETY_CHECK"] = 1] = "DEV_ONBOARDING_PHASE_SAFETY_CHECK";
|
|
1829
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_PIN_SETUP"] = 2] = "DEV_ONBOARDING_PHASE_PIN_SETUP";
|
|
1830
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_FINGERPRINT_SETUP"] = 3] = "DEV_ONBOARDING_PHASE_FINGERPRINT_SETUP";
|
|
1831
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_SETUP_CHOICE"] = 4] = "DEV_ONBOARDING_PHASE_SETUP_CHOICE";
|
|
1832
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_WALLET_CREATE_START"] = 5] = "DEV_ONBOARDING_PHASE_WALLET_CREATE_START";
|
|
1833
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_RECOVERY_PHRASE_VIEW"] = 6] = "DEV_ONBOARDING_PHASE_RECOVERY_PHRASE_VIEW";
|
|
1834
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_RECOVERY_PHRASE_CONFIRM"] = 7] = "DEV_ONBOARDING_PHASE_RECOVERY_PHRASE_CONFIRM";
|
|
1835
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_RESTORE_METHOD_CHOICE"] = 8] = "DEV_ONBOARDING_PHASE_RESTORE_METHOD_CHOICE";
|
|
1836
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_RECOVERY_PHRASE_RESTORE"] = 9] = "DEV_ONBOARDING_PHASE_RECOVERY_PHRASE_RESTORE";
|
|
1837
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_SEEDCARD_RESTORE"] = 10] = "DEV_ONBOARDING_PHASE_SEEDCARD_RESTORE";
|
|
1838
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_WALLET_READY"] = 11] = "DEV_ONBOARDING_PHASE_WALLET_READY";
|
|
1839
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_SEEDCARD_BACKUP_PROMPT"] = 12] = "DEV_ONBOARDING_PHASE_SEEDCARD_BACKUP_PROMPT";
|
|
1840
|
+
DevOnboardingPhase[DevOnboardingPhase["DEV_ONBOARDING_PHASE_SEEDCARD_BACKUP"] = 13] = "DEV_ONBOARDING_PHASE_SEEDCARD_BACKUP";
|
|
1841
|
+
})(exports.DevOnboardingPhase || (exports.DevOnboardingPhase = {}));
|
|
1842
|
+
exports.DevOnboardingSetupKind = void 0;
|
|
1843
|
+
(function (DevOnboardingSetupKind) {
|
|
1844
|
+
DevOnboardingSetupKind[DevOnboardingSetupKind["DEV_ONBOARDING_SETUP_KIND_UNKNOWN"] = 0] = "DEV_ONBOARDING_SETUP_KIND_UNKNOWN";
|
|
1845
|
+
DevOnboardingSetupKind[DevOnboardingSetupKind["DEV_ONBOARDING_SETUP_KIND_CHOICE"] = 1] = "DEV_ONBOARDING_SETUP_KIND_CHOICE";
|
|
1846
|
+
DevOnboardingSetupKind[DevOnboardingSetupKind["DEV_ONBOARDING_SETUP_KIND_CREATE"] = 2] = "DEV_ONBOARDING_SETUP_KIND_CREATE";
|
|
1847
|
+
DevOnboardingSetupKind[DevOnboardingSetupKind["DEV_ONBOARDING_SETUP_KIND_RESTORE"] = 3] = "DEV_ONBOARDING_SETUP_KIND_RESTORE";
|
|
1848
|
+
})(exports.DevOnboardingSetupKind || (exports.DevOnboardingSetupKind = {}));
|
|
1849
|
+
exports.DevOnboardingSetupMethod = void 0;
|
|
1850
|
+
(function (DevOnboardingSetupMethod) {
|
|
1851
|
+
DevOnboardingSetupMethod[DevOnboardingSetupMethod["DEV_ONBOARDING_SETUP_METHOD_UNKNOWN"] = 0] = "DEV_ONBOARDING_SETUP_METHOD_UNKNOWN";
|
|
1852
|
+
DevOnboardingSetupMethod[DevOnboardingSetupMethod["DEV_ONBOARDING_SETUP_METHOD_RECOVERY_PHRASE"] = 1] = "DEV_ONBOARDING_SETUP_METHOD_RECOVERY_PHRASE";
|
|
1853
|
+
DevOnboardingSetupMethod[DevOnboardingSetupMethod["DEV_ONBOARDING_SETUP_METHOD_SEEDCARD"] = 2] = "DEV_ONBOARDING_SETUP_METHOD_SEEDCARD";
|
|
1854
|
+
})(exports.DevOnboardingSetupMethod || (exports.DevOnboardingSetupMethod = {}));
|
|
1855
|
+
exports.ProtocolV2FailureType = void 0;
|
|
1856
|
+
(function (ProtocolV2FailureType) {
|
|
1857
|
+
ProtocolV2FailureType[ProtocolV2FailureType["Failure_InvalidMessage"] = 1] = "Failure_InvalidMessage";
|
|
1858
|
+
ProtocolV2FailureType[ProtocolV2FailureType["Failure_UndefinedError"] = 2] = "Failure_UndefinedError";
|
|
1859
|
+
ProtocolV2FailureType[ProtocolV2FailureType["Failure_UsageError"] = 3] = "Failure_UsageError";
|
|
1860
|
+
ProtocolV2FailureType[ProtocolV2FailureType["Failure_DataError"] = 4] = "Failure_DataError";
|
|
1861
|
+
ProtocolV2FailureType[ProtocolV2FailureType["Failure_ProcessError"] = 5] = "Failure_ProcessError";
|
|
1862
|
+
})(exports.ProtocolV2FailureType || (exports.ProtocolV2FailureType = {}));
|
|
1863
|
+
exports.Enum_ProtocolV2Capability = void 0;
|
|
1864
|
+
(function (Enum_ProtocolV2Capability) {
|
|
1865
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Bitcoin"] = 1] = "Capability_Bitcoin";
|
|
1866
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Bitcoin_like"] = 2] = "Capability_Bitcoin_like";
|
|
1867
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Binance"] = 3] = "Capability_Binance";
|
|
1868
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Cardano"] = 4] = "Capability_Cardano";
|
|
1869
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Crypto"] = 5] = "Capability_Crypto";
|
|
1870
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_EOS"] = 6] = "Capability_EOS";
|
|
1871
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Ethereum"] = 7] = "Capability_Ethereum";
|
|
1872
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Lisk"] = 8] = "Capability_Lisk";
|
|
1873
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Monero"] = 9] = "Capability_Monero";
|
|
1874
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_NEM"] = 10] = "Capability_NEM";
|
|
1875
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Ripple"] = 11] = "Capability_Ripple";
|
|
1876
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Stellar"] = 12] = "Capability_Stellar";
|
|
1877
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Tezos"] = 13] = "Capability_Tezos";
|
|
1878
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_U2F"] = 14] = "Capability_U2F";
|
|
1879
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_Shamir"] = 15] = "Capability_Shamir";
|
|
1880
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_ShamirGroups"] = 16] = "Capability_ShamirGroups";
|
|
1881
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_PassphraseEntry"] = 17] = "Capability_PassphraseEntry";
|
|
1882
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_AttachToPin"] = 18] = "Capability_AttachToPin";
|
|
1883
|
+
Enum_ProtocolV2Capability[Enum_ProtocolV2Capability["Capability_EthereumTypedData"] = 1000] = "Capability_EthereumTypedData";
|
|
1884
|
+
})(exports.Enum_ProtocolV2Capability || (exports.Enum_ProtocolV2Capability = {}));
|
|
1571
1885
|
|
|
1572
1886
|
var messages = /*#__PURE__*/Object.freeze({
|
|
1573
1887
|
__proto__: null,
|
|
@@ -1600,6 +1914,9 @@ var messages = /*#__PURE__*/Object.freeze({
|
|
|
1600
1914
|
get EthereumGnosisSafeTxOperation () { return exports.EthereumGnosisSafeTxOperation; },
|
|
1601
1915
|
get EthereumDataTypeOneKey () { return exports.EthereumDataTypeOneKey; },
|
|
1602
1916
|
get EthereumDataType () { return exports.EthereumDataType; },
|
|
1917
|
+
get Enum_KaspaInputScriptType () { return exports.Enum_KaspaInputScriptType; },
|
|
1918
|
+
get Enum_KaspaOutputScriptType () { return exports.Enum_KaspaOutputScriptType; },
|
|
1919
|
+
get Enum_KaspaRequestType () { return exports.Enum_KaspaRequestType; },
|
|
1603
1920
|
get Enum_BackupType () { return exports.Enum_BackupType; },
|
|
1604
1921
|
get Enum_SafetyCheckLevel () { return exports.Enum_SafetyCheckLevel; },
|
|
1605
1922
|
get OneKeyDeviceType () { return exports.OneKeyDeviceType; },
|
|
@@ -1631,16 +1948,26 @@ var messages = /*#__PURE__*/Object.freeze({
|
|
|
1631
1948
|
get TronResourceCode () { return exports.TronResourceCode; },
|
|
1632
1949
|
get TronMessageType () { return exports.TronMessageType; },
|
|
1633
1950
|
get CommandFlags () { return exports.CommandFlags; },
|
|
1951
|
+
get WallpaperTarget () { return exports.WallpaperTarget; },
|
|
1634
1952
|
get MoneroNetworkType () { return exports.MoneroNetworkType; },
|
|
1635
|
-
get
|
|
1636
|
-
get
|
|
1953
|
+
get ViewTipType () { return exports.ViewTipType; },
|
|
1954
|
+
get ViewSignLayout () { return exports.ViewSignLayout; },
|
|
1955
|
+
get DeviceErrorCode () { return exports.DeviceErrorCode; },
|
|
1637
1956
|
get DeviceRebootType () { return exports.DeviceRebootType; },
|
|
1638
|
-
get
|
|
1639
|
-
get DevSeType () { return exports.DevSeType; },
|
|
1640
|
-
get DevSEState () { return exports.DevSEState; },
|
|
1641
|
-
get DevFirmwareTargetType () { return exports.DevFirmwareTargetType; },
|
|
1957
|
+
get DeviceSettingsPage () { return exports.DeviceSettingsPage; },
|
|
1642
1958
|
get DeviceFirmwareTargetType () { return exports.DeviceFirmwareTargetType; },
|
|
1643
|
-
get
|
|
1959
|
+
get DeviceFirmwareUpdateTaskStatus () { return exports.DeviceFirmwareUpdateTaskStatus; },
|
|
1960
|
+
get DeviceFactoryAck () { return exports.DeviceFactoryAck; },
|
|
1961
|
+
get DeviceType () { return exports.DeviceType; },
|
|
1962
|
+
get DeviceSeType () { return exports.DeviceSeType; },
|
|
1963
|
+
get DeviceSEState () { return exports.DeviceSEState; },
|
|
1964
|
+
get DeviceSessionAskPin_FailureSubCodes () { return exports.DeviceSessionAskPin_FailureSubCodes; },
|
|
1965
|
+
get DevOnboardingStep () { return exports.DevOnboardingStep; },
|
|
1966
|
+
get DevOnboardingPhase () { return exports.DevOnboardingPhase; },
|
|
1967
|
+
get DevOnboardingSetupKind () { return exports.DevOnboardingSetupKind; },
|
|
1968
|
+
get DevOnboardingSetupMethod () { return exports.DevOnboardingSetupMethod; },
|
|
1969
|
+
get ProtocolV2FailureType () { return exports.ProtocolV2FailureType; },
|
|
1970
|
+
get Enum_ProtocolV2Capability () { return exports.Enum_ProtocolV2Capability; }
|
|
1644
1971
|
});
|
|
1645
1972
|
|
|
1646
1973
|
protobuf__namespace.util.Long = Long__default["default"];
|
|
@@ -1653,7 +1980,10 @@ var index = {
|
|
|
1653
1980
|
ProtocolV2,
|
|
1654
1981
|
PROTOCOL_V2_SYS_MESSAGE_THRESHOLD,
|
|
1655
1982
|
ProtocolV2FrameAssembler,
|
|
1983
|
+
ProtocolV2LinkManager,
|
|
1984
|
+
ProtocolV2SequenceCursor,
|
|
1656
1985
|
ProtocolV2Session,
|
|
1986
|
+
ProtocolV2UsbTransportBase,
|
|
1657
1987
|
bytesToHex,
|
|
1658
1988
|
concatUint8Arrays,
|
|
1659
1989
|
createMessageFromName,
|
|
@@ -1675,9 +2005,12 @@ exports.PROTOCOL_V1_MESSAGE_HEADER_SIZE = PROTOCOL_V1_MESSAGE_HEADER_SIZE;
|
|
|
1675
2005
|
exports.PROTOCOL_V1_REPORT_ID = PROTOCOL_V1_REPORT_ID;
|
|
1676
2006
|
exports.PROTOCOL_V1_USB_PACKET_SIZE = PROTOCOL_V1_USB_PACKET_SIZE;
|
|
1677
2007
|
exports.PROTOCOL_V2_BLE_FILE_CHUNK_SIZE = PROTOCOL_V2_BLE_FILE_CHUNK_SIZE;
|
|
2008
|
+
exports.PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE = PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE;
|
|
2009
|
+
exports.PROTOCOL_V2_BLE_FRAME_MAX_BYTES = PROTOCOL_V2_BLE_FRAME_MAX_BYTES;
|
|
1678
2010
|
exports.PROTOCOL_V2_CHANNEL_BLE_UART = PROTOCOL_V2_CHANNEL_BLE_UART;
|
|
1679
2011
|
exports.PROTOCOL_V2_CHANNEL_SOCKET = PROTOCOL_V2_CHANNEL_SOCKET;
|
|
1680
2012
|
exports.PROTOCOL_V2_CHANNEL_USB = PROTOCOL_V2_CHANNEL_USB;
|
|
2013
|
+
exports.PROTOCOL_V2_DELIVERY_WATCHDOG_TIMEOUT_MS = PROTOCOL_V2_DELIVERY_WATCHDOG_TIMEOUT_MS;
|
|
1681
2014
|
exports.PROTOCOL_V2_FILE_CHUNK_SIZE = PROTOCOL_V2_FILE_CHUNK_SIZE;
|
|
1682
2015
|
exports.PROTOCOL_V2_FRAME_MAX_BYTES = PROTOCOL_V2_FRAME_MAX_BYTES;
|
|
1683
2016
|
exports.PROTOCOL_V2_PACKET_SRC_COMMAND = PROTOCOL_V2_PACKET_SRC_COMMAND;
|
|
@@ -1687,7 +2020,10 @@ exports.PROTOCOL_V2_WRITE_WATCHDOG_TIMEOUT_MS = PROTOCOL_V2_WRITE_WATCHDOG_TIMEO
|
|
|
1687
2020
|
exports.ProtocolV1 = ProtocolV1;
|
|
1688
2021
|
exports.ProtocolV2 = ProtocolV2;
|
|
1689
2022
|
exports.ProtocolV2FrameAssembler = ProtocolV2FrameAssembler;
|
|
2023
|
+
exports.ProtocolV2LinkManager = ProtocolV2LinkManager;
|
|
2024
|
+
exports.ProtocolV2SequenceCursor = ProtocolV2SequenceCursor;
|
|
1690
2025
|
exports.ProtocolV2Session = ProtocolV2Session;
|
|
2026
|
+
exports.ProtocolV2UsbTransportBase = ProtocolV2UsbTransportBase;
|
|
1691
2027
|
exports.bytesToHex = bytesToHex;
|
|
1692
2028
|
exports.concatUint8Arrays = concatUint8Arrays;
|
|
1693
2029
|
exports["default"] = index;
|