Added support for TokenInfo and StaticTokenInfo files.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
@@ -47,26 +47,26 @@ int cmd_select() {
|
|||||||
// return SW_INCORRECT_P1P2();
|
// return SW_INCORRECT_P1P2();
|
||||||
//}
|
//}
|
||||||
|
|
||||||
if (apdu.nc >= 2) {
|
if (apdu.nc == 2) {
|
||||||
fid = get_uint16_t(apdu.data, 0);
|
fid = get_uint16_t(apdu.data, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//if ((fid & 0xff00) == (KEY_PREFIX << 8))
|
//if ((fid & 0xff00) == (KEY_PREFIX << 8))
|
||||||
// fid = (PRKD_PREFIX << 8) | (fid & 0xff);
|
// fid = (PRKD_PREFIX << 8) | (fid & 0xff);
|
||||||
|
|
||||||
uint8_t pfx = fid >> 8;
|
/*uint8_t pfx = fid >> 8;*/
|
||||||
if (pfx == PRKD_PREFIX ||
|
/*if (pfx == PRKD_PREFIX ||
|
||||||
pfx == CD_PREFIX ||
|
pfx == CD_PREFIX ||
|
||||||
pfx == CA_CERTIFICATE_PREFIX ||
|
pfx == CA_CERTIFICATE_PREFIX ||
|
||||||
pfx == KEY_PREFIX ||
|
pfx == KEY_PREFIX ||
|
||||||
pfx == EE_CERTIFICATE_PREFIX ||
|
pfx == EE_CERTIFICATE_PREFIX ||
|
||||||
pfx == DCOD_PREFIX ||
|
pfx == DCOD_PREFIX ||
|
||||||
pfx == DATA_PREFIX ||
|
pfx == DATA_PREFIX ||
|
||||||
pfx == PROT_DATA_PREFIX) {
|
pfx == PROT_DATA_PREFIX) {*/
|
||||||
if (!(pe = search_dynamic_file(fid)) && !(pe = search_by_fid(fid, NULL, SPECIFY_EF))) {
|
if (fid != 0x0 && !(pe = search_dynamic_file(fid)) && !(pe = search_by_fid(fid, NULL, SPECIFY_EF))) {
|
||||||
return SW_FILE_NOT_FOUND();
|
return SW_FILE_NOT_FOUND();
|
||||||
}
|
}
|
||||||
}
|
/*}*/
|
||||||
if (!pe) {
|
if (!pe) {
|
||||||
if (p1 == 0x0) { //Select MF, DF or EF - File identifier or absent
|
if (p1 == 0x0) { //Select MF, DF or EF - File identifier or absent
|
||||||
if (apdu.nc == 0) {
|
if (apdu.nc == 0) {
|
||||||
|
|||||||
@@ -33,11 +33,14 @@ int cmd_update_ef() {
|
|||||||
if (fid == 0x0) {
|
if (fid == 0x0) {
|
||||||
ef = currentEF;
|
ef = currentEF;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
// This should not happen
|
||||||
else if (p1 != EE_CERTIFICATE_PREFIX && p1 != PRKD_PREFIX && p1 != CA_CERTIFICATE_PREFIX &&
|
else if (p1 != EE_CERTIFICATE_PREFIX && p1 != PRKD_PREFIX && p1 != CA_CERTIFICATE_PREFIX &&
|
||||||
p1 != CD_PREFIX && p1 != DATA_PREFIX && p1 != DCOD_PREFIX &&
|
p1 != CD_PREFIX && p1 != DATA_PREFIX && p1 != DCOD_PREFIX &&
|
||||||
p1 != PROT_DATA_PREFIX) {
|
p1 != PROT_DATA_PREFIX) {
|
||||||
return SW_INCORRECT_P1P2();
|
return SW_INCORRECT_P1P2();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if (ef && !authenticate_action(ef, ACL_OP_UPDATE_ERASE)) {
|
if (ef && !authenticate_action(ef, ACL_OP_UPDATE_ERASE)) {
|
||||||
return SW_SECURITY_STATUS_NOT_SATISFIED();
|
return SW_SECURITY_STATUS_NOT_SATISFIED();
|
||||||
|
|||||||
@@ -40,7 +40,9 @@
|
|||||||
#define EF_PRKD_DEV 0xC400
|
#define EF_PRKD_DEV 0xC400
|
||||||
#define EF_EE_DEV 0xCE00
|
#define EF_EE_DEV 0xCE00
|
||||||
|
|
||||||
#define EF_TERMCA 0x2f02
|
#define EF_TERMCA 0x2F02
|
||||||
|
#define EF_TOKENINFO 0x2F03
|
||||||
|
#define EF_STATICTOKEN 0xCB00
|
||||||
|
|
||||||
extern file_t *file_pin1;
|
extern file_t *file_pin1;
|
||||||
extern file_t *file_retries_pin1;
|
extern file_t *file_retries_pin1;
|
||||||
|
|||||||
Reference in New Issue
Block a user