diff --git a/client/src/ledger_app_clients/ethereum/settings.py b/client/src/ledger_app_clients/ethereum/settings.py index 71d318a..997d9e2 100644 --- a/client/src/ledger_app_clients/ethereum/settings.py +++ b/client/src/ledger_app_clients/ethereum/settings.py @@ -5,27 +5,24 @@ from typing import Union class SettingID(Enum): - BLIND_SIGNING = auto() - DEBUG_DATA = auto() - NONCE = auto() - VERBOSE_EIP712 = auto() VERBOSE_ENS = auto() + VERBOSE_EIP712 = auto() + NONCE = auto() + DEBUG_DATA = auto() def get_device_settings(device: str) -> list[SettingID]: if device == "nanos": return [ - SettingID.BLIND_SIGNING, + SettingID.NONCE, SettingID.DEBUG_DATA, - SettingID.NONCE ] if device in ("nanox", "nanosp", "stax", "flex"): return [ - SettingID.BLIND_SIGNING, - SettingID.DEBUG_DATA, - SettingID.NONCE, + SettingID.VERBOSE_ENS, SettingID.VERBOSE_EIP712, - SettingID.VERBOSE_ENS + SettingID.NONCE, + SettingID.DEBUG_DATA, ] return [] diff --git a/src/handle_swap_sign_transaction.c b/src/handle_swap_sign_transaction.c index dd7d613..107365d 100644 --- a/src/handle_swap_sign_transaction.c +++ b/src/handle_swap_sign_transaction.c @@ -95,7 +95,6 @@ void __attribute__((noreturn)) handle_swap_sign_transaction(const chain_config_t if (N_storage.initialized != 0x01) { internalStorage_t storage; - storage.dataAllowed = 0x00; storage.contractDetails = 0x00; storage.initialized = 0x01; storage.displayNonce = 0x00; diff --git a/src/main.c b/src/main.c index a1507b5..38876d7 100644 --- a/src/main.c +++ b/src/main.c @@ -39,7 +39,6 @@ unsigned char G_io_seproxyhal_spi_buffer[IO_SEPROXYHAL_BUFFER_SIZE_B]; void ui_idle(void); uint32_t set_result_get_publicKey(void); -void finalizeParsing(bool); tmpCtx_t tmpCtx; txContext_t txContext; @@ -549,11 +548,6 @@ __attribute__((noreturn)) void coin_main(libargs_t *args) { if (!N_storage.initialized) { internalStorage_t storage; -#ifdef HAVE_ALLOW_DATA - storage.dataAllowed = true; -#else - storage.dataAllowed = false; -#endif storage.contractDetails = false; storage.displayNonce = false; #ifdef HAVE_EIP712_FULL_SUPPORT diff --git a/src/shared_context.h b/src/shared_context.h index dfde37f..9208b0d 100644 --- a/src/shared_context.h +++ b/src/shared_context.h @@ -30,7 +30,6 @@ typedef struct bip32_path_t { } bip32_path_t; typedef struct internalStorage_t { - bool dataAllowed; bool contractDetails; bool displayNonce; #ifdef HAVE_EIP712_FULL_SUPPORT diff --git a/src/ui_callbacks.h b/src/ui_callbacks.h index 90984f0..ed6a41e 100644 --- a/src/ui_callbacks.h +++ b/src/ui_callbacks.h @@ -24,4 +24,3 @@ unsigned int io_seproxyhal_touch_privacy_cancel(const bagl_element_t *e); void ui_warning_contract_data(void); void io_seproxyhal_send_status(uint32_t sw); -void finalizeParsing(bool direct); diff --git a/src_bagl/common_ui.c b/src_bagl/common_ui.c index dc64504..044df68 100644 --- a/src_bagl/common_ui.c +++ b/src_bagl/common_ui.c @@ -13,7 +13,7 @@ void ui_idle(void) { } void ui_warning_contract_data(void) { - ux_flow_init(0, ux_warning_contract_data_flow, NULL); + ux_flow_init(0, ux_blind_signing_flow, NULL); } void ui_display_public_eth2(void) { diff --git a/src_bagl/ui_flow.c b/src_bagl/ui_flow.c index 17f7eed..823a236 100644 --- a/src_bagl/ui_flow.c +++ b/src_bagl/ui_flow.c @@ -2,6 +2,7 @@ #include "ui_callbacks.h" #include "common_ui.h" #include "common_utils.h" +#include "feature_signTx.h" #define ENABLED_STR "Enabled" #define DISABLED_STR "Disabled" @@ -9,16 +10,14 @@ // Reuse the strings.common.fullAmount buffer for settings displaying. // No risk of collision as this buffer is unused in the settings menu -#define SETTING_BLIND_SIGNING_STATE (strings.common.fullAmount) -#define SETTING_DISPLAY_DATA_STATE (strings.common.fullAmount + (BUF_INCREMENT * 1)) +#define SETTING_VERBOSE_DOMAIN_NAME_STATE (strings.common.fullAmount + (BUF_INCREMENT * 0)) +#define SETTING_VERBOSE_EIP712_STATE (strings.common.fullAmount + (BUF_INCREMENT * 1)) #define SETTING_DISPLAY_NONCE_STATE (strings.common.fullAmount + (BUF_INCREMENT * 2)) -#define SETTING_VERBOSE_EIP712_STATE (strings.common.fullAmount + (BUF_INCREMENT * 3)) -#define SETTING_VERBOSE_DOMAIN_NAME_STATE (strings.common.fullAmount + (BUF_INCREMENT * 4)) +#define SETTING_DISPLAY_DATA_STATE (strings.common.fullAmount + (BUF_INCREMENT * 3)) #define BOOL_TO_STATE_STR(b) (b ? ENABLED_STR : DISABLED_STR) static void display_settings(const ux_flow_step_t* const start_step); -static void switch_settings_blind_signing(void); static void switch_settings_display_data(void); static void switch_settings_display_nonce(void); #ifdef HAVE_EIP712_FULL_SUPPORT @@ -71,45 +70,31 @@ UX_FLOW(ux_idle_flow, FLOW_LOOP); // clang-format off +#ifdef HAVE_DOMAIN_NAME UX_STEP_CB( - ux_settings_flow_blind_signing_step, -#ifdef TARGET_NANOS - bnnn_paging, -#else + ux_settings_flow_verbose_domain_name_step, bnnn, -#endif - switch_settings_blind_signing(), + switch_settings_verbose_domain_name(), { -#ifdef TARGET_NANOS - .title = "Blind signing", - .text = -#else - "Blind signing", - "Transaction", - "blind signing", -#endif - SETTING_BLIND_SIGNING_STATE + "ENS addresses", + "Displays resolved", + "addresses from ENS", + SETTING_VERBOSE_DOMAIN_NAME_STATE }); +#endif // HAVE_DOMAIN_NAME +#ifdef HAVE_EIP712_FULL_SUPPORT UX_STEP_CB( - ux_settings_flow_display_data_step, -#ifdef TARGET_NANOS - bnnn_paging, -#else + ux_settings_flow_verbose_eip712_step, bnnn, -#endif - switch_settings_display_data(), + switch_settings_verbose_eip712(), { -#ifdef TARGET_NANOS - .title = "Debug data", - .text = -#else - "Debug data", - "Show contract data", - "details", -#endif - SETTING_DISPLAY_DATA_STATE + "Raw messages", + "Displays raw content", + "from EIP712 messages", + SETTING_VERBOSE_EIP712_STATE }); +#endif // HAVE_EIP712_FULL_SUPPORT UX_STEP_CB( ux_settings_flow_display_nonce_step, @@ -125,38 +110,31 @@ UX_STEP_CB( .text = #else "Nonce", - "Show account nonce", + "Displays nonce", "in transactions", #endif SETTING_DISPLAY_NONCE_STATE }); -#ifdef HAVE_EIP712_FULL_SUPPORT UX_STEP_CB( - ux_settings_flow_verbose_eip712_step, + ux_settings_flow_display_data_step, +#ifdef TARGET_NANOS + bnnn_paging, +#else bnnn, - switch_settings_verbose_eip712(), +#endif + switch_settings_display_data(), { - "Verbose EIP-712", - "Ignore filtering &", - "display raw content", - SETTING_VERBOSE_EIP712_STATE +#ifdef TARGET_NANOS + .title = "Debug data", + .text = +#else + "Debug contracts", + "Displays contract", + "data details", +#endif + SETTING_DISPLAY_DATA_STATE }); -#endif // HAVE_EIP712_FULL_SUPPORT - -#ifdef HAVE_DOMAIN_NAME -UX_STEP_CB( - ux_settings_flow_verbose_domain_name_step, - bnnn, - switch_settings_verbose_domain_name(), - { - "Verbose domains", - "Show", - "resolved address", - SETTING_VERBOSE_DOMAIN_NAME_STATE - }); -#endif // HAVE_DOMAIN_NAME - UX_STEP_CB( ux_settings_flow_back_step, @@ -169,19 +147,17 @@ UX_STEP_CB( // clang-format on UX_FLOW(ux_settings_flow, - &ux_settings_flow_blind_signing_step, - &ux_settings_flow_display_data_step, - &ux_settings_flow_display_nonce_step, -#ifdef HAVE_EIP712_FULL_SUPPORT - &ux_settings_flow_verbose_eip712_step, -#endif // HAVE_EIP712_FULL_SUPPORT #ifdef HAVE_DOMAIN_NAME &ux_settings_flow_verbose_domain_name_step, #endif // HAVE_DOMAIN_NAME +#ifdef HAVE_EIP712_FULL_SUPPORT + &ux_settings_flow_verbose_eip712_step, +#endif // HAVE_EIP712_FULL_SUPPORT + &ux_settings_flow_display_nonce_step, + &ux_settings_flow_display_data_step, &ux_settings_flow_back_step); static void display_settings(const ux_flow_step_t* const start_step) { - strlcpy(SETTING_BLIND_SIGNING_STATE, BOOL_TO_STATE_STR(N_storage.dataAllowed), BUF_INCREMENT); strlcpy(SETTING_DISPLAY_DATA_STATE, BOOL_TO_STATE_STR(N_storage.contractDetails), BUF_INCREMENT); @@ -206,10 +182,6 @@ static void toggle_setting(volatile bool* setting, const ux_flow_step_t* ui_step display_settings(ui_step); } -static void switch_settings_blind_signing(void) { - toggle_setting(&N_storage.dataAllowed, &ux_settings_flow_blind_signing_step); -} - static void switch_settings_display_data(void) { toggle_setting(&N_storage.contractDetails, &ux_settings_flow_display_data_step); } @@ -232,26 +204,76 @@ static void switch_settings_verbose_domain_name(void) { ////////////////////////////////////////////////////////////////////// // clang-format off +UX_STEP_NOCB( + ux_blind_signing_warning_step, + pbb, + { + &C_icon_warning, #ifdef TARGET_NANOS -UX_STEP_CB( - ux_warning_contract_data_step, - bnnn_paging, - ui_idle(), - { - "Error", - "Blind signing must be enabled in Settings", - }); + "Transaction", + "not trusted", #else -UX_STEP_CB( - ux_warning_contract_data_step, - pnn, - ui_idle(), + "This transaction", + "cannot be trusted", +#endif + }); +#ifndef TARGET_NANOS +UX_STEP_NOCB( + ux_blind_signing_text1_step, + nnnn, { - &C_icon_crossmark, - "Blind signing must be", - "enabled in Settings", + "Your Ledger cannot", + "decode this", + "transaction. If you", + "sign it, you could", + }); +UX_STEP_NOCB( + ux_blind_signing_text2_step, + nnnn, + { + "be authorizing", + "malicious actions", + "that can drain your", + "wallet.", }); #endif +UX_STEP_NOCB( + ux_blind_signing_link_step, + nn, + { + "Learn more:", + "ledger.com/e8", + }); +UX_STEP_CB( + ux_blind_signing_accept_step, + pbb, + start_signature_flow(), + { + &C_icon_validate_14, +#ifdef TARGET_NANOS + "Accept risk", + "and review", +#else + "Accept risk and", + "review transaction", +#endif + }); +UX_STEP_CB( + ux_blind_signing_reject_step, + pb, + report_finalize_error(), + { + &C_icon_crossmark, + "Reject", + }); // clang-format on -UX_FLOW(ux_warning_contract_data_flow, &ux_warning_contract_data_step); +UX_FLOW(ux_blind_signing_flow, + &ux_blind_signing_warning_step, +#ifndef TARGET_NANOS + &ux_blind_signing_text1_step, + &ux_blind_signing_text2_step, +#endif + &ux_blind_signing_link_step, + &ux_blind_signing_accept_step, + &ux_blind_signing_reject_step); diff --git a/src_bagl/ui_flow.h b/src_bagl/ui_flow.h index ae2590d..e3d4270 100644 --- a/src_bagl/ui_flow.h +++ b/src_bagl/ui_flow.h @@ -8,7 +8,7 @@ extern const ux_flow_step_t* const ux_idle_flow[]; -extern const ux_flow_step_t* const ux_warning_contract_data_flow[]; +extern const ux_flow_step_t* const ux_blind_signing_flow[]; extern const ux_flow_step_t* const ux_settings_flow[]; diff --git a/src_bagl/ui_flow_signTx.c b/src_bagl/ui_flow_signTx.c index c0ecfcc..d32afe7 100644 --- a/src_bagl/ui_flow_signTx.c +++ b/src_bagl/ui_flow_signTx.c @@ -199,12 +199,12 @@ UX_STEP_NOCB( .text = strings.common.nonce, }); -UX_STEP_NOCB(ux_approval_blind_signing_warning_step, +UX_STEP_NOCB(ux_approval_blind_signing_reminder_step, pbb, { &C_icon_warning, - "Blind", - "Signing", + "You accepted", + "the risks", }); // clang-format on @@ -214,10 +214,6 @@ void ux_approve_tx(bool fromPlugin) { int step = 0; ux_approval_tx_flow[step++] = &ux_approval_review_step; - if (!fromPlugin && tmpContent.txContent.dataPresent && !N_storage.contractDetails) { - ux_approval_tx_flow[step++] = &ux_approval_blind_signing_warning_step; - } - if (fromPlugin) { // Add the special dynamic display logic ux_approval_tx_flow[step++] = &ux_plugin_approval_id_step; @@ -260,6 +256,9 @@ void ux_approve_tx(bool fromPlugin) { } ux_approval_tx_flow[step++] = &ux_approval_fees_step; + if (!fromPlugin && tmpContent.txContent.dataPresent && !N_storage.contractDetails) { + ux_approval_tx_flow[step++] = &ux_approval_blind_signing_reminder_step; + } ux_approval_tx_flow[step++] = &ux_approval_accept_step; ux_approval_tx_flow[step++] = &ux_approval_reject_step; ux_approval_tx_flow[step++] = FLOW_END_STEP; diff --git a/src_features/getAppConfiguration/cmd_getAppConfiguration.c b/src_features/getAppConfiguration/cmd_getAppConfiguration.c index 8b137d5..53f04eb 100644 --- a/src_features/getAppConfiguration/cmd_getAppConfiguration.c +++ b/src_features/getAppConfiguration/cmd_getAppConfiguration.c @@ -12,8 +12,7 @@ void handleGetAppConfiguration(uint8_t p1, UNUSED(workBuffer); UNUSED(dataLength); UNUSED(flags); - G_io_apdu_buffer[0] = (N_storage.dataAllowed ? APP_FLAG_DATA_ALLOWED : 0x00); - G_io_apdu_buffer[0] |= APP_FLAG_EXTERNAL_TOKEN_NEEDED; + G_io_apdu_buffer[0] = APP_FLAG_EXTERNAL_TOKEN_NEEDED; G_io_apdu_buffer[1] = MAJOR_VERSION; G_io_apdu_buffer[2] = MINOR_VERSION; G_io_apdu_buffer[3] = PATCH_VERSION; diff --git a/src_features/signTx/cmd_signTx.c b/src_features/signTx/cmd_signTx.c index 8a84538..4da3a76 100644 --- a/src_features/signTx/cmd_signTx.c +++ b/src_features/signTx/cmd_signTx.c @@ -88,7 +88,7 @@ void handleSign(uint8_t p1, } if (txResult == USTREAM_FINISHED) { - finalizeParsing(false); + finalizeParsing(); } *flags |= IO_ASYNCH_REPLY; diff --git a/src_features/signTx/feature_signTx.h b/src_features/signTx/feature_signTx.h index 84d2cd5..a62514a 100644 --- a/src_features/signTx/feature_signTx.h +++ b/src_features/signTx/feature_signTx.h @@ -11,9 +11,11 @@ typedef enum { } plugin_ui_state_t; customStatus_e customProcessor(txContext_t *context); -void finalizeParsing(bool direct); +void finalizeParsing(); void prepareFeeDisplay(); void prepareNetworkDisplay(); void ux_approve_tx(bool fromPlugin); +void report_finalize_error(void); +void start_signature_flow(void); #endif // _SIGN_TX_H_ diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index 3b2e281..f9f8a8c 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -14,6 +14,8 @@ #define ERR_SILENT_MODE_CHECK_FAILED 0x6001 +static bool g_use_standard_ui; + static uint32_t splitBinaryParameterPart(char *result, size_t result_size, uint8_t *parameter) { uint32_t i; for (i = 0; i < 8; i++) { @@ -82,11 +84,6 @@ customStatus_e customProcessor(txContext_t *context) { uint32_t copySize; uint32_t fieldPos = context->currentFieldPos; if (fieldPos == 0) { // not reached if a plugin is available - if (!N_storage.dataAllowed) { - PRINTF("Data field forbidden\n"); - ui_warning_contract_data(); - return CUSTOM_FAULT; - } if (!N_storage.contractDetails) { return CUSTOM_NOT_HANDLED; } @@ -177,14 +174,10 @@ customStatus_e customProcessor(txContext_t *context) { return CUSTOM_NOT_HANDLED; } -void reportFinalizeError(bool direct) { +void report_finalize_error(void) { reset_app_context(); - if (direct) { - THROW(0x6A80); - } else { - io_seproxyhal_send_status(0x6A80); - ui_idle(); - } + io_seproxyhal_send_status(APDU_RESPONSE_INVALID_DATA); + ui_idle(); } static void address_to_string(uint8_t *in, @@ -317,7 +310,7 @@ static int strcasecmp_workaround(const char *str1, const char *str2) { return 0; } -__attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool *use_standard_UI) { +__attribute__((noinline)) static bool finalize_parsing_helper(void) { char displayBuffer[50]; uint8_t decimals = WEI_TO_ETHER; uint64_t chain_id = get_tx_chain_id(); @@ -332,10 +325,8 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool if (chainConfig->chainId != id) { PRINTF("Invalid chainID %u expected %u\n", id, chainConfig->chainId); reset_app_context(); - reportFinalizeError(direct); - if (!direct) { - return false; - } + report_finalize_error(); + return false; } } // Store the hash @@ -363,10 +354,8 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool if (!eth_plugin_call(ETH_PLUGIN_FINALIZE, (void *) &pluginFinalize)) { PRINTF("Plugin finalize call failed\n"); - reportFinalizeError(direct); - if (!direct) { - return false; - } + report_finalize_error(); + return false; } // Lookup tokens if requested ethPluginProvideInfo_t pluginProvideInfo; @@ -389,10 +378,8 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool if (eth_plugin_call(ETH_PLUGIN_PROVIDE_INFO, (void *) &pluginProvideInfo) <= ETH_PLUGIN_RESULT_UNSUCCESSFUL) { PRINTF("Plugin provide token call failed\n"); - reportFinalizeError(direct); - if (!direct) { - return false; - } + report_finalize_error(); + return false; } pluginFinalize.result = pluginProvideInfo.result; } @@ -401,7 +388,7 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool switch (pluginFinalize.uiType) { case ETH_UI_TYPE_GENERIC: // Use the dedicated ETH plugin UI - *use_standard_UI = false; + g_use_standard_ui = false; tmpContent.txContent.dataPresent = false; // Add the number of screens + the number of additional screens to get the total // number of screens needed. @@ -410,14 +397,12 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool break; case ETH_UI_TYPE_AMOUNT_ADDRESS: // Use the standard ETH UI as this plugin uses the amount/address UI - *use_standard_UI = true; + g_use_standard_ui = true; tmpContent.txContent.dataPresent = false; if ((pluginFinalize.amount == NULL) || (pluginFinalize.address == NULL)) { PRINTF("Incorrect amount/address set by plugin\n"); - reportFinalizeError(direct); - if (!direct) { - return false; - } + report_finalize_error(); + return false; } memmove(tmpContent.txContent.value.value, pluginFinalize.amount, 32); tmpContent.txContent.value.length = 32; @@ -430,10 +415,8 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool break; default: PRINTF("ui type %d not supported\n", pluginFinalize.uiType); - reportFinalizeError(direct); - if (!direct) { - return false; - } + report_finalize_error(); + return false; } } } @@ -448,21 +431,13 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool } // User has just validated a swap but ETH received apdus about a non standard plugin / contract - if (G_called_from_swap && !*use_standard_UI) { + if (G_called_from_swap && !g_use_standard_ui) { PRINTF("ERR_SILENT_MODE_CHECK_FAILED, G_called_from_swap\n"); THROW(ERR_SILENT_MODE_CHECK_FAILED); } - if (tmpContent.txContent.dataPresent && !N_storage.dataAllowed) { - reportFinalizeError(direct); - ui_warning_contract_data(); - if (!direct) { - return false; - } - } - // Prepare destination address and amount to display - if (*use_standard_UI) { + if (g_use_standard_ui) { // Format the address in a temporary buffer, if in swap case compare it with validated // address, else commit it address_to_string(tmpContent.txContent.destination, @@ -541,23 +516,32 @@ end: return false; } -void finalizeParsing(bool direct) { - bool use_standard_UI = true; +void start_signature_flow(void) { + if (g_use_standard_ui) { + ux_approve_tx(false); + } else { + dataContext.tokenContext.pluginUiState = PLUGIN_UI_OUTSIDE; + dataContext.tokenContext.pluginUiCurrentItem = 0; + ux_approve_tx(true); + } +} - if (!finalize_parsing_helper(direct, &use_standard_UI)) { +void finalizeParsing(void) { + g_use_standard_ui = true; + + if (!finalize_parsing_helper()) { return; } // If called from swap, the user has already validated a standard transaction // And we have already checked the fields of this transaction above - if (G_called_from_swap && use_standard_UI) { + if (G_called_from_swap && g_use_standard_ui) { io_seproxyhal_touch_tx_ok(NULL); } else { - if (use_standard_UI) { - ux_approve_tx(false); + // If blind-signing detected, start the warning flow beforehand + if (tmpContent.txContent.dataPresent) { + ui_warning_contract_data(); } else { - dataContext.tokenContext.pluginUiState = PLUGIN_UI_OUTSIDE; - dataContext.tokenContext.pluginUiCurrentItem = 0; - ux_approve_tx(true); + start_signature_flow(); } } } diff --git a/src_features/signTx/ui_common_signTx.c b/src_features/signTx/ui_common_signTx.c index 9041c70..4b567db 100644 --- a/src_features/signTx/ui_common_signTx.c +++ b/src_features/signTx/ui_common_signTx.c @@ -4,6 +4,7 @@ #include "common_utils.h" #include "common_ui.h" #include "handle_swap_sign_transaction.h" +#include "feature_signTx.h" unsigned int io_seproxyhal_touch_tx_ok(__attribute__((unused)) const bagl_element_t *e) { uint32_t info = 0; @@ -109,7 +110,7 @@ unsigned int io_seproxyhal_touch_data_ok(__attribute__((unused)) const bagl_elem } if (txResult == USTREAM_FINISHED) { - finalizeParsing(false); + finalizeParsing(); } return 0; diff --git a/src_nbgl/ui_approve_tx.c b/src_nbgl/ui_approve_tx.c index 79f2ee4..eaf7bf6 100644 --- a/src_nbgl/ui_approve_tx.c +++ b/src_nbgl/ui_approve_tx.c @@ -1,5 +1,5 @@ #include -#include +#include "nbgl_page.h" #include "shared_context.h" #include "ui_callbacks.h" #include "ui_nbgl.h" @@ -25,7 +25,6 @@ static char msg_buffer[MAX_PLUGIN_ITEMS][VALUE_MAX_LEN]; struct tx_approval_context_t { bool fromPlugin; - bool blindSigning; bool displayNetwork; #ifdef HAVE_DOMAIN_NAME bool domain_name_match; @@ -174,7 +173,13 @@ static void reviewCommon(void) { pairsList.nbPairs = setTagValuePairs(); pairsList.pairs = pairs; + nbgl_operationType_t op = TYPE_TRANSACTION; +#if API_LEVEL >= 19 + if (tmpContent.txContent.dataPresent) { + op |= BLIND_OPERATION; + } +#endif if (tx_approval_context.fromPlugin) { uint32_t buf_size = SHARED_BUFFER_SIZE / 2; char op_name[sizeof(strings.common.fullAmount)]; @@ -195,7 +200,7 @@ static void reviewCommon(void) { (pluginType == EXTERNAL ? "on " : ""), strings.common.toAddress); - nbgl_useCaseReview(TYPE_TRANSACTION, + nbgl_useCaseReview(op, &pairsList, get_tx_icon(), g_stax_shared_buffer, @@ -203,7 +208,7 @@ static void reviewCommon(void) { g_stax_shared_buffer + buf_size, reviewChoice); } else { - nbgl_useCaseReview(TYPE_TRANSACTION, + nbgl_useCaseReview(op, &pairsList, get_tx_icon(), REVIEW("transaction"), @@ -224,8 +229,6 @@ void blind_confirm_cb(bool confirm) { void ux_approve_tx(bool fromPlugin) { memset(&tx_approval_context, 0, sizeof(tx_approval_context)); - tx_approval_context.blindSigning = - !fromPlugin && tmpContent.txContent.dataPresent && !N_storage.contractDetails; tx_approval_context.fromPlugin = fromPlugin; tx_approval_context.displayNetwork = false; @@ -234,16 +237,5 @@ void ux_approve_tx(bool fromPlugin) { tx_approval_context.displayNetwork = true; } - if (tx_approval_context.blindSigning) { - nbgl_useCaseChoice(&C_Important_Circle_64px, - "Blind Signing", - "This transaction cannot be securely interpreted by " - "your Ledger device.\nIt might put " - "your assets at risk.", - "Continue", - "Cancel", - blind_confirm_cb); - } else { - reviewCommon(); - } + reviewCommon(); } diff --git a/src_nbgl/ui_settings.c b/src_nbgl/ui_settings.c index 455ef32..7ed1601 100644 --- a/src_nbgl/ui_settings.c +++ b/src_nbgl/ui_settings.c @@ -9,8 +9,7 @@ #define SETTING_CONTENTS_NB 1 enum { - BLIND_SIGNING_TOKEN = FIRST_USER_TOKEN, - DEBUG_TOKEN, + DEBUG_TOKEN = FIRST_USER_TOKEN, NONCE_TOKEN, #ifdef HAVE_EIP712_FULL_SUPPORT EIP712_VERBOSE_TOKEN, @@ -21,23 +20,22 @@ enum { }; enum { - BLIND_SIGNING_ID = 0, - DEBUG_ID, - NONCE_ID, -#ifdef HAVE_EIP712_FULL_SUPPORT - EIP712_VERBOSE_ID, -#endif #ifdef HAVE_DOMAIN_NAME DOMAIN_NAME_VERBOSE_ID, #endif +#ifdef HAVE_EIP712_FULL_SUPPORT + EIP712_VERBOSE_ID, +#endif + NONCE_ID, + DEBUG_ID, SETTINGS_SWITCHES_NB }; static uint8_t initSettingPage; // settings definition -static const char* const infoTypes[SETTING_INFO_NB] = {"Version", APPNAME " App"}; -static const char* const infoContents[SETTING_INFO_NB] = {APPVERSION, "(c) " BUILD_YEAR " Ledger"}; +static const char* const infoTypes[SETTING_INFO_NB] = {"Version", "Developer"}; +static const char* const infoContents[SETTING_INFO_NB] = {APPVERSION, "Ledger"}; static nbgl_contentInfoList_t infoList = {0}; static nbgl_contentSwitch_t switches[SETTINGS_SWITCHES_NB] = {0}; @@ -51,11 +49,6 @@ static void controlsCallback(int token, uint8_t index, int page) { initSettingPage = page; switch (token) { - case BLIND_SIGNING_TOKEN: - value = (N_storage.dataAllowed ? 0 : 1); - switches[BLIND_SIGNING_ID].initState = (nbgl_state_t) value; - nvm_write((void*) &N_storage.dataAllowed, (void*) &value, sizeof(uint8_t)); - break; case DEBUG_TOKEN: value = (N_storage.contractDetails ? 0 : 1); switches[DEBUG_ID].initState = (nbgl_state_t) value; @@ -84,40 +77,34 @@ static void controlsCallback(int token, uint8_t index, int page) { } void ui_menu_settings(void) { - switches[BLIND_SIGNING_ID].initState = N_storage.dataAllowed ? ON_STATE : OFF_STATE; - switches[BLIND_SIGNING_ID].text = "Blind signing"; - switches[BLIND_SIGNING_ID].subText = "Enable transaction blind\nsigning"; - switches[BLIND_SIGNING_ID].token = BLIND_SIGNING_TOKEN; - switches[BLIND_SIGNING_ID].tuneId = TUNE_TAP_CASUAL; - - switches[DEBUG_ID].initState = N_storage.contractDetails ? ON_STATE : OFF_STATE; - switches[DEBUG_ID].text = "Debug"; - switches[DEBUG_ID].subText = "Display contract data\ndetails"; - switches[DEBUG_ID].token = DEBUG_TOKEN; - switches[DEBUG_ID].tuneId = TUNE_TAP_CASUAL; - - switches[NONCE_ID].initState = N_storage.displayNonce ? ON_STATE : OFF_STATE; - switches[NONCE_ID].text = "Nonce"; - switches[NONCE_ID].subText = "Display account nonce\nin transaction"; - switches[NONCE_ID].token = NONCE_TOKEN; - switches[NONCE_ID].tuneId = TUNE_TAP_CASUAL; +#ifdef HAVE_DOMAIN_NAME + switches[DOMAIN_NAME_VERBOSE_ID].initState = + N_storage.verbose_domain_name ? ON_STATE : OFF_STATE; + switches[DOMAIN_NAME_VERBOSE_ID].text = "ENS addresses"; + switches[DOMAIN_NAME_VERBOSE_ID].subText = "Displays the resolved address of ENS domains."; + switches[DOMAIN_NAME_VERBOSE_ID].token = DOMAIN_NAME_VERBOSE_TOKEN; + switches[DOMAIN_NAME_VERBOSE_ID].tuneId = TUNE_TAP_CASUAL; +#endif // HAVE_DOMAIN_NAME #ifdef HAVE_EIP712_FULL_SUPPORT switches[EIP712_VERBOSE_ID].initState = N_storage.verbose_eip712 ? ON_STATE : OFF_STATE; - switches[EIP712_VERBOSE_ID].text = "Verbose EIP712"; - switches[EIP712_VERBOSE_ID].subText = "Ignore filtering and\ndisplay raw content"; + switches[EIP712_VERBOSE_ID].text = "Raw messages"; + switches[EIP712_VERBOSE_ID].subText = "Displays raw content from EIP712 messages."; switches[EIP712_VERBOSE_ID].token = EIP712_VERBOSE_TOKEN; switches[EIP712_VERBOSE_ID].tuneId = TUNE_TAP_CASUAL; #endif // HAVE_EIP712_FULL_SUPPORT -#ifdef HAVE_DOMAIN_NAME - switches[DOMAIN_NAME_VERBOSE_ID].initState = - N_storage.verbose_domain_name ? ON_STATE : OFF_STATE; - switches[DOMAIN_NAME_VERBOSE_ID].text = "Verbose domains"; - switches[DOMAIN_NAME_VERBOSE_ID].subText = "Show resolved address"; - switches[DOMAIN_NAME_VERBOSE_ID].token = DOMAIN_NAME_VERBOSE_TOKEN; - switches[DOMAIN_NAME_VERBOSE_ID].tuneId = TUNE_TAP_CASUAL; -#endif // HAVE_DOMAIN_NAME + switches[NONCE_ID].initState = N_storage.displayNonce ? ON_STATE : OFF_STATE; + switches[NONCE_ID].text = "Nonce"; + switches[NONCE_ID].subText = "Displays nonce information in transactions."; + switches[NONCE_ID].token = NONCE_TOKEN; + switches[NONCE_ID].tuneId = TUNE_TAP_CASUAL; + + switches[DEBUG_ID].initState = N_storage.contractDetails ? ON_STATE : OFF_STATE; + switches[DEBUG_ID].text = "Debug smart contracts"; + switches[DEBUG_ID].subText = "Displays contract data details."; + switches[DEBUG_ID].token = DEBUG_TOKEN; + switches[DEBUG_ID].tuneId = TUNE_TAP_CASUAL; contents[0].type = SWITCHES_LIST; contents[0].content.switchesList.nbSwitches = SETTINGS_SWITCHES_NB; diff --git a/src_nbgl/ui_warning_contract_data.c b/src_nbgl/ui_warning_contract_data.c index 6a0e317..b4d1fb4 100644 --- a/src_nbgl/ui_warning_contract_data.c +++ b/src_nbgl/ui_warning_contract_data.c @@ -2,20 +2,37 @@ #include "shared_context.h" #include "ui_callbacks.h" #include "ui_nbgl.h" +#include "feature_signTx.h" -static void ui_warning_contract_data_choice(bool confirm) { +static void ui_warning_contract_data_choice2(bool confirm) { if (confirm) { - ui_idle(); + start_signature_flow(); } else { - ui_menu_settings(); + report_finalize_error(); + } +} + +static void ui_warning_contract_data_choice1(bool confirm) { + if (confirm) { + report_finalize_error(); + } else { + nbgl_useCaseChoice( + NULL, + "The transaction cannot be trusted", + "Your Ledger cannot decode this transaction. If you sign it, you could be authorizing " + "malicious actions that can drain your wallet.\n\nLearn more: ledger.com/e8", + "I accept the risk", + "Reject transaction", + ui_warning_contract_data_choice2); } } void ui_warning_contract_data(void) { - nbgl_useCaseChoice(&C_Warning_64px, - "This message cannot\nbe clear-signed", - "Enable blind-signing in\nthe settings to sign\nthis transaction.", - "Exit", - "Go to settings", - ui_warning_contract_data_choice); + nbgl_useCaseChoice( + &C_Warning_64px, + "Security risk detected", + "It may not be safe to sign this transaction. To continue, you'll need to review the risk.", + "Back to safety", + "Review risk", + ui_warning_contract_data_choice1); } diff --git a/tests/ragger/snapshots/flex/test_blind_sign_reject_in_risk_review/00000.png b/tests/ragger/snapshots/flex/test_blind_sign_reject_in_risk_review/00000.png new file mode 100644 index 0000000..10188cd Binary files /dev/null and b/tests/ragger/snapshots/flex/test_blind_sign_reject_in_risk_review/00000.png differ diff --git a/tests/ragger/snapshots/flex/test_blind_sign_reject_in_risk_review/00001.png b/tests/ragger/snapshots/flex/test_blind_sign_reject_in_risk_review/00001.png new file mode 100644 index 0000000..a3c7613 Binary files /dev/null and b/tests/ragger/snapshots/flex/test_blind_sign_reject_in_risk_review/00001.png differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00005.png b/tests/ragger/snapshots/flex/test_blind_sign_reject_in_risk_review/00002.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00005.png rename to tests/ragger/snapshots/flex/test_blind_sign_reject_in_risk_review/00002.png diff --git a/tests/ragger/snapshots/flex/test_blind_sign_rejected/00000.png b/tests/ragger/snapshots/flex/test_blind_sign_rejected/00000.png new file mode 100644 index 0000000..10188cd Binary files /dev/null and b/tests/ragger/snapshots/flex/test_blind_sign_rejected/00000.png differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_simple/00005.png b/tests/ragger/snapshots/flex/test_blind_sign_rejected/00001.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_blind_simple/00005.png rename to tests/ragger/snapshots/flex/test_blind_sign_rejected/00001.png diff --git a/tests/ragger/snapshots/flex/test_blind_sign_signed/00000.png b/tests/ragger/snapshots/flex/test_blind_sign_signed/00000.png new file mode 100644 index 0000000..10188cd Binary files /dev/null and b/tests/ragger/snapshots/flex/test_blind_sign_signed/00000.png differ diff --git a/tests/ragger/snapshots/flex/test_blind_sign_signed/00001.png b/tests/ragger/snapshots/flex/test_blind_sign_signed/00001.png new file mode 100644 index 0000000..a3c7613 Binary files /dev/null and b/tests/ragger/snapshots/flex/test_blind_sign_signed/00001.png differ diff --git a/tests/ragger/snapshots/flex/test_blind_sign_signed/00002.png b/tests/ragger/snapshots/flex/test_blind_sign_signed/00002.png new file mode 100644 index 0000000..7ac500b Binary files /dev/null and b/tests/ragger/snapshots/flex/test_blind_sign_signed/00002.png differ diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00001.png b/tests/ragger/snapshots/flex/test_blind_sign_signed/00003.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00001.png rename to tests/ragger/snapshots/flex/test_blind_sign_signed/00003.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00002.png b/tests/ragger/snapshots/flex/test_blind_sign_signed/00004.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00002.png rename to tests/ragger/snapshots/flex/test_blind_sign_signed/00004.png diff --git a/tests/ragger/snapshots/flex/test_blind_sign_signed/00005.png b/tests/ragger/snapshots/flex/test_blind_sign_signed/00005.png new file mode 100644 index 0000000..aa5b1f7 Binary files /dev/null and b/tests/ragger/snapshots/flex/test_blind_sign_signed/00005.png differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00004.png b/tests/ragger/snapshots/flex/test_blind_sign_signed/00006.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00004.png rename to tests/ragger/snapshots/flex/test_blind_sign_signed/00006.png diff --git a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00000.png b/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00000.png deleted file mode 100644 index 2fa6f1c..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00000.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00001.png b/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00001.png deleted file mode 100644 index 5b3d8c9..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00001.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00002.png b/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00002.png deleted file mode 100644 index 7edbcba..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00002.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00003.png b/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00003.png deleted file mode 100644 index 9fa70e5..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/00003.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/confirm/00000.png b/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/confirm/00000.png deleted file mode 100644 index 00bc42d..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_blind_and_nonce_display/confirm/00000.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_simple/00000.png b/tests/ragger/snapshots/flex/test_sign_blind_simple/00000.png deleted file mode 100644 index 2fa6f1c..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_blind_simple/00000.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_simple/00001.png b/tests/ragger/snapshots/flex/test_sign_blind_simple/00001.png deleted file mode 100644 index 5b3d8c9..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_blind_simple/00001.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_simple/00002.png b/tests/ragger/snapshots/flex/test_sign_blind_simple/00002.png deleted file mode 100644 index 9e7ca34..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_blind_simple/00002.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_simple/00003.png b/tests/ragger/snapshots/flex/test_sign_blind_simple/00003.png deleted file mode 100644 index 9fa70e5..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_blind_simple/00003.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_simple/confirm/00000.png b/tests/ragger/snapshots/flex/test_sign_blind_simple/confirm/00000.png deleted file mode 100644 index 00bc42d..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_blind_simple/confirm/00000.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_0/00000.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00000.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_0/00000.png rename to tests/ragger/snapshots/flex/test_sign_parameter_selector/00000.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_0/00001.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00001.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_0/00001.png rename to tests/ragger/snapshots/flex/test_sign_parameter_selector/00001.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_0/00002.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00002.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_0/00002.png rename to tests/ragger/snapshots/flex/test_sign_parameter_selector/00002.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_1/00000.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00003.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_1/00000.png rename to tests/ragger/snapshots/flex/test_sign_parameter_selector/00003.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_1/00001.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00004.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_1/00001.png rename to tests/ragger/snapshots/flex/test_sign_parameter_selector/00004.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_1/00002.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00005.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_1/00002.png rename to tests/ragger/snapshots/flex/test_sign_parameter_selector/00005.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_2/00000.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00006.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_2/00000.png rename to tests/ragger/snapshots/flex/test_sign_parameter_selector/00006.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_2/00001.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00007.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_2/00001.png rename to tests/ragger/snapshots/flex/test_sign_parameter_selector/00007.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_2/00002.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00008.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_parameter_selector/step_2/00002.png rename to tests/ragger/snapshots/flex/test_sign_parameter_selector/00008.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/00009.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00009.png new file mode 100644 index 0000000..10188cd Binary files /dev/null and b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00009.png differ diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/00010.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00010.png new file mode 100644 index 0000000..a3c7613 Binary files /dev/null and b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00010.png differ diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/00011.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00011.png new file mode 100644 index 0000000..7ac500b Binary files /dev/null and b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00011.png differ diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/00012.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00012.png new file mode 100644 index 0000000..f4ec9f0 Binary files /dev/null and b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00012.png differ diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/00013.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00013.png new file mode 100644 index 0000000..ffd7c8f Binary files /dev/null and b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00013.png differ diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/00014.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00014.png new file mode 100644 index 0000000..aa5b1f7 Binary files /dev/null and b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00014.png differ diff --git a/tests/ragger/snapshots/flex/test_sign_blind_simple/00004.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/00015.png similarity index 100% rename from tests/ragger/snapshots/flex/test_sign_blind_simple/00004.png rename to tests/ragger/snapshots/flex/test_sign_parameter_selector/00015.png diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00000.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00000.png deleted file mode 100644 index 2fa6f1c..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00000.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00003.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00003.png deleted file mode 100644 index 9fa70e5..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00003.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00004.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00004.png deleted file mode 100644 index be51a9d..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00004.png and /dev/null differ diff --git a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00005.png b/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00005.png deleted file mode 100644 index f5b3e29..0000000 Binary files a/tests/ragger/snapshots/flex/test_sign_parameter_selector/step_3/00005.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00000.png b/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00000.png new file mode 100644 index 0000000..2675875 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00000.png differ diff --git a/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00001.png b/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00001.png new file mode 100644 index 0000000..2db2dcf Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00001.png differ diff --git a/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00002.png b/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00002.png new file mode 100644 index 0000000..a9eca40 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00002.png differ diff --git a/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00003.png b/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00003.png new file mode 100644 index 0000000..9c7e704 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00003.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00012.png b/tests/ragger/snapshots/nanos/test_blind_sign_rejected/00004.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00012.png rename to tests/ragger/snapshots/nanos/test_blind_sign_rejected/00004.png diff --git a/tests/ragger/snapshots/nanos/test_blind_sign_signed/00000.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00000.png new file mode 100644 index 0000000..2675875 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00000.png differ diff --git a/tests/ragger/snapshots/nanos/test_blind_sign_signed/00001.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00001.png new file mode 100644 index 0000000..2db2dcf Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00001.png differ diff --git a/tests/ragger/snapshots/nanos/test_blind_sign_signed/00002.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00002.png new file mode 100644 index 0000000..a9eca40 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00002.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00000.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00003.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00000.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00003.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00001.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00004.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00001.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00004.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00002.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00005.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00002.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00005.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00003.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00006.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00003.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00006.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00004.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00007.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00004.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00007.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00005.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00008.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00005.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00008.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00006.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00009.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00006.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00009.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00007.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00010.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00007.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00010.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00008.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00011.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00008.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00011.png diff --git a/tests/ragger/snapshots/nanos/test_blind_sign_signed/00012.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00012.png new file mode 100644 index 0000000..56d35dd Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00012.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00011.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00013.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00011.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00013.png diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00011.png b/tests/ragger/snapshots/nanos/test_blind_sign_signed/00014.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_blind_simple/00011.png rename to tests/ragger/snapshots/nanos/test_blind_sign_signed/00014.png diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00001.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00001.png deleted file mode 100644 index b2ab371..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00001.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00002.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00002.png deleted file mode 100644 index 3bae8ed..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00002.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00003.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00003.png deleted file mode 100644 index debf3a1..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00003.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00004.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00004.png deleted file mode 100644 index b80c1e4..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00004.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00005.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00005.png deleted file mode 100644 index 10706b8..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00005.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00006.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00006.png deleted file mode 100644 index 682555c..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00006.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00007.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00007.png deleted file mode 100644 index 7ec3b48..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00007.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00008.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00008.png deleted file mode 100644 index 89f3a23..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00008.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00009.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00009.png deleted file mode 100644 index 0aa6e19..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00009.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00010.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00010.png deleted file mode 100644 index c84d3ec..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00010.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00001.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00001.png deleted file mode 100644 index b2ab371..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00001.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00002.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00002.png deleted file mode 100644 index 3bae8ed..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00002.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00003.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00003.png deleted file mode 100644 index debf3a1..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00003.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00004.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00004.png deleted file mode 100644 index b80c1e4..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00004.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00005.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00005.png deleted file mode 100644 index 10706b8..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00005.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00006.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00006.png deleted file mode 100644 index 682555c..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00006.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00007.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00007.png deleted file mode 100644 index 7ec3b48..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00007.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00008.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00008.png deleted file mode 100644 index 89f3a23..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00008.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00009.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00009.png deleted file mode 100644 index c84d3ec..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00009.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_0/00000.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00000.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_0/00000.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00000.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_0/00001.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00001.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_0/00001.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00001.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_0/00002.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00002.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_0/00002.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00002.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_1/00000.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00003.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_1/00000.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00003.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_1/00001.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00004.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_1/00001.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00004.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_1/00002.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00005.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_1/00002.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00005.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_1/00003.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00006.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_1/00003.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00006.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_1/00004.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00007.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_1/00004.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00007.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_2/00000.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00008.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_2/00000.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00008.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_2/00001.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00009.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_2/00001.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00009.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_2/00002.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00010.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_2/00002.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00010.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_2/00003.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00011.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_2/00003.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00011.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00012.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00012.png new file mode 100644 index 0000000..2675875 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00012.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00013.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00013.png new file mode 100644 index 0000000..2db2dcf Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00013.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00014.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00014.png new file mode 100644 index 0000000..a9eca40 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00014.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00000.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00015.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_blind_simple/00000.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00015.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00016.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00016.png new file mode 100644 index 0000000..0a6a823 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00016.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00017.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00017.png new file mode 100644 index 0000000..04f6b02 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00017.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00018.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00018.png new file mode 100644 index 0000000..8a8c617 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00018.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00019.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00019.png new file mode 100644 index 0000000..9f26513 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00019.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00020.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00020.png new file mode 100644 index 0000000..4249029 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00020.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00021.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00021.png new file mode 100644 index 0000000..bb4b73f Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00021.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00022.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00022.png new file mode 100644 index 0000000..b7a5302 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00022.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00023.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00023.png new file mode 100644 index 0000000..cc968dc Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00023.png differ diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00010.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00024.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_blind_simple/00010.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00024.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00010.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/00025.png similarity index 100% rename from tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00010.png rename to tests/ragger/snapshots/nanos/test_sign_parameter_selector/00025.png diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00000.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00000.png deleted file mode 100644 index 8d84cc7..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00000.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00009.png b/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00009.png deleted file mode 100644 index 1c9156c..0000000 Binary files a/tests/ragger/snapshots/nanos/test_sign_parameter_selector/step_3/00009.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00000.png b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00000.png new file mode 100644 index 0000000..37e5579 Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00000.png differ diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00001.png b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00001.png new file mode 100644 index 0000000..8adfe9b Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00001.png differ diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00002.png b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00002.png new file mode 100644 index 0000000..2d1cb47 Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00002.png differ diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00003.png b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00003.png new file mode 100644 index 0000000..f1ac3da Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00003.png differ diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00004.png b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00004.png new file mode 100644 index 0000000..dd0c56e Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00004.png differ diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00005.png b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00005.png new file mode 100644 index 0000000..e90cd9d Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00005.png differ diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00006.png b/tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00006.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00006.png rename to tests/ragger/snapshots/nanosp/test_blind_sign_rejected/00006.png diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00000.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00000.png new file mode 100644 index 0000000..37e5579 Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00000.png differ diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00001.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00001.png new file mode 100644 index 0000000..8adfe9b Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00001.png differ diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00002.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00002.png new file mode 100644 index 0000000..2d1cb47 Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00002.png differ diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00003.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00003.png new file mode 100644 index 0000000..f1ac3da Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00003.png differ diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00004.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00004.png new file mode 100644 index 0000000..dd0c56e Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00004.png differ diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00000.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00005.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00000.png rename to tests/ragger/snapshots/nanosp/test_blind_sign_signed/00005.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00001.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00006.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00001.png rename to tests/ragger/snapshots/nanosp/test_blind_sign_signed/00006.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00002.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00007.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00002.png rename to tests/ragger/snapshots/nanosp/test_blind_sign_signed/00007.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00003.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00008.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00003.png rename to tests/ragger/snapshots/nanosp/test_blind_sign_signed/00008.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00004.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00009.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00004.png rename to tests/ragger/snapshots/nanosp/test_blind_sign_signed/00009.png diff --git a/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00010.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00010.png new file mode 100644 index 0000000..b499103 Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00010.png differ diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00005.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00011.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_3/00005.png rename to tests/ragger/snapshots/nanosp/test_blind_sign_signed/00011.png diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00008.png b/tests/ragger/snapshots/nanosp/test_blind_sign_signed/00012.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00008.png rename to tests/ragger/snapshots/nanosp/test_blind_sign_signed/00012.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_blind_and_nonce_display b/tests/ragger/snapshots/nanosp/test_sign_blind_and_nonce_display deleted file mode 120000 index a9c6880..0000000 --- a/tests/ragger/snapshots/nanosp/test_sign_blind_and_nonce_display +++ /dev/null @@ -1 +0,0 @@ -../nanox/test_sign_blind_and_nonce_display \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_sign_blind_simple b/tests/ragger/snapshots/nanosp/test_sign_blind_simple deleted file mode 120000 index 3ab1815..0000000 --- a/tests/ragger/snapshots/nanosp/test_sign_blind_simple +++ /dev/null @@ -1 +0,0 @@ -../nanox/test_sign_blind_simple \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_0/00000.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00000.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_0/00000.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00000.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_0/00001.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00001.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_0/00001.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00001.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_0/00002.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00002.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_0/00002.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00002.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_1/00000.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00003.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_1/00000.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00003.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_1/00001.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00004.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_1/00001.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00004.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_1/00002.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00005.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_1/00002.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00005.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_2/00000.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00006.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_2/00000.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00006.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_2/00001.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00007.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_2/00001.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00007.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_2/00002.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00008.png similarity index 100% rename from tests/ragger/snapshots/nanosp/test_sign_parameter_selector/step_2/00002.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00008.png diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00009.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00009.png new file mode 100644 index 0000000..37e5579 Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00009.png differ diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00010.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00010.png new file mode 100644 index 0000000..8adfe9b Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00010.png differ diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00011.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00011.png new file mode 100644 index 0000000..2d1cb47 Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00011.png differ diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00012.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00012.png new file mode 100644 index 0000000..f1ac3da Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00012.png differ diff --git a/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00013.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00013.png new file mode 100644 index 0000000..dd0c56e Binary files /dev/null and b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00013.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00000.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00014.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00000.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00014.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00001.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00015.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00001.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00015.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00002.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00016.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00002.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00016.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00003.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00017.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00003.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00017.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00004.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00018.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00004.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00018.png diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00007.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00019.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00007.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00019.png diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00007.png b/tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00020.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_blind_simple/00007.png rename to tests/ragger/snapshots/nanosp/test_sign_parameter_selector/00020.png diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00000.png b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00000.png new file mode 100644 index 0000000..37e5579 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00000.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00001.png b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00001.png new file mode 100644 index 0000000..8adfe9b Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00001.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00002.png b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00002.png new file mode 100644 index 0000000..2d1cb47 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00002.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00003.png b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00003.png new file mode 100644 index 0000000..f1ac3da Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00003.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00004.png b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00004.png new file mode 100644 index 0000000..dd0c56e Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00004.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00005.png b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00005.png new file mode 100644 index 0000000..e90cd9d Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00005.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00006.png b/tests/ragger/snapshots/nanox/test_blind_sign_rejected/00006.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00006.png rename to tests/ragger/snapshots/nanox/test_blind_sign_rejected/00006.png diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00000.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00000.png new file mode 100644 index 0000000..37e5579 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00000.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00001.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00001.png new file mode 100644 index 0000000..8adfe9b Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00001.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00002.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00002.png new file mode 100644 index 0000000..2d1cb47 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00002.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00003.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00003.png new file mode 100644 index 0000000..f1ac3da Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00003.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00004.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00004.png new file mode 100644 index 0000000..dd0c56e Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00004.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00000.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00005.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_blind_simple/00000.png rename to tests/ragger/snapshots/nanox/test_blind_sign_signed/00005.png diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00006.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00006.png new file mode 100644 index 0000000..1ac2ab0 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00006.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00007.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00007.png new file mode 100644 index 0000000..cdcc19d Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00007.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00008.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00008.png new file mode 100644 index 0000000..d704566 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00008.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00009.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00009.png new file mode 100644 index 0000000..0fd18b2 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00009.png differ diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00010.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00010.png new file mode 100644 index 0000000..b499103 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00010.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00006.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00011.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_blind_simple/00006.png rename to tests/ragger/snapshots/nanox/test_blind_sign_signed/00011.png diff --git a/tests/ragger/snapshots/nanox/test_blind_sign_signed/00012.png b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00012.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_blind_sign_signed/00012.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00001.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00001.png deleted file mode 100644 index b4d7bef..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00001.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00002.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00002.png deleted file mode 100644 index b8e2d05..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00002.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00003.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00003.png deleted file mode 100644 index 36ecb93..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00003.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00004.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00004.png deleted file mode 100644 index eb15b72..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00004.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00005.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00005.png deleted file mode 100644 index 61f3687..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00005.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00006.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00006.png deleted file mode 100644 index 1bcb787..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00006.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00001.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00001.png deleted file mode 100644 index b4d7bef..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00001.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00002.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00002.png deleted file mode 100644 index b8e2d05..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00002.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00003.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00003.png deleted file mode 100644 index 36ecb93..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00003.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00004.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00004.png deleted file mode 100644 index eb15b72..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00004.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00005.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00005.png deleted file mode 100644 index 1bcb787..0000000 Binary files a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00005.png and /dev/null differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_0/00000.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00000.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_0/00000.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00000.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_0/00001.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00001.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_0/00001.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00001.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_0/00002.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00002.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_0/00002.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00002.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_1/00000.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00003.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_1/00000.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00003.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_1/00001.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00004.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_1/00001.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00004.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_1/00002.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00005.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_1/00002.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00005.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_2/00000.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00006.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_2/00000.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00006.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_2/00001.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00007.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_2/00001.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00007.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_2/00002.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00008.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_2/00002.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00008.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00009.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00009.png new file mode 100644 index 0000000..37e5579 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00009.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00010.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00010.png new file mode 100644 index 0000000..8adfe9b Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00010.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00011.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00011.png new file mode 100644 index 0000000..2d1cb47 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00011.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00012.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00012.png new file mode 100644 index 0000000..f1ac3da Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00012.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00013.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00013.png new file mode 100644 index 0000000..dd0c56e Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00013.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00000.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00014.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00000.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00014.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00015.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00015.png new file mode 100644 index 0000000..1ac2ab0 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00015.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00016.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00016.png new file mode 100644 index 0000000..cdcc19d Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00016.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00017.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00017.png new file mode 100644 index 0000000..d704566 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00017.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00018.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00018.png new file mode 100644 index 0000000..0fd18b2 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00018.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00005.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00019.png similarity index 100% rename from tests/ragger/snapshots/nanox/test_sign_parameter_selector/step_3/00005.png rename to tests/ragger/snapshots/nanox/test_sign_parameter_selector/00019.png diff --git a/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00020.png b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00020.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_parameter_selector/00020.png differ diff --git a/tests/ragger/snapshots/stax/test_blind_sign_reject_in_risk_review/00000.png b/tests/ragger/snapshots/stax/test_blind_sign_reject_in_risk_review/00000.png new file mode 100644 index 0000000..ab4ddc3 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_blind_sign_reject_in_risk_review/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_blind_sign_reject_in_risk_review/00001.png b/tests/ragger/snapshots/stax/test_blind_sign_reject_in_risk_review/00001.png new file mode 100644 index 0000000..b1e4c82 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_blind_sign_reject_in_risk_review/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00005.png b/tests/ragger/snapshots/stax/test_blind_sign_reject_in_risk_review/00002.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00005.png rename to tests/ragger/snapshots/stax/test_blind_sign_reject_in_risk_review/00002.png diff --git a/tests/ragger/snapshots/stax/test_blind_sign_rejected/00000.png b/tests/ragger/snapshots/stax/test_blind_sign_rejected/00000.png new file mode 100644 index 0000000..ab4ddc3 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_blind_sign_rejected/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00005.png b/tests/ragger/snapshots/stax/test_blind_sign_rejected/00001.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_blind_simple/00005.png rename to tests/ragger/snapshots/stax/test_blind_sign_rejected/00001.png diff --git a/tests/ragger/snapshots/stax/test_blind_sign_signed/00000.png b/tests/ragger/snapshots/stax/test_blind_sign_signed/00000.png new file mode 100644 index 0000000..ab4ddc3 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_blind_sign_signed/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_blind_sign_signed/00001.png b/tests/ragger/snapshots/stax/test_blind_sign_signed/00001.png new file mode 100644 index 0000000..b1e4c82 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_blind_sign_signed/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00000.png b/tests/ragger/snapshots/stax/test_blind_sign_signed/00002.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00000.png rename to tests/ragger/snapshots/stax/test_blind_sign_signed/00002.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00001.png b/tests/ragger/snapshots/stax/test_blind_sign_signed/00003.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00001.png rename to tests/ragger/snapshots/stax/test_blind_sign_signed/00003.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00002.png b/tests/ragger/snapshots/stax/test_blind_sign_signed/00004.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00002.png rename to tests/ragger/snapshots/stax/test_blind_sign_signed/00004.png diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00003.png b/tests/ragger/snapshots/stax/test_blind_sign_signed/00005.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00003.png rename to tests/ragger/snapshots/stax/test_blind_sign_signed/00005.png diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00004.png b/tests/ragger/snapshots/stax/test_blind_sign_signed/00006.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00004.png rename to tests/ragger/snapshots/stax/test_blind_sign_signed/00006.png diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00001.png b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00001.png deleted file mode 100644 index a3014b2..0000000 Binary files a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00001.png and /dev/null differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00002.png b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00002.png deleted file mode 100644 index 58a17e2..0000000 Binary files a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00002.png and /dev/null differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/confirm/00000.png b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/confirm/00000.png deleted file mode 100644 index d4e603a..0000000 Binary files a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/confirm/00000.png and /dev/null differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00001.png b/tests/ragger/snapshots/stax/test_sign_blind_simple/00001.png deleted file mode 100644 index a3014b2..0000000 Binary files a/tests/ragger/snapshots/stax/test_sign_blind_simple/00001.png and /dev/null differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00002.png b/tests/ragger/snapshots/stax/test_sign_blind_simple/00002.png deleted file mode 100644 index ca94415..0000000 Binary files a/tests/ragger/snapshots/stax/test_sign_blind_simple/00002.png and /dev/null differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/confirm/00000.png b/tests/ragger/snapshots/stax/test_sign_blind_simple/confirm/00000.png deleted file mode 100644 index d4e603a..0000000 Binary files a/tests/ragger/snapshots/stax/test_sign_blind_simple/confirm/00000.png and /dev/null differ diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_0/00000.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00000.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_0/00000.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00000.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_0/00001.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00001.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_0/00001.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00001.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_0/00002.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00002.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_0/00002.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00002.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_1/00000.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00003.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_1/00000.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00003.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_1/00001.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00004.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_1/00001.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00004.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_1/00002.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00005.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_1/00002.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00005.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_2/00000.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00006.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_2/00000.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00006.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_2/00001.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00007.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_2/00001.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00007.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_2/00002.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00008.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_parameter_selector/step_2/00002.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00008.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/00009.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00009.png new file mode 100644 index 0000000..ab4ddc3 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00009.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/00010.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00010.png new file mode 100644 index 0000000..b1e4c82 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00010.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00000.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00011.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_blind_simple/00000.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00011.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/00012.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00012.png new file mode 100644 index 0000000..eff07e3 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00012.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/00013.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00013.png new file mode 100644 index 0000000..d47d19d Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00013.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00003.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00014.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_blind_simple/00003.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00014.png diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00004.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/00015.png similarity index 100% rename from tests/ragger/snapshots/stax/test_sign_blind_simple/00004.png rename to tests/ragger/snapshots/stax/test_sign_parameter_selector/00015.png diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00000.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00000.png deleted file mode 100644 index b22161f..0000000 Binary files a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00000.png and /dev/null differ diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00003.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00003.png deleted file mode 100644 index c19f513..0000000 Binary files a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00003.png and /dev/null differ diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00004.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00004.png deleted file mode 100644 index 2ba6d27..0000000 Binary files a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00004.png and /dev/null differ diff --git a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00005.png b/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00005.png deleted file mode 100644 index b1ff1b3..0000000 Binary files a/tests/ragger/snapshots/stax/test_sign_parameter_selector/step_3/00005.png and /dev/null differ diff --git a/tests/ragger/test_blind_sign.py b/tests/ragger/test_blind_sign.py index f4be014..ea9c7d5 100644 --- a/tests/ragger/test_blind_sign.py +++ b/tests/ragger/test_blind_sign.py @@ -1,5 +1,6 @@ from pathlib import Path import json +from typing import Optional import pytest from web3 import Web3 @@ -18,15 +19,17 @@ from client.utils import recover_transaction BIP32_PATH = "m/44'/60'/0'/0/0" +DEVICE_ADDR: Optional[bytes] = None -# Token approval, would require loading the "internal plugin" & -# providing the token metadata from the CAL -def test_blind_sign(firmware: Firmware, - backend: BackendInterface, - navigator: Navigator, - default_screenshot_path: Path): - app_client = EthAppClient(backend) +# TODO: do one test with nonce display + +@pytest.fixture(name="sign", params=[True, False]) +def sign_fixture(request) -> bool: + return request.param + + +def common_tx_params() -> dict: with open(f"{ABIS_FOLDER}/erc20.json", encoding="utf-8") as file: contract = Web3().eth.contract( abi=json.load(file), @@ -37,7 +40,7 @@ def test_blind_sign(firmware: Firmware, bytes.fromhex("000000000022d473030f116ddee9f6b43ac78ba3"), Web3.to_wei("2", "ether") ]) - tx_params = { + return { "nonce": 235, "maxFeePerGas": Web3.to_wei(100, "gwei"), "maxPriorityFeePerGas": Web3.to_wei(10, "gwei"), @@ -47,21 +50,91 @@ def test_blind_sign(firmware: Firmware, "data": data, "chainId": 1 } - with pytest.raises(ExceptionRAPDU) as e: - with app_client.sign(BIP32_PATH, tx_params): - pass - assert e.value.status == StatusWord.INVALID_DATA - moves = [] - if firmware.device.startswith("nano"): - if firmware.device == "nanos": - moves += [NavInsID.RIGHT_CLICK] - moves += [NavInsID.BOTH_CLICK] + +# Token approval, would require loading the "internal plugin" & +# providing the token metadata from the CAL +def test_blind_sign(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + default_screenshot_path: Path, + test_name: str, + sign: bool): + global DEVICE_ADDR + app_client = EthAppClient(backend) + + if DEVICE_ADDR is None: + with app_client.get_public_addr(bip32_path=BIP32_PATH, display=False): + pass + _, DEVICE_ADDR, _ = ResponseParser.pk_addr(app_client.response().data) + + tx_params = common_tx_params() + try: + with app_client.sign(BIP32_PATH, tx_params): + if sign: + test_name += "_signed" + else: + test_name += "_rejected" + + moves = [] + if firmware.device.startswith("nano"): + if firmware.device == "nanos": + moves += [NavInsID.RIGHT_CLICK] * 2 + else: + moves += [NavInsID.RIGHT_CLICK] * 4 + + if not sign: + moves += [NavInsID.RIGHT_CLICK] + + moves += [NavInsID.BOTH_CLICK] + + if sign: + if firmware.device == "nanos": + moves += [NavInsID.RIGHT_CLICK] * 10 + else: + moves += [NavInsID.RIGHT_CLICK] * 6 + moves += [NavInsID.BOTH_CLICK] + else: + if sign: + moves += [NavInsID.USE_CASE_CHOICE_REJECT] + moves += [NavInsID.USE_CASE_CHOICE_CONFIRM] + moves += [NavInsID.USE_CASE_REVIEW_TAP] * 3 + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] + else: + moves += [NavInsID.USE_CASE_CHOICE_CONFIRM] + navigator.navigate_and_compare(default_screenshot_path, + test_name, + moves) + except ExceptionRAPDU as e: + assert e.status == StatusWord.INVALID_DATA else: - moves += [NavInsID.USE_CASE_CHOICE_CONFIRM] - navigator.navigate_and_compare(default_screenshot_path, - "blind-signed_approval", - moves) + assert sign is True + # verify signature + vrs = ResponseParser.signature(app_client.response().data) + addr = recover_transaction(tx_params, vrs) + assert addr == DEVICE_ADDR + + +def test_blind_sign_reject_in_risk_review(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + default_screenshot_path: Path, + test_name: str): + app_client = EthAppClient(backend) + + if firmware.device not in ["stax", "flex"]: + pytest.skip("Not supported on non-NBGL apps") + + try: + with app_client.sign(BIP32_PATH, common_tx_params()): + moves = [NavInsID.USE_CASE_CHOICE_REJECT] * 2 + navigator.navigate_and_compare(default_screenshot_path, + test_name, + moves) + except ExceptionRAPDU as e: + assert e.status == StatusWord.INVALID_DATA + else: + assert False # Should have thrown # Token approval, would require loading the "internal plugin" & @@ -72,65 +145,56 @@ def test_sign_parameter_selector(firmware: Firmware, scenario_navigator: NavigateWithScenario, test_name: str, default_screenshot_path: Path): + global DEVICE_ADDR app_client = EthAppClient(backend) - with app_client.get_public_addr(bip32_path=BIP32_PATH, display=False): - pass - _, DEVICE_ADDR, _ = ResponseParser.pk_addr(app_client.response().data) + if DEVICE_ADDR is None: + with app_client.get_public_addr(bip32_path=BIP32_PATH, display=False): + pass + _, DEVICE_ADDR, _ = ResponseParser.pk_addr(app_client.response().data) - with open(f"{ABIS_FOLDER}/erc20.json", encoding="utf-8") as file: - abi = json.load(file) - - contract_name = "approve" - count = 0 - for elt in abi: - if elt["name"] == contract_name: - count = len(elt["inputs"]) - break - assert count == 2, "Invalid inputs number" - tx_params = { - "nonce": 235, - "maxFeePerGas": Web3.to_wei(100, "gwei"), - "maxPriorityFeePerGas": Web3.to_wei(10, "gwei"), - "gas": 44001, - # Maker: Dai Stablecoin - "to": bytes.fromhex("6b175474e89094c44da98b954eedeac495271d0f"), - "data": Web3().eth.contract(abi=abi).encodeABI(contract_name, [ - # Uniswap Protocol: Permit2 - bytes.fromhex("000000000022d473030f116ddee9f6b43ac78ba3"), - Web3.to_wei("2", "ether") - ]), - "chainId": 1 - } - - settings_toggle(firmware, navigator, [SettingID.DEBUG_DATA, SettingID.BLIND_SIGNING]) + settings_toggle(firmware, navigator, [SettingID.DEBUG_DATA]) + tx_params = common_tx_params() + data_len = len(bytes.fromhex(tx_params["data"][2:])) + # selector + flows = 1 + data_len -= 4 + # parameters + flows += data_len // 32 with app_client.sign(BIP32_PATH, tx_params): + moves = [] if firmware.device.startswith("nano"): - end_text = "Approve" - nav_inst = NavInsID.RIGHT_CLICK - valid_instr = [NavInsID.BOTH_CLICK] - else: - end_text = "Confirm" - nav_inst = NavInsID.USE_CASE_REVIEW_TAP - valid_instr = [NavInsID.USE_CASE_REVIEW_CONFIRM] + if firmware.device == "nanos": + moves += [NavInsID.RIGHT_CLICK] * 2 + [NavInsID.BOTH_CLICK] + # Parameters on Nano S are split on multiple pages, hardcoded because the two parameters don't use the + # same amount of pages because of non-monospace fonts + moves += [NavInsID.RIGHT_CLICK] * 4 + [NavInsID.BOTH_CLICK] + moves += [NavInsID.RIGHT_CLICK] * 3 + [NavInsID.BOTH_CLICK] + else: + moves += ([NavInsID.RIGHT_CLICK] * 2 + [NavInsID.BOTH_CLICK]) * flows - # Loop for "Selector" + the contract inputs - for step in range(count + 1): - navigator.navigate_until_text_and_compare(nav_inst, - valid_instr, - end_text, - default_screenshot_path, - f"{test_name}/step_{step}", - screen_change_after_last_instruction=False) - step +=1 + if firmware.device == "nanos": + moves += [NavInsID.RIGHT_CLICK] * 2 + else: + moves += [NavInsID.RIGHT_CLICK] * 4 + moves += [NavInsID.BOTH_CLICK] - # Transaction review - if firmware.device.startswith("nano"): - end_text = "Accept" + if firmware.device == "nanos": + pass + moves += [NavInsID.RIGHT_CLICK] * 9 + else: + moves += [NavInsID.RIGHT_CLICK] * 5 + moves += [NavInsID.BOTH_CLICK] else: - end_text = "Sign" - scenario_navigator.review_approve(default_screenshot_path, f"{test_name}/step_{step}", end_text) + moves += ([NavInsID.USE_CASE_REVIEW_TAP] * 2 + [NavInsID.USE_CASE_REVIEW_CONFIRM]) * flows + moves += [NavInsID.USE_CASE_CHOICE_REJECT] + moves += [NavInsID.USE_CASE_CHOICE_CONFIRM] + moves += [NavInsID.USE_CASE_REVIEW_TAP] * 3 + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] + navigator.navigate_and_compare(default_screenshot_path, + test_name, + moves) # verify signature vrs = ResponseParser.signature(app_client.response().data) diff --git a/tests/ragger/test_sign.py b/tests/ragger/test_sign.py index e7f668f..b86cbf1 100644 --- a/tests/ragger/test_sign.py +++ b/tests/ragger/test_sign.py @@ -164,21 +164,6 @@ def test_legacy_chainid(firmware: Firmware, common(firmware, backend, navigator, scenario_navigator, default_screenshot_path, tx_params, test_name, BIP32_PATH2) -# Try to blind sign with setting disabled -def test_legacy_contract(backend: BackendInterface): - - # pylint: disable=line-too-long - buffer = bytes.fromhex("058000002c8000003c800000010000000000000000f849208506fc23ac008303dc3194f650c3d88d12db855b8bf7d11be6c55a4e07dcc980a4a1712d6800000000000000000000000000000000000000000000000000000000000acbc7018080") - # pylint: enable=line-too-long - app_client = EthAppClient(backend) - - try: - app_client.send_raw(0xe0, 0x04, 0x00, 0x00, buffer) - - except ExceptionRAPDU as e: - assert e.status == StatusWord.INVALID_DATA - - def test_1559(firmware: Firmware, backend: BackendInterface, navigator: Navigator, @@ -250,64 +235,6 @@ def test_sign_nonce_display(firmware: Firmware, common(firmware, backend, navigator, scenario_navigator, default_screenshot_path, tx_params, test_name, "m/44'/60'/1'/0/0") -def test_sign_blind_simple(firmware: Firmware, - backend: BackendInterface, - navigator: Navigator, - scenario_navigator: NavigateWithScenario, - test_name: str, - default_screenshot_path: Path): - settings_toggle(firmware, navigator, [SettingID.BLIND_SIGNING]) - - data = "ok" - tx_params: dict = { - "nonce": NONCE2, - "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), - "gas": GAS_LIMIT, - "to": ADDR2, - "value": Web3.to_wei(AMOUNT2, "ether"), - "chainId": CHAIN_ID, - "data": data.encode('utf-8').hex() - } - common(firmware, - backend, - navigator, - scenario_navigator, - default_screenshot_path, - tx_params, - test_name, - "m/44'/60'/1'/0/0", - True) - - -def test_sign_blind_and_nonce_display(firmware: Firmware, - backend: BackendInterface, - navigator: Navigator, - scenario_navigator: NavigateWithScenario, - test_name: str, - default_screenshot_path: Path): - settings_toggle(firmware, navigator, [SettingID.NONCE, SettingID.BLIND_SIGNING]) - - data = "That's a little message :)" - tx_params: dict = { - "nonce": 1844674, - "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), - "gas": GAS_LIMIT, - "to": ADDR2, - "value": Web3.to_wei(AMOUNT2, "ether"), - "chainId": CHAIN_ID, - "data": data.encode('utf-8').hex() - } - common(firmware, - backend, - navigator, - scenario_navigator, - default_screenshot_path, - tx_params, - test_name, - "m/44'/60'/1'/0/0", - True) - - def test_sign_reject(backend: BackendInterface, scenario_navigator: NavigateWithScenario, test_name: str, @@ -345,21 +272,6 @@ def test_sign_error_transaction_type(backend: BackendInterface): assert False # An exception should have been raised -def test_sign_blind_error_disabled(backend: BackendInterface): - data = "ok" - tx_params: dict = { - "nonce": NONCE2, - "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), - "gas": GAS_LIMIT, - "to": ADDR2, - "value": Web3.to_wei(AMOUNT2, "ether"), - "chainId": CHAIN_ID, - "data": data.encode('utf-8').hex() - } - - common_fail(backend, tx_params, StatusWord.INVALID_DATA, BIP32_PATH2) - - def test_sign_eip_2930(firmware: Firmware, backend: BackendInterface, navigator: Navigator,