{"9F00", APDUCODE_TYPE_NONE, "PIN blocked and Unblock Try Counter is 3"},
{"9F04", APDUCODE_TYPE_NONE, "PIN not succesfully verified, PIN blocked and Unblock Try Counter is 3"},
{"9FXX", APDUCODE_TYPE_NONE, "Command successfully executed; 'xx' bytes of data are available and can be requested using GET RESPONSE."},
{"9F00", APDUCODE_TYPE_NONE, "PIN blocked and Unblock Try Counter is 3"},
{"9F04", APDUCODE_TYPE_NONE, "PIN not succesfully verified, PIN blocked and Unblock Try Counter is 3"},
{"9FXX", APDUCODE_TYPE_NONE, "Command successfully executed; 'xx' bytes of data are available and can be requested using GET RESPONSE."},
- {"9xXX", APDUCODE_TYPE_NONE, "Application related status, (ISO 7816-3)"}
+ {"9XXX", APDUCODE_TYPE_NONE, "Application related status, (ISO 7816-3)"}
};
const size_t APDUCodeTableLen = sizeof(APDUCodeTable)/sizeof(APDUCode);
};
const size_t APDUCodeTableLen = sizeof(APDUCodeTable)/sizeof(APDUCode);
const APDUCode* const GetAPDUCode(uint8_t sw1, uint8_t sw2) {
char buf[5] = {0};
int res;
const APDUCode* const GetAPDUCode(uint8_t sw1, uint8_t sw2) {
char buf[5] = {0};
int res;
+ int mineq = APDUCodeTableLen;
- sprintf(&buf[0], "%02X", sw1);
- sprintf(&buf[2], "%02X", sw2);
+ sprintf(buf, "%02X%02X", sw1, sw2);
for (int i = 0; i < APDUCodeTableLen; i++) {
res = CodeCmp(APDUCodeTable[i].ID, buf);
for (int i = 0; i < APDUCodeTableLen; i++) {
res = CodeCmp(APDUCodeTable[i].ID, buf);
}
// if we have not equal, but with some 'X'
}
// if we have not equal, but with some 'X'
+ if (mineqindx < APDUCodeTableLen) {
return &APDUCodeTable[mineqindx];
}
return &APDUCodeTable[mineqindx];
}