SCARD: Add debug dumps of FCP template TLVs in SELECT response
Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
f41ed0f845
commit
a8f3bfc421
1 changed files with 65 additions and 16 deletions
|
@ -70,6 +70,9 @@
|
||||||
#define USIM_TLV_TOTAL_FILE_SIZE 0x81
|
#define USIM_TLV_TOTAL_FILE_SIZE 0x81
|
||||||
#define USIM_TLV_PIN_STATUS_TEMPLATE 0xC6
|
#define USIM_TLV_PIN_STATUS_TEMPLATE 0xC6
|
||||||
#define USIM_TLV_SHORT_FILE_ID 0x88
|
#define USIM_TLV_SHORT_FILE_ID 0x88
|
||||||
|
#define USIM_TLV_SECURITY_ATTR_8B 0x8B
|
||||||
|
#define USIM_TLV_SECURITY_ATTR_8C 0x8C
|
||||||
|
#define USIM_TLV_SECURITY_ATTR_AB 0xAB
|
||||||
|
|
||||||
#define USIM_PS_DO_TAG 0x90
|
#define USIM_PS_DO_TAG 0x90
|
||||||
|
|
||||||
|
@ -263,8 +266,31 @@ static int scard_parse_fsp_templ(unsigned char *buf, size_t buf_len,
|
||||||
if (pos + 2 + pos[1] > end)
|
if (pos + 2 + pos[1] > end)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (pos[0] == USIM_TLV_FILE_SIZE &&
|
switch (pos[0]) {
|
||||||
(pos[1] == 1 || pos[1] == 2) && file_len) {
|
case USIM_TLV_FILE_DESC:
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: File Descriptor TLV",
|
||||||
|
pos + 2, pos[1]);
|
||||||
|
break;
|
||||||
|
case USIM_TLV_FILE_ID:
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: File Identifier TLV",
|
||||||
|
pos + 2, pos[1]);
|
||||||
|
break;
|
||||||
|
case USIM_TLV_DF_NAME:
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: DF name (AID) TLV",
|
||||||
|
pos + 2, pos[1]);
|
||||||
|
break;
|
||||||
|
case USIM_TLV_PROPR_INFO:
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: Proprietary "
|
||||||
|
"information TLV", pos + 2, pos[1]);
|
||||||
|
break;
|
||||||
|
case USIM_TLV_LIFE_CYCLE_STATUS:
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: Life Cycle Status "
|
||||||
|
"Integer TLV", pos + 2, pos[1]);
|
||||||
|
break;
|
||||||
|
case USIM_TLV_FILE_SIZE:
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: File size TLV",
|
||||||
|
pos + 2, pos[1]);
|
||||||
|
if ((pos[1] == 1 || pos[1] == 2) && file_len) {
|
||||||
if (pos[1] == 1)
|
if (pos[1] == 1)
|
||||||
*file_len = (int) pos[2];
|
*file_len = (int) pos[2];
|
||||||
else
|
else
|
||||||
|
@ -273,13 +299,36 @@ static int scard_parse_fsp_templ(unsigned char *buf, size_t buf_len,
|
||||||
wpa_printf(MSG_DEBUG, "SCARD: file_size=%d",
|
wpa_printf(MSG_DEBUG, "SCARD: file_size=%d",
|
||||||
*file_len);
|
*file_len);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
if (pos[0] == USIM_TLV_PIN_STATUS_TEMPLATE &&
|
case USIM_TLV_TOTAL_FILE_SIZE:
|
||||||
pos[1] >= 2 && pos[2] == USIM_PS_DO_TAG &&
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: Total file size TLV",
|
||||||
|
pos + 2, pos[1]);
|
||||||
|
break;
|
||||||
|
case USIM_TLV_PIN_STATUS_TEMPLATE:
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: PIN Status Template "
|
||||||
|
"DO TLV", pos + 2, pos[1]);
|
||||||
|
if (pos[1] >= 2 && pos[2] == USIM_PS_DO_TAG &&
|
||||||
pos[3] >= 1 && ps_do) {
|
pos[3] >= 1 && ps_do) {
|
||||||
wpa_printf(MSG_DEBUG, "SCARD: PS_DO=0x%02x", pos[4]);
|
wpa_printf(MSG_DEBUG, "SCARD: PS_DO=0x%02x",
|
||||||
|
pos[4]);
|
||||||
*ps_do = (int) pos[4];
|
*ps_do = (int) pos[4];
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case USIM_TLV_SHORT_FILE_ID:
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: Short File "
|
||||||
|
"Identifier (SFI) TLV", pos + 2, pos[1]);
|
||||||
|
break;
|
||||||
|
case USIM_TLV_SECURITY_ATTR_8B:
|
||||||
|
case USIM_TLV_SECURITY_ATTR_8C:
|
||||||
|
case USIM_TLV_SECURITY_ATTR_AB:
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: Security attribute "
|
||||||
|
"TLV", pos + 2, pos[1]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "SCARD: Unrecognized TLV",
|
||||||
|
pos, 2 + pos[1]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
pos += 2 + pos[1];
|
pos += 2 + pos[1];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue