explore.js
Summary
No overview generated for 'explore.js'
load("OutlineCore.js");
function OutlineCard() {
var card = new Card(_scsh3.reader);
this.atr = card.reset(Card.RESET_COLD);
this.card = card;
var view = new OutlineNode("Card");
view.setUserObject(this);
this.view = view;
}
OutlineCard.prototype.expandListener = function() {
if (this.expanded)
return;
var view = this.view;
var atrnode = new OutlineATR(this.atr);
view.insert(atrnode.view);
this.expanded = true;
try {
var mf = new CardFile(this.card, ":3F00");
var struct = GPXML.parse("genericmf.xml");
this.mf = new OutlineDF(this.card, ":3F00", "MF", struct);
view.insert(this.mf.view);
}
catch(e) {
print("Card does not seem to have a compatible MF\n" + e);
}
var isTransparent = true;
try {
var efdir = new CardFile(this.card, ":2F00");
var fci = efdir.getFCPBytes();
if (fci) {
isTransparent = efdir.isTransparent();
} else {
isTransparent = true;
}
}
catch(e) {
print("Card does not seem to have a compatible EF_DIR\n" + e);
return;
}
for (var rec = 1; rec < 255; rec++) {
var record;
try {
if (isTransparent) {
record = efdir.readBinary();
} else {
record = efdir.readRecord(rec);
}
}
catch(e) {
print(e);
break;
}
var tlv = new ASN1(record);
var label = null;
var aid = null;
for (var i = 0; i < tlv.elements; i++) {
var t = tlv.get(i);
switch(t.tag) {
case 0x50:
label = t.value.toString(UTF8);
break;
case 0x4F:
aid = t.value;
break;
}
}
if (label && aid) {
var applentry;
if (!label) {
if (!aid) {
label = "Invalid entry in EF.DIR";
} else {
label = aid.toString(HEX);
}
}
applentry = new OutlineNode(label);
applentry.insert(tlv);
view.insert(applentry);
}
if (efdir.isTransparent())
break;
}
}
var cardoutline = new OutlineCard();
cardoutline.view.show();
Documentation generated by
JSDoc on Tue Apr 15 22:10:49 2025