UNPKG

@iotize/device-client.js

Version:

IoTize Device client for Javascript

148 lines (147 loc) 6.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Created by IoTize on 09/03/ * * Model representing an application protocol data unit */ var APDUCommand = /** @class */ (function () { function APDUCommand() { /** * Instruction class - indicates the type of command, e.g. interindustry or proprietary */ this.CLA = 0; /** * Instruction code - indicates the specific command, e.g. "write data" */ this.instructionCode = 0; /** * Instruction parameters for the command, e.g. offset into file at which to write the data */ this.instructionParameter = Uint8Array.from([0, 0]); /** * Encodes the number (Nc) of bytes of command data to follow * 0 bytes denotes Nc=0 * 1 byte with a value from 1 to 255 denotes Nc with the same value * 3 bytes, the first of which must be 0, denotes Nc in the range 1 to 65 535 (all three bytes may not be zero) */ this.expectedResponseSize = new Uint8Array(0); /** * Nc bytes of data */ this.data = new Uint8Array(0); /** * Encodes the maximum number (Ne) of response bytes expected * 0 bytes denotes Ne=0 * 1 byte in the range 1 to 255 denotes that value of Ne, or 0 denotes Ne=256 * 2 bytes (if extended Lc was present in the command) in the range 1 to 65 535 denotes Ne of that value, or two zero bytes denotes 65 536 * 3 bytes (if Lc was not present in the command), the first of which must be 0, denote Ne in the same way as two-byte Le */ this.sizeOfCommandInBytes = new Uint8Array(0); } APDUCommand.prototype.setCLA = function (CLA) { this.CLA = CLA; return this; }; APDUCommand.prototype.setInstructionCode = function (instructionCode) { this.instructionCode = instructionCode; return this; }; // public setInstructionParameter(data: number[]): this { // this.instructionParameter = Uint8Array.from(data); // return this; // } APDUCommand.prototype.setInstructionParameter = function (p1, p2) { this.instructionParameter = Uint8Array.from([p1, p2]); return this; }; /** * Encodes the maximum number (Ne) of response bytes expected * - 0 bytes denotes Ne=0 * - 1 byte in the range 1 to 255 denotes that value of Ne, or 0 denotes Ne=256 * - 2 bytes (if extended Lc was present in the command) in the range 1 to 65 535 denotes Ne of that value, or two zero bytes denotes 65 536 * - 3 bytes (if Lc was not present in the command), the first of which must be 0, denote Ne in the same way as two-byte Le * * @param expectedResponseSize * @return */ APDUCommand.prototype.setExpectedResponseSize = function (expectedResponseSize) { if (expectedResponseSize <= 0) { this.expectedResponseSize = Uint8Array.from([]); } else if (expectedResponseSize >= 1 && expectedResponseSize < 255) { this.expectedResponseSize = Uint8Array.from([expectedResponseSize]); } else if (expectedResponseSize == 256) { this.expectedResponseSize = Uint8Array.from([0]); } else { throw new Error("Not implemented yet"); } return this; }; // public setExpectedResponseSize(expectedResponseSize: number[]) { // if (expectedResponseSize.length > 3) { // throw new Error("Invalid expected byte size"); // } // this.expectedResponseSize = expectedResponseSize; // return this; // } APDUCommand.prototype.setData = function (data) { this.data = data; var nbBytes = data != null ? data.length : 0; this.setSizeOfCommandInBytes(nbBytes); return this; }; // public setSizeOfCommandInBytes(sizeOfCommandInBytes: number[]) { // this.sizeOfCommandInBytes = sizeOfCommandInBytes; // return this; // } /** * Encodes the number (Nc) of bytes of command data to follow * 0 bytes denotes Nc=0 * 1 byte with a value from 1 to 255 denotes Nc with the same value * 3 bytes, the first of which must be 0, denotes Nc in the range 1 to 65 535 (all three bytes may not be zero) * * @param nbBytes */ APDUCommand.prototype.setSizeOfCommandInBytes = function (nbBytes) { if (nbBytes == 0) { this.sizeOfCommandInBytes = new Uint8Array(0); } else if (nbBytes >= 1 && nbBytes <= 255) { this.sizeOfCommandInBytes = Uint8Array.from([nbBytes & 0xFF]); } else { var byteTwo = (nbBytes & 0xFF00 >> 8); var byteOne = (nbBytes & 0xFF); this.sizeOfCommandInBytes = Uint8Array.from([0, byteOne, byteTwo]); } }; APDUCommand.prototype.getCLA = function () { return this.CLA; }; APDUCommand.prototype.getInstructionCode = function () { return this.instructionCode; }; APDUCommand.prototype.getParameters = function () { return this.instructionParameter; }; APDUCommand.prototype.getSizeOfCommandInBytes = function () { return this.sizeOfCommandInBytes; }; APDUCommand.prototype.getData = function () { return this.data; }; APDUCommand.prototype.getExpectedResponseSize = function () { return this.expectedResponseSize; }; APDUCommand.prototype.hasExpectedResponseSize = function () { return this.expectedResponseSize != null && this.expectedResponseSize.length > 0; }; APDUCommand.CLA_LENGTH = 1; APDUCommand.INS_LENGTH = 1; APDUCommand.P1P2_LENGTH = 2; return APDUCommand; }()); exports.APDUCommand = APDUCommand;