diff --git a/src/nano/nanos_enter_phrase.c b/src/nano/nanos_enter_phrase.c index fb85be5d..fa830c1a 100644 --- a/src/nano/nanos_enter_phrase.c +++ b/src/nano/nanos_enter_phrase.c @@ -229,14 +229,18 @@ void compare_recovery_phrase(void) { cx_hmac_sha512_t ctx; const char key[] = "Bitcoin seed"; - cx_hmac_sha512_init(&ctx, (const uint8_t*) key, strlen(key)); - cx_hmac((cx_hmac_t*) &ctx, CX_LAST, buffer, 64, buffer, 64); + cx_hmac_sha512_init_no_throw(&ctx, (const uint8_t*) key, strlen(key)); + cx_hmac_no_throw((cx_hmac_t*) &ctx, CX_LAST, buffer, 64, buffer, 64); PRINTF("Root key from input:\n%.*H\n", 64, buffer); // get rootkey from device's seed uint8_t buffer_device[64]; - os_perso_derive_node_bip32(CX_CURVE_256K1, NULL, 0, buffer_device, buffer_device + 32); + if (os_derive_bip32_no_throw(CX_CURVE_256K1, NULL, 0, buffer_device, buffer_device + 32) != + CX_OK) { + PRINTF("An error occurred while comparing the recovery phrase\n"); + return; + } PRINTF("Root key from device: \n%.*H\n", 64, buffer_device); // compare both rootkey diff --git a/src/nano/nanox_enter_phrase.c b/src/nano/nanox_enter_phrase.c index 77d3f617..39f9bbda 100644 --- a/src/nano/nanox_enter_phrase.c +++ b/src/nano/nanox_enter_phrase.c @@ -397,7 +397,7 @@ const bagl_element_t* screen_onboarding_4_restore_word_before_element_display_ca return element; } -uint8_t compare_recovery_phrase(void) { +static uint8_t compare_recovery_phrase(void) { // convert mnemonic to hex-seed uint8_t buffer[64]; @@ -410,14 +410,18 @@ uint8_t compare_recovery_phrase(void) { cx_hmac_sha512_t ctx; const char key[] = "Bitcoin seed"; - cx_hmac_sha512_init(&ctx, (const uint8_t*) key, strlen(key)); - cx_hmac((cx_hmac_t*) &ctx, CX_LAST, buffer, 64, buffer, 64); + cx_hmac_sha512_init_no_throw(&ctx, (const uint8_t*) key, strlen(key)); + cx_hmac_no_throw((cx_hmac_t*) &ctx, CX_LAST, buffer, 64, buffer, 64); PRINTF("Root key from input:\n%.*H\n", 64, buffer); // get rootkey from device's seed uint8_t buffer_device[64]; - os_perso_derive_node_bip32(CX_CURVE_256K1, NULL, 0, buffer_device, buffer_device + 32); + if (os_derive_bip32_no_throw(CX_CURVE_256K1, NULL, 0, buffer_device, buffer_device + 32) != + CX_OK) { + PRINTF("An error occurred while comparing the recovery phrase\n"); + return 0; + } PRINTF("Root key from device: \n%.*H\n", 64, buffer_device); // compare both rootkey