mirror of
https://github.com/polhenarejos/pico-hsm.git
synced 2024-09-20 11:20:08 +00:00
Added support for reading binary data.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
parent
6bc081a1e1
commit
24b1d6807b
@ -262,19 +262,8 @@ void scan_flash() {
|
||||
file_t *file = (file_t *)search_by_fid(fid, NULL, SPECIFY_EF);
|
||||
if (!file) {
|
||||
file = file_new(fid);
|
||||
if ((fid & 0xff00) == (KEY_PREFIX << 8)) {
|
||||
//add_file_to_chain(file, &ef_kf);
|
||||
}
|
||||
else if ((fid & 0xff00) == (PRKD_PREFIX << 8)) {
|
||||
//add_file_to_chain(file, &ef_prkdf);
|
||||
}
|
||||
else if ((fid & 0xff00) == (CD_PREFIX << 8)) {
|
||||
//add_file_to_chain(file, &ef_cdf);
|
||||
}
|
||||
else if ((fid & 0xff00) == (EE_CERTIFICATE_PREFIX << 8)) {
|
||||
//add_file_to_chain(file, &ef_pukdf);
|
||||
}
|
||||
else {
|
||||
uint8_t pfx = fid >> 8;
|
||||
if (pfx != KEY_PREFIX && pfx != PRKD_PREFIX && pfx != CD_PREFIX && pfx != EE_CERTIFICATE_PREFIX && pfx != DCOD_PREFIX && pfx != PROT_DATA_PREFIX && pfx != DATA_PREFIX) {
|
||||
TU_LOG1("SCAN FOUND ORPHAN FILE: %x\r\n",fid);
|
||||
continue;
|
||||
}
|
||||
|
@ -117,16 +117,14 @@ static int cmd_select() {
|
||||
|
||||
//if ((fid & 0xff00) == (KEY_PREFIX << 8))
|
||||
// fid = (PRKD_PREFIX << 8) | (fid & 0xff);
|
||||
|
||||
if ((fid & 0xff00) == (PRKD_PREFIX << 8)) {
|
||||
if (!(pe = search_dynamic_file(fid)))
|
||||
return SW_FILE_NOT_FOUND();
|
||||
}
|
||||
else if ((fid & 0xff00) == (CD_PREFIX << 8)) {
|
||||
if (!(pe = search_dynamic_file(fid)))
|
||||
return SW_FILE_NOT_FOUND();
|
||||
}
|
||||
else if ((fid & 0xff00) == (EE_CERTIFICATE_PREFIX << 8)) {
|
||||
|
||||
uint8_t pfx = fid >> 8;
|
||||
if (pfx == PRKD_PREFIX ||
|
||||
pfx == CD_PREFIX ||
|
||||
pfx == EE_CERTIFICATE_PREFIX ||
|
||||
pfx == DCOD_PREFIX ||
|
||||
pfx == DATA_PREFIX ||
|
||||
pfx == PROT_DATA_PREFIX) {
|
||||
if (!(pe = search_dynamic_file(fid)))
|
||||
return SW_FILE_NOT_FOUND();
|
||||
}
|
||||
@ -297,6 +295,14 @@ static int cmd_list_keys()
|
||||
res_APDU[res_APDU_size++] = f->fid & 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < dynamic_files; i++) {
|
||||
file_t *f = &dynamic_file[i];
|
||||
if ((f->fid & 0xff00) == (DCOD_PREFIX << 8)) {
|
||||
res_APDU[res_APDU_size++] = DCOD_PREFIX;
|
||||
res_APDU[res_APDU_size++] = f->fid & 0xff;
|
||||
}
|
||||
}
|
||||
return SW_OK();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user