opensc-explorer: show tag 0x82 for unknown files
For reserved/unknown file type print value of 0x82 tag, instead of "???" string. closes #918
This commit is contained in:
parent
e7f118d797
commit
539c89e581
|
@ -391,6 +391,8 @@ iso7816_process_fci(struct sc_card *card, struct sc_file *file,
|
||||||
}
|
}
|
||||||
sc_log(ctx, " type: %s", type);
|
sc_log(ctx, " type: %s", type);
|
||||||
sc_log(ctx, " EF structure: %d", byte & 0x07);
|
sc_log(ctx, " EF structure: %d", byte & 0x07);
|
||||||
|
sc_log(ctx, " tag 0x82: 0x%02x", byte);
|
||||||
|
sc_file_set_type_attr(file, &byte, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -383,7 +383,10 @@ arg_to_path(const char *arg, sc_path_t *path, int is_id)
|
||||||
static void print_file(const sc_file_t *file)
|
static void print_file(const sc_file_t *file)
|
||||||
{
|
{
|
||||||
const char *format = " %02X%02X ";
|
const char *format = " %02X%02X ";
|
||||||
const char *st = "???";
|
const char *st = NULL;
|
||||||
|
|
||||||
|
if(!file->type_attr_len)
|
||||||
|
st = "???";
|
||||||
|
|
||||||
switch (file->type) {
|
switch (file->type) {
|
||||||
case SC_FILE_TYPE_WORKING_EF:
|
case SC_FILE_TYPE_WORKING_EF:
|
||||||
|
@ -398,7 +401,10 @@ static void print_file(const sc_file_t *file)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf(format, file->id >> 8, file->id & 0xFF);
|
printf(format, file->id >> 8, file->id & 0xFF);
|
||||||
printf("\t%4s", st);
|
if (st == NULL)
|
||||||
|
printf("\t0x%02X", *file->type_attr);
|
||||||
|
else
|
||||||
|
printf("\t%4s", st);
|
||||||
printf(" %5lu", (unsigned long)file->size);
|
printf(" %5lu", (unsigned long)file->size);
|
||||||
if (file->namelen) {
|
if (file->namelen) {
|
||||||
printf("\tName: ");
|
printf("\tName: ");
|
||||||
|
@ -825,7 +831,7 @@ static int do_info(int argc, char **argv)
|
||||||
sc_file_t *file;
|
sc_file_t *file;
|
||||||
sc_path_t path;
|
sc_path_t path;
|
||||||
size_t i;
|
size_t i;
|
||||||
const char *st;
|
const char *st = NULL;
|
||||||
int r, not_current = 1;
|
int r, not_current = 1;
|
||||||
const id2str_t *ac_ops = NULL;
|
const id2str_t *ac_ops = NULL;
|
||||||
|
|
||||||
|
@ -845,6 +851,9 @@ static int do_info(int argc, char **argv)
|
||||||
} else
|
} else
|
||||||
return usage(do_info);
|
return usage(do_info);
|
||||||
|
|
||||||
|
if(!file->type_attr_len)
|
||||||
|
st = "Unknown File";
|
||||||
|
|
||||||
switch (file->type) {
|
switch (file->type) {
|
||||||
case SC_FILE_TYPE_WORKING_EF:
|
case SC_FILE_TYPE_WORKING_EF:
|
||||||
case SC_FILE_TYPE_INTERNAL_EF:
|
case SC_FILE_TYPE_INTERNAL_EF:
|
||||||
|
@ -853,11 +862,11 @@ static int do_info(int argc, char **argv)
|
||||||
case SC_FILE_TYPE_DF:
|
case SC_FILE_TYPE_DF:
|
||||||
st = "Dedicated File";
|
st = "Dedicated File";
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
st = "Unknown File";
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
printf("\n%s ID %04X", st, file->id);
|
if (st == NULL)
|
||||||
|
printf("\nFile type [%02x] ID %04X", *file->type_attr, file->id);
|
||||||
|
else
|
||||||
|
printf("\n%s ID %04X", st, file->id);
|
||||||
if (file->sid)
|
if (file->sid)
|
||||||
printf(", SFI %02X", file->sid);
|
printf(", SFI %02X", file->sid);
|
||||||
printf("\n\n%-15s%s\n", "File path:", path_to_filename(&path, '/'));
|
printf("\n\n%-15s%s\n", "File path:", path_to_filename(&path, '/'));
|
||||||
|
|
Loading…
Reference in New Issue