Socket
Socket
Sign inDemoInstall

emv

Package Overview
Dependencies
23
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.2 to 1.0.3

docs/scr3500-collapsed.JPG

55

demo/emv-demo.js

@@ -1,6 +0,6 @@

var cardreader = require('card-reader');
var hexify = require('hexify');
var emvTags = require('../lib/emvTags');
var emvApplication = require('../lib/emvApplication');
'use strict';
let cardreader = require('card-reader');
let emvTags = require('../lib/emv-tags');
let emvApplication = require('../lib/emv-application');

@@ -33,28 +33,35 @@

var application = emvApplication(cardreader);
application.selectPse()
let application = emvApplication(cardreader);
application
.selectPse()
.then(function (response) {
console.info(`Select PSE Response:\n${emvTags.format(response)}`);
var sfi = 1;
var record = 0;
while (record++ < 10) {
application.readRecord(sfi, record).then(function (response) {
if (response.isOk()) {
console.info(`Read Record Response: ${emvTags.format(response)}`);
var aid = emvTags.findTag(response, 0x4f);
if (aid) {
console.info(`Application ID: '${aid.toString('hex')}`);
let sfi = emvTags.findTag(response, 0x88).toString('hex');
let records = [0, 1, 2, 3, 4, 5, 6];
let aids = [];
let queue = Promise.resolve();
records.forEach(function (record) {
queue = queue.then(function () {
return application.readRecord(sfi, record).then(function (response) {
if (response.isOk()) {
console.info(`Read Record Response: \n${emvTags.format(response)}`);
let aid = emvTags.findTag(response, 0x4f);
if (aid) {
console.info(`Application ID: '${aid.toString('hex')}`);
aids.push(aid.toString('hex'));
}
}
}
return response;
}).catch(function (error) {
console.error('Read Record Error:', error, error.stack);
return aids;
}).catch(function (error) {
console.error('Read Record Error:', error, error.stack);
});
});
}
});
return queue;
}).then(function(applicationIds) {
console.info(`Application IDs: '${applicationIds}'`);
}).catch(function (error) {
console.error('Error:', error, error.stack);
});
console.error('Error:', error, error.stack);
});
});
{
"name": "emv",
"version": "1.0.2",
"version": "1.0.3",
"main": "lib/emv-application.js",

@@ -33,5 +33,5 @@ "description": "",

"dependencies": {
"card-reader": "^0.0.24",
"card-reader": "^0.0.25",
"hexify": "^1.0.1",
"iso7816": "^1.0.14",
"iso7816": "^1.0.15",
"tlv": "^1.1.1"

@@ -38,0 +38,0 @@ },

@@ -11,16 +11,75 @@ # EMV

var cardreader = require('card-reader');
var emv = require('emv');
var emvTags = require('../lib/emvTags');
var emvApplication = require('../lib/emvApplication');
cardreader.on('card-inserted', function () {
var application = emv(cardreader);
application.selectPse()
.then(function (response) {
console.info('Select PSE response:\n', response.toTlvString());
}).catch(function (error) {
console.error('Select PSE', error);
});
cardreader.on('device-activated', function (reader) {
console.info(`Device '${reader.name}' activated`);
});
cardreader.on('device-deactivated', function (reader) {
console.info(`Device '${reader}' deactivated`);
});
cardreader.on('card-removed', function (reader) {
console.info(`Card removed from '${reader.name}' `);
});
cardreader.on('issue-command', function (reader, command) {
console.info(`Command '${command.toString('hex')}' issued to '${reader.name}' `);
});
cardreader.on('receive-response', function (reader, response) {
console.info(`Response '${response}' received from '${reader.name}' `);
});
cardreader.on('card-inserted', function (reader, status) {
console.info(`Card inserted into '${reader.name}', atr: '${status.atr.toString('hex')}'`);
var application = emvApplication(cardreader);
application
.selectPse()
.then(function (response) {
console.info(`Select PSE Response:\n${emvTags.format(response)}`);
var sfi = 1;
var record = 0;
while (record++ < 10) {
application.readRecord(sfi, record).then(function (response) {
if (response.isOk()) {
console.info(`Read Record Response: ${emvTags.format(response)}`);
var aid = emvTags.findTag(response, 0x4f);
if (aid) {
console.info(`Application ID: '${aid.toString('hex')}`);
}
}
return response;
}).catch(function (error) {
console.error('Read Record Error:', error, error.stack);
});
}
}).catch(function (error) {
console.error('Error:', error, error.stack);
});
});
```
## Compatible Readers
Tested on Mac OSX with the SCM SCR3500 Smart Card Reader.
This library *should* work with most PC/SC readers - I'll update this page when I get to test others.
If you know of any other devices that work please let me know.
<div align="center">
<img src="docs/scr3500-collapsed.JPG" width=600 style="margin:1rem;" />
</div>
<div align="center">
<img src="docs/scr3500-expanded.JPG" width=600 style="margin:1rem;" />
</div>
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc