UNPKG

@ledgerhq/hw-transport

Version:
227 lines 8.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UserRefusedAddress = exports.UserRefusedOnDevice = exports.TransportExchangeTimeoutError = exports.TransportWebUSBGestureRequired = exports.TransportRaceCondition = exports.TransportInterfaceNotAvailable = exports.TransportOpenUserCancelled = exports.DisconnectedDeviceDuringOperation = exports.DisconnectedDevice = exports.CantOpenDevice = exports.BluetoothRequired = exports.DeviceMangementKitError = exports.LockedDeviceError = exports.TransportStatusError = exports.StatusCodes = exports.TransportError = exports.HwTransportError = exports.HwTransportErrorType = void 0; exports.getAltStatusMessage = getAltStatusMessage; var HwTransportErrorType; (function (HwTransportErrorType) { HwTransportErrorType["Unknown"] = "Unknown"; HwTransportErrorType["LocationServicesDisabled"] = "LocationServicesDisabled"; HwTransportErrorType["LocationServicesUnauthorized"] = "LocationServicesUnauthorized"; HwTransportErrorType["BluetoothScanStartFailed"] = "BluetoothScanStartFailed"; })(HwTransportErrorType || (exports.HwTransportErrorType = HwTransportErrorType = {})); class HwTransportError extends Error { type; constructor(type, message) { super(message || "HwTransportError"); this.name = "HwTransportError"; this.type = type; Object.setPrototypeOf(this, HwTransportError.prototype); } } exports.HwTransportError = HwTransportError; class TransportError extends Error { id; constructor(message, id) { const name = "TransportError"; super(message || name); this.name = name; this.message = message; this.stack = new Error(message).stack; this.id = id; } } exports.TransportError = TransportError; exports.StatusCodes = { ACCESS_CONDITION_NOT_FULFILLED: 0x9804, ALGORITHM_NOT_SUPPORTED: 0x9484, CLA_NOT_SUPPORTED: 0x6e00, CLA_NOT_SUPPORTED_BOOTLOADER: 0x6e01, CODE_BLOCKED: 0x9840, CODE_NOT_INITIALIZED: 0x9802, COMMAND_INCOMPATIBLE_FILE_STRUCTURE: 0x6981, CONDITIONS_OF_USE_NOT_SATISFIED: 0x6985, CONTRADICTION_INVALIDATION: 0x9810, CONTRADICTION_SECRET_CODE_STATUS: 0x9808, DEVICE_IN_RECOVERY_MODE: 0x662f, CUSTOM_IMAGE_EMPTY: 0x662e, FILE_ALREADY_EXISTS: 0x6a89, FILE_NOT_FOUND: 0x9404, GP_AUTH_FAILED: 0x6300, HALTED: 0x6faa, INCONSISTENT_FILE: 0x9408, INCORRECT_DATA: 0x6a80, INCORRECT_LENGTH: 0x6700, INCORRECT_P1_P2: 0x6b00, INS_NOT_SUPPORTED: 0x6d00, DEVICE_NOT_ONBOARDED: 0x6d07, DEVICE_NOT_ONBOARDED_2: 0x6611, INVALID_KCV: 0x9485, INVALID_OFFSET: 0x9402, LICENSING: 0x6f42, LOCKED_DEVICE: 0x5515, MAX_VALUE_REACHED: 0x9850, MEMORY_PROBLEM: 0x9240, MISSING_CRITICAL_PARAMETER: 0x6800, NO_EF_SELECTED: 0x9400, NOT_ENOUGH_MEMORY_SPACE: 0x6a84, OK: 0x9000, PIN_REMAINING_ATTEMPTS: 0x63c0, REFERENCED_DATA_NOT_FOUND: 0x6a88, SECURITY_STATUS_NOT_SATISFIED: 0x6982, TECHNICAL_PROBLEM: 0x6f00, UNKNOWN_APDU: 0x6d02, USER_REFUSED_ON_DEVICE: 0x5501, NOT_ENOUGH_SPACE: 0x5102, APP_NOT_FOUND_OR_INVALID_CONTEXT: 0x5123, INVALID_APP_NAME_LENGTH: 0x670a, GEN_AES_KEY_FAILED: 0x5419, INTERNAL_CRYPTO_OPERATION_FAILED: 0x541a, INTERNAL_COMPUTE_AES_CMAC_FAILED: 0x541b, ENCRYPT_APP_STORAGE_FAILED: 0x541c, INVALID_BACKUP_STATE: 0x6642, PIN_NOT_SET: 0x5502, INVALID_BACKUP_LENGTH: 0x6733, INVALID_RESTORE_STATE: 0x6643, INVALID_CHUNK_LENGTH: 0x6734, INVALID_BACKUP_HEADER: 0x684a, SW_BAD_STATE: 0xb007, }; function getAltStatusMessage(code) { switch (code) { case 0x6700: return "Incorrect length"; case 0x6800: return "Missing critical parameter"; case 0x6982: return "Security not satisfied (dongle locked or have invalid access rights)"; case 0x6985: return "Condition of use not satisfied (denied by the user?)"; case 0x6a80: return "Invalid data received"; case 0x6b00: return "Invalid parameter received"; case 0x5515: return "Locked device"; case 0xb007: return "Unexpected state on the device"; } if (0x6f00 <= code && code <= 0x6fff) { return "Internal error, please report"; } } class TransportStatusError extends Error { statusCode; statusText; constructor(statusCode, { canBeMappedToChildError = true } = {}) { const statusText = Object.keys(exports.StatusCodes).find(k => exports.StatusCodes[k] === statusCode) || "UNKNOWN_ERROR"; const smsg = getAltStatusMessage(statusCode) || statusText; const statusCodeStr = statusCode.toString(16); const message = `Ledger device: ${smsg} (0x${statusCodeStr})`; super(message || "TransportStatusError"); this.name = "TransportStatusError"; this.statusCode = statusCode; this.statusText = statusText; Object.setPrototypeOf(this, TransportStatusError.prototype); if (canBeMappedToChildError && statusCode === exports.StatusCodes.LOCKED_DEVICE) { return new LockedDeviceError(message); } } } exports.TransportStatusError = TransportStatusError; class LockedDeviceError extends TransportStatusError { constructor(message) { super(exports.StatusCodes.LOCKED_DEVICE, { canBeMappedToChildError: false }); if (message) { this.message = message; } this.name = "LockedDeviceError"; Object.setPrototypeOf(this, LockedDeviceError.prototype); } } exports.LockedDeviceError = LockedDeviceError; class DeviceMangementKitError extends Error { constructor(name, message) { super(message || "DeviceMangementKitError"); this.name = name; Object.setPrototypeOf(this, DeviceMangementKitError.prototype); } } exports.DeviceMangementKitError = DeviceMangementKitError; class BluetoothRequired extends Error { name = "BluetoothRequired"; constructor(message) { super(message || "BluetoothRequired"); } } exports.BluetoothRequired = BluetoothRequired; class CantOpenDevice extends Error { name = "CantOpenDevice"; constructor(message) { super(message || "CantOpenDevice"); } } exports.CantOpenDevice = CantOpenDevice; class DisconnectedDevice extends Error { name = "DisconnectedDevice"; constructor(message) { super(message || "DisconnectedDevice"); } } exports.DisconnectedDevice = DisconnectedDevice; class DisconnectedDeviceDuringOperation extends Error { name = "DisconnectedDeviceDuringOperation"; constructor(message) { super(message || "DisconnectedDeviceDuringOperation"); } } exports.DisconnectedDeviceDuringOperation = DisconnectedDeviceDuringOperation; class TransportOpenUserCancelled extends Error { name = "TransportOpenUserCancelled"; constructor(message) { super(message || "TransportOpenUserCancelled"); } } exports.TransportOpenUserCancelled = TransportOpenUserCancelled; class TransportInterfaceNotAvailable extends Error { name = "TransportInterfaceNotAvailable"; constructor(message) { super(message || "TransportInterfaceNotAvailable"); } } exports.TransportInterfaceNotAvailable = TransportInterfaceNotAvailable; class TransportRaceCondition extends Error { name = "TransportRaceCondition"; constructor(message) { super(message || "TransportRaceCondition"); } } exports.TransportRaceCondition = TransportRaceCondition; class TransportWebUSBGestureRequired extends Error { name = "TransportWebUSBGestureRequired"; constructor(message) { super(message || "TransportWebUSBGestureRequired"); } } exports.TransportWebUSBGestureRequired = TransportWebUSBGestureRequired; class TransportExchangeTimeoutError extends Error { name = "TransportExchangeTimeoutError"; constructor(message) { super(message || "TransportExchangeTimeoutError"); } } exports.TransportExchangeTimeoutError = TransportExchangeTimeoutError; class UserRefusedOnDevice extends Error { name = "UserRefusedOnDevice"; constructor(message) { super(message || "UserRefusedOnDevice"); } } exports.UserRefusedOnDevice = UserRefusedOnDevice; class UserRefusedAddress extends Error { name = "UserRefusedAddress"; constructor(message) { super(message || "UserRefusedAddress"); } } exports.UserRefusedAddress = UserRefusedAddress; //# sourceMappingURL=errors.js.map