small refactoring

This commit is contained in:
merlokk 2017-10-31 19:11:23 +02:00
parent fe346768b3
commit 5bcb3496fa
3 changed files with 7 additions and 10 deletions

View file

@ -618,7 +618,7 @@ int CmdHF14AAPDU(const char *cmd) {
PrintAndLog("Usage: hf 14a apdu [-s] [-k] [-t] <APDU (hex)>");
PrintAndLog(" -s activate field and select card");
PrintAndLog(" -k leave the signal field ON after receive response");
PrintAndLog(" -t executes TLV decoder if it possible");
PrintAndLog(" -t executes TLV decoder if it possible. TODO!!!!");
return 0;
}

View file

@ -257,6 +257,7 @@ const APDUCode APDUCodeTable[] = {
{"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)"}
};
const size_t APDUCodeTableLen = sizeof(APDUCodeTable)/sizeof(APDUCode);
int CodeCmp(const char *code1, const char *code2) {
int xsymb = 0;
@ -276,15 +277,13 @@ int CodeCmp(const char *code1, const char *code2) {
return -1;
}
APDUCode *GetAPDUCode(uint8_t sw1, uint8_t sw2) {
const APDUCode* const GetAPDUCode(uint8_t sw1, uint8_t sw2) {
char buf[4] = {0};
sprintf(&buf[0], "%02X ", sw1);
sprintf(&buf[2], "%02X ", sw2);
int tableLen = sizeof(APDUCodeTable)/sizeof(APDUCode);
for (int i = 0; i < tableLen; i++) {
for (int i = 0; i < APDUCodeTableLen; i++) {
if (CodeCmp(APDUCodeTable[i].ID, buf) == 0) { // TODO make not so equal comparation... XXXX - not works...
return &APDUCodeTable[i];
}
@ -293,12 +292,10 @@ APDUCode *GetAPDUCode(uint8_t sw1, uint8_t sw2) {
return NULL;
}
const char *GetAPDUCodeDescription(uint8_t sw1, uint8_t sw2) {
APDUCode *cd = GetAPDUCode(sw1, sw2);
const char* GetAPDUCodeDescription(uint8_t sw1, uint8_t sw2) {
const APDUCode *cd = GetAPDUCode(sw1, sw2);
if (cd)
return cd->Description;
else
return APDUCodeTable[0].Description; //empty string
}

View file

@ -28,7 +28,7 @@ typedef struct {
const char *Description;
} APDUCode;
extern APDUCode* GetAPDUCode(uint8_t sw1, uint8_t sw2);
extern const APDUCode* const GetAPDUCode(uint8_t sw1, uint8_t sw2);
extern const char* GetAPDUCodeDescription(uint8_t sw1, uint8_t sw2);
#endif