Use search_file() method.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
Pol Henarejos 2024-04-17 19:19:45 +02:00
parent b034303193
commit 35d5d5e94e
No known key found for this signature in database
GPG key ID: C0095B7870A4CCD3
12 changed files with 24 additions and 24 deletions

View file

@ -113,7 +113,7 @@ int load_master_bip(uint16_t mid, mbedtls_ecp_keypair *ctx, uint8_t chain[32],
uint8_t key_type[1]) {
uint8_t mkey[65];
mbedtls_ecp_keypair_init(ctx);
file_t *ef = search_dynamic_file(EF_MASTER_SEED | mid);
file_t *ef = search_file(EF_MASTER_SEED | mid);
if (!file_has_data(ef)) {
return CCID_ERR_FILE_NOT_FOUND;
}

View file

@ -170,7 +170,7 @@ int cmd_cipher_sym() {
if (wait_button_pressed() == true) { // timeout
return SW_SECURE_MESSAGE_EXEC_ERROR();
}
file_t *ef = search_dynamic_file((KEY_PREFIX << 8) | key_id);
file_t *ef = search_file((KEY_PREFIX << 8) | key_id);
if (hd_keytype == 0) {
if (!ef) {
return SW_FILE_NOT_FOUND();

View file

@ -32,7 +32,7 @@ int cmd_decrypt_asym() {
if (!isUserAuthenticated) {
return SW_SECURITY_STATUS_NOT_SATISFIED();
}
file_t *ef = search_dynamic_file((KEY_PREFIX << 8) | key_id);
file_t *ef = search_file((KEY_PREFIX << 8) | key_id);
if (!ef) {
return SW_FILE_NOT_FOUND();
}
@ -174,7 +174,7 @@ int cmd_decrypt_asym() {
return SW_WRONG_DATA();
}
for (uint8_t n = 0; n < MAX_KEY_DOMAINS; n++) {
file_t *tf = search_dynamic_file(EF_XKEK + n);
file_t *tf = search_file(EF_XKEK + n);
if (tf) {
if (file_get_size(tf) == kdom_uid.len &&
memcmp(file_get_data(tf), kdom_uid.data, kdom_uid.len) == 0) {

View file

@ -25,13 +25,13 @@ int cmd_delete_file() {
if (apdu.nc == 0) {
ef = currentEF;
if (!(ef = search_dynamic_file(ef->fid))) {
if (!(ef = search_file(ef->fid))) {
return SW_FILE_NOT_FOUND();
}
}
else {
uint16_t fid = (apdu.data[0] << 8) | apdu.data[1];
if (!(ef = search_dynamic_file(fid))) {
if (!(ef = search_file(fid))) {
return SW_FILE_NOT_FOUND();
}
}

View file

@ -43,7 +43,7 @@ int cmd_derive_asym() {
if (!isUserAuthenticated) {
return SW_SECURITY_STATUS_NOT_SATISFIED();
}
if (!(fkey = search_dynamic_file((KEY_PREFIX << 8) | key_id)) || !file_has_data(fkey)) {
if (!(fkey = search_file((KEY_PREFIX << 8) | key_id)) || !file_has_data(fkey)) {
return SW_FILE_NOT_FOUND();
}
if (key_has_purpose(fkey, ALGO_EC_DERIVE) == false) {

View file

@ -89,7 +89,7 @@ int cmd_key_domain() {
low_flash_available();
}
else {
file_t *tf = search_dynamic_file(EF_XKEK + p2);
file_t *tf = search_file(EF_XKEK + p2);
if (2 * p2 >= tf_kd_size) {
return SW_INCORRECT_P1P2();
}
@ -104,7 +104,7 @@ int cmd_key_domain() {
}
if (p1 == 0x3) { //if key domain is not empty, command is denied
for (uint16_t i = 1; i < 256; i++) {
file_t *fkey = search_dynamic_file(KEY_PREFIX << 8 | (uint8_t)i);
file_t *fkey = search_file(KEY_PREFIX << 8 | (uint8_t)i);
if (get_key_domain(fkey) == p2) {
return SW_FILE_EXISTS();
}
@ -133,12 +133,12 @@ int cmd_key_domain() {
return SW_EXEC_ERROR();
}
file_t *tf = NULL;
if ((tf = search_dynamic_file(EF_DKEK + p2))) {
if ((tf = search_file(EF_DKEK + p2))) {
if (delete_file(tf) != CCID_OK) {
return SW_EXEC_ERROR();
}
}
if (p1 == 0x3 && (tf = search_dynamic_file(EF_XKEK + p2))) {
if (p1 == 0x3 && (tf = search_file(EF_XKEK + p2))) {
if (delete_file(tf) != CCID_OK) {
return SW_EXEC_ERROR();
}
@ -203,7 +203,7 @@ int cmd_key_domain() {
res_APDU[1] = dkeks > current_dkeks ? dkeks - current_dkeks : 0;
dkek_kcv(p2, res_APDU + 2);
res_APDU_size = 2 + 8;
file_t *tf = search_dynamic_file(EF_XKEK + p2);
file_t *tf = search_file(EF_XKEK + p2);
if (tf) {
memcpy(res_APDU + 10, file_get_data(tf), file_get_size(tf));
res_APDU_size += file_get_size(tf);

View file

@ -32,7 +32,7 @@ int cmd_key_wrap() {
if (!isUserAuthenticated) {
return SW_SECURITY_STATUS_NOT_SATISFIED();
}
file_t *ef = search_dynamic_file((KEY_PREFIX << 8) | key_id);
file_t *ef = search_file((KEY_PREFIX << 8) | key_id);
if (!ef) {
return SW_FILE_NOT_FOUND();
}
@ -49,7 +49,7 @@ int cmd_key_wrap() {
if (key_has_purpose(ef, ALGO_WRAP) == false) {
return SW_CONDITIONS_NOT_SATISFIED();
}
file_t *prkd = search_dynamic_file((PRKD_PREFIX << 8) | key_id);
file_t *prkd = search_file((PRKD_PREFIX << 8) | key_id);
if (!prkd) {
return SW_FILE_NOT_FOUND();
}

View file

@ -98,7 +98,7 @@ int cmd_keypair_gen() {
if (a92.data[0] > MAX_KEY_DOMAINS) {
return SW_WRONG_DATA();
}
file_t *tf_xkek = search_dynamic_file(EF_XKEK + a92.data[0]);
file_t *tf_xkek = search_file(EF_XKEK + a92.data[0]);
if (!tf_xkek) {
return SW_WRONG_DATA();
}

View file

@ -57,7 +57,7 @@ int cmd_mse() {
}
else if (p2 == 0xA4) { /* Aut */
for (uint8_t i = 0; i < MAX_PUK; i++) {
file_t *ef = search_dynamic_file(EF_PUK + i);
file_t *ef = search_file(EF_PUK + i);
if (!ef) {
break;
}

View file

@ -51,7 +51,7 @@ int cmd_pso() {
}
for (uint8_t i = 0; i < 0xfe; i++) {
uint16_t fid = (CA_CERTIFICATE_PREFIX << 8) | i;
file_t *ca_ef = search_dynamic_file(fid);
file_t *ca_ef = search_file(fid);
if (!ca_ef) {
ca_ef = file_new(fid);
file_put_data(ca_ef, apdu.data, (uint16_t)apdu.nc);

View file

@ -37,7 +37,7 @@ int cmd_puk_auth() {
return SW_INCORRECT_P1P2();
}
for (uint8_t i = 0; i < puk_data[0]; i++) {
ef = search_dynamic_file(EF_PUK + i);
ef = search_file(EF_PUK + i);
if (!ef) { /* Never should not happen */
return SW_MEMORY_FAILURE();
}
@ -56,7 +56,7 @@ int cmd_puk_auth() {
if (p2 >= puk_data[0]) {
return SW_INCORRECT_P1P2();
}
ef = search_dynamic_file(EF_PUK + p2);
ef = search_file(EF_PUK + p2);
if (!ef) { /* Never should not happen */
return SW_MEMORY_FAILURE();
}
@ -72,7 +72,7 @@ int cmd_puk_auth() {
if (p2 >= puk_data[0]) {
return SW_INCORRECT_P1P2();
}
file_t *ef = search_dynamic_file(EF_PUK + p2);
file_t *ef = search_file(EF_PUK + p2);
if (!ef) {
return SW_INCORRECT_P1P2();
}

View file

@ -109,7 +109,7 @@ int mse_decrypt_ct(uint8_t *data, size_t len) {
}
int load_dkek(uint8_t id, uint8_t *dkek) {
file_t *tf = search_dynamic_file(EF_DKEK + id);
file_t *tf = search_file(EF_DKEK + id);
if (!tf) {
return CCID_ERR_FILE_NOT_FOUND;
}
@ -172,7 +172,7 @@ int store_mkek(const uint8_t *mkek) {
}
int store_dkek_key(uint8_t id, uint8_t *dkek) {
file_t *tf = search_dynamic_file(EF_DKEK + id);
file_t *tf = search_file(EF_DKEK + id);
if (!tf) {
return CCID_ERR_FILE_NOT_FOUND;
}
@ -188,7 +188,7 @@ int store_dkek_key(uint8_t id, uint8_t *dkek) {
int save_dkek_key(uint8_t id, const uint8_t *key) {
uint8_t dkek[DKEK_KEY_SIZE];
if (!key) {
file_t *tf = search_dynamic_file(EF_DKEK + id);
file_t *tf = search_file(EF_DKEK + id);
if (!tf) {
return CCID_ERR_FILE_NOT_FOUND;
}
@ -202,7 +202,7 @@ int save_dkek_key(uint8_t id, const uint8_t *key) {
int import_dkek_share(uint8_t id, const uint8_t *share) {
uint8_t tmp_dkek[DKEK_KEY_SIZE];
file_t *tf = search_dynamic_file(EF_DKEK + id);
file_t *tf = search_file(EF_DKEK + id);
if (!tf) {
return CCID_ERR_FILE_NOT_FOUND;
}