UNPKG

@trezor/connect

Version:

High-level javascript interface for Trezor hardware wallet.

44 lines (43 loc) 1.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkFirmwareHashWithRetries = void 0; const utils_1 = require("@trezor/utils"); const constants_1 = require("../../constants"); const checkFirmwareHash_1 = require("./checkFirmwareHash"); const PROBE_CHECK_TIME_RETRIES = 4; const probeCheckTime = async context => { for (let i = 0; i < PROBE_CHECK_TIME_RETRIES; i++) { const result = await (0, checkFirmwareHash_1.checkFirmwareHash)(context); if (result !== null && (result.success || result.error !== 'takes-too-long')) { context.device.setAuthenticityChecks(result); return; } } }; const checkFirmwareHashWithRetries = async context => { const lastResult = context.device.getAuthenticityChecks().firmwareHash; const notDoneYet = lastResult === null; const attemptsDone = lastResult?.attemptCount ?? 0; if (attemptsDone >= constants_1.FIRMWARE.HASH_CHECK_MAX_ATTEMPTS) return; const wasError = lastResult !== null && !lastResult.success; const wasErrorRetriable = wasError && (0, utils_1.isArrayMember)(lastResult.error, constants_1.FIRMWARE.HASH_CHECK_RETRIABLE_ERRORS); const lastErrorPayload = wasError ? lastResult?.errorPayload : null; if (notDoneYet || wasErrorRetriable) { const result = await (0, checkFirmwareHash_1.checkFirmwareHash)(context); context.device.setAuthenticityChecks(result); if (result === null) return; result.attemptCount = attemptsDone + 1; if (!result.success && result.error === 'takes-too-long') { await probeCheckTime(context); } if (result.success && lastErrorPayload) { result.warningPayload = { lastErrorPayload }; } } }; exports.checkFirmwareHashWithRetries = checkFirmwareHashWithRetries; //# sourceMappingURL=checkFirmwareHashWithRetries.js.map