From 405bf92e18e4dfc8861b7cc7e3ea3343fd313906 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Tue, 4 Apr 2023 09:53:26 +0200 Subject: [PATCH] Added support for TokenInfo and StaticTokenInfo files. Signed-off-by: Pol Henarejos --- src/hsm/cmd_select.c | 12 ++++++------ src/hsm/cmd_update_ef.c | 3 +++ src/hsm/files.h | 4 +++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/hsm/cmd_select.c b/src/hsm/cmd_select.c index 6353466..23e21a3 100644 --- a/src/hsm/cmd_select.c +++ b/src/hsm/cmd_select.c @@ -47,26 +47,26 @@ int cmd_select() { // return SW_INCORRECT_P1P2(); //} - if (apdu.nc >= 2) { + if (apdu.nc == 2) { fid = get_uint16_t(apdu.data, 0); } //if ((fid & 0xff00) == (KEY_PREFIX << 8)) // fid = (PRKD_PREFIX << 8) | (fid & 0xff); - uint8_t pfx = fid >> 8; - if (pfx == PRKD_PREFIX || + /*uint8_t pfx = fid >> 8;*/ + /*if (pfx == PRKD_PREFIX || pfx == CD_PREFIX || pfx == CA_CERTIFICATE_PREFIX || pfx == KEY_PREFIX || pfx == EE_CERTIFICATE_PREFIX || pfx == DCOD_PREFIX || pfx == DATA_PREFIX || - pfx == PROT_DATA_PREFIX) { - if (!(pe = search_dynamic_file(fid)) && !(pe = search_by_fid(fid, NULL, SPECIFY_EF))) { + pfx == PROT_DATA_PREFIX) {*/ + if (fid != 0x0 && !(pe = search_dynamic_file(fid)) && !(pe = search_by_fid(fid, NULL, SPECIFY_EF))) { return SW_FILE_NOT_FOUND(); } - } + /*}*/ if (!pe) { if (p1 == 0x0) { //Select MF, DF or EF - File identifier or absent if (apdu.nc == 0) { diff --git a/src/hsm/cmd_update_ef.c b/src/hsm/cmd_update_ef.c index 747309b..a113f83 100644 --- a/src/hsm/cmd_update_ef.c +++ b/src/hsm/cmd_update_ef.c @@ -33,11 +33,14 @@ int cmd_update_ef() { if (fid == 0x0) { ef = currentEF; } + /* + // This should not happen else if (p1 != EE_CERTIFICATE_PREFIX && p1 != PRKD_PREFIX && p1 != CA_CERTIFICATE_PREFIX && p1 != CD_PREFIX && p1 != DATA_PREFIX && p1 != DCOD_PREFIX && p1 != PROT_DATA_PREFIX) { return SW_INCORRECT_P1P2(); } + */ if (ef && !authenticate_action(ef, ACL_OP_UPDATE_ERASE)) { return SW_SECURITY_STATUS_NOT_SATISFIED(); diff --git a/src/hsm/files.h b/src/hsm/files.h index e33a4d0..b3a31f6 100644 --- a/src/hsm/files.h +++ b/src/hsm/files.h @@ -40,7 +40,9 @@ #define EF_PRKD_DEV 0xC400 #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_retries_pin1;