apdu-limit-test.js
Summary
No overview generated for 'apdu-limit-test.js'
SmartCardHSM = require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;
var userPIN = new ByteString("648219", ASCII);
var crypto = new Crypto();
var card = new Card(_scsh3.reader);
card.reset(Card.RESET_COLD);
var sc = new SmartCardHSM(card);
print("Reported by card reader layer:");
print(" Reader Name : " + card.readerName);
print(" Max C-APDU : " + sc.maxCAPDU);
print(" Max R-APDU : " + sc.maxRAPDU);
print(" Using limited transport: " + sc.limitedAPDUTransport);
print("Card info : " + sc.getVersionInfo());
var startOfs = 240;
var limit = 1500;
var limitCAPDU = limit + 7;
var limitRAPDU = limit + 2;
assert(sc.verifyUserPIN(userPIN) == 0x9000, "PIN Verification failed");
print("Determine C-Data limit...");
for (var i = startOfs; i <= limit; i++) {
try {
var rnd = crypto.generateRandom(i);
var t53 = new ASN1(0x53, rnd);
var cdata = (new ByteString("54020000", HEX)).concat(t53.getBytes());
this.card.sendApdu(0x00, 0xD7, 0x2F, 0x80, cdata, [0x9000]);
}
catch(e) {
print("Exception at Lc = " + cdata.length);
print(e);
var hlen = cdata.length <= 255 ? 5 : 7;
limitCAPDU = cdata.length - 1 + hlen;
break;
}
}
card.reset(Card.RESET_COLD);
sc.logout();
assert(sc.verifyUserPIN(userPIN) == 0x9000, "PIN Verification failed");
var t54 = new ASN1(0x54, ByteString.valueOf(rnd.length - 1, 2));
var t53 = new ASN1(0x53, rnd.left(rnd.length - 1));
var cdata = t54.getBytes().concat(t53.getBytes());
this.card.sendApdu(0x00, 0xD7, 0x2F, 0x80, cdata, [0x9000]);
print("Determine R-Data limit...");
for (var i = startOfs; i <= limit; i++) {
try {
var t53 = new ASN1(0x53, rnd);
var cdata = new ByteString("54020000", HEX);
var rsp = this.card.sendApdu(0x00, 0xB1, 0x2F, 0x80, cdata, i, [0x9000]);
}
catch(e) {
print("Exception at Le = " + i);
print(e);
limitRAPDU = i + 2;
break;
}
}
sc.deleteFile(ByteString.valueOf(0x2F80, 2));
print("Actual limitation:");
print(" Max C-APDU : " + limitCAPDU);
print(" Max R-APDU : " + (limitRAPDU > limit ? ">" : "") + limitRAPDU);
Documentation generated by
JSDoc on Sat Feb 24 15:17:19 2024