UNPKG

smartcard2

Version:
95 lines (82 loc) 2.5 kB
"use strict"; const hexify = require("hexify"); const api = require("../lib/index"); const Devices = api.Devices; const Iso7816Application = api.Iso7816Application; const CommandApdu = api.CommandApdu; const devices = new Devices(); devices.on("device-activated", (event) => { const currentDevices = event.devices; let device = event.device; console.log(`Device '${device}' activated, devices: ${currentDevices}`); currentDevices.map((device, index) => { console.log(`Device #${index + 1}: ${device.name}`); }); device.on("card-inserted", (event) => { let card = event.card; console.log(`\nCard '${card.getAtr()}' inserted into '${event.device}'`); card.on("command-issued", (event) => { console.log(`Command '${event.command}' issued to '${event.card}' `); }); card.on("response-received", (event) => { console.log( `Response '${event.response}' received from '${event.card}' in response to '${ event.command }'` ); }); // card // .issueCommand('00A404000E315041592E5359532E444446303100') // .then((response) => { // console.log(`Response '${response.toString('hex')}`); // }).catch((error) => { // console.error(error); // }); const application = new Iso7816Application(card); application.on("application-selected", (event) => { console.log(`Application Selected ${event.application}`); }); application .selectFile([ 0x31, 0x50, 0x41, 0x59, 0x2e, 0x53, 0x59, 0x53, 0x2e, 0x44, 0x44, 0x46, 0x30, 0x31 ]) .then((response) => { console.info(`Select PSE Response: '${response}' '${response.meaning()}'`); return application.selectFile(hexify.toByteArray("a0000000041010")); }) .then((response) => { console.info(`Select Application Response: '${response}' '${response.meaning()}'`); return application.issueCommand( new CommandApdu({ bytes: [0x80, 0xa8, 0x00, 0x00, 0x02, 0x83, 0x00, 0x00] }) ); }) .then((response) => { console.info( `Get Processing Options Response: '${response}' '${response.meaning()}'` ); return response; }) .catch((error) => { console.error("Error:", error, error.stack); }); }); device.on("card-removed", (event) => { console.log(`Card ${event.card} removed from '${event.name}' `); }); }); devices.on("device-deactivated", (event) => { console.log(`Device '${event.device}' deactivated, devices: [${event.devices}]`); });