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("Usage: hf 14a apdu [-s] [-k] [-t] <APDU (hex)>");
PrintAndLog(" -s activate field and select card"); PrintAndLog(" -s activate field and select card");
PrintAndLog(" -k leave the signal field ON after receive response"); 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; 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."}, {"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);
int CodeCmp(const char *code1, const char *code2) { int CodeCmp(const char *code1, const char *code2) {
int xsymb = 0; int xsymb = 0;
@ -276,15 +277,13 @@ int CodeCmp(const char *code1, const char *code2) {
return -1; return -1;
} }
APDUCode *GetAPDUCode(uint8_t sw1, uint8_t sw2) { const APDUCode* const GetAPDUCode(uint8_t sw1, uint8_t sw2) {
char buf[4] = {0}; char buf[4] = {0};
sprintf(&buf[0], "%02X ", sw1); sprintf(&buf[0], "%02X ", sw1);
sprintf(&buf[2], "%02X ", sw2); sprintf(&buf[2], "%02X ", sw2);
for (int i = 0; i < APDUCodeTableLen; i++) {
int tableLen = sizeof(APDUCodeTable)/sizeof(APDUCode);
for (int i = 0; i < tableLen; i++) {
if (CodeCmp(APDUCodeTable[i].ID, buf) == 0) { // TODO make not so equal comparation... XXXX - not works... if (CodeCmp(APDUCodeTable[i].ID, buf) == 0) { // TODO make not so equal comparation... XXXX - not works...
return &APDUCodeTable[i]; return &APDUCodeTable[i];
} }
@ -293,12 +292,10 @@ APDUCode *GetAPDUCode(uint8_t sw1, uint8_t sw2) {
return NULL; return NULL;
} }
const char *GetAPDUCodeDescription(uint8_t sw1, uint8_t sw2) { const char* GetAPDUCodeDescription(uint8_t sw1, uint8_t sw2) {
APDUCode *cd = GetAPDUCode(sw1, sw2); const APDUCode *cd = GetAPDUCode(sw1, sw2);
if (cd) if (cd)
return cd->Description; return cd->Description;
else else
return APDUCodeTable[0].Description; //empty string return APDUCodeTable[0].Description; //empty string
} }

View file

@ -28,7 +28,7 @@ typedef struct {
const char *Description; const char *Description;
} APDUCode; } 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); extern const char* GetAPDUCodeDescription(uint8_t sw1, uint8_t sw2);
#endif #endif