1
1
use crate :: {
2
2
error_code:: ErrorCode ,
3
3
ledger_sdk_stub:: nbgl_review:: NbglStreamingReview ,
4
+ settings:: is_blind_signing_enabled,
4
5
ui:: nbgl:: { nbgl_review_warning, new_nbgl_review} ,
5
6
} ;
6
7
use ledger_device_sdk:: nbgl:: { Field , NbglReviewStatus , TransactionType } ;
7
8
9
+ // Different Ledger devices use different UI libraries, so we've introduced the
10
+ // `TxReviewInner` to facilitate the display of tx details across different devices.
11
+ // The `TxReviewInner` here is for Ledger Stax/Flex.
8
12
pub struct TxReviewerInner {
9
13
pub review_started : bool ,
10
14
pub display_settings : bool ,
@@ -28,10 +32,6 @@ impl TxReviewerInner {
28
32
self . reviewer . as_ref ( ) . unwrap ( )
29
33
}
30
34
31
- pub fn set_display_settings ( & mut self , display_settings : bool ) {
32
- self . display_settings = display_settings;
33
- }
34
-
35
35
pub fn set_tx_execute_script ( & mut self , is_tx_execute_script : bool ) {
36
36
assert ! ( self . reviewer. is_none( ) ) ;
37
37
self . is_tx_execute_script = is_tx_execute_script;
@@ -71,11 +71,7 @@ impl TxReviewerInner {
71
71
}
72
72
73
73
// Review transfer that sends to self
74
- pub fn review_self_transfer ( & mut self , fee_field : & Field ) -> Result < ( ) , ErrorCode > {
75
- let fee_field = Field {
76
- name : fee_field. name ,
77
- value : fee_field. value ,
78
- } ;
74
+ pub fn review_self_transfer ( & mut self , fee_field : Field ) -> Result < ( ) , ErrorCode > {
79
75
if self . is_tx_execute_script {
80
76
self . finish_review ( & [ fee_field] )
81
77
} else {
@@ -137,4 +133,20 @@ impl TxReviewerInner {
137
133
pub fn output_index_as_field ( & self ) -> bool {
138
134
true
139
135
}
136
+
137
+ pub fn check_blind_signing ( & mut self ) -> Result < ( ) , ErrorCode > {
138
+ if is_blind_signing_enabled ( ) {
139
+ return Ok ( ( ) ) ;
140
+ }
141
+ let go_to_settings = nbgl_review_warning (
142
+ "This transaction cannot be clear-signed" ,
143
+ "Enable blind signing in the settings to sign this transaction." ,
144
+ "Go to settings" ,
145
+ "Reject transaction" ,
146
+ ) ;
147
+ if go_to_settings {
148
+ self . display_settings = true ;
149
+ }
150
+ Err ( ErrorCode :: BlindSigningDisabled )
151
+ }
140
152
}
0 commit comments