@onekeyfe/hd-core 1.2.0-alpha.135 → 1.2.0-alpha.137
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__/DeviceCommands.test.ts +1 -1
- package/__tests__/device-lifecycle-events.test.ts +22 -24
- package/__tests__/device-wallet-session-store.test.ts +147 -21
- package/__tests__/firmware-update/firmware-update-v4-install-poll.test.ts +1 -37
- package/__tests__/protocol-v2-unlock-policy.test.ts +0 -59
- package/__tests__/protocol-v2.test.ts +20 -52
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
- package/dist/api/device/DeviceVerify.d.ts +0 -1
- package/dist/api/device/DeviceVerify.d.ts.map +1 -1
- package/dist/api/device/DeviceWipe.d.ts.map +1 -1
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/device/DeviceConnector.d.ts +1 -1
- package/dist/device/DeviceConnector.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +68 -39
- package/package.json +4 -4
- package/src/api/FirmwareUpdateV4.ts +68 -25
- package/src/api/device/DeviceChangePin.ts +1 -4
- package/src/api/device/DeviceVerify.ts +0 -9
- package/src/api/device/DeviceWipe.ts +1 -4
- package/src/device/Device.ts +57 -14
- package/src/device/DeviceCommands.ts +1 -1
- package/src/device/DeviceConnector.ts +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/device/Device.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/device/Device.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAmB,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAEL,aAAa,EAQd,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAalD,OAAO,EACL,KAAK,mBAAmB,EAExB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAE5B,KAAK,MAAM,IAAI,WAAW,EAC1B,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAc,MAAM,WAAW,CAAC;AAI/C,OAAO,EAKL,KAAK,qBAAqB,EAO3B,MAAM,mCAAmC,CAAC;AAI3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EACV,gBAAgB,IAAI,gBAAgB,EACpC,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,OAAO,EACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IAEvC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAK9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,WAAW,CAAC;AA6BhB,MAAM,WAAW,YAAY;IAC3B,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,oBAAoB,GAAG,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC;IAChG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,yBAAyB,CAAC,CAAC,CAAC;IACnF,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACrE,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACnE,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACnE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACtD,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;QACnB,MAAM;QACN,wBAAwB;QACxB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI;KAC5D,CAAC;IACF,CAAC,MAAM,CAAC,0CAA0C,CAAC,EAAE;QACnD,MAAM;QACN,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI;KACrC,CAAC;IACF,CAAC,MAAM,CAAC,4CAA4C,CAAC,EAAE;QACrD,MAAM;QACN,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI;KACrC,CAAC;CACH;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAE/F,GAAG,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAEhG,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAChF;AAeD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,GAChB,IAAI,CAEN;AAED,qBAAa,MAAO,SAAQ,YAAY;IAItC,kBAAkB,EAAE,gBAAgB,CAAC;IAErC,aAAa,CAAC,EAAE,MAAM,CAAC;IAKvB,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;IAOlB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAKvB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAQ;IAMhD,QAAQ,EAAE,cAAc,CAAC;IAKzB,OAAO,CAAC,gBAAgB,CAAC,CAAoC;IAK7D,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,UAAU,CAA0B;IAG5C,OAAO,CAAC,0BAA0B,CAAS;IAG3C,OAAO,CAAC,wBAAwB,CAAC,CAAe;IAGhD,OAAO,CAAC,+BAA+B,CAAC,CAAwB;IAGhE,OAAO,CAAC,oCAAoC,CAAC,CAAS;IAEtD,OAAO,CAAC,uBAAuB,CAAC,CAK9B;IAEF,OAAO,CAAC,8BAA8B,CAAK;IAE3C,IAAI,KAAK;;mBAER;IAED,IAAI,QAAQ,IAAI,QAAQ,GAAG,SAAS,CAGnC;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAY1C;IAED,UAAU,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAGnC,OAAO,CAAC,iBAAiB,CAAC,CAAgB;IAE1C,aAAa,EAAE,MAAM,EAAE,CAAM;IAE7B,uBAAuB,EAAE,uBAAuB,CAAM;IAEtD,QAAQ,SAAK;IAEb,aAAa,EAAE,MAAM,EAAE,CAAM;IAE7B,gBAAgB,UAAS;IAKzB,WAAW,UAAS;IAEpB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAa;IAEhD,sBAAsB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAGxC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAGlC,OAAO,CAAC,iBAAiB,CAAC,CAExB;IAGF,OAAO,CAAC,wBAAwB,CAAC,CAAS;gBAE9B,UAAU,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,MAAM;IAahE,MAAM,CAAC,cAAc,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,MAAM;IAMlF,eAAe,IAAI,WAAW,GAAG,IAAI;IAmDrC,OAAO,CACL,eAAe,CAAC,EAAE,uBAAuB,EACzC,OAAO,CAAC,EAAE;QAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE;IAoC1C,OAAO,CACX,gBAAgB,CAAC,EAAE,uBAAuB,EAC1C,OAAO,CAAC,EAAE;QAAE,sBAAsB,CAAC,EAAE,OAAO,CAAC;QAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE;IAiG5E,OAAO;IA4CP,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW;IAU7C,kBAAkB,CAAC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;IAStD,mBAAmB;IAKnB,wBAAwB,CAAC,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;IAM/D,qBAAqB,CAAC,KAAK,EAAE,MAAM;IAKnC,yBAAyB,CAAC,UAAU,EAAE,MAAM;IAI5C,yBAAyB;IAIzB,WAAW;IAWX,WAAW,IAAI,IAAI,GAAG,IAAI;IAI1B,YAAY;IAIZ,oBAAoB;IAIpB,kBAAkB;IAIlB,kBAAkB;IAIlB,YAAY;IASZ,iBAAiB;IAIjB,eAAe;IAIf,qBAAqB;IAiBrB,8BAA8B;IAI9B,sBAAsB;IAItB,+BAA+B;IAI/B,kCAAkC;IAKlC,iCAAiC;IAKjC,sBAAsB;IAItB,4BAA4B,CAC1B,eAAe,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,KAAK,aAAa,GAAG,SAAS;IAwBzF,oBAAoB,IAAI,kBAAkB;IAkB1C,yBAAyB,IAAI,kBAAkB;IAkB/C,uBAAuB,IAAI,kBAAkB;IAkB7C,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,mCAAmC;IAQ3C,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM;IAqBnC,wBAAwB,CAAC,SAAS,CAAC,EAAE,MAAM;;;;IAO3C,mBAAmB,CACjB,gBAAgB,EAAE,OAAO,EACzB,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,iBAAiB,GAAE,MAAM,GAAG,IAAW,EACvC,UAAU,GAAE,UAAU,GAAG,QAAmB;IA+B9C,OAAO,CAAC,gBAAgB;IAqBxB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM;IAYrC,0BAA0B,CAAC,SAAS,CAAC,EAAE,MAAM;IAMvC,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW;YAqHxB,qBAAqB;IAmB7B,WAAW;IAaX,cAAc,CAAC,MAAM,GAAE,sBAA2B;IA6ElD,sCAAsC;IAI5C,eAAe,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,EAAE,WAAW,CAAC,EAAE,OAAO;IAkB/E,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,uBAAuB;;;IAuBpE,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,uBAAuB;IAYvE,8BAA8B,CAClC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GACnC,OAAO,CAAC,YAAY,CAAC;IA+ClB,2BAA2B,CAC/B,UAAU,CAAC,EAAE,oBAAoB,EACjC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QACR,0BAA0B,CAAC,EAAE,OAAO,CAAC;KACtC;IAsDH,wBAAwB,CACtB,UAAU,CAAC,EAAE,oBAAoB,EACjC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,EAClC,WAAW,CAAC,EAAE,qBAAqB,EACnC,YAAY,CAAC,EAAE,YAAY;IAiB7B,sBAAsB,CAAC,MAAM,EAAE,YAAY;IAS3C,OAAO,CAAC,gCAAgC;IASxC,yBAAyB;IAKzB,mBAAmB;IAkBnB,oBAAoB,CAAC,UAAU,EAAE,gBAAgB;IAiDjD,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,EAAE,WAAW,UAAQ;IAqBlE,eAAe,CAAC,MAAM,EAAE,MAAM;IAaxB,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU;IA2BlD,SAAS,CAAC,CAAC,EACf,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAClC,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;IA8FtB,uBAAuB;IASvB,oBAAoB;IAwB1B,mBAAmB,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC;IAW/D,qBAAqB;IAIrB,OAAO;IAkBP,SAAS;IAMT,kBAAkB;IAKlB,qBAAqB;IAKrB,MAAM;IAIN,gBAAgB;IAQhB,UAAU;IAQV,eAAe,IAAI,OAAO;IAI1B,YAAY;IAKZ,WAAW;IAUX,aAAa;IAKb,UAAU;IAKV,YAAY,IAAI,OAAO;IAIvB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;IAsBpD,gBAAgB;IAchB,aAAa,CAAC,QAAQ,EAAE,MAAM;IAIxB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAMpC,4BAA4B;IAU5B,+BAA+B,CAC7B,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,EACzC,UAAU,EAAE,yBAAyB,CAAC,YAAY,CAAC,EACnD,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;KAChD,GACA,yBAAyB,GAAG,SAAS;IAsBxC,yBAAyB,CACvB,KAAK,EAAE,yBAAyB,EAChC,OAAO,GAAE,yBAAyB,CAAC,SAAS,CAAe;IAQ7D,6BAA6B,CAC3B,OAAO,CAAC,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAC9C,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAwBxC,8BAA8B;IAI9B,yBAAyB,IAAI,mBAAmB;IAS1C,YAAY,CAChB,OAAO,CAAC,EAAE,oBAAoB,EAC9B,OAAO,CAAC,EAAE,yBAAyB,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE;IAmG3D,0BAA0B,CAC9B,eAAe,CAAC,EAAE,MAAM,EACxB,kBAAkB,CAAC,EAAE,OAAO,EAC5B,mBAAmB,CAAC,EAAE,OAAO,EAC7B,aAAa,CAAC,EAAE,OAAO;CAyD1B;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -14,7 +14,7 @@ export default class DeviceConnector {
|
|
|
14
14
|
enumerate(): Promise<DeviceDescriptorDiff | undefined>;
|
|
15
15
|
listen(): Promise<void>;
|
|
16
16
|
stop(): void;
|
|
17
|
-
acquire(path: string, session?: string | null, forceCleanRunPromise?: boolean, expectedProtocol?: HardwareConnectProtocol, protocolHint?: HardwareConnectProtocol): Promise<string | undefined>;
|
|
17
|
+
acquire(path: string, session?: string | null, forceCleanRunPromise?: boolean, expectedProtocol?: HardwareConnectProtocol, protocolHint?: HardwareConnectProtocol, forceProtocolDetection?: boolean): Promise<string | undefined>;
|
|
18
18
|
release(session: string, onclose: boolean, keepSession?: boolean): Promise<void>;
|
|
19
19
|
disconnect(session: string | undefined | null): Promise<void>;
|
|
20
20
|
promptDeviceAccess(): Promise<USBDevice | BluetoothDevice | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceConnector.d.ts","sourceRoot":"","sources":["../../src/device/DeviceConnector.ts"],"names":[],"mappings":";;AAUA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,IAAI,gBAAgB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAI9F,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,eAAe,SAAK;IAEpB,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAQ;IAE1C,QAAQ,EAAE,gBAAgB,EAAE,CAAM;IAElC,SAAS,UAAS;;IAQlB,OAAO,CAAC,kBAAkB;IAYpB,SAAS;IAWT,MAAM;IAgCZ,IAAI;IAIE,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EACvB,oBAAoB,CAAC,EAAE,OAAO,EAC9B,gBAAgB,CAAC,EAAE,uBAAuB,EAC1C,YAAY,CAAC,EAAE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"DeviceConnector.d.ts","sourceRoot":"","sources":["../../src/device/DeviceConnector.ts"],"names":[],"mappings":";;AAUA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,IAAI,gBAAgB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAI9F,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,eAAe,SAAK;IAEpB,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAQ;IAE1C,QAAQ,EAAE,gBAAgB,EAAE,CAAM;IAElC,SAAS,UAAS;;IAQlB,OAAO,CAAC,kBAAkB;IAYpB,SAAS;IAWT,MAAM;IAgCZ,IAAI;IAIE,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EACvB,oBAAoB,CAAC,EAAE,OAAO,EAC9B,gBAAgB,CAAC,EAAE,uBAAuB,EAC1C,YAAY,CAAC,EAAE,uBAAuB,EACtC,sBAAsB,CAAC,EAAE,OAAO;IAoD5B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO;IAShE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAWnD,kBAAkB,IAAI,OAAO,CAAC,SAAS,GAAG,eAAe,GAAG,IAAI,CAAC;IAQjE,oBAAoB;CAGrB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -713,7 +713,7 @@ declare class DeviceConnector {
|
|
|
713
713
|
enumerate(): Promise<DeviceDescriptorDiff | undefined>;
|
|
714
714
|
listen(): Promise<void>;
|
|
715
715
|
stop(): void;
|
|
716
|
-
acquire(path: string, session?: string | null, forceCleanRunPromise?: boolean, expectedProtocol?: HardwareConnectProtocol, protocolHint?: HardwareConnectProtocol): Promise<string | undefined>;
|
|
716
|
+
acquire(path: string, session?: string | null, forceCleanRunPromise?: boolean, expectedProtocol?: HardwareConnectProtocol, protocolHint?: HardwareConnectProtocol, forceProtocolDetection?: boolean): Promise<string | undefined>;
|
|
717
717
|
release(session: string, onclose: boolean, keepSession?: boolean): Promise<void>;
|
|
718
718
|
disconnect(session: string | undefined | null): Promise<void>;
|
|
719
719
|
promptDeviceAccess(): Promise<USBDevice | BluetoothDevice | null>;
|
package/dist/index.js
CHANGED
|
@@ -43538,7 +43538,7 @@ const DEVICE_CONTROL_CALLS = new Set([
|
|
|
43538
43538
|
'DeviceCertificateSign',
|
|
43539
43539
|
'DeviceMiscUsbMscControl',
|
|
43540
43540
|
]);
|
|
43541
|
-
const isProtocolV2ActionCancelledMessage = (message) => /^(?:cancel(?:led|ed)(?: on device)?|confirm dismissed|
|
|
43541
|
+
const isProtocolV2ActionCancelledMessage = (message) => /^(?:cancel(?:led|ed)(?: on device)?|confirm dismissed|user cancel(?:led|ed)(?:\s+.*)?)$/i.test(message);
|
|
43542
43542
|
function shouldReduceDebugForCall(type) {
|
|
43543
43543
|
return HIGH_VOLUME_DEBUG_CALLS.has(type);
|
|
43544
43544
|
}
|
|
@@ -45240,12 +45240,12 @@ class Device extends events.exports {
|
|
|
45240
45240
|
try {
|
|
45241
45241
|
let acquireResult;
|
|
45242
45242
|
if (DataManager.isBleConnect(env)) {
|
|
45243
|
-
acquireResult = yield ((_a = this.deviceConnector) === null || _a === void 0 ? void 0 : _a.acquire(this.originalDescriptor.id, undefined, true, strictProtocol, undefined));
|
|
45243
|
+
acquireResult = yield ((_a = this.deviceConnector) === null || _a === void 0 ? void 0 : _a.acquire(this.originalDescriptor.id, undefined, true, strictProtocol, undefined, options === null || options === void 0 ? void 0 : options.forceProtocolDetection));
|
|
45244
45244
|
this.mainId = (_b = acquireResult === null || acquireResult === void 0 ? void 0 : acquireResult.uuid) !== null && _b !== void 0 ? _b : '';
|
|
45245
45245
|
Log$h.debug('Expected uuid:', this.mainId);
|
|
45246
45246
|
}
|
|
45247
45247
|
else {
|
|
45248
|
-
acquireResult = yield ((_c = this.deviceConnector) === null || _c === void 0 ? void 0 : _c.acquire(this.originalDescriptor.path, this.originalDescriptor.session, undefined, strictProtocol, undefined));
|
|
45248
|
+
acquireResult = yield ((_c = this.deviceConnector) === null || _c === void 0 ? void 0 : _c.acquire(this.originalDescriptor.path, this.originalDescriptor.session, undefined, strictProtocol, undefined, options === null || options === void 0 ? void 0 : options.forceProtocolDetection));
|
|
45249
45249
|
this.mainId = acquireResult;
|
|
45250
45250
|
Log$h.debug('Expected session id:', this.mainId);
|
|
45251
45251
|
}
|
|
@@ -45617,11 +45617,9 @@ class Device extends events.exports {
|
|
|
45617
45617
|
yield TransportManager.reconfigure(this.features);
|
|
45618
45618
|
});
|
|
45619
45619
|
const expectedDeviceId = options === null || options === void 0 ? void 0 : options.deviceId;
|
|
45620
|
-
if (expectedDeviceId) {
|
|
45620
|
+
if (expectedDeviceId && !(this.features && this.checkDeviceId(expectedDeviceId))) {
|
|
45621
45621
|
this.passphraseState = undefined;
|
|
45622
|
-
|
|
45623
|
-
this._updateFeatures(message);
|
|
45624
|
-
yield TransportManager.reconfigure(this.features);
|
|
45622
|
+
yield callInitialize({ is_contains_attach: true });
|
|
45625
45623
|
if (!this.checkDeviceId(expectedDeviceId)) {
|
|
45626
45624
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceCheckDeviceIdError);
|
|
45627
45625
|
}
|
|
@@ -45641,7 +45639,23 @@ class Device extends events.exports {
|
|
|
45641
45639
|
if (options === null || options === void 0 ? void 0 : options.deriveCardano) {
|
|
45642
45640
|
payload.derive_cardano = true;
|
|
45643
45641
|
}
|
|
45644
|
-
|
|
45642
|
+
if (this.features) {
|
|
45643
|
+
yield TransportManager.reconfigure(this.features);
|
|
45644
|
+
}
|
|
45645
|
+
const assertExpectedDeviceIdentity = () => {
|
|
45646
|
+
if (expectedDeviceId && !this.checkDeviceId(expectedDeviceId)) {
|
|
45647
|
+
this.clearInternalState();
|
|
45648
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceCheckDeviceIdError);
|
|
45649
|
+
}
|
|
45650
|
+
};
|
|
45651
|
+
try {
|
|
45652
|
+
yield callInitialize(payload, options === null || options === void 0 ? void 0 : options.initSession);
|
|
45653
|
+
}
|
|
45654
|
+
catch (error) {
|
|
45655
|
+
assertExpectedDeviceIdentity();
|
|
45656
|
+
throw error;
|
|
45657
|
+
}
|
|
45658
|
+
assertExpectedDeviceIdentity();
|
|
45645
45659
|
}
|
|
45646
45660
|
catch (error) {
|
|
45647
45661
|
Log$h.error('Initialization failed:', error);
|
|
@@ -46115,17 +46129,14 @@ class Device extends events.exports {
|
|
|
46115
46129
|
const error = hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceInterruptedFromUser);
|
|
46116
46130
|
const cleanupPromise = this.runCleanupPromise;
|
|
46117
46131
|
const { cancelableAction } = this;
|
|
46118
|
-
const env = DataManager.getSettings('env');
|
|
46119
46132
|
if (cancelableAction) {
|
|
46120
46133
|
yield cancelableAction(error);
|
|
46121
46134
|
}
|
|
46122
46135
|
else if (this.isProtocolV2() &&
|
|
46123
|
-
|
|
46124
|
-
DataManager.isBrowserWebUsb(env) ||
|
|
46125
|
-
DataManager.isDesktopWebUsb(env)) &&
|
|
46136
|
+
DataManager.isBleConnect(DataManager.getSettings('env')) &&
|
|
46126
46137
|
this.hasDeviceAcquire()) {
|
|
46127
46138
|
yield ((_b = (_a = this.commands) === null || _a === void 0 ? void 0 : _a.cancelDevice) === null || _b === void 0 ? void 0 : _b.call(_a).catch(cancelError => {
|
|
46128
|
-
Log$h.debug('Protocol V2 fallback cancel error', cancelError);
|
|
46139
|
+
Log$h.debug('Protocol V2 BLE fallback cancel error', cancelError);
|
|
46129
46140
|
}));
|
|
46130
46141
|
}
|
|
46131
46142
|
yield ((_c = this.commands) === null || _c === void 0 ? void 0 : _c.cancel());
|
|
@@ -48180,7 +48191,6 @@ class DeviceChangePin extends BaseMethod {
|
|
|
48180
48191
|
}
|
|
48181
48192
|
init() {
|
|
48182
48193
|
this.unlockPolicy = 'unlock-before-run';
|
|
48183
|
-
this.protocolV2PreUnlockPinType = hdTransport.DeviceSessionPinType.Any;
|
|
48184
48194
|
this.useDevicePassphraseState = false;
|
|
48185
48195
|
validateParams(this.payload, [{ name: 'remove', type: 'boolean' }]);
|
|
48186
48196
|
this.params = {
|
|
@@ -48790,12 +48800,7 @@ class DeviceSupportFeatures extends BaseMethod {
|
|
|
48790
48800
|
}
|
|
48791
48801
|
|
|
48792
48802
|
class DeviceVerify extends BaseMethod {
|
|
48793
|
-
getSupportedProtocols() {
|
|
48794
|
-
return ['V1', 'V2'];
|
|
48795
|
-
}
|
|
48796
48803
|
init() {
|
|
48797
|
-
this.unlockPolicy = 'unlock-before-run';
|
|
48798
|
-
this.protocolV2PreUnlockPinType = hdTransport.DeviceSessionPinType.Any;
|
|
48799
48804
|
this.useDevicePassphraseState = false;
|
|
48800
48805
|
validateParams(this.payload, [{ name: 'dataHex', type: 'hexString' }]);
|
|
48801
48806
|
this.params = {
|
|
@@ -48834,7 +48839,6 @@ class DeviceWipe extends BaseMethod {
|
|
|
48834
48839
|
}
|
|
48835
48840
|
init() {
|
|
48836
48841
|
this.unlockPolicy = 'unlock-before-run';
|
|
48837
|
-
this.protocolV2PreUnlockPinType = hdTransport.DeviceSessionPinType.Any;
|
|
48838
48842
|
this.useDevicePassphraseState = false;
|
|
48839
48843
|
this.protocolV2UiInteraction = {
|
|
48840
48844
|
request: 'button',
|
|
@@ -51722,8 +51726,9 @@ const PROTOCOL_V2_BOOTLOADER_RECONNECT_TIMEOUT = 90 * 1000;
|
|
|
51722
51726
|
const PROTOCOL_V2_FINAL_RECONNECT_TIMEOUT = 3 * 60 * 1000;
|
|
51723
51727
|
const PROTOCOL_V2_SHORT_RESPONSE_TIMEOUT = 5 * 1000;
|
|
51724
51728
|
const PROTOCOL_V2_FIRMWARE_STATUS_RESPONSE_TIMEOUT = 15 * 1000;
|
|
51725
|
-
const PROTOCOL_V2_INSTALL_TIMEOUT =
|
|
51729
|
+
const PROTOCOL_V2_INSTALL_TIMEOUT = 8 * 60 * 1000;
|
|
51726
51730
|
const PROTOCOL_V2_INSTALL_STATUS_INITIAL_DELAY = 1000;
|
|
51731
|
+
const PROTOCOL_V2_MISSING_TARGET_STATUS_GRACE_TIMEOUT = 30 * 1000;
|
|
51727
51732
|
const PROTOCOL_V2_TARGET_STATUS_PENDING = 0;
|
|
51728
51733
|
const PROTOCOL_V2_TARGET_STATUS_IN_PROGRESS = 1;
|
|
51729
51734
|
const PROTOCOL_V2_TARGET_STATUS_FINISHED = 2;
|
|
@@ -51737,8 +51742,6 @@ const PROTOCOL_V2_CONNECT_SINGLE_TIMEOUT = 75 * 1000;
|
|
|
51737
51742
|
const PROTOCOL_V2_DEVICE_INFO_READY_TIMEOUT = 30 * 1000;
|
|
51738
51743
|
const PROTOCOL_V2_FILE_TRANSFER_RETRY_COUNT = 3;
|
|
51739
51744
|
const PROTOCOL_V2_INSTALL_STATUS_CONFLICT_CODE = 'FirmwareInstallStatusConflict';
|
|
51740
|
-
const PROTOCOL_V2_INSTALL_FAILED_CODE = 'FirmwareInstallFailed';
|
|
51741
|
-
const PROTOCOL_V2_INSTALL_TIMEOUT_CODE = 'FirmwareInstallTimeout';
|
|
51742
51745
|
const PROTOCOL_V2_OKPP_HEADER_SIZE = 0x52a0;
|
|
51743
51746
|
const PROTOCOL_V2_OKPP_PAYLOAD_HASH_OFFSET = 0x200;
|
|
51744
51747
|
const PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET = 0x240;
|
|
@@ -51894,8 +51897,7 @@ const isProtocolV2FirmwareStatusEndpointUnavailable = (error) => {
|
|
|
51894
51897
|
const isProtocolV2TerminalInstallStatusError = (error) => {
|
|
51895
51898
|
var _a;
|
|
51896
51899
|
return error instanceof hdShared.HardwareError &&
|
|
51897
|
-
(error.errorCode === hdShared.HardwareErrorCode.
|
|
51898
|
-
error.errorCode === hdShared.HardwareErrorCode.FirmwareError ||
|
|
51900
|
+
(error.errorCode === hdShared.HardwareErrorCode.FirmwareError ||
|
|
51899
51901
|
error.errorCode === hdShared.HardwareErrorCode.FirmwareVerificationFailed ||
|
|
51900
51902
|
((_a = error.params) === null || _a === void 0 ? void 0 : _a.firmwareUpdateCode) === PROTOCOL_V2_INSTALL_STATUS_CONFLICT_CODE);
|
|
51901
51903
|
};
|
|
@@ -52037,7 +52039,6 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52037
52039
|
this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
|
|
52038
52040
|
this.requireDeviceMode = [];
|
|
52039
52041
|
this.unlockPolicy = 'unlock-before-run';
|
|
52040
|
-
this.protocolV2PreUnlockPinType = hdTransport.DeviceSessionPinType.Any;
|
|
52041
52042
|
this.useDevicePassphraseState = false;
|
|
52042
52043
|
this.skipForceUpdateCheck = true;
|
|
52043
52044
|
const { payload } = this;
|
|
@@ -52771,9 +52772,8 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52771
52772
|
? visibleVersions[target]
|
|
52772
52773
|
: `${Math.floor(statusVersion / 0x10000) % 0x100}.${Math.floor(statusVersion / 0x100) % 0x100}.${statusVersion % 0x100}`;
|
|
52773
52774
|
if (!observedVersion) {
|
|
52774
|
-
|
|
52775
|
-
|
|
52776
|
-
Log$7.warn(`Protocol V2 target ${target} has no observable final version; install completion is authoritative`);
|
|
52775
|
+
if (this.protocolV2FinalStatusVerified) {
|
|
52776
|
+
Log$7.warn(`Protocol V2 target ${target} has no observable final version; completed target status is authoritative`);
|
|
52777
52777
|
}
|
|
52778
52778
|
else {
|
|
52779
52779
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareVerificationFailed, `Protocol V2 target ${target} has no observable final version after status fallback`);
|
|
@@ -53443,6 +53443,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53443
53443
|
});
|
|
53444
53444
|
}
|
|
53445
53445
|
assertProtocolV2TargetStatus(statusTargets, expectedTargetIds, expectedPaths = new Map()) {
|
|
53446
|
+
var _a, _b, _c;
|
|
53446
53447
|
Log$7.log(`[FirmwareUpdateV4] DeviceFirmwareUpdateStatus records=${JSON.stringify(statusTargets)}`);
|
|
53447
53448
|
const failedTarget = statusTargets.find(target => {
|
|
53448
53449
|
var _a;
|
|
@@ -53457,9 +53458,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53457
53458
|
path: failedTarget.path,
|
|
53458
53459
|
});
|
|
53459
53460
|
Log$7.error(`[FirmwareUpdateV4] firmware install failed target=${failedTargetDetails}`);
|
|
53460
|
-
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareError,
|
|
53461
|
-
firmwareUpdateCode: PROTOCOL_V2_INSTALL_FAILED_CODE,
|
|
53462
|
-
});
|
|
53461
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareError, `Protocol V2 firmware target failed: target=${failedTarget.target_id} status=${(_a = failedTarget.status) !== null && _a !== void 0 ? _a : 'unknown'} payloadVersion=${(_b = failedTarget.payload_version) !== null && _b !== void 0 ? _b : 'unknown'} path=${(_c = failedTarget.path) !== null && _c !== void 0 ? _c : 'unknown'}`);
|
|
53463
53462
|
}
|
|
53464
53463
|
const matchingTargets = statusTargets.filter(target => { var _a; return expectedTargetIds.has((_a = normalizeProtocolV2TargetId(target.target_id)) !== null && _a !== void 0 ? _a : -1); });
|
|
53465
53464
|
const seenTargetIds = new Set();
|
|
@@ -53468,8 +53467,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53468
53467
|
if (targetId === undefined ||
|
|
53469
53468
|
seenTargetIds.has(targetId) ||
|
|
53470
53469
|
(target.path && expectedPaths.get(targetId) && target.path !== expectedPaths.get(targetId))) {
|
|
53471
|
-
|
|
53472
|
-
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareError, undefined, {
|
|
53470
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 install status conflicts with target ${target.target_id}`, {
|
|
53473
53471
|
firmwareUpdateCode: PROTOCOL_V2_INSTALL_STATUS_CONFLICT_CODE,
|
|
53474
53472
|
});
|
|
53475
53473
|
}
|
|
@@ -53562,8 +53560,15 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53562
53560
|
let lastError;
|
|
53563
53561
|
let shouldReconnect = false;
|
|
53564
53562
|
let deviceInfo;
|
|
53563
|
+
let missingTargetStatusSince;
|
|
53564
|
+
let missingTargetStatusKey;
|
|
53565
|
+
let normalModeWithoutInstallEvidenceSince;
|
|
53565
53566
|
let installEvidenceObserved = false;
|
|
53566
53567
|
let currentInstallStatusObserved = false;
|
|
53568
|
+
const resetMissingTargetStatusGrace = () => {
|
|
53569
|
+
missingTargetStatusSince = undefined;
|
|
53570
|
+
missingTargetStatusKey = undefined;
|
|
53571
|
+
};
|
|
53567
53572
|
while (Date.now() - startTime < PROTOCOL_V2_INSTALL_TIMEOUT) {
|
|
53568
53573
|
this.throwIfAborted();
|
|
53569
53574
|
try {
|
|
@@ -53583,6 +53588,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53583
53588
|
}, { timeoutMs: PROTOCOL_V2_FIRMWARE_STATUS_RESPONSE_TIMEOUT });
|
|
53584
53589
|
if (statusResponse.type === 'Success') {
|
|
53585
53590
|
installEvidenceObserved = true;
|
|
53591
|
+
resetMissingTargetStatusGrace();
|
|
53586
53592
|
lastError = new Error('Protocol V2 firmware install acknowledged; waiting for target status');
|
|
53587
53593
|
}
|
|
53588
53594
|
const statusTargets = statusResponse.type === 'DeviceFirmwareUpdateStatus'
|
|
@@ -53604,6 +53610,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53604
53610
|
if (hasMatchingTargetStatus &&
|
|
53605
53611
|
(!requireCurrentInstallStatus || currentInstallStatusObserved)) {
|
|
53606
53612
|
installEvidenceObserved = true;
|
|
53613
|
+
normalModeWithoutInstallEvidenceSince = undefined;
|
|
53607
53614
|
}
|
|
53608
53615
|
const matchingStatusTargets = statusTargets.filter(target => {
|
|
53609
53616
|
const targetId = normalizeProtocolV2TargetId(target.target_id);
|
|
@@ -53631,6 +53638,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53631
53638
|
}
|
|
53632
53639
|
}
|
|
53633
53640
|
if (statusTargets.length === 0) {
|
|
53641
|
+
resetMissingTargetStatusGrace();
|
|
53634
53642
|
if (statusResponse.type !== 'Success') {
|
|
53635
53643
|
lastError = new Error('Protocol V2 firmware update is waiting for user confirmation or target status');
|
|
53636
53644
|
}
|
|
@@ -53638,10 +53646,23 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53638
53646
|
else {
|
|
53639
53647
|
const missingTargetIds = this.getProtocolV2MissingTargetIds(statusTargets, expectedTargetIds);
|
|
53640
53648
|
if (missingTargetIds.length > 0) {
|
|
53649
|
+
const now = Date.now();
|
|
53641
53650
|
const missingKey = missingTargetIds.join(',');
|
|
53651
|
+
if (missingTargetStatusSince === undefined || missingTargetStatusKey !== missingKey) {
|
|
53652
|
+
missingTargetStatusSince = now;
|
|
53653
|
+
missingTargetStatusKey = missingKey;
|
|
53654
|
+
}
|
|
53655
|
+
else if (now - missingTargetStatusSince >=
|
|
53656
|
+
PROTOCOL_V2_MISSING_TARGET_STATUS_GRACE_TIMEOUT) {
|
|
53657
|
+
const reportedTargetIds = statusTargets
|
|
53658
|
+
.map(target => normalizeProtocolV2TargetId(target.target_id))
|
|
53659
|
+
.filter((targetId) => targetId !== undefined);
|
|
53660
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareError, `Protocol V2 firmware status is missing requested records: targetIds=${missingKey} reportedTargetIds=${reportedTargetIds.join(',')}`);
|
|
53661
|
+
}
|
|
53642
53662
|
lastError = new Error(`Protocol V2 firmware status is temporarily missing targetIds=${missingKey}`);
|
|
53643
53663
|
}
|
|
53644
53664
|
else {
|
|
53665
|
+
resetMissingTargetStatusGrace();
|
|
53645
53666
|
lastError = new Error('Protocol V2 firmware targets are still installing');
|
|
53646
53667
|
}
|
|
53647
53668
|
}
|
|
@@ -53650,6 +53671,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53650
53671
|
if (isProtocolV2TerminalInstallStatusError(error)) {
|
|
53651
53672
|
throw error;
|
|
53652
53673
|
}
|
|
53674
|
+
resetMissingTargetStatusGrace();
|
|
53653
53675
|
if (isProtocolV2FirmwareStatusEndpointUnavailable(error)) {
|
|
53654
53676
|
if (!currentDeviceInfo) {
|
|
53655
53677
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 device identity is unavailable during install polling');
|
|
@@ -53663,9 +53685,16 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53663
53685
|
return;
|
|
53664
53686
|
}
|
|
53665
53687
|
if (isNormalMode) {
|
|
53688
|
+
const now = Date.now();
|
|
53689
|
+
normalModeWithoutInstallEvidenceSince !== null && normalModeWithoutInstallEvidenceSince !== void 0 ? normalModeWithoutInstallEvidenceSince : (normalModeWithoutInstallEvidenceSince = now);
|
|
53690
|
+
if (now - normalModeWithoutInstallEvidenceSince >=
|
|
53691
|
+
PROTOCOL_V2_MISSING_TARGET_STATUS_GRACE_TIMEOUT) {
|
|
53692
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareError, 'Protocol V2 device returned to normal mode without install ACK, target status, or version change');
|
|
53693
|
+
}
|
|
53666
53694
|
lastError = new Error('Protocol V2 device is in normal mode but installation is not yet confirmed');
|
|
53667
53695
|
}
|
|
53668
53696
|
else {
|
|
53697
|
+
normalModeWithoutInstallEvidenceSince = undefined;
|
|
53669
53698
|
lastError = new Error('Protocol V2 firmware status endpoint is unavailable while the device remains in loader mode');
|
|
53670
53699
|
}
|
|
53671
53700
|
}
|
|
@@ -53691,14 +53720,12 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
53691
53720
|
}
|
|
53692
53721
|
shouldReconnect = true;
|
|
53693
53722
|
deviceInfo = undefined;
|
|
53723
|
+
resetMissingTargetStatusGrace();
|
|
53694
53724
|
Log$7.log('Protocol V2 firmware install device readiness probe failed: ', error);
|
|
53695
53725
|
}
|
|
53696
53726
|
yield hdShared.wait(1000);
|
|
53697
53727
|
}
|
|
53698
|
-
|
|
53699
|
-
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareError, undefined, {
|
|
53700
|
-
firmwareUpdateCode: PROTOCOL_V2_INSTALL_TIMEOUT_CODE,
|
|
53701
|
-
});
|
|
53728
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 firmware update status not complete within ${PROTOCOL_V2_INSTALL_TIMEOUT / 1000}s: ${this.normalizeErrorMessage(lastError)}`);
|
|
53702
53729
|
});
|
|
53703
53730
|
}
|
|
53704
53731
|
exitProtocolV2BootloaderToNormal() {
|
|
@@ -64718,7 +64745,7 @@ class DeviceConnector {
|
|
|
64718
64745
|
stop() {
|
|
64719
64746
|
this.listening = false;
|
|
64720
64747
|
}
|
|
64721
|
-
acquire(path, session, forceCleanRunPromise, expectedProtocol, protocolHint) {
|
|
64748
|
+
acquire(path, session, forceCleanRunPromise, expectedProtocol, protocolHint, forceProtocolDetection) {
|
|
64722
64749
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64723
64750
|
Log$2.debug('acquire', path, session, expectedProtocol, protocolHint);
|
|
64724
64751
|
const env = DataManager.getSettings('env');
|
|
@@ -64731,6 +64758,7 @@ class DeviceConnector {
|
|
|
64731
64758
|
forceCleanRunPromise,
|
|
64732
64759
|
expectedProtocol,
|
|
64733
64760
|
protocolHint,
|
|
64761
|
+
forceProtocolDetection,
|
|
64734
64762
|
});
|
|
64735
64763
|
}
|
|
64736
64764
|
else {
|
|
@@ -64739,6 +64767,7 @@ class DeviceConnector {
|
|
|
64739
64767
|
previous: session !== null && session !== void 0 ? session : null,
|
|
64740
64768
|
expectedProtocol,
|
|
64741
64769
|
protocolHint,
|
|
64770
|
+
forceProtocolDetection,
|
|
64742
64771
|
});
|
|
64743
64772
|
}
|
|
64744
64773
|
if (expectedProtocol) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-core",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.137",
|
|
4
4
|
"description": "Core processes and APIs for communicating with OneKey hardware devices.",
|
|
5
5
|
"author": "OneKey",
|
|
6
6
|
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@onekeyfe/hd-shared": "1.2.0-alpha.
|
|
29
|
-
"@onekeyfe/hd-transport": "1.2.0-alpha.
|
|
28
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.137",
|
|
29
|
+
"@onekeyfe/hd-transport": "1.2.0-alpha.137",
|
|
30
30
|
"axios": "1.15.2",
|
|
31
31
|
"bignumber.js": "^9.0.2",
|
|
32
32
|
"buffer": "^6.0.3",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"@types/w3c-web-usb": "^1.0.10",
|
|
47
47
|
"@types/web-bluetooth": "^0.0.21"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "62d2ac713a9c7a850e56c18d5732593c0b9f102c"
|
|
50
50
|
}
|
|
@@ -2,7 +2,6 @@ import { EDeviceType, ERRORS, HardwareError, HardwareErrorCode, wait } from '@on
|
|
|
2
2
|
import JSZip from 'jszip';
|
|
3
3
|
import {
|
|
4
4
|
DeviceRebootType,
|
|
5
|
-
DeviceSessionPinType,
|
|
6
5
|
PROTOCOL_V2_BLE_FILE_CHUNK_SIZE,
|
|
7
6
|
PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE,
|
|
8
7
|
PROTOCOL_V2_BLE_FIRMWARE_FILE_CHUNK_SIZE,
|
|
@@ -91,8 +90,9 @@ const PROTOCOL_V2_BOOTLOADER_RECONNECT_TIMEOUT = 90 * 1000;
|
|
|
91
90
|
const PROTOCOL_V2_FINAL_RECONNECT_TIMEOUT = 3 * 60 * 1000;
|
|
92
91
|
const PROTOCOL_V2_SHORT_RESPONSE_TIMEOUT = 5 * 1000;
|
|
93
92
|
const PROTOCOL_V2_FIRMWARE_STATUS_RESPONSE_TIMEOUT = 15 * 1000;
|
|
94
|
-
const PROTOCOL_V2_INSTALL_TIMEOUT =
|
|
93
|
+
const PROTOCOL_V2_INSTALL_TIMEOUT = 8 * 60 * 1000;
|
|
95
94
|
const PROTOCOL_V2_INSTALL_STATUS_INITIAL_DELAY = 1000;
|
|
95
|
+
const PROTOCOL_V2_MISSING_TARGET_STATUS_GRACE_TIMEOUT = 30 * 1000;
|
|
96
96
|
const PROTOCOL_V2_TARGET_STATUS_PENDING = 0;
|
|
97
97
|
const PROTOCOL_V2_TARGET_STATUS_IN_PROGRESS = 1;
|
|
98
98
|
const PROTOCOL_V2_TARGET_STATUS_FINISHED = 2;
|
|
@@ -106,8 +106,6 @@ const PROTOCOL_V2_CONNECT_SINGLE_TIMEOUT = 75 * 1000;
|
|
|
106
106
|
const PROTOCOL_V2_DEVICE_INFO_READY_TIMEOUT = 30 * 1000;
|
|
107
107
|
const PROTOCOL_V2_FILE_TRANSFER_RETRY_COUNT = 3;
|
|
108
108
|
const PROTOCOL_V2_INSTALL_STATUS_CONFLICT_CODE = 'FirmwareInstallStatusConflict';
|
|
109
|
-
const PROTOCOL_V2_INSTALL_FAILED_CODE = 'FirmwareInstallFailed';
|
|
110
|
-
const PROTOCOL_V2_INSTALL_TIMEOUT_CODE = 'FirmwareInstallTimeout';
|
|
111
109
|
const PROTOCOL_V2_OKPP_HEADER_SIZE = 0x52a0;
|
|
112
110
|
const PROTOCOL_V2_OKPP_PAYLOAD_HASH_OFFSET = 0x200;
|
|
113
111
|
const PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET = 0x240;
|
|
@@ -393,8 +391,7 @@ const isProtocolV2FirmwareStatusEndpointUnavailable = (error: unknown) => {
|
|
|
393
391
|
|
|
394
392
|
const isProtocolV2TerminalInstallStatusError = (error: unknown) =>
|
|
395
393
|
error instanceof HardwareError &&
|
|
396
|
-
(error.errorCode === HardwareErrorCode.
|
|
397
|
-
error.errorCode === HardwareErrorCode.FirmwareError ||
|
|
394
|
+
(error.errorCode === HardwareErrorCode.FirmwareError ||
|
|
398
395
|
error.errorCode === HardwareErrorCode.FirmwareVerificationFailed ||
|
|
399
396
|
error.params?.firmwareUpdateCode === PROTOCOL_V2_INSTALL_STATUS_CONFLICT_CODE);
|
|
400
397
|
|
|
@@ -602,9 +599,6 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
602
599
|
this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
|
|
603
600
|
this.requireDeviceMode = [];
|
|
604
601
|
this.unlockPolicy = 'unlock-before-run';
|
|
605
|
-
// Protocol V2 device-management actions are not wallet-scoped, so either
|
|
606
|
-
// the main PIN or an Attach PIN may authorize them.
|
|
607
|
-
this.protocolV2PreUnlockPinType = DeviceSessionPinType.Any;
|
|
608
602
|
this.useDevicePassphraseState = false;
|
|
609
603
|
this.skipForceUpdateCheck = true;
|
|
610
604
|
|
|
@@ -1629,11 +1623,9 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
1629
1623
|
Math.floor(statusVersion / 0x100) % 0x100
|
|
1630
1624
|
}.${statusVersion % 0x100}`;
|
|
1631
1625
|
if (!observedVersion) {
|
|
1632
|
-
|
|
1633
|
-
applicationTargets.length > 1 && (target === 'app_v1' || target === 'app_v2');
|
|
1634
|
-
if (this.protocolV2FinalStatusVerified || isUnobservableApplicationSlot) {
|
|
1626
|
+
if (this.protocolV2FinalStatusVerified) {
|
|
1635
1627
|
Log.warn(
|
|
1636
|
-
`Protocol V2 target ${target} has no observable final version;
|
|
1628
|
+
`Protocol V2 target ${target} has no observable final version; completed target status is authoritative`
|
|
1637
1629
|
);
|
|
1638
1630
|
} else {
|
|
1639
1631
|
throw ERRORS.TypedError(
|
|
@@ -2507,9 +2499,14 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2507
2499
|
path: failedTarget.path,
|
|
2508
2500
|
});
|
|
2509
2501
|
Log.error(`[FirmwareUpdateV4] firmware install failed target=${failedTargetDetails}`);
|
|
2510
|
-
throw ERRORS.TypedError(
|
|
2511
|
-
|
|
2512
|
-
|
|
2502
|
+
throw ERRORS.TypedError(
|
|
2503
|
+
HardwareErrorCode.FirmwareError,
|
|
2504
|
+
`Protocol V2 firmware target failed: target=${failedTarget.target_id} status=${
|
|
2505
|
+
failedTarget.status ?? 'unknown'
|
|
2506
|
+
} payloadVersion=${failedTarget.payload_version ?? 'unknown'} path=${
|
|
2507
|
+
failedTarget.path ?? 'unknown'
|
|
2508
|
+
}`
|
|
2509
|
+
);
|
|
2513
2510
|
}
|
|
2514
2511
|
|
|
2515
2512
|
const matchingTargets = statusTargets.filter(target =>
|
|
@@ -2523,10 +2520,13 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2523
2520
|
seenTargetIds.has(targetId) ||
|
|
2524
2521
|
(target.path && expectedPaths.get(targetId) && target.path !== expectedPaths.get(targetId))
|
|
2525
2522
|
) {
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2523
|
+
throw ERRORS.TypedError(
|
|
2524
|
+
HardwareErrorCode.RuntimeError,
|
|
2525
|
+
`Protocol V2 install status conflicts with target ${target.target_id}`,
|
|
2526
|
+
{
|
|
2527
|
+
firmwareUpdateCode: PROTOCOL_V2_INSTALL_STATUS_CONFLICT_CODE,
|
|
2528
|
+
}
|
|
2529
|
+
);
|
|
2530
2530
|
}
|
|
2531
2531
|
seenTargetIds.add(targetId);
|
|
2532
2532
|
}
|
|
@@ -2651,8 +2651,15 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2651
2651
|
// Reconnecting here probes DeviceInfo, which loaders reject while installation is active.
|
|
2652
2652
|
let shouldReconnect = false;
|
|
2653
2653
|
let deviceInfo: ProtocolV2DeviceInfo | undefined;
|
|
2654
|
+
let missingTargetStatusSince: number | undefined;
|
|
2655
|
+
let missingTargetStatusKey: string | undefined;
|
|
2656
|
+
let normalModeWithoutInstallEvidenceSince: number | undefined;
|
|
2654
2657
|
let installEvidenceObserved = false;
|
|
2655
2658
|
let currentInstallStatusObserved = false;
|
|
2659
|
+
const resetMissingTargetStatusGrace = () => {
|
|
2660
|
+
missingTargetStatusSince = undefined;
|
|
2661
|
+
missingTargetStatusKey = undefined;
|
|
2662
|
+
};
|
|
2656
2663
|
|
|
2657
2664
|
while (Date.now() - startTime < PROTOCOL_V2_INSTALL_TIMEOUT) {
|
|
2658
2665
|
// A transport release caused by an explicit workflow cancellation must not
|
|
@@ -2680,6 +2687,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2680
2687
|
);
|
|
2681
2688
|
if (statusResponse.type === 'Success') {
|
|
2682
2689
|
installEvidenceObserved = true;
|
|
2690
|
+
resetMissingTargetStatusGrace();
|
|
2683
2691
|
lastError = new Error(
|
|
2684
2692
|
'Protocol V2 firmware install acknowledged; waiting for target status'
|
|
2685
2693
|
);
|
|
@@ -2708,6 +2716,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2708
2716
|
(!requireCurrentInstallStatus || currentInstallStatusObserved)
|
|
2709
2717
|
) {
|
|
2710
2718
|
installEvidenceObserved = true;
|
|
2719
|
+
normalModeWithoutInstallEvidenceSince = undefined;
|
|
2711
2720
|
}
|
|
2712
2721
|
const matchingStatusTargets = statusTargets.filter(target => {
|
|
2713
2722
|
const targetId = normalizeProtocolV2TargetId(target.target_id);
|
|
@@ -2749,6 +2758,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2749
2758
|
}
|
|
2750
2759
|
|
|
2751
2760
|
if (statusTargets.length === 0) {
|
|
2761
|
+
resetMissingTargetStatusGrace();
|
|
2752
2762
|
if (statusResponse.type !== 'Success') {
|
|
2753
2763
|
lastError = new Error(
|
|
2754
2764
|
'Protocol V2 firmware update is waiting for user confirmation or target status'
|
|
@@ -2760,11 +2770,30 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2760
2770
|
expectedTargetIds
|
|
2761
2771
|
);
|
|
2762
2772
|
if (missingTargetIds.length > 0) {
|
|
2773
|
+
const now = Date.now();
|
|
2763
2774
|
const missingKey = missingTargetIds.join(',');
|
|
2775
|
+
if (missingTargetStatusSince === undefined || missingTargetStatusKey !== missingKey) {
|
|
2776
|
+
missingTargetStatusSince = now;
|
|
2777
|
+
missingTargetStatusKey = missingKey;
|
|
2778
|
+
} else if (
|
|
2779
|
+
now - missingTargetStatusSince >=
|
|
2780
|
+
PROTOCOL_V2_MISSING_TARGET_STATUS_GRACE_TIMEOUT
|
|
2781
|
+
) {
|
|
2782
|
+
const reportedTargetIds = statusTargets
|
|
2783
|
+
.map(target => normalizeProtocolV2TargetId(target.target_id))
|
|
2784
|
+
.filter((targetId): targetId is number => targetId !== undefined);
|
|
2785
|
+
throw ERRORS.TypedError(
|
|
2786
|
+
HardwareErrorCode.FirmwareError,
|
|
2787
|
+
`Protocol V2 firmware status is missing requested records: targetIds=${missingKey} reportedTargetIds=${reportedTargetIds.join(
|
|
2788
|
+
','
|
|
2789
|
+
)}`
|
|
2790
|
+
);
|
|
2791
|
+
}
|
|
2764
2792
|
lastError = new Error(
|
|
2765
2793
|
`Protocol V2 firmware status is temporarily missing targetIds=${missingKey}`
|
|
2766
2794
|
);
|
|
2767
2795
|
} else {
|
|
2796
|
+
resetMissingTargetStatusGrace();
|
|
2768
2797
|
lastError = new Error('Protocol V2 firmware targets are still installing');
|
|
2769
2798
|
}
|
|
2770
2799
|
}
|
|
@@ -2772,6 +2801,9 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2772
2801
|
if (isProtocolV2TerminalInstallStatusError(error)) {
|
|
2773
2802
|
throw error;
|
|
2774
2803
|
}
|
|
2804
|
+
// Only consecutive full status dumps can prove that a record is absent.
|
|
2805
|
+
// A reboot or transport interruption starts a fresh grace window.
|
|
2806
|
+
resetMissingTargetStatusGrace();
|
|
2775
2807
|
// App firmware does not register DeviceFirmwareUpdateStatusGet. Treat the
|
|
2776
2808
|
// missing endpoint as completion only after the runtime probe confirms App mode.
|
|
2777
2809
|
if (isProtocolV2FirmwareStatusEndpointUnavailable(error)) {
|
|
@@ -2794,10 +2826,22 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2794
2826
|
return;
|
|
2795
2827
|
}
|
|
2796
2828
|
if (isNormalMode) {
|
|
2829
|
+
const now = Date.now();
|
|
2830
|
+
normalModeWithoutInstallEvidenceSince ??= now;
|
|
2831
|
+
if (
|
|
2832
|
+
now - normalModeWithoutInstallEvidenceSince >=
|
|
2833
|
+
PROTOCOL_V2_MISSING_TARGET_STATUS_GRACE_TIMEOUT
|
|
2834
|
+
) {
|
|
2835
|
+
throw ERRORS.TypedError(
|
|
2836
|
+
HardwareErrorCode.FirmwareError,
|
|
2837
|
+
'Protocol V2 device returned to normal mode without install ACK, target status, or version change'
|
|
2838
|
+
);
|
|
2839
|
+
}
|
|
2797
2840
|
lastError = new Error(
|
|
2798
2841
|
'Protocol V2 device is in normal mode but installation is not yet confirmed'
|
|
2799
2842
|
);
|
|
2800
2843
|
} else {
|
|
2844
|
+
normalModeWithoutInstallEvidenceSince = undefined;
|
|
2801
2845
|
lastError = new Error(
|
|
2802
2846
|
'Protocol V2 firmware status endpoint is unavailable while the device remains in loader mode'
|
|
2803
2847
|
);
|
|
@@ -2828,19 +2872,18 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
2828
2872
|
}
|
|
2829
2873
|
shouldReconnect = true;
|
|
2830
2874
|
deviceInfo = undefined;
|
|
2875
|
+
resetMissingTargetStatusGrace();
|
|
2831
2876
|
Log.log('Protocol V2 firmware install device readiness probe failed: ', error);
|
|
2832
2877
|
}
|
|
2833
2878
|
await wait(1000);
|
|
2834
2879
|
}
|
|
2835
2880
|
|
|
2836
|
-
|
|
2837
|
-
|
|
2881
|
+
throw ERRORS.TypedError(
|
|
2882
|
+
HardwareErrorCode.RuntimeError,
|
|
2883
|
+
`Protocol V2 firmware update status not complete within ${
|
|
2838
2884
|
PROTOCOL_V2_INSTALL_TIMEOUT / 1000
|
|
2839
2885
|
}s: ${this.normalizeErrorMessage(lastError)}`
|
|
2840
2886
|
);
|
|
2841
|
-
throw ERRORS.TypedError(HardwareErrorCode.FirmwareError, undefined, {
|
|
2842
|
-
firmwareUpdateCode: PROTOCOL_V2_INSTALL_TIMEOUT_CODE,
|
|
2843
|
-
});
|
|
2844
2887
|
}
|
|
2845
2888
|
|
|
2846
2889
|
private async exitProtocolV2BootloaderToNormal() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DeviceSettingsPage } from '@onekeyfe/hd-transport';
|
|
2
2
|
|
|
3
3
|
import { BaseMethod } from '../BaseMethod';
|
|
4
4
|
import { validateParams } from '../helpers/paramsValidator';
|
|
@@ -13,9 +13,6 @@ export default class DeviceChangePin extends BaseMethod<ChangePin> {
|
|
|
13
13
|
|
|
14
14
|
init() {
|
|
15
15
|
this.unlockPolicy = 'unlock-before-run';
|
|
16
|
-
// Protocol V2 device-management actions are not wallet-scoped, so either
|
|
17
|
-
// the main PIN or an Attach PIN may authorize them.
|
|
18
|
-
this.protocolV2PreUnlockPinType = DeviceSessionPinType.Any;
|
|
19
16
|
this.useDevicePassphraseState = false;
|
|
20
17
|
|
|
21
18
|
// check payload
|