diff --git a/src/constants.h b/src/constants.h index 6dec3b32..1f91b447 100644 --- a/src/constants.h +++ b/src/constants.h @@ -57,11 +57,13 @@ typedef enum { BLIND_SIGNING_ENABLED = true, BLIND_SIGNING_DISABLED = false } bl #define MAX_ESDT_TRANSFER_DATA_SIZE 100 #define MAX_DATA_SIZE 400 // 400 in base64 = 300 in ASCII #ifdef HAVE_BAGL -#define MAX_DISPLAY_DATA_SIZE 64UL // must be multiple of 4 +#define MAX_DISPLAY_DATA_SIZE 64UL // must be multiple of 4 +#define MAX_DISPLAY_MESSAGE_SIZE 64UL // must be multiple of 4 #else // must be multiple of 4 // must be <= MAX_VALUE_LEN -#define MAX_DISPLAY_DATA_SIZE 128UL +#define MAX_DISPLAY_DATA_SIZE 128UL +#define MAX_DISPLAY_MESSAGE_SIZE 128UL #endif #define DATA_SIZE_LEN 17 #define MAX_CHAINID_LEN 4 @@ -91,7 +93,8 @@ typedef enum { BLIND_SIGNING_ENABLED = true, BLIND_SIGNING_DISABLED = false } bl #define SHA3_KECCAK_BITS 256 #define PUBLIC_KEY_LEN 32 #define BASE_10 10 -#define TX_SIGN_FLOW_SIZE 10 +#define TX_SIGN_FLOW_SIZE 15 +#define MSG_SIGN_FLOW_SIZE 10 #define ESDT_TRANSFER_FLOW_SIZE 10 #define BASE_64_INVALID_CHAR '?' #define SC_ARGS_SEPARATOR '@' diff --git a/src/sign_msg.c b/src/sign_msg.c index 732023eb..e106645e 100644 --- a/src/sign_msg.c +++ b/src/sign_msg.c @@ -2,6 +2,7 @@ #include "get_private_key.h" #include "utils.h" #include "menu.h" +#include "parse_tx.h" #ifdef HAVE_NBGL #include "nbgl_use_case.h" @@ -11,6 +12,8 @@ typedef struct { uint32_t len; uint8_t hash[HASH_LEN]; char strhash[2 * HASH_LEN + 1]; + char message[MAX_DISPLAY_MESSAGE_SIZE + 1]; + uint16_t message_received_length; uint8_t signature[MESSAGE_SIGNATURE_LEN]; } msg_context_t; @@ -33,49 +36,59 @@ static uint8_t set_result_signature() { #if defined(TARGET_STAX) || defined(TARGET_FLEX) -static nbgl_layoutTagValueList_t layout; -static nbgl_layoutTagValue_t pairs_list[1]; - -static const nbgl_pageInfoLongPress_t review_final_long_press = { - .text = "Sign message on\n" APPNAME " network?", - .icon = &C_icon_multiversx_logo_64x64, - .longPressText = "Hold to sign", - .longPressToken = 0, - .tuneId = TUNE_TAP_CASUAL, -}; +static nbgl_contentTagValueList_t content; +static nbgl_contentTagValue_t content_pairs_list[2]; static void review_final_callback(bool confirmed) { if (confirmed) { int tx = set_result_signature(); send_response(tx, true, false); - nbgl_useCaseStatus("MESSAGE\nSIGNED", true, ui_idle); + nbgl_useCaseStatus("Message\nsigned", true, ui_idle); } else { - nbgl_reject_message_choice(); + send_response(0, false, false); + nbgl_useCaseStatus("Message\nrejected", false, ui_idle); } } -static void start_review(void) { - layout.nbMaxLinesForValue = 0; - layout.smallCaseForValue = false; - layout.wrapping = true; - layout.pairs = pairs_list; - pairs_list[0].item = "hash"; - pairs_list[0].value = msg_context.strhash; - layout.nbPairs = ARRAY_COUNT(pairs_list); - - nbgl_useCaseStaticReview(&layout, - &review_final_long_press, - "Reject message", - review_final_callback); +static void make_content_list(void) { + uint8_t step = 0; + + content_pairs_list[step].item = "Hash"; + content_pairs_list[step++].value = msg_context.strhash; + content_pairs_list[step].item = "Message"; + content_pairs_list[step++].value = msg_context.message; + + content.pairs = content_pairs_list; + content.callback = NULL; + content.nbPairs = step; + content.startIndex = 0; + content.nbMaxLinesForValue = 2; + content.token = 0; + content.smallCaseForValue = false; + content.wrapping = true; + content.actionCallback = NULL; } static void ui_sign_message_nbgl(void) { - nbgl_useCaseReviewStart(&C_icon_multiversx_logo_64x64, - "Review message to\nsign on " APPNAME "\nnetwork", - "", - "Reject message", - start_review, - nbgl_reject_message_choice); + make_content_list(); + if (found_non_printable_chars) { + nbgl_useCaseReviewBlindSigning(TYPE_MESSAGE, + &content, + &C_icon_multiversx_logo_64x64, + "Review message to\nsign on " APPNAME "\nnetwork", + "", + "Accept risk and sign message?", + NULL, + review_final_callback); + } else { + nbgl_useCaseReview(TYPE_MESSAGE, + &content, + &C_icon_multiversx_logo_64x64, + "Review message to\nsign on " APPNAME "\nnetwork", + "", + "Sign message on\n" APPNAME " network?", + review_final_callback); + } } #else @@ -87,14 +100,20 @@ UX_STEP_NOCB(ux_sign_msg_flow_14_step, .title = "Hash", .text = msg_context.strhash, }); -UX_STEP_VALID(ux_sign_msg_flow_15_step, +UX_STEP_NOCB(ux_sign_msg_flow_15_step, + bnnn_paging, + { + .title = "Message", + .text = msg_context.message, + }); +UX_STEP_VALID(ux_sign_msg_flow_16_step, pb, send_response(set_result_signature(), true, true), { &C_icon_validate_14, "Sign message", }); -UX_STEP_VALID(ux_sign_msg_flow_16_step, +UX_STEP_VALID(ux_sign_msg_flow_17_step, pb, send_response(0, false, true), { @@ -105,10 +124,88 @@ UX_STEP_VALID(ux_sign_msg_flow_16_step, UX_FLOW(ux_sign_msg_flow, &ux_sign_msg_flow_14_step, &ux_sign_msg_flow_15_step, - &ux_sign_msg_flow_16_step); + &ux_sign_msg_flow_16_step, + &ux_sign_msg_flow_17_step); + +// UI for blind signing +UX_STEP_CB(ux_warning_error_blind_signing_msg_1_step, + bnnn_paging, + ui_idle(), + { + "Blind signing disabled", + "Enable in Settings", + }); + +UX_STEP_VALID(ux_warning_error_blind_signing_msg_2_step, + pb, + send_response(0, false, true), + { + &C_icon_crossmark, + "Back", + }); + +UX_STEP_NOCB(ux_warning_blind_signing_msg_ahead_step, + pb, + { + &C_icon_warning, + "Blind signing", + }); + +UX_STEP_NOCB(ux_warning_accept_blind_signing_msg_step, + pb, + { + &C_icon_warning, + "Accept risk and", + }); + +UX_FLOW(ux_error_blind_signing_disabled_msg_flow, + &ux_warning_error_blind_signing_msg_1_step, + &ux_warning_error_blind_signing_msg_2_step); + +UX_FLOW(ux_blind_sign_msg_flow, + &ux_warning_blind_signing_msg_ahead_step, + &ux_sign_msg_flow_14_step, + &ux_sign_msg_flow_15_step, + &ux_warning_accept_blind_signing_msg_step, + &ux_sign_msg_flow_16_step, + &ux_sign_msg_flow_17_step); #endif +static bool verify_message(char *message, size_t len) { + bool has_non_printable_chars = false; + for (size_t i = 0; i < len; i++) { + if ((message[i] > 0 && message[i] < 9) || (message[i] > 13 && message[i] < 32) || + message[i] > 126) { + message[i] = '?'; + has_non_printable_chars = true; + } + } + return has_non_printable_chars; +} + +static void process_message(uint8_t *message, size_t data_length) { + uint16_t length_to_copy = + MIN(data_length, MAX_DISPLAY_MESSAGE_SIZE - msg_context.message_received_length); + if (length_to_copy > 0) { + memcpy(msg_context.message + msg_context.message_received_length, message, length_to_copy); + + bool result = verify_message(msg_context.message + msg_context.message_received_length, + length_to_copy); + if (result) { + found_non_printable_chars = true; + } + } + msg_context.message_received_length += data_length; + + if (msg_context.message_received_length > MAX_DISPLAY_MESSAGE_SIZE) { + char ellipsis[3] = "..."; + int ellipsisLen = strlen(ellipsis); + memcpy(msg_context.message + MAX_DISPLAY_MESSAGE_SIZE - ellipsisLen, ellipsis, ellipsisLen); + } + msg_context.message[MAX_DISPLAY_MESSAGE_SIZE] = '\0'; +} + static bool sign_message(void) { cx_ecfp_private_key_t private_key; bool success = true; @@ -158,6 +255,11 @@ void handle_sign_msg(uint8_t p1, msg_context.len = U4BE(data_buffer, 0); data_buffer += 4; data_length -= 4; + + found_non_printable_chars = false; + msg_context.message_received_length = 0; + memset(msg_context.message, 0, sizeof(msg_context.message)); + // initialize hash with the constant string to prepend err = cx_keccak_init_no_throw(&sha3_context, SHA3_KECCAK_BITS); if (err != CX_OK) { @@ -199,6 +301,9 @@ void handle_sign_msg(uint8_t p1, THROW(ERR_MESSAGE_TOO_LONG); } + // add the received message part to the message buffer + process_message(data_buffer, data_length); + // add the received message part to the hash and decrease the remaining length err = cx_hash_no_throw((cx_hash_t *) &sha3_context, 0, data_buffer, data_length, NULL, 0); if (err != CX_OK) { @@ -234,9 +339,21 @@ void handle_sign_msg(uint8_t p1, app_state = APP_STATE_IDLE; #if defined(TARGET_STAX) || defined(TARGET_FLEX) - ui_sign_message_nbgl(); + if (found_non_printable_chars && N_storage.setting_blind_signing == 0) { + disabled_blind_signing_msg_warn(); + } else { + ui_sign_message_nbgl(); + } #else - ux_flow_init(0, ux_sign_msg_flow, NULL); + if (found_non_printable_chars && N_storage.setting_blind_signing == 0) { + ux_flow_init(0, ux_error_blind_signing_disabled_msg_flow, NULL); + } else { + if (found_non_printable_chars) { + ux_flow_init(0, ux_blind_sign_msg_flow, NULL); + } else { + ux_flow_init(0, ux_sign_msg_flow, NULL); + } + } #endif *flags |= IO_ASYNCH_REPLY; } diff --git a/src/sign_tx_hash.c b/src/sign_tx_hash.c index 8fa56090..036b957a 100644 --- a/src/sign_tx_hash.c +++ b/src/sign_tx_hash.c @@ -103,31 +103,13 @@ static void review_final_callback(bool confirmed) { if (confirmed) { int tx = set_result_signature(); send_response(tx, true, false); - nbgl_useCaseStatus("TRANSACTION\nSIGNED", true, ui_idle); + nbgl_useCaseStatus("Transaction\nsigned", true, ui_idle); } else { send_response(0, false, false); nbgl_useCaseStatus("Transaction\nrejected", false, ui_idle); } } -static void disabled_blind_signing_choice(bool confirm) { - send_response(0, false, false); - if (confirm) { - ui_settings(); - } else { - nbgl_useCaseStatus("Transaction\nrejected", false, ui_idle); - } -} - -void disabled_blind_signing_warn(void) { - nbgl_useCaseChoice(NULL, - "This transaction cannot be clear-signed", - "Enable blind signing in the settings to sign this transaction.", - "Go to settings", - "Reject transaction", - disabled_blind_signing_choice); -} - static void update_pair(nbgl_contentTagValue_t *pair, const char *item, const char *value) { pair->item = item; pair->value = value; @@ -483,7 +465,7 @@ void handle_sign_tx_hash(uint8_t p1, #if defined(TARGET_STAX) || defined(TARGET_FLEX) if (found_non_printable_chars && N_storage.setting_blind_signing == 0) { - disabled_blind_signing_warn(); + disabled_blind_signing_tx_warn(); } else { ui_sign_tx_hash_nbgl(); } diff --git a/src/utils.c b/src/utils.c index 11728ece..ff3bf8ef 100644 --- a/src/utils.c +++ b/src/utils.c @@ -373,4 +373,40 @@ void nbgl_reject_transaction_choice(void) { transaction_rejection); } +static void disabled_blind_signing_tx_choice(bool confirm) { + send_response(0, false, false); + if (confirm) { + ui_settings(); + } else { + nbgl_useCaseStatus("Transaction\nrejected", false, ui_idle); + } +} + +static void disabled_blind_signing_msg_choice(bool confirm) { + send_response(0, false, false); + if (confirm) { + ui_settings(); + } else { + nbgl_useCaseStatus("Message\nrejected", false, ui_idle); + } +} + +void disabled_blind_signing_tx_warn(void) { + nbgl_useCaseChoice(NULL, + "This transaction cannot be clear-signed", + "Enable blind signing in the settings to sign this transaction.", + "Go to settings", + "Reject transaction", + disabled_blind_signing_tx_choice); +} + +void disabled_blind_signing_msg_warn(void) { + nbgl_useCaseChoice(NULL, + "This message cannot be clear-signed", + "Enable blind signing in the settings to sign this message.", + "Go to settings", + "Reject message", + disabled_blind_signing_msg_choice); +} + #endif diff --git a/src/utils.h b/src/utils.h index 83ace574..3db79129 100644 --- a/src/utils.h +++ b/src/utils.h @@ -29,5 +29,7 @@ void convert_to_hex_str(char* destination, void nbgl_reject_message_choice(void); void nbgl_reject_transaction_choice(void); +void disabled_blind_signing_tx_warn(void); +void disabled_blind_signing_msg_warn(void); #endif diff --git a/tests/snapshots/flex/test_blind_sign_msg_confirmed/00000.png b/tests/snapshots/flex/test_blind_sign_msg_confirmed/00000.png new file mode 100644 index 00000000..d17942d0 Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_confirmed/00000.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_confirmed/00001.png b/tests/snapshots/flex/test_blind_sign_msg_confirmed/00001.png new file mode 100644 index 00000000..f34c1b7c Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_confirmed/00001.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_confirmed/00002.png b/tests/snapshots/flex/test_blind_sign_msg_confirmed/00002.png new file mode 100644 index 00000000..02caa362 Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_confirmed/00002.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_confirmed/00003.png b/tests/snapshots/flex/test_blind_sign_msg_confirmed/00003.png new file mode 100644 index 00000000..979292ce Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_confirmed/00003.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_confirmed/00004.png b/tests/snapshots/flex/test_blind_sign_msg_confirmed/00004.png new file mode 100644 index 00000000..a49400fb Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_confirmed/00004.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_rejected/00000.png b/tests/snapshots/flex/test_blind_sign_msg_rejected/00000.png new file mode 100644 index 00000000..d17942d0 Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_rejected/00000.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_rejected/00001.png b/tests/snapshots/flex/test_blind_sign_msg_rejected/00001.png new file mode 100644 index 00000000..f34c1b7c Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_rejected/00001.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_rejected/00002.png b/tests/snapshots/flex/test_blind_sign_msg_rejected/00002.png new file mode 100644 index 00000000..02caa362 Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_rejected/00002.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_rejected/00003.png b/tests/snapshots/flex/test_blind_sign_msg_rejected/00003.png new file mode 100644 index 00000000..979292ce Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_rejected/00003.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_rejected/00004.png b/tests/snapshots/flex/test_blind_sign_msg_rejected/00004.png new file mode 100644 index 00000000..2b40ba7b Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_rejected/00004.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_rejected/00005.png b/tests/snapshots/flex/test_blind_sign_msg_rejected/00005.png new file mode 100644 index 00000000..c0f86bca Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_rejected/00005.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00000.png b/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00000.png new file mode 100644 index 00000000..1b0ba132 Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00000.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00001.png b/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00001.png new file mode 100644 index 00000000..71ff79a2 Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00001.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00002.png b/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00002.png new file mode 100644 index 00000000..3edcf7b8 Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00002.png differ diff --git a/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00003.png b/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00003.png new file mode 100644 index 00000000..52ef4754 Binary files /dev/null and b/tests/snapshots/flex/test_blind_sign_msg_when_blind_sign_disabled/00003.png differ diff --git a/tests/snapshots/flex/test_blind_sign_tx_valid_simple_data_confirmed/00007.png b/tests/snapshots/flex/test_blind_sign_tx_valid_simple_data_confirmed/00007.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_blind_sign_tx_valid_simple_data_confirmed/00007.png and b/tests/snapshots/flex/test_blind_sign_tx_valid_simple_data_confirmed/00007.png differ diff --git a/tests/snapshots/flex/test_sign_msg_long/00000.png b/tests/snapshots/flex/test_sign_msg_long/00000.png index 029e898c..3ab66a61 100644 Binary files a/tests/snapshots/flex/test_sign_msg_long/00000.png and b/tests/snapshots/flex/test_sign_msg_long/00000.png differ diff --git a/tests/snapshots/flex/test_sign_msg_long/00001.png b/tests/snapshots/flex/test_sign_msg_long/00001.png index 413b847b..d2a4851e 100644 Binary files a/tests/snapshots/flex/test_sign_msg_long/00001.png and b/tests/snapshots/flex/test_sign_msg_long/00001.png differ diff --git a/tests/snapshots/flex/test_sign_msg_long/00002.png b/tests/snapshots/flex/test_sign_msg_long/00002.png index f19ed9e6..b74f80ad 100644 Binary files a/tests/snapshots/flex/test_sign_msg_long/00002.png and b/tests/snapshots/flex/test_sign_msg_long/00002.png differ diff --git a/tests/snapshots/flex/test_sign_msg_long/00003.png b/tests/snapshots/flex/test_sign_msg_long/00003.png index d9fe8e8f..c2b92b08 100644 Binary files a/tests/snapshots/flex/test_sign_msg_long/00003.png and b/tests/snapshots/flex/test_sign_msg_long/00003.png differ diff --git a/tests/snapshots/flex/test_sign_msg_long/00004.png b/tests/snapshots/flex/test_sign_msg_long/00004.png index 52ef4754..a49400fb 100644 Binary files a/tests/snapshots/flex/test_sign_msg_long/00004.png and b/tests/snapshots/flex/test_sign_msg_long/00004.png differ diff --git a/tests/snapshots/flex/test_sign_msg_long/00005.png b/tests/snapshots/flex/test_sign_msg_long/00005.png new file mode 100644 index 00000000..52ef4754 Binary files /dev/null and b/tests/snapshots/flex/test_sign_msg_long/00005.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_ok/00000.png b/tests/snapshots/flex/test_sign_msg_short_ok/00000.png index 029e898c..881f6ab1 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_ok/00000.png and b/tests/snapshots/flex/test_sign_msg_short_ok/00000.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_ok/00002.png b/tests/snapshots/flex/test_sign_msg_short_ok/00002.png index 029e898c..881f6ab1 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_ok/00002.png and b/tests/snapshots/flex/test_sign_msg_short_ok/00002.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_ok/00003.png b/tests/snapshots/flex/test_sign_msg_short_ok/00003.png index b29bb17c..76f715ed 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_ok/00003.png and b/tests/snapshots/flex/test_sign_msg_short_ok/00003.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_ok/00004.png b/tests/snapshots/flex/test_sign_msg_short_ok/00004.png index f19ed9e6..19bd16f1 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_ok/00004.png and b/tests/snapshots/flex/test_sign_msg_short_ok/00004.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_ok/00005.png b/tests/snapshots/flex/test_sign_msg_short_ok/00005.png index b29bb17c..76f715ed 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_ok/00005.png and b/tests/snapshots/flex/test_sign_msg_short_ok/00005.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_ok/00007.png b/tests/snapshots/flex/test_sign_msg_short_ok/00007.png index b29bb17c..76f715ed 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_ok/00007.png and b/tests/snapshots/flex/test_sign_msg_short_ok/00007.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_ok/00008.png b/tests/snapshots/flex/test_sign_msg_short_ok/00008.png index f19ed9e6..19bd16f1 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_ok/00008.png and b/tests/snapshots/flex/test_sign_msg_short_ok/00008.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_ok/00009.png b/tests/snapshots/flex/test_sign_msg_short_ok/00009.png index d9fe8e8f..a49400fb 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_ok/00009.png and b/tests/snapshots/flex/test_sign_msg_short_ok/00009.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_rejected/00000.png b/tests/snapshots/flex/test_sign_msg_short_rejected/00000.png index 029e898c..881f6ab1 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_rejected/00000.png and b/tests/snapshots/flex/test_sign_msg_short_rejected/00000.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_rejected/00001.png b/tests/snapshots/flex/test_sign_msg_short_rejected/00001.png index b29bb17c..76f715ed 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_rejected/00001.png and b/tests/snapshots/flex/test_sign_msg_short_rejected/00001.png differ diff --git a/tests/snapshots/flex/test_sign_msg_short_rejected/00002.png b/tests/snapshots/flex/test_sign_msg_short_rejected/00002.png index f19ed9e6..19bd16f1 100644 Binary files a/tests/snapshots/flex/test_sign_msg_short_rejected/00002.png and b/tests/snapshots/flex/test_sign_msg_short_rejected/00002.png differ diff --git a/tests/snapshots/flex/test_sign_tx_valid_esdt_transfer/00004.png b/tests/snapshots/flex/test_sign_tx_valid_esdt_transfer/00004.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_sign_tx_valid_esdt_transfer/00004.png and b/tests/snapshots/flex/test_sign_tx_valid_esdt_transfer/00004.png differ diff --git a/tests/snapshots/flex/test_sign_tx_valid_esdt_with_guardian/00004.png b/tests/snapshots/flex/test_sign_tx_valid_esdt_with_guardian/00004.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_sign_tx_valid_esdt_with_guardian/00004.png and b/tests/snapshots/flex/test_sign_tx_valid_esdt_with_guardian/00004.png differ diff --git a/tests/snapshots/flex/test_sign_tx_valid_large_amount/00004.png b/tests/snapshots/flex/test_sign_tx_valid_large_amount/00004.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_sign_tx_valid_large_amount/00004.png and b/tests/snapshots/flex/test_sign_tx_valid_large_amount/00004.png differ diff --git a/tests/snapshots/flex/test_sign_tx_valid_large_nonce/00004.png b/tests/snapshots/flex/test_sign_tx_valid_large_nonce/00004.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_sign_tx_valid_large_nonce/00004.png and b/tests/snapshots/flex/test_sign_tx_valid_large_nonce/00004.png differ diff --git a/tests/snapshots/flex/test_sign_tx_valid_large_receiver/00004.png b/tests/snapshots/flex/test_sign_tx_valid_large_receiver/00004.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_sign_tx_valid_large_receiver/00004.png and b/tests/snapshots/flex/test_sign_tx_valid_large_receiver/00004.png differ diff --git a/tests/snapshots/flex/test_sign_tx_valid_simple_data_confirmed/00004.png b/tests/snapshots/flex/test_sign_tx_valid_simple_data_confirmed/00004.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_sign_tx_valid_simple_data_confirmed/00004.png and b/tests/snapshots/flex/test_sign_tx_valid_simple_data_confirmed/00004.png differ diff --git a/tests/snapshots/flex/test_sign_tx_valid_simple_no_data_confirmed/00004.png b/tests/snapshots/flex/test_sign_tx_valid_simple_no_data_confirmed/00004.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_sign_tx_valid_simple_no_data_confirmed/00004.png and b/tests/snapshots/flex/test_sign_tx_valid_simple_no_data_confirmed/00004.png differ diff --git a/tests/snapshots/flex/test_sign_tx_valid_with_guardian_confirmed/00004.png b/tests/snapshots/flex/test_sign_tx_valid_with_guardian_confirmed/00004.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_sign_tx_valid_with_guardian_confirmed/00004.png and b/tests/snapshots/flex/test_sign_tx_valid_with_guardian_confirmed/00004.png differ diff --git a/tests/snapshots/flex/test_sign_tx_valid_with_relayer_and_guardian_confirmed/00004.png b/tests/snapshots/flex/test_sign_tx_valid_with_relayer_and_guardian_confirmed/00004.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_sign_tx_valid_with_relayer_and_guardian_confirmed/00004.png and b/tests/snapshots/flex/test_sign_tx_valid_with_relayer_and_guardian_confirmed/00004.png differ diff --git a/tests/snapshots/flex/test_sign_tx_valid_with_relayer_confirmed/00004.png b/tests/snapshots/flex/test_sign_tx_valid_with_relayer_confirmed/00004.png index 2f04101d..e56837c3 100644 Binary files a/tests/snapshots/flex/test_sign_tx_valid_with_relayer_confirmed/00004.png and b/tests/snapshots/flex/test_sign_tx_valid_with_relayer_confirmed/00004.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00000.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00000.png new file mode 100644 index 00000000..11cbf69d Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00000.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00001.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00001.png new file mode 100644 index 00000000..d60dc7a0 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00001.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00002.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00002.png new file mode 100644 index 00000000..11403632 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00002.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00003.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00003.png new file mode 100644 index 00000000..ff383ace Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00003.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00004.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00004.png new file mode 100644 index 00000000..675218a5 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00004.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00005.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00005.png new file mode 100644 index 00000000..5feeea5f Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00005.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00006.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00006.png new file mode 100644 index 00000000..02bc84eb Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00006.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00007.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00007.png new file mode 100644 index 00000000..df2237fa Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00007.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00008.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00008.png new file mode 100644 index 00000000..36e60ea0 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00008.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00009.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00009.png new file mode 100644 index 00000000..4c757264 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00009.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00010.png b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00010.png new file mode 100644 index 00000000..25144c30 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_confirmed/00010.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00000.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00000.png new file mode 100644 index 00000000..11cbf69d Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00000.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00001.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00001.png new file mode 100644 index 00000000..d60dc7a0 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00001.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00002.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00002.png new file mode 100644 index 00000000..11403632 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00002.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00003.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00003.png new file mode 100644 index 00000000..ff383ace Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00003.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00004.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00004.png new file mode 100644 index 00000000..675218a5 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00004.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00005.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00005.png new file mode 100644 index 00000000..5feeea5f Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00005.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00006.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00006.png new file mode 100644 index 00000000..02bc84eb Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00006.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00007.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00007.png new file mode 100644 index 00000000..df2237fa Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00007.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00008.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00008.png new file mode 100644 index 00000000..36e60ea0 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00008.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00009.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00009.png new file mode 100644 index 00000000..4c757264 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00009.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00010.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00010.png new file mode 100644 index 00000000..9c7e7049 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00010.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_rejected/00011.png b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00011.png new file mode 100644 index 00000000..25144c30 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_rejected/00011.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_when_blind_sign_disabled/00000.png b/tests/snapshots/nanos/test_blind_sign_msg_when_blind_sign_disabled/00000.png new file mode 100644 index 00000000..76caafc5 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_when_blind_sign_disabled/00000.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_when_blind_sign_disabled/00001.png b/tests/snapshots/nanos/test_blind_sign_msg_when_blind_sign_disabled/00001.png new file mode 100644 index 00000000..fa3606f0 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_when_blind_sign_disabled/00001.png differ diff --git a/tests/snapshots/nanos/test_blind_sign_msg_when_blind_sign_disabled/00002.png b/tests/snapshots/nanos/test_blind_sign_msg_when_blind_sign_disabled/00002.png new file mode 100644 index 00000000..25144c30 Binary files /dev/null and b/tests/snapshots/nanos/test_blind_sign_msg_when_blind_sign_disabled/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_long/00004.png b/tests/snapshots/nanos/test_sign_msg_long/00004.png index 4c757264..55bd472f 100644 Binary files a/tests/snapshots/nanos/test_sign_msg_long/00004.png and b/tests/snapshots/nanos/test_sign_msg_long/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_long/00005.png b/tests/snapshots/nanos/test_sign_msg_long/00005.png index 25144c30..8ca90ca2 100644 Binary files a/tests/snapshots/nanos/test_sign_msg_long/00005.png and b/tests/snapshots/nanos/test_sign_msg_long/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_long/00006.png b/tests/snapshots/nanos/test_sign_msg_long/00006.png new file mode 100644 index 00000000..6d785ad7 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_msg_long/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_long/00007.png b/tests/snapshots/nanos/test_sign_msg_long/00007.png new file mode 100644 index 00000000..b10003b3 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_msg_long/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_long/00008.png b/tests/snapshots/nanos/test_sign_msg_long/00008.png new file mode 100644 index 00000000..4c757264 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_msg_long/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_long/00009.png b/tests/snapshots/nanos/test_sign_msg_long/00009.png new file mode 100644 index 00000000..25144c30 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_msg_long/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_short_ok/00004.png b/tests/snapshots/nanos/test_sign_msg_short_ok/00004.png index 4c757264..5dca3bea 100644 Binary files a/tests/snapshots/nanos/test_sign_msg_short_ok/00004.png and b/tests/snapshots/nanos/test_sign_msg_short_ok/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_short_ok/00005.png b/tests/snapshots/nanos/test_sign_msg_short_ok/00005.png index 25144c30..4c757264 100644 Binary files a/tests/snapshots/nanos/test_sign_msg_short_ok/00005.png and b/tests/snapshots/nanos/test_sign_msg_short_ok/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_short_ok/00006.png b/tests/snapshots/nanos/test_sign_msg_short_ok/00006.png new file mode 100644 index 00000000..25144c30 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_msg_short_ok/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_short_rejected/00004.png b/tests/snapshots/nanos/test_sign_msg_short_rejected/00004.png index 4c757264..5dca3bea 100644 Binary files a/tests/snapshots/nanos/test_sign_msg_short_rejected/00004.png and b/tests/snapshots/nanos/test_sign_msg_short_rejected/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_short_rejected/00005.png b/tests/snapshots/nanos/test_sign_msg_short_rejected/00005.png index 9c7e7049..4c757264 100644 Binary files a/tests/snapshots/nanos/test_sign_msg_short_rejected/00005.png and b/tests/snapshots/nanos/test_sign_msg_short_rejected/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_short_rejected/00006.png b/tests/snapshots/nanos/test_sign_msg_short_rejected/00006.png index 25144c30..9c7e7049 100644 Binary files a/tests/snapshots/nanos/test_sign_msg_short_rejected/00006.png and b/tests/snapshots/nanos/test_sign_msg_short_rejected/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_msg_short_rejected/00007.png b/tests/snapshots/nanos/test_sign_msg_short_rejected/00007.png new file mode 100644 index 00000000..25144c30 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_msg_short_rejected/00007.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00000.png b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00000.png new file mode 100644 index 00000000..180224e2 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00000.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00001.png b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00001.png new file mode 100644 index 00000000..33758f6c Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00001.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00002.png b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00002.png new file mode 100644 index 00000000..d522a496 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00002.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00003.png b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00003.png new file mode 100644 index 00000000..af6637a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00003.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00004.png b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00004.png new file mode 100644 index 00000000..e4522473 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00004.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00005.png b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00005.png new file mode 100644 index 00000000..9648b027 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00005.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00006.png b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00006.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_confirmed/00006.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00000.png b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00000.png new file mode 100644 index 00000000..180224e2 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00000.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00001.png b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00001.png new file mode 100644 index 00000000..33758f6c Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00001.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00002.png b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00002.png new file mode 100644 index 00000000..d522a496 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00002.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00003.png b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00003.png new file mode 100644 index 00000000..af6637a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00003.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00004.png b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00004.png new file mode 100644 index 00000000..e4522473 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00004.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00005.png b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00005.png new file mode 100644 index 00000000..9648b027 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00005.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00006.png b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00006.png new file mode 100644 index 00000000..c4c84cf4 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00006.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00007.png b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00007.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_rejected/00007.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_when_blind_sign_disabled/00000.png b/tests/snapshots/nanosp/test_blind_sign_msg_when_blind_sign_disabled/00000.png new file mode 100644 index 00000000..60babe9f Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_when_blind_sign_disabled/00000.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_when_blind_sign_disabled/00001.png b/tests/snapshots/nanosp/test_blind_sign_msg_when_blind_sign_disabled/00001.png new file mode 100644 index 00000000..7b576bc4 Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_when_blind_sign_disabled/00001.png differ diff --git a/tests/snapshots/nanosp/test_blind_sign_msg_when_blind_sign_disabled/00002.png b/tests/snapshots/nanosp/test_blind_sign_msg_when_blind_sign_disabled/00002.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanosp/test_blind_sign_msg_when_blind_sign_disabled/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_long/00002.png b/tests/snapshots/nanosp/test_sign_msg_long/00002.png index 9648b027..e0d34193 100644 Binary files a/tests/snapshots/nanosp/test_sign_msg_long/00002.png and b/tests/snapshots/nanosp/test_sign_msg_long/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_long/00003.png b/tests/snapshots/nanosp/test_sign_msg_long/00003.png index 4c3028cc..663c66be 100644 Binary files a/tests/snapshots/nanosp/test_sign_msg_long/00003.png and b/tests/snapshots/nanosp/test_sign_msg_long/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_long/00004.png b/tests/snapshots/nanosp/test_sign_msg_long/00004.png new file mode 100644 index 00000000..9648b027 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_msg_long/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_long/00005.png b/tests/snapshots/nanosp/test_sign_msg_long/00005.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_msg_long/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_short_ok/00002.png b/tests/snapshots/nanosp/test_sign_msg_short_ok/00002.png index 9648b027..11e247ac 100644 Binary files a/tests/snapshots/nanosp/test_sign_msg_short_ok/00002.png and b/tests/snapshots/nanosp/test_sign_msg_short_ok/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_short_ok/00003.png b/tests/snapshots/nanosp/test_sign_msg_short_ok/00003.png index 4c3028cc..9648b027 100644 Binary files a/tests/snapshots/nanosp/test_sign_msg_short_ok/00003.png and b/tests/snapshots/nanosp/test_sign_msg_short_ok/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_short_ok/00004.png b/tests/snapshots/nanosp/test_sign_msg_short_ok/00004.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_msg_short_ok/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_short_rejected/00002.png b/tests/snapshots/nanosp/test_sign_msg_short_rejected/00002.png index 9648b027..11e247ac 100644 Binary files a/tests/snapshots/nanosp/test_sign_msg_short_rejected/00002.png and b/tests/snapshots/nanosp/test_sign_msg_short_rejected/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_short_rejected/00003.png b/tests/snapshots/nanosp/test_sign_msg_short_rejected/00003.png index c4c84cf4..9648b027 100644 Binary files a/tests/snapshots/nanosp/test_sign_msg_short_rejected/00003.png and b/tests/snapshots/nanosp/test_sign_msg_short_rejected/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_short_rejected/00004.png b/tests/snapshots/nanosp/test_sign_msg_short_rejected/00004.png index 4c3028cc..c4c84cf4 100644 Binary files a/tests/snapshots/nanosp/test_sign_msg_short_rejected/00004.png and b/tests/snapshots/nanosp/test_sign_msg_short_rejected/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_msg_short_rejected/00005.png b/tests/snapshots/nanosp/test_sign_msg_short_rejected/00005.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_msg_short_rejected/00005.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00000.png b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00000.png new file mode 100644 index 00000000..180224e2 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00000.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00001.png b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00001.png new file mode 100644 index 00000000..33758f6c Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00001.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00002.png b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00002.png new file mode 100644 index 00000000..d522a496 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00002.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00003.png b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00003.png new file mode 100644 index 00000000..af6637a4 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00003.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00004.png b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00004.png new file mode 100644 index 00000000..e4522473 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00004.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00005.png b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00005.png new file mode 100644 index 00000000..9648b027 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00005.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00006.png b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00006.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_confirmed/00006.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_rejected/00000.png b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00000.png new file mode 100644 index 00000000..180224e2 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00000.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_rejected/00001.png b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00001.png new file mode 100644 index 00000000..33758f6c Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00001.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_rejected/00002.png b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00002.png new file mode 100644 index 00000000..d522a496 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00002.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_rejected/00003.png b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00003.png new file mode 100644 index 00000000..af6637a4 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00003.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_rejected/00004.png b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00004.png new file mode 100644 index 00000000..e4522473 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00004.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_rejected/00005.png b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00005.png new file mode 100644 index 00000000..9648b027 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00005.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_rejected/00006.png b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00006.png new file mode 100644 index 00000000..c4c84cf4 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00006.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_rejected/00007.png b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00007.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_rejected/00007.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_when_blind_sign_disabled/00000.png b/tests/snapshots/nanox/test_blind_sign_msg_when_blind_sign_disabled/00000.png new file mode 100644 index 00000000..60babe9f Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_when_blind_sign_disabled/00000.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_when_blind_sign_disabled/00001.png b/tests/snapshots/nanox/test_blind_sign_msg_when_blind_sign_disabled/00001.png new file mode 100644 index 00000000..7b576bc4 Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_when_blind_sign_disabled/00001.png differ diff --git a/tests/snapshots/nanox/test_blind_sign_msg_when_blind_sign_disabled/00002.png b/tests/snapshots/nanox/test_blind_sign_msg_when_blind_sign_disabled/00002.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanox/test_blind_sign_msg_when_blind_sign_disabled/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_long/00002.png b/tests/snapshots/nanox/test_sign_msg_long/00002.png index 9648b027..e0d34193 100644 Binary files a/tests/snapshots/nanox/test_sign_msg_long/00002.png and b/tests/snapshots/nanox/test_sign_msg_long/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_long/00003.png b/tests/snapshots/nanox/test_sign_msg_long/00003.png index 4c3028cc..663c66be 100644 Binary files a/tests/snapshots/nanox/test_sign_msg_long/00003.png and b/tests/snapshots/nanox/test_sign_msg_long/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_long/00004.png b/tests/snapshots/nanox/test_sign_msg_long/00004.png new file mode 100644 index 00000000..9648b027 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_msg_long/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_long/00005.png b/tests/snapshots/nanox/test_sign_msg_long/00005.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanox/test_sign_msg_long/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_short_ok/00002.png b/tests/snapshots/nanox/test_sign_msg_short_ok/00002.png index 9648b027..11e247ac 100644 Binary files a/tests/snapshots/nanox/test_sign_msg_short_ok/00002.png and b/tests/snapshots/nanox/test_sign_msg_short_ok/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_short_ok/00003.png b/tests/snapshots/nanox/test_sign_msg_short_ok/00003.png index 4c3028cc..9648b027 100644 Binary files a/tests/snapshots/nanox/test_sign_msg_short_ok/00003.png and b/tests/snapshots/nanox/test_sign_msg_short_ok/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_short_ok/00004.png b/tests/snapshots/nanox/test_sign_msg_short_ok/00004.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanox/test_sign_msg_short_ok/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_short_rejected/00002.png b/tests/snapshots/nanox/test_sign_msg_short_rejected/00002.png index 9648b027..11e247ac 100644 Binary files a/tests/snapshots/nanox/test_sign_msg_short_rejected/00002.png and b/tests/snapshots/nanox/test_sign_msg_short_rejected/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_short_rejected/00003.png b/tests/snapshots/nanox/test_sign_msg_short_rejected/00003.png index c4c84cf4..9648b027 100644 Binary files a/tests/snapshots/nanox/test_sign_msg_short_rejected/00003.png and b/tests/snapshots/nanox/test_sign_msg_short_rejected/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_short_rejected/00004.png b/tests/snapshots/nanox/test_sign_msg_short_rejected/00004.png index 4c3028cc..c4c84cf4 100644 Binary files a/tests/snapshots/nanox/test_sign_msg_short_rejected/00004.png and b/tests/snapshots/nanox/test_sign_msg_short_rejected/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_msg_short_rejected/00005.png b/tests/snapshots/nanox/test_sign_msg_short_rejected/00005.png new file mode 100644 index 00000000..4c3028cc Binary files /dev/null and b/tests/snapshots/nanox/test_sign_msg_short_rejected/00005.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_confirmed/00000.png b/tests/snapshots/stax/test_blind_sign_msg_confirmed/00000.png new file mode 100644 index 00000000..e7a78b5b Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_confirmed/00000.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_confirmed/00001.png b/tests/snapshots/stax/test_blind_sign_msg_confirmed/00001.png new file mode 100644 index 00000000..4570676b Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_confirmed/00001.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_confirmed/00002.png b/tests/snapshots/stax/test_blind_sign_msg_confirmed/00002.png new file mode 100644 index 00000000..4efa1bf9 Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_confirmed/00002.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_confirmed/00003.png b/tests/snapshots/stax/test_blind_sign_msg_confirmed/00003.png new file mode 100644 index 00000000..70e3af6a Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_confirmed/00003.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_confirmed/00004.png b/tests/snapshots/stax/test_blind_sign_msg_confirmed/00004.png new file mode 100644 index 00000000..57a04db0 Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_confirmed/00004.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_rejected/00000.png b/tests/snapshots/stax/test_blind_sign_msg_rejected/00000.png new file mode 100644 index 00000000..e7a78b5b Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_rejected/00000.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_rejected/00001.png b/tests/snapshots/stax/test_blind_sign_msg_rejected/00001.png new file mode 100644 index 00000000..4570676b Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_rejected/00001.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_rejected/00002.png b/tests/snapshots/stax/test_blind_sign_msg_rejected/00002.png new file mode 100644 index 00000000..4efa1bf9 Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_rejected/00002.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_rejected/00003.png b/tests/snapshots/stax/test_blind_sign_msg_rejected/00003.png new file mode 100644 index 00000000..70e3af6a Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_rejected/00003.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_rejected/00004.png b/tests/snapshots/stax/test_blind_sign_msg_rejected/00004.png new file mode 100644 index 00000000..45414d55 Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_rejected/00004.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_rejected/00005.png b/tests/snapshots/stax/test_blind_sign_msg_rejected/00005.png new file mode 100644 index 00000000..852c74d1 Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_rejected/00005.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00000.png b/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00000.png new file mode 100644 index 00000000..a606bd14 Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00000.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00001.png b/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00001.png new file mode 100644 index 00000000..8c1bd74e Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00001.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00002.png b/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00002.png new file mode 100644 index 00000000..c7978de3 Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00002.png differ diff --git a/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00003.png b/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00003.png new file mode 100644 index 00000000..1154fea6 Binary files /dev/null and b/tests/snapshots/stax/test_blind_sign_msg_when_blind_sign_disabled/00003.png differ diff --git a/tests/snapshots/stax/test_blind_sign_tx_valid_simple_data_confirmed/00006.png b/tests/snapshots/stax/test_blind_sign_tx_valid_simple_data_confirmed/00006.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_blind_sign_tx_valid_simple_data_confirmed/00006.png and b/tests/snapshots/stax/test_blind_sign_tx_valid_simple_data_confirmed/00006.png differ diff --git a/tests/snapshots/stax/test_sign_msg_long/00000.png b/tests/snapshots/stax/test_sign_msg_long/00000.png index 8d57630e..86c9c8f9 100644 Binary files a/tests/snapshots/stax/test_sign_msg_long/00000.png and b/tests/snapshots/stax/test_sign_msg_long/00000.png differ diff --git a/tests/snapshots/stax/test_sign_msg_long/00001.png b/tests/snapshots/stax/test_sign_msg_long/00001.png index d5e673da..f1cba5cd 100644 Binary files a/tests/snapshots/stax/test_sign_msg_long/00001.png and b/tests/snapshots/stax/test_sign_msg_long/00001.png differ diff --git a/tests/snapshots/stax/test_sign_msg_long/00002.png b/tests/snapshots/stax/test_sign_msg_long/00002.png index 997ea8fb..a8c75e79 100644 Binary files a/tests/snapshots/stax/test_sign_msg_long/00002.png and b/tests/snapshots/stax/test_sign_msg_long/00002.png differ diff --git a/tests/snapshots/stax/test_sign_msg_long/00003.png b/tests/snapshots/stax/test_sign_msg_long/00003.png index 3ecf0b85..735c6c97 100644 Binary files a/tests/snapshots/stax/test_sign_msg_long/00003.png and b/tests/snapshots/stax/test_sign_msg_long/00003.png differ diff --git a/tests/snapshots/stax/test_sign_msg_long/00004.png b/tests/snapshots/stax/test_sign_msg_long/00004.png index 1154fea6..57a04db0 100644 Binary files a/tests/snapshots/stax/test_sign_msg_long/00004.png and b/tests/snapshots/stax/test_sign_msg_long/00004.png differ diff --git a/tests/snapshots/stax/test_sign_msg_long/00005.png b/tests/snapshots/stax/test_sign_msg_long/00005.png new file mode 100644 index 00000000..1154fea6 Binary files /dev/null and b/tests/snapshots/stax/test_sign_msg_long/00005.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_ok/00000.png b/tests/snapshots/stax/test_sign_msg_short_ok/00000.png index 8d57630e..6659a62a 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_ok/00000.png and b/tests/snapshots/stax/test_sign_msg_short_ok/00000.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_ok/00002.png b/tests/snapshots/stax/test_sign_msg_short_ok/00002.png index 8d57630e..6659a62a 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_ok/00002.png and b/tests/snapshots/stax/test_sign_msg_short_ok/00002.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_ok/00003.png b/tests/snapshots/stax/test_sign_msg_short_ok/00003.png index 9e2959ba..5c1a6a80 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_ok/00003.png and b/tests/snapshots/stax/test_sign_msg_short_ok/00003.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_ok/00004.png b/tests/snapshots/stax/test_sign_msg_short_ok/00004.png index 997ea8fb..3c61e0ce 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_ok/00004.png and b/tests/snapshots/stax/test_sign_msg_short_ok/00004.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_ok/00005.png b/tests/snapshots/stax/test_sign_msg_short_ok/00005.png index 9e2959ba..5c1a6a80 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_ok/00005.png and b/tests/snapshots/stax/test_sign_msg_short_ok/00005.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_ok/00007.png b/tests/snapshots/stax/test_sign_msg_short_ok/00007.png index 9e2959ba..5c1a6a80 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_ok/00007.png and b/tests/snapshots/stax/test_sign_msg_short_ok/00007.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_ok/00008.png b/tests/snapshots/stax/test_sign_msg_short_ok/00008.png index 997ea8fb..3c61e0ce 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_ok/00008.png and b/tests/snapshots/stax/test_sign_msg_short_ok/00008.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_ok/00009.png b/tests/snapshots/stax/test_sign_msg_short_ok/00009.png index 3ecf0b85..57a04db0 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_ok/00009.png and b/tests/snapshots/stax/test_sign_msg_short_ok/00009.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_rejected/00000.png b/tests/snapshots/stax/test_sign_msg_short_rejected/00000.png index 8d57630e..6659a62a 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_rejected/00000.png and b/tests/snapshots/stax/test_sign_msg_short_rejected/00000.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_rejected/00001.png b/tests/snapshots/stax/test_sign_msg_short_rejected/00001.png index 9e2959ba..5c1a6a80 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_rejected/00001.png and b/tests/snapshots/stax/test_sign_msg_short_rejected/00001.png differ diff --git a/tests/snapshots/stax/test_sign_msg_short_rejected/00002.png b/tests/snapshots/stax/test_sign_msg_short_rejected/00002.png index 997ea8fb..3c61e0ce 100644 Binary files a/tests/snapshots/stax/test_sign_msg_short_rejected/00002.png and b/tests/snapshots/stax/test_sign_msg_short_rejected/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_valid_esdt_transfer/00003.png b/tests/snapshots/stax/test_sign_tx_valid_esdt_transfer/00003.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_sign_tx_valid_esdt_transfer/00003.png and b/tests/snapshots/stax/test_sign_tx_valid_esdt_transfer/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_valid_esdt_with_guardian/00004.png b/tests/snapshots/stax/test_sign_tx_valid_esdt_with_guardian/00004.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_sign_tx_valid_esdt_with_guardian/00004.png and b/tests/snapshots/stax/test_sign_tx_valid_esdt_with_guardian/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_valid_large_amount/00003.png b/tests/snapshots/stax/test_sign_tx_valid_large_amount/00003.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_sign_tx_valid_large_amount/00003.png and b/tests/snapshots/stax/test_sign_tx_valid_large_amount/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_valid_large_nonce/00003.png b/tests/snapshots/stax/test_sign_tx_valid_large_nonce/00003.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_sign_tx_valid_large_nonce/00003.png and b/tests/snapshots/stax/test_sign_tx_valid_large_nonce/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_valid_large_receiver/00003.png b/tests/snapshots/stax/test_sign_tx_valid_large_receiver/00003.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_sign_tx_valid_large_receiver/00003.png and b/tests/snapshots/stax/test_sign_tx_valid_large_receiver/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_valid_simple_data_confirmed/00003.png b/tests/snapshots/stax/test_sign_tx_valid_simple_data_confirmed/00003.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_sign_tx_valid_simple_data_confirmed/00003.png and b/tests/snapshots/stax/test_sign_tx_valid_simple_data_confirmed/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_valid_simple_no_data_confirmed/00003.png b/tests/snapshots/stax/test_sign_tx_valid_simple_no_data_confirmed/00003.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_sign_tx_valid_simple_no_data_confirmed/00003.png and b/tests/snapshots/stax/test_sign_tx_valid_simple_no_data_confirmed/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_valid_with_guardian_confirmed/00004.png b/tests/snapshots/stax/test_sign_tx_valid_with_guardian_confirmed/00004.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_sign_tx_valid_with_guardian_confirmed/00004.png and b/tests/snapshots/stax/test_sign_tx_valid_with_guardian_confirmed/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_valid_with_relayer_and_guardian_confirmed/00004.png b/tests/snapshots/stax/test_sign_tx_valid_with_relayer_and_guardian_confirmed/00004.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_sign_tx_valid_with_relayer_and_guardian_confirmed/00004.png and b/tests/snapshots/stax/test_sign_tx_valid_with_relayer_and_guardian_confirmed/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_valid_with_relayer_confirmed/00004.png b/tests/snapshots/stax/test_sign_tx_valid_with_relayer_confirmed/00004.png index a24543af..80b0cc41 100644 Binary files a/tests/snapshots/stax/test_sign_tx_valid_with_relayer_confirmed/00004.png and b/tests/snapshots/stax/test_sign_tx_valid_with_relayer_confirmed/00004.png differ diff --git a/tests/test_multiversx.py b/tests/test_multiversx.py index 44a20a91..bfac1e39 100755 --- a/tests/test_multiversx.py +++ b/tests/test_multiversx.py @@ -36,6 +36,23 @@ LEDGER_MAJOR_VERSION, LEDGER_MINOR_VERSION, LEDGER_PATCH_VERSION = get_version_from_makefile() +def turn_on_blind_signing(backend: BackendInterface, navigator: Navigator): + if backend.firmware.device.startswith("nano"): + nav_ins = [NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK] + elif backend.firmware.device in ["stax", "flex"]: + nav_ins = [NavInsID.USE_CASE_HOME_SETTINGS, + NavIns(NavInsID.TOUCH, get_screen_coordinates( + backend.firmware.device, "enable_blind_signing")), + NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT] + + navigator.navigate(nav_ins, screen_change_before_first_instruction=False) + + class Ins(IntEnum): GET_APP_VERSION = 0x01 GET_APP_CONFIGURATION = 0x02 @@ -408,6 +425,67 @@ def test_sign_msg_too_long(self, backend): rapdu = backend.exchange(CLA, Ins.SIGN_MSG, P1.FIRST, 0, payload) assert rapdu.status == Error.MESSAGE_TOO_LONG + def test_blind_sign_msg_confirmed(self, backend, navigator, test_name): + turn_on_blind_signing(backend, navigator) + payload = "Björk sent €100 – Grüße von München!".encode('utf-8') + payload = len(payload).to_bytes(4, "big") + payload + backend.raise_policy = RaisePolicy.RAISE_NOTHING + with send_async_sign_message(backend, Ins.SIGN_MSG, payload): + if backend.firmware.device.startswith("nano"): + navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, + [NavInsID.BOTH_CLICK], + "Sign message", + ROOT_SCREENSHOT_PATH, + test_name) + elif backend.firmware.device in ["stax", "flex"]: + nav_ins = [NavInsID.USE_CASE_CHOICE_REJECT, + NavInsID.SWIPE_CENTER_TO_LEFT, + NavInsID.SWIPE_CENTER_TO_LEFT, + NavInsID.USE_CASE_REVIEW_CONFIRM] + + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, nav_ins) + + def test_blind_sign_msg_rejected(self, backend, navigator, test_name): + turn_on_blind_signing(backend, navigator) + payload = "Björk sent €100 – Grüße von München!".encode('utf-8') + payload = len(payload).to_bytes(4, "big") + payload + backend.raise_policy = RaisePolicy.RAISE_NOTHING + with send_async_sign_message(backend, Ins.SIGN_MSG, payload): + if backend.firmware.device.startswith("nano"): + navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, + [NavInsID.BOTH_CLICK], + "Reject", + ROOT_SCREENSHOT_PATH, + test_name) + elif backend.firmware.device in ["stax", "flex"]: + nav_ins = [NavInsID.USE_CASE_CHOICE_REJECT, + NavInsID.SWIPE_CENTER_TO_LEFT, + NavInsID.SWIPE_CENTER_TO_LEFT, + NavInsID.USE_CASE_REVIEW_REJECT, + NavInsID.USE_CASE_CHOICE_CONFIRM] + + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, nav_ins) + assert backend.last_async_response.status == Error.USER_DENIED + + def test_blind_sign_msg_when_blind_sign_disabled(self, backend, navigator, test_name): + backend.raise_policy = RaisePolicy.RAISE_NOTHING + payload = "Björk sent €100 – Grüße von München!".encode('utf-8') + payload = len(payload).to_bytes(4, "big") + payload + with send_async_sign_message(backend, Ins.SIGN_MSG, payload): + if backend.firmware.device.startswith("nano"): + navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, + [NavInsID.BOTH_CLICK], + "Back", + ROOT_SCREENSHOT_PATH, + test_name) + elif backend.firmware.device in ["stax", "flex"]: + nav_ins = [NavInsID.USE_CASE_CHOICE_CONFIRM, + NavIns(NavInsID.TOUCH, get_screen_coordinates(backend.firmware.device, "enable_blind_signing")), + NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT + ] + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, nav_ins) + assert backend.last_async_response.status == Error.USER_DENIED + class TestSignTxHash: @@ -448,26 +526,9 @@ def test_sign_tx_valid_simple_no_data_rejected(self, backend, navigator, test_na test_name) assert backend.last_async_response.status == Error.USER_DENIED - def turn_on_blind_signing(self, backend: BackendInterface, navigator: Navigator): - if backend.firmware.device.startswith("nano"): - nav_ins = [NavInsID.RIGHT_CLICK, - NavInsID.BOTH_CLICK, - NavInsID.RIGHT_CLICK, - NavInsID.BOTH_CLICK, - NavInsID.RIGHT_CLICK, - NavInsID.BOTH_CLICK] - elif backend.firmware.device in ["stax", "flex"]: - nav_ins = [NavInsID.USE_CASE_HOME_SETTINGS, - NavIns(NavInsID.TOUCH, get_screen_coordinates( - backend.firmware.device, "enable_blind_signing")), - NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT] - - navigator.navigate(nav_ins, screen_change_before_first_instruction=False) - def test_blind_sign_tx_valid_simple_data_confirmed(self, backend, navigator, test_name): - # TODO: use actual data value that makes sense payload = b'{"nonce":1234,"value":"5678","receiver":"efgh","sender":"abcd","gasPrice":50000,"gasLimit":20,"chainID":"T","version":2,"options":1,"data":"test"}' - self.turn_on_blind_signing(backend, navigator) + turn_on_blind_signing(backend, navigator) with send_async_sign_message(backend, Ins.SIGN_TX_HASH, payload): if backend.firmware.device.startswith("nano"): navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, @@ -486,54 +547,46 @@ def test_blind_sign_tx_valid_simple_data_confirmed(self, backend, navigator, tes navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, nav_ins) def test_blind_sign_tx_when_blind_sign_disabled(self, backend, navigator, test_name): - # TODO: use actual data value that makes sense + backend.raise_policy = RaisePolicy.RAISE_NOTHING payload = b'{"nonce":1234,"value":"5678","receiver":"efgh","sender":"abcd","gasPrice":50000,"gasLimit":20,"chainID":"T","version":2,"options":1,"data":"test"}' - try: - with send_async_sign_message(backend, Ins.SIGN_TX_HASH, payload): - if backend.firmware.device.startswith("nano"): - navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, - [NavInsID.BOTH_CLICK], - "Back", - ROOT_SCREENSHOT_PATH, - test_name) - elif backend.firmware.device in ["stax", "flex"]: - nav_ins = [NavInsID.USE_CASE_CHOICE_CONFIRM, - NavIns(NavInsID.TOUCH, get_screen_coordinates(backend.firmware.device, "enable_blind_signing")), - NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT - ] - navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, nav_ins) - except ExceptionRAPDU as e: - assert e.status == Error.USER_DENIED - else: - pytest.fail("Expected transaction rejection") - - def test_blind_sign_tx_valid_simple_data_rejected(self, backend: BackendInterface, navigator: Navigator, test_name: str): - # TODO: use actual data value that makes sense + with send_async_sign_message(backend, Ins.SIGN_TX_HASH, payload): + if backend.firmware.device.startswith("nano"): + navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, + [NavInsID.BOTH_CLICK], + "Back", + ROOT_SCREENSHOT_PATH, + test_name) + elif backend.firmware.device in ["stax", "flex"]: + nav_ins = [NavInsID.USE_CASE_CHOICE_CONFIRM, + NavIns(NavInsID.TOUCH, get_screen_coordinates(backend.firmware.device, "enable_blind_signing")), + NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT + ] + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, nav_ins) + assert backend.last_async_response.status == Error.USER_DENIED + + def test_blind_sign_tx_valid_simple_data_rejected(self, backend, navigator, test_name): payload = b'{"nonce":1234,"value":"5678","receiver":"efgh","sender":"abcd","gasPrice":50000,"gasLimit":20,"chainID":"T","version":2,"options":1,"data":"test"}' - self.turn_on_blind_signing(backend, navigator) - try: - with send_async_sign_message(backend, Ins.SIGN_TX_HASH, payload): - if backend.firmware.device.startswith("nano"): - navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, - [NavInsID.BOTH_CLICK], - "Reject", - ROOT_SCREENSHOT_PATH, - test_name) - elif backend.firmware.device in ["stax", "flex"]: - nav_ins = [NavInsID.USE_CASE_CHOICE_REJECT, - NavInsID.SWIPE_CENTER_TO_LEFT, - NavInsID.SWIPE_CENTER_TO_LEFT, - *([NavInsID.SWIPE_CENTER_TO_LEFT] if backend.firmware.device == "flex" else []), - NavInsID.USE_CASE_REVIEW_REJECT, - NavInsID.USE_CASE_CHOICE_CONFIRM] - navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, nav_ins) - except ExceptionRAPDU as e: - assert e.status == Error.USER_DENIED - else: - pytest.fail("Expected transaction rejection") + turn_on_blind_signing(backend, navigator) + backend.raise_policy = RaisePolicy.RAISE_NOTHING + + with send_async_sign_message(backend, Ins.SIGN_TX_HASH, payload): + if backend.firmware.device.startswith("nano"): + navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, + [NavInsID.BOTH_CLICK], + "Reject", + ROOT_SCREENSHOT_PATH, + test_name) + elif backend.firmware.device in ["stax", "flex"]: + nav_ins = [NavInsID.USE_CASE_CHOICE_REJECT, + NavInsID.SWIPE_CENTER_TO_LEFT, + NavInsID.SWIPE_CENTER_TO_LEFT, + *([NavInsID.SWIPE_CENTER_TO_LEFT] if backend.firmware.device == "flex" else []), + NavInsID.USE_CASE_REVIEW_REJECT, + NavInsID.USE_CASE_CHOICE_CONFIRM] + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, nav_ins) + assert backend.last_async_response.status == Error.USER_DENIED def test_sign_tx_valid_simple_data_confirmed(self, backend, navigator, test_name): - # TODO: use actual data value that makes sense encoded_data = base64.b64encode('test'.encode()).decode() payload = b'{"nonce":1234,"value":"5678","receiver":"efgh","sender":"abcd","gasPrice":50000,"gasLimit":20,"chainID":"1","version":2,"options":1,' payload += b'"data":"'