Adding file chains for CC, CE and CD.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
21
file.c
21
file.c
@@ -133,6 +133,7 @@ file_t *file_sopin = NULL;
|
|||||||
file_t *file_retries_sopin = NULL;
|
file_t *file_retries_sopin = NULL;
|
||||||
|
|
||||||
file_chain_t *ef_prkdf = NULL;
|
file_chain_t *ef_prkdf = NULL;
|
||||||
|
file_chain_t *ef_kf = NULL;
|
||||||
file_chain_t *ef_pukdf = NULL;
|
file_chain_t *ef_pukdf = NULL;
|
||||||
file_chain_t *ef_cdf = NULL;
|
file_chain_t *ef_cdf = NULL;
|
||||||
|
|
||||||
@@ -278,12 +279,21 @@ void scan_flash() {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
uint16_t fid = flash_read_uint16(base+sizeof(uintptr_t));
|
uint16_t fid = flash_read_uint16(base+sizeof(uintptr_t));
|
||||||
|
printf("scan fid %x\r\n",fid);
|
||||||
file_t *file = (file_t *)search_by_fid(fid, NULL, SPECIFY_EF);
|
file_t *file = (file_t *)search_by_fid(fid, NULL, SPECIFY_EF);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
if ((fid & 0xff00) == (KEY_PREFIX << 8)) {
|
if ((fid & 0xff00) == (KEY_PREFIX << 8)) {
|
||||||
|
file = file_new(fid);
|
||||||
|
add_file_to_chain(file, &ef_kf);
|
||||||
|
}
|
||||||
|
else if ((fid & 0xff00) == (PRKD_PREFIX << 8)) {
|
||||||
file = file_new(fid);
|
file = file_new(fid);
|
||||||
add_file_to_chain(file, &ef_prkdf);
|
add_file_to_chain(file, &ef_prkdf);
|
||||||
}
|
}
|
||||||
|
else if ((fid & 0xff00) == (CD_PREFIX << 8)) {
|
||||||
|
file = file_new(fid);
|
||||||
|
add_file_to_chain(file, &ef_cdf);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
TU_LOG1("SCAN FOUND ORPHAN FILE: %x\r\n",fid);
|
TU_LOG1("SCAN FOUND ORPHAN FILE: %x\r\n",fid);
|
||||||
continue;
|
continue;
|
||||||
@@ -387,7 +397,7 @@ file_t *file_new(uint16_t fid) {
|
|||||||
.acl = {0}
|
.acl = {0}
|
||||||
};
|
};
|
||||||
memcpy(f, &file, sizeof(file_t));
|
memcpy(f, &file, sizeof(file_t));
|
||||||
memset((uint8_t *)f->acl, 0x90, sizeof(f->acl));
|
//memset((uint8_t *)f->acl, 0x90, sizeof(f->acl));
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -397,4 +407,13 @@ file_chain_t *add_file_to_chain(file_t *file, file_chain_t **chain) {
|
|||||||
f_chain->next = *chain;
|
f_chain->next = *chain;
|
||||||
*chain = f_chain;
|
*chain = f_chain;
|
||||||
return f_chain;
|
return f_chain;
|
||||||
|
}
|
||||||
|
|
||||||
|
file_t *search_file_chain(uint16_t fid, file_chain_t *chain) {
|
||||||
|
for (file_chain_t *fc = chain; fc; fc = fc->next) {
|
||||||
|
if (fid == fc->file->fid) {
|
||||||
|
return fc->file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
9
file.h
9
file.h
@@ -87,11 +87,14 @@ extern uint16_t file_read_uint16(const uint8_t *addr);
|
|||||||
extern uint8_t file_read_uint8(const uint8_t *addr);
|
extern uint8_t file_read_uint8(const uint8_t *addr);
|
||||||
extern file_t *file_new(uint16_t);
|
extern file_t *file_new(uint16_t);
|
||||||
|
|
||||||
extern file_chain_t *ef_prkdf;
|
extern file_chain_t *ef_prkdf; //key description
|
||||||
extern file_chain_t *ef_pukdf;
|
extern file_chain_t *ef_kf; //key blob
|
||||||
extern file_chain_t *ef_cdf;
|
extern file_chain_t *ef_pukdf; //cvc csr
|
||||||
|
extern file_chain_t *ef_cdf; //ce
|
||||||
|
|
||||||
extern file_chain_t *add_file_to_chain(file_t *file, file_chain_t **chain);
|
extern file_chain_t *add_file_to_chain(file_t *file, file_chain_t **chain);
|
||||||
|
extern file_t *search_file_chain(uint16_t fid, file_chain_t *chain);
|
||||||
|
extern bool isUserAuthenticated;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user