@trezor/connect 9.2.3 → 9.2.4-beta.1
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/CHANGELOG.md +43 -5
- package/README.md +1 -1
- package/lib/api/applyFlags.d.ts +8 -1
- package/lib/api/applyFlags.js +3 -8
- package/lib/api/applySettings.d.ts +8 -1
- package/lib/api/applySettings.js +3 -8
- package/lib/api/backupDevice.d.ts +10 -2
- package/lib/api/backupDevice.js +12 -9
- package/lib/api/binance/api/binanceGetAddress.d.ts +4 -3
- package/lib/api/binance/api/binanceGetAddress.js +8 -22
- package/lib/api/binance/api/binanceGetPublicKey.d.ts +4 -2
- package/lib/api/binance/api/binanceGetPublicKey.js +6 -18
- package/lib/api/cardano/api/cardanoGetAddress.d.ts +4 -3
- package/lib/api/cardano/api/cardanoGetAddress.js +8 -22
- package/lib/api/cardano/api/cardanoGetPublicKey.d.ts +4 -3
- package/lib/api/cardano/api/cardanoGetPublicKey.js +9 -31
- package/lib/api/changeLanguage.d.ts +8 -1
- package/lib/api/changeLanguage.js +3 -7
- package/lib/api/eos/api/eosGetPublicKey.d.ts +4 -2
- package/lib/api/eos/api/eosGetPublicKey.js +6 -18
- package/lib/api/ethereum/api/ethereumGetAddress.d.ts +4 -3
- package/lib/api/ethereum/api/ethereumGetAddress.js +4 -20
- package/lib/api/ethereum/api/ethereumGetPublicKey.d.ts +4 -2
- package/lib/api/ethereum/api/ethereumGetPublicKey.js +3 -10
- package/lib/api/firmware/index.d.ts +2 -0
- package/lib/api/firmware/index.js +5 -1
- package/lib/api/firmware/parseFirmwareHeaders.d.ts +5 -0
- package/lib/api/firmware/parseFirmwareHeaders.js +35 -0
- package/lib/api/firmware/uploadFirmware.d.ts +1 -1
- package/lib/api/firmware/uploadFirmware.js +9 -1
- package/lib/api/getAccountDescriptor.d.ts +5 -3
- package/lib/api/getAccountDescriptor.js +8 -21
- package/lib/api/getAccountInfo.d.ts +23 -7
- package/lib/api/getAccountInfo.js +12 -25
- package/lib/api/getAddress.d.ts +4 -3
- package/lib/api/getAddress.js +8 -22
- package/lib/api/getFeatures.d.ts +1 -0
- package/lib/api/getOwnershipId.d.ts +4 -2
- package/lib/api/getOwnershipId.js +4 -15
- package/lib/api/getOwnershipProof.d.ts +4 -2
- package/lib/api/getOwnershipProof.js +4 -15
- package/lib/api/getPublicKey.d.ts +5 -4
- package/lib/api/getPublicKey.js +12 -35
- package/lib/api/index.d.ts +0 -1
- package/lib/api/index.js +1 -3
- package/lib/api/nem/api/nemGetAddress.d.ts +4 -3
- package/lib/api/nem/api/nemGetAddress.js +4 -20
- package/lib/api/rebootToBootloader.d.ts +8 -2
- package/lib/api/rebootToBootloader.js +3 -10
- package/lib/api/recoveryDevice.d.ts +8 -1
- package/lib/api/recoveryDevice.js +3 -7
- package/lib/api/resetDevice.d.ts +4 -2
- package/lib/api/resetDevice.js +3 -10
- package/lib/api/ripple/api/rippleGetAddress.d.ts +4 -3
- package/lib/api/ripple/api/rippleGetAddress.js +4 -20
- package/lib/api/solana/api/solanaGetAddress.d.ts +4 -3
- package/lib/api/solana/api/solanaGetAddress.js +7 -28
- package/lib/api/solana/api/solanaGetPublicKey.d.ts +4 -3
- package/lib/api/solana/api/solanaGetPublicKey.js +7 -27
- package/lib/api/stellar/api/stellarGetAddress.d.ts +4 -3
- package/lib/api/stellar/api/stellarGetAddress.js +4 -20
- package/lib/api/tezos/api/tezosGetAddress.d.ts +4 -3
- package/lib/api/tezos/api/tezosGetAddress.js +4 -20
- package/lib/api/tezos/api/tezosGetPublicKey.d.ts +4 -2
- package/lib/api/tezos/api/tezosGetPublicKey.js +6 -18
- package/lib/api/wipeDevice.d.ts +8 -2
- package/lib/api/wipeDevice.js +3 -10
- package/lib/constants/errors.d.ts +1 -0
- package/lib/constants/errors.js +1 -0
- package/lib/core/AbstractMethod.d.ts +4 -8
- package/lib/core/AbstractMethod.js +6 -28
- package/lib/core/index.d.ts +2 -1
- package/lib/core/index.js +254 -225
- package/lib/core/onCallFirmwareUpdate.d.ts +31 -0
- package/lib/core/onCallFirmwareUpdate.js +259 -0
- package/lib/data/analyticsInfo.d.ts +2 -2
- package/lib/data/analyticsInfo.js +6 -7
- package/lib/data/deviceAuthenticityConfig.js +8 -4
- package/lib/data/firmwareInfo.js +1 -1
- package/lib/data/version.d.ts +1 -1
- package/lib/data/version.js +1 -1
- package/lib/device/Device.d.ts +1 -1
- package/lib/device/Device.js +2 -2
- package/lib/device/DeviceCommands.d.ts +2 -14
- package/lib/device/DeviceCommands.js +1 -43
- package/lib/device/DeviceList.d.ts +1 -1
- package/lib/device/DeviceList.js +20 -15
- package/lib/events/index.d.ts +1 -0
- package/lib/events/ui-request.d.ts +13 -1
- package/lib/events/ui-request.js +1 -0
- package/lib/index.js +2 -2
- package/lib/types/api/backupDevice.d.ts +2 -2
- package/lib/types/api/dispose.d.ts +1 -1
- package/lib/types/api/firmwareUpdate.d.ts +7 -6
- package/lib/types/api/firmwareUpdate.js +1 -3
- package/lib/utils/popupPromiseManager.d.ts +8 -0
- package/lib/utils/popupPromiseManager.js +21 -0
- package/lib/utils/uiPromiseManager.d.ts +38 -0
- package/lib/utils/uiPromiseManager.js +47 -0
- package/lib/workers/workers-browser.d.ts +3 -1
- package/lib/workers/workers-browser.js +2 -2
- package/package.json +6 -6
- package/lib/api/firmwareUpdate.d.ts +0 -19
- package/lib/api/firmwareUpdate.js +0 -78
|
@@ -18,6 +18,7 @@ export declare const UI_REQUEST: {
|
|
|
18
18
|
readonly FIRMWARE_NOT_COMPATIBLE: "ui-device_firmware_not_compatible";
|
|
19
19
|
readonly FIRMWARE_NOT_INSTALLED: "ui-device_firmware_not_installed";
|
|
20
20
|
readonly FIRMWARE_PROGRESS: "ui-firmware-progress";
|
|
21
|
+
readonly FIRMWARE_RECONNECT: "ui-firmware_reconnect";
|
|
21
22
|
readonly DEVICE_NEEDS_BACKUP: "ui-device_needs_backup";
|
|
22
23
|
readonly REQUEST_UI_WINDOW: "ui-request_window";
|
|
23
24
|
readonly CLOSE_UI_WINDOW: "ui-close_window";
|
|
@@ -196,10 +197,21 @@ export interface FirmwareProgress {
|
|
|
196
197
|
type: typeof UI_REQUEST.FIRMWARE_PROGRESS;
|
|
197
198
|
payload: {
|
|
198
199
|
device: Device;
|
|
200
|
+
operation: 'downloading' | 'flashing' | 'validating';
|
|
199
201
|
progress: number;
|
|
200
202
|
};
|
|
201
203
|
}
|
|
202
|
-
export
|
|
204
|
+
export interface FirmwareReconnect {
|
|
205
|
+
type: typeof UI_REQUEST.FIRMWARE_RECONNECT;
|
|
206
|
+
payload: {
|
|
207
|
+
device: Device;
|
|
208
|
+
disconnected: boolean;
|
|
209
|
+
method: 'manual' | 'auto' | 'wait';
|
|
210
|
+
target: 'normal' | 'bootloader';
|
|
211
|
+
i: number;
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
export type UiEvent = UiRequestWithoutPayload | UiRequestDeviceAction | UiRequestButton | UiRequestPermission | UiRequestConfirmation | UiRequestSelectDevice | UiRequestUnexpectedDeviceMode | UiRequestSelectAccount | UiRequestSelectFee | UpdateCustomFee | BundleProgress<any> | FirmwareProgress | FirmwareException | FirmwareReconnect | UiRequestAddressValidation | UiRequestSetOperation;
|
|
203
215
|
export type UiEventMessage = UiEvent & {
|
|
204
216
|
event: typeof UI_EVENT;
|
|
205
217
|
};
|
package/lib/events/ui-request.js
CHANGED
|
@@ -15,6 +15,7 @@ exports.UI_REQUEST = {
|
|
|
15
15
|
FIRMWARE_NOT_COMPATIBLE: 'ui-device_firmware_not_compatible',
|
|
16
16
|
FIRMWARE_NOT_INSTALLED: 'ui-device_firmware_not_installed',
|
|
17
17
|
FIRMWARE_PROGRESS: 'ui-firmware-progress',
|
|
18
|
+
FIRMWARE_RECONNECT: 'ui-firmware_reconnect',
|
|
18
19
|
DEVICE_NEEDS_BACKUP: 'ui-device_needs_backup',
|
|
19
20
|
REQUEST_UI_WINDOW: 'ui-request_window',
|
|
20
21
|
CLOSE_UI_WINDOW: 'ui-close_window',
|
package/lib/index.js
CHANGED
|
@@ -21,11 +21,11 @@ const manifest = (data) => {
|
|
|
21
21
|
manifest: data,
|
|
22
22
|
});
|
|
23
23
|
};
|
|
24
|
-
const dispose =
|
|
24
|
+
const dispose = () => {
|
|
25
25
|
exports.eventEmitter.removeAllListeners();
|
|
26
26
|
_settings = (0, connectSettings_1.parseConnectSettings)();
|
|
27
27
|
if (_core) {
|
|
28
|
-
|
|
28
|
+
_core.dispose();
|
|
29
29
|
_core = null;
|
|
30
30
|
}
|
|
31
31
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { PROTO } from '../../constants';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function backupDevice(params?:
|
|
2
|
+
import type { Params, Response } from '../params';
|
|
3
|
+
export declare function backupDevice(params?: Params<PROTO.BackupDevice>): Response<PROTO.Success>;
|
|
4
4
|
//# sourceMappingURL=backupDevice.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function dispose():
|
|
1
|
+
export declare function dispose(): void;
|
|
2
2
|
//# sourceMappingURL=dispose.d.ts.map
|
|
@@ -3,16 +3,17 @@ import type { Params, Response } from '../params';
|
|
|
3
3
|
export type FirmwareUpdate = Static<typeof FirmwareUpdate>;
|
|
4
4
|
export declare const FirmwareUpdate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
5
5
|
binary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUndefined>;
|
|
6
|
-
version: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
|
|
7
6
|
btcOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
8
7
|
baseUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
9
|
-
|
|
8
|
+
language: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
10
9
|
}>, import("@sinclair/typebox").TObject<{
|
|
11
10
|
binary: import("@trezor/schema-utils/lib/custom-types/array-buffer").TArrayBuffer;
|
|
12
11
|
}>]>;
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
export type FirmwareUpdateResponse = {
|
|
13
|
+
check: 'mismatch' | 'valid' | 'omitted';
|
|
14
|
+
} | {
|
|
15
|
+
check: 'other-error';
|
|
16
|
+
checkError: string;
|
|
17
|
+
};
|
|
17
18
|
export declare function firmwareUpdate(params: Params<FirmwareUpdate>): Response<FirmwareUpdateResponse>;
|
|
18
19
|
//# sourceMappingURL=firmwareUpdate.d.ts.map
|
|
@@ -2,14 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FirmwareUpdate = void 0;
|
|
4
4
|
const schema_utils_1 = require("@trezor/schema-utils");
|
|
5
|
-
const firmware_1 = require("../firmware");
|
|
6
5
|
exports.FirmwareUpdate = schema_utils_1.Type.Union([
|
|
7
6
|
schema_utils_1.Type.Object({
|
|
8
7
|
binary: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),
|
|
9
|
-
version: schema_utils_1.Type.Array(schema_utils_1.Type.Number(), { minItems: 3, maxItems: 3 }),
|
|
10
8
|
btcOnly: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),
|
|
11
9
|
baseUrl: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),
|
|
12
|
-
|
|
10
|
+
language: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),
|
|
13
11
|
}),
|
|
14
12
|
schema_utils_1.Type.Object({
|
|
15
13
|
binary: schema_utils_1.Type.ArrayBuffer(),
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPopupPromiseManager = void 0;
|
|
4
|
+
const utils_1 = require("@trezor/utils");
|
|
5
|
+
const createPopupPromiseManager = () => {
|
|
6
|
+
let _popupPromise;
|
|
7
|
+
const ensure = () => _popupPromise !== null && _popupPromise !== void 0 ? _popupPromise : (_popupPromise = (0, utils_1.createDeferred)());
|
|
8
|
+
const wait = () => ensure().promise;
|
|
9
|
+
const resolve = () => ensure().resolve();
|
|
10
|
+
const isWaiting = () => !!_popupPromise;
|
|
11
|
+
const reject = (error) => {
|
|
12
|
+
_popupPromise === null || _popupPromise === void 0 ? void 0 : _popupPromise.reject(error);
|
|
13
|
+
_popupPromise = undefined;
|
|
14
|
+
};
|
|
15
|
+
const clear = () => {
|
|
16
|
+
_popupPromise = undefined;
|
|
17
|
+
};
|
|
18
|
+
return { wait, isWaiting, clear, resolve, reject };
|
|
19
|
+
};
|
|
20
|
+
exports.createPopupPromiseManager = createPopupPromiseManager;
|
|
21
|
+
//# sourceMappingURL=popupPromiseManager.js.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { UiPromiseCreator, UiPromiseResponse } from '../events';
|
|
2
|
+
export declare const createUiPromiseManager: (interactionTimeout: () => void) => {
|
|
3
|
+
exists: (type: UiPromiseResponse['type']) => boolean;
|
|
4
|
+
create: UiPromiseCreator;
|
|
5
|
+
resolve: (event: UiPromiseResponse) => boolean;
|
|
6
|
+
rejectAll: (error: Error) => void;
|
|
7
|
+
disconnected: (devicePath: string) => boolean;
|
|
8
|
+
get: <T extends "device-disconnect" | "popup-handshake" | "ui-receive_permission" | "ui-receive_confirmation" | "ui-receive_pin" | "ui-receive_passphrase" | "ui-receive_device" | "ui-receive_account" | "ui-receive_fee" | "ui-receive_word" | "ui-invalid_passphrase_action" | "ui-login_challenge_response">(type: T) => Promise<Extract<import("../events").UiResponsePopupHandshake, {
|
|
9
|
+
type: T;
|
|
10
|
+
}> | Extract<import("../events").UiResponsePermission, {
|
|
11
|
+
type: T;
|
|
12
|
+
}> | Extract<import("../events").UiResponseConfirmation, {
|
|
13
|
+
type: T;
|
|
14
|
+
}> | Extract<import("../events").UiResponseDevice, {
|
|
15
|
+
type: T;
|
|
16
|
+
}> | Extract<import("../events").UiResponsePin, {
|
|
17
|
+
type: T;
|
|
18
|
+
}> | Extract<import("../events").UiResponseWord, {
|
|
19
|
+
type: T;
|
|
20
|
+
}> | Extract<import("../events").UiResponsePassphrase, {
|
|
21
|
+
type: T;
|
|
22
|
+
}> | Extract<import("../events").UiResponsePassphraseAction, {
|
|
23
|
+
type: T;
|
|
24
|
+
}> | Extract<import("../events").UiResponseAccount, {
|
|
25
|
+
type: T;
|
|
26
|
+
}> | Extract<import("../events").UiResponseFee, {
|
|
27
|
+
type: T;
|
|
28
|
+
}> | Extract<import("../events").UiResponseLoginChallenge, {
|
|
29
|
+
type: T;
|
|
30
|
+
}> | Extract<{
|
|
31
|
+
type: "device-disconnect";
|
|
32
|
+
payload?: undefined;
|
|
33
|
+
}, {
|
|
34
|
+
type: T;
|
|
35
|
+
}>>;
|
|
36
|
+
clear: () => void;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=uiPromiseManager.d.ts.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createUiPromiseManager = void 0;
|
|
4
|
+
const events_1 = require("../events");
|
|
5
|
+
const utils_1 = require("@trezor/utils");
|
|
6
|
+
const createUiPromiseManager = (interactionTimeout) => {
|
|
7
|
+
let _uiPromises = [];
|
|
8
|
+
const exists = (type) => _uiPromises.some(p => p.id === type);
|
|
9
|
+
const create = (promiseEvent, device) => {
|
|
10
|
+
const uiPromise = {
|
|
11
|
+
...(0, utils_1.createDeferred)(promiseEvent),
|
|
12
|
+
device,
|
|
13
|
+
};
|
|
14
|
+
_uiPromises.push(uiPromise);
|
|
15
|
+
interactionTimeout();
|
|
16
|
+
return uiPromise;
|
|
17
|
+
};
|
|
18
|
+
const resolve = (event) => {
|
|
19
|
+
const uiPromise = _uiPromises.find(p => p.id === event.type);
|
|
20
|
+
if (!uiPromise)
|
|
21
|
+
return false;
|
|
22
|
+
uiPromise.resolve(event);
|
|
23
|
+
_uiPromises = _uiPromises.filter(p => p !== uiPromise);
|
|
24
|
+
return true;
|
|
25
|
+
};
|
|
26
|
+
const rejectAll = (error) => {
|
|
27
|
+
_uiPromises.forEach(p => p.reject(error));
|
|
28
|
+
_uiPromises = [];
|
|
29
|
+
};
|
|
30
|
+
const disconnected = (devicePath) => {
|
|
31
|
+
const [toResolve, toKeep] = (0, utils_1.arrayPartition)(_uiPromises, (p) => { var _a; return ((_a = p.device) === null || _a === void 0 ? void 0 : _a.getDevicePath()) === devicePath && p.id === events_1.DEVICE.DISCONNECT; });
|
|
32
|
+
toResolve.forEach(p => p.resolve({ type: events_1.DEVICE.DISCONNECT }));
|
|
33
|
+
_uiPromises = toKeep;
|
|
34
|
+
return !!toResolve.length || toKeep.some(p => { var _a; return ((_a = p.device) === null || _a === void 0 ? void 0 : _a.getDevicePath()) === devicePath; });
|
|
35
|
+
};
|
|
36
|
+
const get = (type) => {
|
|
37
|
+
var _a;
|
|
38
|
+
const uiPromise = _uiPromises.find(p => p.id === type);
|
|
39
|
+
return (_a = uiPromise === null || uiPromise === void 0 ? void 0 : uiPromise.promise) !== null && _a !== void 0 ? _a : Promise.reject(new Error(`UiPromise ${type} doesn't exist`));
|
|
40
|
+
};
|
|
41
|
+
const clear = () => {
|
|
42
|
+
_uiPromises = [];
|
|
43
|
+
};
|
|
44
|
+
return { exists, create, resolve, rejectAll, disconnected, get, clear };
|
|
45
|
+
};
|
|
46
|
+
exports.createUiPromiseManager = createUiPromiseManager;
|
|
47
|
+
//# sourceMappingURL=uiPromiseManager.js.map
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import BlockbookWorker from '@trezor/blockchain-link/lib/workers/blockbook';
|
|
2
2
|
import RippleWorker from '@trezor/blockchain-link/lib/workers/ripple';
|
|
3
3
|
import BlockfrostWorker from '@trezor/blockchain-link/lib/workers/blockfrost';
|
|
4
|
-
import
|
|
4
|
+
import type { BaseWorker } from '@trezor/blockchain-link/lib/workers/baseWorker';
|
|
5
|
+
type WorkerAsyncImporter = () => Promise<BaseWorker<unknown>>;
|
|
6
|
+
declare const SolanaWorker: WorkerAsyncImporter;
|
|
5
7
|
declare const ElectrumWorker: undefined;
|
|
6
8
|
export { BlockbookWorker, RippleWorker, BlockfrostWorker, ElectrumWorker, SolanaWorker };
|
|
7
9
|
//# sourceMappingURL=workers-browser.d.ts.map
|
|
@@ -8,8 +8,8 @@ const ripple_1 = tslib_1.__importDefault(require("@trezor/blockchain-link/lib/wo
|
|
|
8
8
|
exports.RippleWorker = ripple_1.default;
|
|
9
9
|
const blockfrost_1 = tslib_1.__importDefault(require("@trezor/blockchain-link/lib/workers/blockfrost"));
|
|
10
10
|
exports.BlockfrostWorker = blockfrost_1.default;
|
|
11
|
-
const
|
|
12
|
-
exports.SolanaWorker =
|
|
11
|
+
const SolanaWorker = () => Promise.resolve().then(() => tslib_1.__importStar(require('@trezor/blockchain-link/lib/workers/solana'))).then(w => w.default());
|
|
12
|
+
exports.SolanaWorker = SolanaWorker;
|
|
13
13
|
const ElectrumWorker = undefined;
|
|
14
14
|
exports.ElectrumWorker = ElectrumWorker;
|
|
15
15
|
//# sourceMappingURL=workers-browser.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trezor/connect",
|
|
3
|
-
"version": "9.2.
|
|
3
|
+
"version": "9.2.4-beta.1",
|
|
4
4
|
"author": "Trezor <info@trezor.io>",
|
|
5
5
|
"homepage": "https://github.com/trezor/trezor-suite/tree/develop/packages/connect",
|
|
6
6
|
"description": "High-level javascript interface for Trezor hardware wallet.",
|
|
@@ -71,12 +71,12 @@
|
|
|
71
71
|
"@ethereumjs/tx": "^5.2.1",
|
|
72
72
|
"@fivebinaries/coin-selection": "2.2.1",
|
|
73
73
|
"@trezor/blockchain-link": "2.1.29",
|
|
74
|
-
"@trezor/blockchain-link-types": "1.0.
|
|
74
|
+
"@trezor/blockchain-link-types": "1.0.17-beta.1",
|
|
75
75
|
"@trezor/connect-analytics": "1.0.14",
|
|
76
|
-
"@trezor/connect-common": "0.0.
|
|
77
|
-
"@trezor/protobuf": "1.0.
|
|
78
|
-
"@trezor/protocol": "1.0.
|
|
79
|
-
"@trezor/schema-utils": "1.0.
|
|
76
|
+
"@trezor/connect-common": "0.0.33-beta.1",
|
|
77
|
+
"@trezor/protobuf": "1.0.13-beta.1",
|
|
78
|
+
"@trezor/protocol": "1.0.9-beta.1",
|
|
79
|
+
"@trezor/schema-utils": "1.0.4-beta.1",
|
|
80
80
|
"@trezor/transport": "1.1.28",
|
|
81
81
|
"@trezor/utils": "9.0.23",
|
|
82
82
|
"@trezor/utxo-lib": "2.0.9",
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { AbstractMethod } from '../core/AbstractMethod';
|
|
2
|
-
import { IntermediaryVersion } from '../types';
|
|
3
|
-
type Params = {
|
|
4
|
-
binary?: ArrayBuffer;
|
|
5
|
-
version?: number[];
|
|
6
|
-
btcOnly?: boolean;
|
|
7
|
-
baseUrl: string;
|
|
8
|
-
intermediaryVersion?: IntermediaryVersion;
|
|
9
|
-
};
|
|
10
|
-
export default class FirmwareUpdate extends AbstractMethod<'firmwareUpdate', Params> {
|
|
11
|
-
init(): void;
|
|
12
|
-
confirmation(): Promise<boolean>;
|
|
13
|
-
run(): Promise<{
|
|
14
|
-
hash: string;
|
|
15
|
-
challenge: string;
|
|
16
|
-
}>;
|
|
17
|
-
}
|
|
18
|
-
export {};
|
|
19
|
-
//# sourceMappingURL=firmwareUpdate.d.ts.map
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const crypto_1 = require("crypto");
|
|
4
|
-
const AbstractMethod_1 = require("../core/AbstractMethod");
|
|
5
|
-
const constants_1 = require("../constants");
|
|
6
|
-
const events_1 = require("../events");
|
|
7
|
-
const firmware_1 = require("./firmware");
|
|
8
|
-
const firmwareInfo_1 = require("../data/firmwareInfo");
|
|
9
|
-
const schema_utils_1 = require("@trezor/schema-utils");
|
|
10
|
-
const firmwareUpdate_1 = require("../types/api/firmwareUpdate");
|
|
11
|
-
class FirmwareUpdate extends AbstractMethod_1.AbstractMethod {
|
|
12
|
-
init() {
|
|
13
|
-
this.useEmptyPassphrase = true;
|
|
14
|
-
this.requiredPermissions = ['management'];
|
|
15
|
-
this.allowDeviceMode = [events_1.UI.BOOTLOADER, events_1.UI.INITIALIZE];
|
|
16
|
-
this.requireDeviceMode = [events_1.UI.BOOTLOADER];
|
|
17
|
-
this.useDeviceState = false;
|
|
18
|
-
this.skipFirmwareCheck = true;
|
|
19
|
-
const { payload } = this;
|
|
20
|
-
(0, schema_utils_1.Assert)(firmwareUpdate_1.FirmwareUpdate, payload);
|
|
21
|
-
if (payload.binary) {
|
|
22
|
-
this.params = {
|
|
23
|
-
...this.params,
|
|
24
|
-
binary: payload.binary,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.params = {
|
|
29
|
-
version: payload.version,
|
|
30
|
-
btcOnly: payload.btcOnly,
|
|
31
|
-
baseUrl: payload.baseUrl || 'https://data.trezor.io',
|
|
32
|
-
intermediaryVersion: payload.intermediaryVersion,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
async confirmation() {
|
|
37
|
-
await this.getPopupPromise().promise;
|
|
38
|
-
const uiPromise = this.createUiPromise(events_1.UI.RECEIVE_CONFIRMATION);
|
|
39
|
-
this.postMessage((0, events_1.createUiMessage)(events_1.UI.REQUEST_CONFIRMATION, {
|
|
40
|
-
view: 'device-management',
|
|
41
|
-
customConfirmButton: {
|
|
42
|
-
className: 'wipe',
|
|
43
|
-
label: 'Proceed',
|
|
44
|
-
},
|
|
45
|
-
label: 'Do you want to update firmware? Never do this without your recovery card.',
|
|
46
|
-
}));
|
|
47
|
-
const uiResp = await uiPromise.promise;
|
|
48
|
-
return uiResp.payload;
|
|
49
|
-
}
|
|
50
|
-
async run() {
|
|
51
|
-
var _a;
|
|
52
|
-
const { device, params } = this;
|
|
53
|
-
let binary;
|
|
54
|
-
try {
|
|
55
|
-
if (params.binary) {
|
|
56
|
-
binary = params.binary;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
binary = await (0, firmware_1.getBinary)({
|
|
60
|
-
features: device.features,
|
|
61
|
-
releases: (0, firmwareInfo_1.getReleases)((_a = device.features) === null || _a === void 0 ? void 0 : _a.internal_model),
|
|
62
|
-
version: params.version,
|
|
63
|
-
btcOnly: params.btcOnly,
|
|
64
|
-
baseUrl: params.baseUrl,
|
|
65
|
-
intermediaryVersion: params.intermediaryVersion,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
throw constants_1.ERRORS.TypedError('Method_FirmwareUpdate_DownloadFailed', `Failed to download firmware binary ${err.message}`);
|
|
71
|
-
}
|
|
72
|
-
const stripped = (0, firmware_1.stripFwHeaders)(binary);
|
|
73
|
-
await (0, firmware_1.uploadFirmware)(this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: (0, firmware_1.shouldStripFwHeaders)(device.features) ? stripped : binary });
|
|
74
|
-
return (0, firmware_1.calculateFirmwareHash)(device.features.major_version, stripped, (0, crypto_1.randomBytes)(32));
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.default = FirmwareUpdate;
|
|
78
|
-
//# sourceMappingURL=firmwareUpdate.js.map
|