Skip to content

Commit 42e893f

Browse files
committed
fix(app): Auth wallet nfc updates
1 parent 836e6df commit 42e893f

File tree

4 files changed

+31
-25
lines changed

4 files changed

+31
-25
lines changed

apps/inheritance_app/inheritance_auth_wallet.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
*****************************************************************************/
3838
#define CHALLENGE_SIZE_MAX 32
3939
#define CHALLENGE_SIZE_MIN 16
40-
#define ENTROPY_SIZE_LIMIT 100 // TODO:CONFIRM
40+
#define ENTROPY_SIZE_LIMIT 100
4141

4242
/*****************************************************************************
4343
* PRIVATE TYPEDEFS
@@ -137,11 +137,14 @@ static bool auth_wallet_get_signature();
137137
*****************************************************************************/
138138

139139
static bool verify_auth_wallet_inputs() {
140-
ASSERT(auth->challenge != 0);
141-
ASSERT(auth->wallet_id != 0);
142-
ASSERT(auth->challenge_size != 0);
143-
ASSERT(CHALLENGE_SIZE_MIN <= auth->challenge_size &&
144-
auth->challenge_size <= CHALLENGE_SIZE_MAX);
140+
if (NULL == auth->challenge || NULL == auth->wallet_id ||
141+
auth->challenge_size ||
142+
(CHALLENGE_SIZE_MIN <= auth->challenge_size &&
143+
auth->challenge_size <= CHALLENGE_SIZE_MAX)) {
144+
inheritance_send_error(ERROR_COMMON_ERROR_CORRUPT_DATA_TAG,
145+
ERROR_DATA_FLOW_INVALID_QUERY);
146+
return false;
147+
}
145148

146149
return true;
147150
}
@@ -216,22 +219,19 @@ void inheritance_wallet_login(inheritance_query_t *query) {
216219
auth->is_setup = query->auth_wallet.initiate.is_public_key;
217220

218221
set_app_flow_status(INHERITANCE_AUTH_WALLET_STATUS_INIT);
219-
if (!verify_auth_wallet_inputs(auth) || !auth_wallet_get_entropy(auth) ||
220-
!auth_wallet_get_pairs(auth) || !auth_wallet_get_signature(auth)) {
222+
if (!verify_auth_wallet_inputs() || !auth_wallet_get_entropy() ||
223+
!auth_wallet_get_pairs() || !auth_wallet_get_signature()) {
221224
inheritance_send_error(ERROR_COMMON_ERROR_CORRUPT_DATA_TAG,
222225
ERROR_DATA_FLOW_INVALID_DATA);
223-
// Set App flow status
224226
delay_scr_init(ui_text_inheritance_wallet_auth_fail, DELAY_TIME);
225227
return;
226228
}
227-
// Set App flow status
228229
delay_scr_init(ui_text_inheritance_wallet_auth_success, DELAY_TIME);
229230

230231
inheritance_result_t result = INHERITANCE_RESULT_INIT_ZERO;
231232
result.which_response = INHERITANCE_RESULT_AUTH_WALLET_TAG;
232233
result.auth_wallet.which_response =
233234
INHERITANCE_AUTH_WALLET_RESPONSE_RESULT_TAG;
234-
// send public key if Setup
235235
memcpy(result.auth_wallet.result.signature,
236236
auth->signature,
237237
sizeof(ed25519_signature));

common/interfaces/card_interface/apdu.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,6 @@ uint16_t create_apdu_inheritance(const uint8_t name[NAME_SIZE],
428428
ASSERT(data != NULL);
429429
ASSERT(apdu != NULL);
430430
ASSERT(data_size != 0);
431-
ASSERT(operation != 0);
432431

433432
apdu[OFFSET_CLA] = CLA_ISO7816;
434433
apdu[OFFSET_INS] = APDU_INHERITANCE;

common/interfaces/card_interface/nfc.c

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -545,9 +545,10 @@ ISO7816 nfc_encrypt_data(const uint8_t name[NAME_SIZE],
545545
uint16_t *encrypted_data_size) {
546546
ASSERT(name != NULL);
547547
ASSERT(plain_data != NULL);
548+
ASSERT(plain_data_size != 0);
548549
ASSERT(encrypted_data != NULL);
549-
ASSERT(encrypted_data_size != NULL);
550550

551+
#if USE_SIMULATOR == 0
551552
ISO7816 status_word = CLA_ISO7816;
552553
uint8_t send_apdu[600] = {0}, *recv_apdu = send_apdu;
553554
uint16_t send_len = 0, recv_len = 236;
@@ -562,6 +563,9 @@ ISO7816 nfc_encrypt_data(const uint8_t name[NAME_SIZE],
562563
uint32_t system_clock = uwTick;
563564
ret_code_t err_code =
564565
nfc_exchange_apdu(send_apdu, send_len, recv_apdu, &recv_len);
566+
567+
uint8_t tmp[236];
568+
memcpy(tmp, recv_apdu, 236);
565569
LOG_SWV("Encrypt data in %lums\n", uwTick - system_clock);
566570

567571
if (err_code != STM_SUCCESS) {
@@ -572,13 +576,19 @@ ISO7816 nfc_encrypt_data(const uint8_t name[NAME_SIZE],
572576

573577
if (status_word == SW_NO_ERROR) {
574578
// Extracting Data from APDU
575-
*encrypted_data_size = recv_apdu[1];
576-
memcpy(encrypted_data, recv_apdu + 2, recv_apdu[1]);
579+
*encrypted_data_size = recv_len - 5;
580+
memcpy(encrypted_data, recv_apdu + 3, recv_len - 5);
577581
}
578582
}
579-
580583
memzero(recv_apdu, sizeof(send_apdu));
581584
return status_word;
585+
#else
586+
// TODO: Standardize simulator/test wallet info
587+
memcpy(name, "FIRST", 5);
588+
memcpy(encrypted_data, name, 1);
589+
memcpy(encrypted_data + 1, plain_data, plain_data_size);
590+
*encrypted_data_size = 1 + plain_data_size;
591+
#endif
582592
}
583593

584594
ISO7816 nfc_decrypt_data(const uint8_t name[NAME_SIZE],
@@ -605,6 +615,9 @@ ISO7816 nfc_decrypt_data(const uint8_t name[NAME_SIZE],
605615
uint32_t system_clock = uwTick;
606616
ret_code_t err_code =
607617
nfc_exchange_apdu(send_apdu, send_len, recv_apdu, &recv_len);
618+
619+
uint8_t tmp[236];
620+
memcpy(tmp, recv_apdu, 236);
608621
LOG_SWV("Decrypt data in %lums\n", uwTick - system_clock);
609622
if (err_code != STM_SUCCESS) {
610623
return err_code;
@@ -614,8 +627,8 @@ ISO7816 nfc_decrypt_data(const uint8_t name[NAME_SIZE],
614627

615628
if (status_word == SW_NO_ERROR) {
616629
// Extracting Data from APDU
617-
*plain_data_size = recv_apdu[1];
618-
memcpy(plain_data, recv_apdu + 2, recv_apdu[1]);
630+
*plain_data_size = recv_len - 5;
631+
memcpy(plain_data, recv_apdu + 3, recv_len - 5);
619632
}
620633
}
621634

src/card_operations/card_fetch_encrypt_data.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,12 +153,6 @@ card_error_type_e card_fetch_encrypt_data(uint8_t *wallet_id,
153153
encrypted_data_buffer,
154154
&encrypted_data_buffer_size);
155155
#else
156-
memcpy(wallet_name, "FIRST", 5);
157-
dummy_nfc_encrypt_data(wallet_name,
158-
plain_data_buffer,
159-
plain_data_buffer_size,
160-
encrypted_data_buffer,
161-
&encrypted_data_buffer_size);
162156
card_data.nfc_data.status = SW_NO_ERROR;
163157
result = CARD_OPERATION_SUCCESS;
164158
#endif
@@ -209,4 +203,4 @@ card_error_type_e card_fetch_encrypt_data(uint8_t *wallet_id,
209203
nfc_deselect_card();
210204
#endif
211205
return result;
212-
}
206+
}

0 commit comments

Comments
 (0)