Skip to content

Commit de2c15d

Browse files
Merge pull request #328 from LedgerHQ/nbgl-on-nano_fixes
Nbgl on nano fixes
2 parents f644b21 + 9d72e39 commit de2c15d

File tree

228 files changed

+72
-31
lines changed
  • glyphs
  • icons
  • src
  • tests
    • snapshots
      • nanosp
        • test_dashboard
        • test_get_extended_pubkey_non_standard_0_0
        • test_get_extended_pubkey_non_standard_reject_0_0
        • test_get_extended_pubkey_standard_display_m
        • test_get_wallet_address_multisig_legacy_v1_ui_0_0
        • test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0
        • test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0
        • test_register_miniscript_long_policy_0_0
        • test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0
        • test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0
        • test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0
        • test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0
        • test_register_wallet_accept_legacy_0_0
        • test_register_wallet_accept_legacy_v1_0_0
        • test_register_wallet_accept_sh_wit_0_0
        • test_register_wallet_accept_sh_wit_v1_0_0
        • test_register_wallet_accept_wit_0_0
        • test_register_wallet_accept_wit_v1_0_0
        • test_register_wallet_reject_header_0_0
        • test_register_wallet_reject_header_v1_0_0
        • test_register_wallet_tr_script_pk_0_0
        • test_register_wallet_tr_script_sortedmulti_0_0
        • test_register_wallet_tr_with_nums_keypath_0_0
        • test_register_wallet_with_long_name_0_0
        • test_sighash_all_anyone_input_changed_0_0
        • test_sighash_all_anyone_output_changed_0_0
        • test_sighash_all_anyone_sign_0_0
        • test_sighash_all_input_modified_0_0
        • test_sighash_all_output_modified_0_0
        • test_sighash_all_sign_psbt_0_0
        • test_sighash_none_anyone_input_changed_0_0
        • test_sighash_none_anyone_output_changed_0_0
        • test_sighash_none_anyone_sign_0_0
        • test_sighash_none_input_modified_0_0
        • test_sighash_none_output_modified_0_0
        • test_sighash_none_sign_psbt_0_0
        • test_sighash_segwitv0_sighash1_0_0
        • test_sighash_segwitv0_sighash2_0_0
        • test_sighash_segwitv0_sighash3_0_0
        • test_sighash_segwitv0_sighash81_0_0
        • test_sighash_segwitv0_sighash82_0_0
        • test_sighash_segwitv0_sighash83_0_0
        • test_sighash_single_anyone_input_changed_0_0
        • test_sighash_single_anyone_output_changed_0_0
        • test_sighash_single_anyone_sign_0_0
        • test_sighash_single_input_modified_0_0
        • test_sighash_single_output_different_index_modified_0_0
        • test_sighash_single_output_same_index_modified_0_0
        • test_sighash_single_sign_psbt_0_0
        • test_sighash_unsupported_0_0
        • test_sighash_unsupported_for_segwitv0_0_0
        • test_sign_message_0_0
        • test_sign_message_accept_0_0
        • test_sign_message_accept_long_0_0
        • test_sign_message_accept_long_0_1
        • test_sign_message_accept_long_1_0
        • test_sign_message_accept_long_2_0
        • test_sign_message_accept_long_3_0
        • test_sign_message_accept_non_ascii_0_0
        • test_sign_message_accept_too_long_0_0
        • test_sign_message_hash_reject_0_0
        • test_sign_message_reject_0_0
        • test_sign_psbt_against_wrong_tapleaf_hash_0_0
        • test_sign_psbt_highfee_0_0
        • test_sign_psbt_miniscript_multikey_0_0
        • test_sign_psbt_multisig_sh_wsh_0_0
        • test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0
        • test_sign_psbt_multisig_wsh_0_0
        • test_sign_psbt_multisig_wsh_v1_0_0
        • test_sign_psbt_singlesig_large_amount_0_0
        • test_sign_psbt_singlesig_pkh_1to1_0_0
        • test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0
        • test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0
        • test_sign_psbt_singlesig_pkh_1to1_v1_0_0
        • test_sign_psbt_singlesig_sh_wpkh_1to2_0_0
        • test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0
        • test_sign_psbt_singlesig_wpkh_1to2_0_0
        • test_sign_psbt_singlesig_wpkh_1to2_v1_0_0
        • test_sign_psbt_singlesig_wpkh_2to2_0_0
        • test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0
        • test_sign_psbt_singlesig_wpkh_2to2_v1_0_0
        • test_sign_psbt_singlesig_wpkh_selftransfer_0_0
        • test_sign_psbt_taproot_1to2_sighash_all_0_0
        • test_sign_psbt_taproot_1to2_sighash_default_0_0_0
        • test_sign_psbt_taproot_1to2_sighash_default_1_0_0
        • test_sign_psbt_taproot_1to2_v1_0_0
        • test_sign_psbt_tr_script_pk_sighash_all_0_0
        • test_sign_psbt_with_external_inputs_0_0_0
        • test_sign_psbt_with_external_inputs_0_0_1
        • test_sign_psbt_with_external_inputs_0_1_0
        • test_sign_psbt_with_external_inputs_0_2_0
        • test_sign_psbt_with_external_inputs_1_0_0
        • test_sign_psbt_with_external_inputs_1_0_1
        • test_sign_psbt_with_external_inputs_1_1_0
        • test_sign_psbt_with_external_inputs_2_0_0
        • test_sign_psbt_with_external_inputs_2_0_1
        • test_sign_psbt_with_external_inputs_2_1_0
        • test_sign_psbt_with_naked_opreturn_0_0
        • test_sign_psbt_with_opreturn_0_0
        • test_sign_psbt_with_opreturn_v1_0_0
        • test_sign_psbt_with_segwit_v16_0_0
        • test_sign_psbt_with_segwit_v16_v1_0_0
      • nanox
        • test_dashboard
        • test_get_extended_pubkey_non_standard_0_0
        • test_get_extended_pubkey_non_standard_reject_0_0
        • test_get_extended_pubkey_standard_display_m
        • test_get_wallet_address_multisig_legacy_v1_ui_0_0
        • test_get_wallet_address_singlesig_legacy_v1_ui_0_0_0
        • test_get_wallet_address_singlesig_legacy_v1_ui_1_0_0
        • test_register_miniscript_long_policy_0_0
        • test_register_unusual_singlesig_accounts_Unusual_Legacy_0_0
        • test_register_unusual_singlesig_accounts_Unusual_Native_Segwit_0_0
        • test_register_unusual_singlesig_accounts_Unusual_Nested_Segwit_0_0
        • test_register_unusual_singlesig_accounts_Unusual_Taproot_0_0
        • test_register_wallet_accept_legacy_0_0
        • test_register_wallet_accept_legacy_v1_0_0
        • test_register_wallet_accept_sh_wit_0_0
        • test_register_wallet_accept_sh_wit_v1_0_0
        • test_register_wallet_accept_wit_0_0
        • test_register_wallet_accept_wit_v1_0_0
        • test_register_wallet_reject_header_0_0
        • test_register_wallet_reject_header_v1_0_0
        • test_register_wallet_tr_script_pk_0_0
        • test_register_wallet_tr_script_sortedmulti_0_0
        • test_register_wallet_tr_with_nums_keypath_0_0
        • test_register_wallet_with_long_name_0_0
        • test_sighash_all_anyone_input_changed_0_0
        • test_sighash_all_anyone_output_changed_0_0
        • test_sighash_all_anyone_sign_0_0
        • test_sighash_all_input_modified_0_0
        • test_sighash_all_output_modified_0_0
        • test_sighash_all_sign_psbt_0_0
        • test_sighash_none_anyone_input_changed_0_0
        • test_sighash_none_anyone_output_changed_0_0
        • test_sighash_none_anyone_sign_0_0
        • test_sighash_none_input_modified_0_0
        • test_sighash_none_output_modified_0_0
        • test_sighash_none_sign_psbt_0_0
        • test_sighash_segwitv0_sighash1_0_0
        • test_sighash_segwitv0_sighash2_0_0
        • test_sighash_segwitv0_sighash3_0_0
        • test_sighash_segwitv0_sighash81_0_0
        • test_sighash_segwitv0_sighash82_0_0
        • test_sighash_segwitv0_sighash83_0_0
        • test_sighash_single_anyone_input_changed_0_0
        • test_sighash_single_anyone_output_changed_0_0
        • test_sighash_single_anyone_sign_0_0
        • test_sighash_single_input_modified_0_0
        • test_sighash_single_output_different_index_modified_0_0
        • test_sighash_single_output_same_index_modified_0_0
        • test_sighash_single_sign_psbt_0_0
        • test_sighash_unsupported_0_0
        • test_sighash_unsupported_for_segwitv0_0_0
        • test_sign_message_0_0
        • test_sign_message_accept_0_0
        • test_sign_message_accept_long_0_0
        • test_sign_message_accept_long_0_1
        • test_sign_message_accept_long_1_0
        • test_sign_message_accept_long_2_0
        • test_sign_message_accept_long_3_0
        • test_sign_message_accept_non_ascii_0_0
        • test_sign_message_accept_too_long_0_0
        • test_sign_message_hash_reject_0_0
        • test_sign_message_reject_0_0
        • test_sign_psbt_against_wrong_tapleaf_hash_0_0
        • test_sign_psbt_highfee_0_0
        • test_sign_psbt_miniscript_multikey_0_0
        • test_sign_psbt_multisig_sh_wsh_0_0
        • test_sign_psbt_multisig_sh_wsh_missing_nonwitnessutxo_0_0
        • test_sign_psbt_multisig_wsh_0_0
        • test_sign_psbt_multisig_wsh_v1_0_0
        • test_sign_psbt_singlesig_large_amount_0_0
        • test_sign_psbt_singlesig_pkh_1to1_0_0
        • test_sign_psbt_singlesig_pkh_1to1_other_encodings_0_0_0
        • test_sign_psbt_singlesig_pkh_1to1_other_encodings_1_0_0
        • test_sign_psbt_singlesig_pkh_1to1_v1_0_0
        • test_sign_psbt_singlesig_sh_wpkh_1to2_0_0
        • test_sign_psbt_singlesig_sh_wpkh_1to2_v1_0_0
        • test_sign_psbt_singlesig_wpkh_1to2_0_0
        • test_sign_psbt_singlesig_wpkh_1to2_v1_0_0
        • test_sign_psbt_singlesig_wpkh_2to2_0_0
        • test_sign_psbt_singlesig_wpkh_2to2_missing_nonwitnessutxo_0_0
        • test_sign_psbt_singlesig_wpkh_2to2_v1_0_0
        • test_sign_psbt_singlesig_wpkh_selftransfer_0_0
        • test_sign_psbt_taproot_1to2_sighash_all_0_0
        • test_sign_psbt_taproot_1to2_sighash_default_0_0_0
        • test_sign_psbt_taproot_1to2_sighash_default_1_0_0
        • test_sign_psbt_taproot_1to2_v1_0_0
        • test_sign_psbt_tr_script_pk_sighash_all_0_0
        • test_sign_psbt_with_external_inputs_0_0_0
        • test_sign_psbt_with_external_inputs_0_0_1
        • test_sign_psbt_with_external_inputs_0_1_0
        • test_sign_psbt_with_external_inputs_0_2_0
        • test_sign_psbt_with_external_inputs_1_0_0
        • test_sign_psbt_with_external_inputs_1_0_1
        • test_sign_psbt_with_external_inputs_1_1_0
        • test_sign_psbt_with_external_inputs_2_0_0
        • test_sign_psbt_with_external_inputs_2_0_1
        • test_sign_psbt_with_external_inputs_2_1_0
        • test_sign_psbt_with_naked_opreturn_0_0
        • test_sign_psbt_with_opreturn_0_0
        • test_sign_psbt_with_opreturn_v1_0_0
        • test_sign_psbt_with_segwit_v16_0_0
        • test_sign_psbt_with_segwit_v16_v1_0_0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

228 files changed

+72
-31
lines changed

glyphs/bitcoin_logo.gif

29 Bytes

glyphs/bitcoin_logo_inv.gif

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../icons/nanox_app_bitcoin.gif

icons/nanox_app_bitcoin.gif

-1.01 KB

src/boilerplate/dispatcher.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ extern dispatcher_context_t G_dispatcher_context;
3030

3131
extern bool G_was_processing_screen_shown;
3232

33+
extern char const *G_processing_screen_text;
34+
3335
// Private state that is not made accessible from the dispatcher context
3436
struct {
3537
void (*termination_cb)(void);
@@ -161,7 +163,7 @@ void apdu_dispatcher(command_descriptor_t const cmd_descriptors[],
161163
handler(&G_dispatcher_context, cmd->p2);
162164
}
163165

164-
// Here a response (either success or error) should have been send.
166+
// Here a response (either success or error) should have been sent.
165167
// Failure to do so indicates a bug in the last command processors.
166168
if (G_dispatcher_state.sw == 0) {
167169
PRINTF("No response before terminating\n");
@@ -173,8 +175,12 @@ void apdu_dispatcher(command_descriptor_t const cmd_descriptors[],
173175
// - background processing took long enough that the "Processing..." screen was shown.
174176
bool is_ux_dirty = G_dispatcher_state.had_ux_flow || G_was_processing_screen_shown;
175177
if (G_dispatcher_state.termination_cb != NULL && is_ux_dirty) {
178+
G_dispatcher_state.termination_cb();
176179
G_was_processing_screen_shown = 0;
177180
}
178181

179182
io_clear_processing_timeout();
183+
184+
/* Resetting loading information screen */
185+
G_processing_screen_text = NULL;
180186
}

src/boilerplate/io.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
#include "dispatcher.h"
3333
#include "../swap/swap_globals.h"
34+
#include "../ui/display.h"
3435

3536
uint16_t G_output_len = 0;
3637

@@ -78,7 +79,7 @@ void io_show_processing_screen() {
7879
if (!G_was_processing_screen_shown) {
7980
G_was_processing_screen_shown = true;
8081
if (!G_swap_state.called_from_swap) {
81-
nbgl_useCaseSpinner("Processing");
82+
nbgl_useCaseSpinner(ui_get_processing_screen_text());
8283
}
8384
}
8485
}

src/handler/sign_message.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
#define MAX_DISPLAYBLE_CHUNK_NUMBER \
3434
(5 * MESSAGE_CHUNK_PER_DISPLAY) // If the message is too long we will not display it
3535

36+
extern const char GA_LOADING_MESSAGE[];
37+
3638
static unsigned char const BSM_SIGN_MAGIC[] = {'\x18', 'B', 'i', 't', 'c', 'o', 'i', 'n', ' ',
3739
'S', 'i', 'g', 'n', 'e', 'd', ' ', 'M', 'e',
3840
's', 's', 'a', 'g', 'e', ':', '\n'};
@@ -123,6 +125,9 @@ void handler_sign_message(dispatcher_context_t* dc, uint8_t protocol_version) {
123125
return;
124126
}
125127

128+
/* Setting message loading information screen */
129+
ui_set_processing_screen_text(GA_LOADING_MESSAGE);
130+
126131
char path_str[MAX_SERIALIZED_BIP32_PATH_LENGTH + 1] = "(Master key)";
127132
if (bip32_path_len > 0) {
128133
bip32_path_format(bip32_path, bip32_path_len, path_str, sizeof(path_str));

src/handler/sign_psbt.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ typedef struct {
8484
uint32_t key_origin[MAX_BIP32_PATH_STEPS];
8585
} derivation_info_t;
8686

87+
extern const char GA_LOADING_TRANSACTION[];
88+
8789
// Convenience function to share common logic when parsing the
8890
// PSBT_{IN|OUT}_{TAP}?_BIP32_DERIVATION fields from inputs or outputs.
8991
// Note: This function must return -1 only on errors (causing signing to abort).
@@ -2092,6 +2094,9 @@ sign_psbt_cache_t G_sign_psbt_cache;
20922094
void handler_sign_psbt(dispatcher_context_t *dc, uint8_t protocol_version) {
20932095
LOG_PROCESSOR(__FILE__, __LINE__, __func__);
20942096

2097+
/* Setting transaction loading information screen */
2098+
ui_set_processing_screen_text(GA_LOADING_TRANSACTION);
2099+
20952100
sign_psbt_state_t st;
20962101
memset(&st, 0, sizeof(st));
20972102

@@ -2113,7 +2118,7 @@ void handler_sign_psbt(dispatcher_context_t *dc, uint8_t protocol_version) {
21132118

21142119
/** Inputs verification flow
21152120
*
2116-
* Go though all the inputs:
2121+
* Go through all the inputs:
21172122
* - verify the non_witness_utxo
21182123
* - compute value spent
21192124
* - detect internal inputs that should be signed, and if there are external inputs or unusual

src/ui/display.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ extern dispatcher_context_t G_dispatcher_context;
2424

2525
ui_state_t g_ui_state;
2626

27+
/*
28+
* Pointer to the text to be shown when processing.
29+
* If set to NULL, a default message is shown,
30+
* otherwise it must be a pointer to a valid 0-terminated string.
31+
*/
32+
char const *G_processing_screen_text;
33+
2734
void send_deny_sw(dispatcher_context_t *dc) {
2835
SEND_SW(dc, SW_DENY);
2936
}
@@ -392,3 +399,11 @@ bool ui_post_processing_confirm_message(dispatcher_context_t *context, bool succ
392399
void ui_pre_processing_message(void) {
393400
ui_set_display_prompt();
394401
}
402+
403+
char const *ui_get_processing_screen_text(void) {
404+
return (G_processing_screen_text != NULL) ? G_processing_screen_text : "Loading";
405+
}
406+
407+
void ui_set_processing_screen_text(const char *text) {
408+
G_processing_screen_text = text;
409+
}

src/ui/display.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@
2222

2323
#ifdef SCREEN_SIZE_WALLET
2424
#define ICON_APP_IMPORTANT C_Important_Circle_64px
25-
#define ICON_APP_LOGO C_Bitcoin_64px
25+
#define ICON_APP_HOME C_Bitcoin_64px
26+
#define ICON_APP_ACTION C_Bitcoin_64px
2627
#else
2728
#define ICON_APP_IMPORTANT C_icon_warning
28-
#define ICON_APP_LOGO C_bitcoin_logo
29+
#define ICON_APP_HOME C_bitcoin_logo
30+
#define ICON_APP_ACTION C_bitcoin_logo_inv
2931
#endif
3032

3133
typedef struct tx_ux_warning_s {
@@ -252,3 +254,9 @@ uint8_t get_streaming_index(void);
252254
void reset_streaming_index(void);
253255
void increase_streaming_index(void);
254256
void decrease_streaming_index(void);
257+
258+
/**
259+
* Functions to get and set the text to be shown when processing.
260+
*/
261+
char const *ui_get_processing_screen_text(void);
262+
void ui_set_processing_screen_text(const char *text);

src/ui/display_nbgl.c

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ const char GA_REGISTER_ACCOUNT[] = "Register account";
2727
const char GA_UNVERIFIED_INPUTS[] = "Unverified inputs\nUpdate your wallet software";
2828
const char GA_REVIEW_TRANSACTION[] = "Review transaction\nto send Bitcoin";
2929
const char GA_REVIEW_MESSAGE[] = "Review message";
30+
const char GA_LOADING_TRANSACTION[] = "Loading transaction";
31+
const char GA_LOADING_MESSAGE[] = "Loading message";
3032

3133
#define N_UX_PAIRS 18
3234

@@ -89,7 +91,7 @@ static void status_address_callback(bool confirm) {
8991
static void start_processing_transaction_callback(bool confirm) {
9092
if (confirm) {
9193
G_was_processing_screen_shown = true;
92-
nbgl_useCaseSpinner("Processing");
94+
nbgl_useCaseSpinner(ui_get_processing_screen_text());
9395
ux_flow_response_true();
9496
} else {
9597
status_transaction_cancel();
@@ -99,7 +101,7 @@ static void start_processing_transaction_callback(bool confirm) {
99101
static void start_processing_message_callback(bool confirm) {
100102
if (confirm) {
101103
G_was_processing_screen_shown = true;
102-
nbgl_useCaseSpinner("Processing");
104+
nbgl_useCaseSpinner(ui_get_processing_screen_text());
103105
ux_flow_response_true();
104106
} else {
105107
status_message_cancel();
@@ -232,7 +234,7 @@ void ui_accept_transaction_simplified_flow(void) {
232234

233235
nbgl_useCaseReview(TYPE_TRANSACTION,
234236
&pairList,
235-
&ICON_APP_LOGO,
237+
&ICON_APP_ACTION,
236238
GA_REVIEW_TRANSACTION,
237239
NULL,
238240
GA_SIGN_TRANSACTION,
@@ -241,7 +243,7 @@ void ui_accept_transaction_simplified_flow(void) {
241243

242244
void ui_display_transaction_prompt(void) {
243245
nbgl_useCaseReviewStreamingStart(TYPE_TRANSACTION,
244-
&ICON_APP_LOGO,
246+
&ICON_APP_ACTION,
245247
GA_REVIEW_TRANSACTION,
246248
NULL,
247249
start_transaction_callback);
@@ -305,7 +307,7 @@ void ui_display_pubkey_flow(void) {
305307

306308
nbgl_useCaseReviewLight(TYPE_OPERATION,
307309
&pairList,
308-
&ICON_APP_LOGO,
310+
&ICON_APP_ACTION,
309311
"Confirm public key",
310312
NULL,
311313
"Approve public key",
@@ -324,7 +326,7 @@ void ui_display_receive_in_wallet_flow(void) {
324326

325327
nbgl_useCaseAddressReview(g_ui_state.wallet.address,
326328
&pairList,
327-
&ICON_APP_LOGO,
329+
&ICON_APP_ACTION,
328330
"Verify Bitcoin\naddress",
329331
NULL,
330332
status_address_callback);
@@ -370,7 +372,7 @@ void ui_display_register_wallet_policy_flow(void) {
370372

371373
nbgl_useCaseReviewLight(TYPE_OPERATION,
372374
&pairList,
373-
&ICON_APP_LOGO,
375+
&ICON_APP_ACTION,
374376
"Review account\nto register",
375377
NULL,
376378
GA_REGISTER_ACCOUNT,
@@ -393,7 +395,7 @@ void ui_display_pubkey_suspicious_flow(void) {
393395
pairList.pairs = pairs;
394396

395397
contentList[0].type = CENTERED_INFO;
396-
contentList[0].content.centeredInfo.icon = &ICON_APP_LOGO;
398+
contentList[0].content.centeredInfo.icon = &ICON_APP_ACTION;
397399
contentList[0].content.centeredInfo.text1 = "Confirm public key";
398400
contentList[0].content.centeredInfo.text2 = NULL;
399401
#ifdef SCREEN_SIZE_WALLET
@@ -424,7 +426,7 @@ void ui_display_pubkey_suspicious_flow(void) {
424426

425427
contentList[3].type = INFO_BUTTON;
426428
contentList[3].content.infoButton.text = "Approve public key";
427-
contentList[3].content.infoButton.icon = &ICON_APP_LOGO;
429+
contentList[3].content.infoButton.icon = &ICON_APP_ACTION;
428430
#ifdef SCREEN_SIZE_WALLET
429431
contentList[3].content.infoButton.buttonText = "Approve";
430432
#else
@@ -508,7 +510,7 @@ void ui_sign_message_content_flow(void) {
508510
if (show_message_start_page == true) {
509511
show_message_start_page = false;
510512
nbgl_useCaseReviewStreamingStart(TYPE_MESSAGE,
511-
&ICON_APP_LOGO,
513+
&ICON_APP_ACTION,
512514
GA_REVIEW_MESSAGE,
513515
NULL,
514516
message_display_content);
@@ -519,7 +521,7 @@ void ui_sign_message_content_flow(void) {
519521

520522
void ui_sign_message_path_hash_and_confirm_flow(void) {
521523
nbgl_useCaseReviewStreamingStart(TYPE_MESSAGE,
522-
&ICON_APP_LOGO,
524+
&ICON_APP_ACTION,
523525
GA_REVIEW_MESSAGE,
524526
NULL,
525527
message_display_path);
@@ -548,7 +550,7 @@ void ui_display_spend_from_wallet_flow(void) {
548550

549551
nbgl_useCaseReviewLight(TYPE_OPERATION,
550552
&pairList,
551-
&ICON_APP_LOGO,
553+
&ICON_APP_ACTION,
552554
"Spend from\nknown account",
553555
NULL,
554556
"Confirm account name",
@@ -559,7 +561,7 @@ void ui_display_spend_from_wallet_flow(void) {
559561
void ui_display_default_wallet_address_flow(void) {
560562
nbgl_useCaseAddressReview(g_ui_state.wallet.address,
561563
NULL,
562-
&ICON_APP_LOGO,
564+
&ICON_APP_ACTION,
563565
"Verify Bitcoin\naddress",
564566
NULL,
565567
status_address_callback);

0 commit comments

Comments
 (0)