@@ -6,12 +6,16 @@ use ledger_secure_sdk_sys::{
6
6
libargs_s__bindgen_ty_1, libargs_t, MAX_PRINTABLE_AMOUNT_SIZE ,
7
7
} ;
8
8
9
+ pub const DEFAULT_COIN_CONFIG_BUF_SIZE : usize = 16 ;
10
+ pub const DEFAULT_ADDRESS_BUF_SIZE : usize = 64 ;
11
+
9
12
const DPATH_STAGE_SIZE : usize = 16 ;
10
- const ADDRESS_BUF_SIZE : usize = 64 ;
11
13
const AMOUNT_BUF_SIZE : usize = 16 ;
12
- const DEFAULT_COIN_CONFIG_BUF_SIZE : usize = 16 ;
13
14
14
- pub struct CheckAddressParams < const COIN_CONFIG_BUF_SIZE : usize = DEFAULT_COIN_CONFIG_BUF_SIZE > {
15
+ pub struct CheckAddressParams <
16
+ const COIN_CONFIG_BUF_SIZE : usize = DEFAULT_COIN_CONFIG_BUF_SIZE ,
17
+ const ADDRESS_BUF_SIZE : usize = DEFAULT_ADDRESS_BUF_SIZE ,
18
+ > {
15
19
pub coin_config : [ u8 ; COIN_CONFIG_BUF_SIZE ] ,
16
20
pub coin_config_len : usize ,
17
21
pub dpath : [ u8 ; DPATH_STAGE_SIZE * 4 ] ,
@@ -21,7 +25,9 @@ pub struct CheckAddressParams<const COIN_CONFIG_BUF_SIZE: usize = DEFAULT_COIN_C
21
25
pub result : * mut i32 ,
22
26
}
23
27
24
- impl < const COIN_CONFIG_BUF_SIZE : usize > Default for CheckAddressParams < COIN_CONFIG_BUF_SIZE > {
28
+ impl < const COIN_CONFIG_BUF_SIZE : usize , const ADDRESS_BUF_SIZE : usize > Default
29
+ for CheckAddressParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE >
30
+ {
25
31
fn default ( ) -> Self {
26
32
CheckAddressParams {
27
33
coin_config : [ 0 ; COIN_CONFIG_BUF_SIZE ] ,
@@ -35,7 +41,11 @@ impl<const COIN_CONFIG_BUF_SIZE: usize> Default for CheckAddressParams<COIN_CONF
35
41
}
36
42
}
37
43
38
- pub struct PrintableAmountParams < const COIN_CONFIG_BUF_SIZE : usize = DEFAULT_COIN_CONFIG_BUF_SIZE > {
44
+ pub struct PrintableAmountParams <
45
+ const COIN_CONFIG_BUF_SIZE : usize = DEFAULT_COIN_CONFIG_BUF_SIZE ,
46
+ // Unused const generic paramer here, to allow type inference in `swap_return` fn
47
+ const ADDRESS_BUF_SIZE : usize = DEFAULT_ADDRESS_BUF_SIZE ,
48
+ > {
39
49
pub coin_config : [ u8 ; COIN_CONFIG_BUF_SIZE ] ,
40
50
pub coin_config_len : usize ,
41
51
pub amount : [ u8 ; AMOUNT_BUF_SIZE ] ,
@@ -44,7 +54,9 @@ pub struct PrintableAmountParams<const COIN_CONFIG_BUF_SIZE: usize = DEFAULT_COI
44
54
pub is_fee : bool ,
45
55
}
46
56
47
- impl < const COIN_CONFIG_BUF_SIZE : usize > Default for PrintableAmountParams < COIN_CONFIG_BUF_SIZE > {
57
+ impl < const COIN_CONFIG_BUF_SIZE : usize , const ADDRESS_BUF_SIZE : usize > Default
58
+ for PrintableAmountParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE >
59
+ {
48
60
fn default ( ) -> Self {
49
61
PrintableAmountParams {
50
62
coin_config : [ 0 ; COIN_CONFIG_BUF_SIZE ] ,
@@ -57,7 +69,10 @@ impl<const COIN_CONFIG_BUF_SIZE: usize> Default for PrintableAmountParams<COIN_C
57
69
}
58
70
}
59
71
60
- pub struct CreateTxParams < const COIN_CONFIG_BUF_SIZE : usize = DEFAULT_COIN_CONFIG_BUF_SIZE > {
72
+ pub struct CreateTxParams <
73
+ const COIN_CONFIG_BUF_SIZE : usize = DEFAULT_COIN_CONFIG_BUF_SIZE ,
74
+ const ADDRESS_BUF_SIZE : usize = DEFAULT_ADDRESS_BUF_SIZE ,
75
+ > {
61
76
pub coin_config : [ u8 ; COIN_CONFIG_BUF_SIZE ] ,
62
77
pub coin_config_len : usize ,
63
78
pub amount : [ u8 ; AMOUNT_BUF_SIZE ] ,
@@ -69,7 +84,9 @@ pub struct CreateTxParams<const COIN_CONFIG_BUF_SIZE: usize = DEFAULT_COIN_CONFI
69
84
pub result : * mut u8 ,
70
85
}
71
86
72
- impl < const COIN_CONFIG_BUF_SIZE : usize > Default for CreateTxParams < COIN_CONFIG_BUF_SIZE > {
87
+ impl < const COIN_CONFIG_BUF_SIZE : usize , const ADDRESS_BUF_SIZE : usize > Default
88
+ for CreateTxParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE >
89
+ {
73
90
fn default ( ) -> Self {
74
91
CreateTxParams {
75
92
coin_config : [ 0 ; COIN_CONFIG_BUF_SIZE ] ,
@@ -85,9 +102,12 @@ impl<const COIN_CONFIG_BUF_SIZE: usize> Default for CreateTxParams<COIN_CONFIG_B
85
102
}
86
103
}
87
104
88
- pub fn get_check_address_params < const COIN_CONFIG_BUF_SIZE : usize > (
105
+ pub fn get_check_address_params <
106
+ const COIN_CONFIG_BUF_SIZE : usize ,
107
+ const ADDRESS_BUF_SIZE : usize ,
108
+ > (
89
109
arg0 : u32 ,
90
- ) -> CheckAddressParams < COIN_CONFIG_BUF_SIZE > {
110
+ ) -> CheckAddressParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE > {
91
111
debug_print ( "=> get_check_address_params\n " ) ;
92
112
93
113
let mut libarg: libargs_t = libargs_t:: default ( ) ;
@@ -103,7 +123,8 @@ pub fn get_check_address_params<const COIN_CONFIG_BUF_SIZE: usize>(
103
123
let params: check_address_parameters_t =
104
124
unsafe { * ( libarg. __bindgen_anon_1 . check_address as * const check_address_parameters_t ) } ;
105
125
106
- let mut check_address_params: CheckAddressParams < COIN_CONFIG_BUF_SIZE > = Default :: default ( ) ;
126
+ let mut check_address_params: CheckAddressParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE > =
127
+ Default :: default ( ) ;
107
128
108
129
debug_print ( "==> GET_COIN_CONFIG_LENGTH\n " ) ;
109
130
check_address_params. coin_config_len = params. coin_configuration_length as usize ;
@@ -145,9 +166,12 @@ pub fn get_check_address_params<const COIN_CONFIG_BUF_SIZE: usize>(
145
166
check_address_params
146
167
}
147
168
148
- pub fn get_printable_amount_params < const COIN_CONFIG_BUF_SIZE : usize > (
169
+ pub fn get_printable_amount_params <
170
+ const COIN_CONFIG_BUF_SIZE : usize ,
171
+ const ADDRESS_BUF_SIZE : usize ,
172
+ > (
149
173
arg0 : u32 ,
150
- ) -> PrintableAmountParams < COIN_CONFIG_BUF_SIZE > {
174
+ ) -> PrintableAmountParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE > {
151
175
debug_print ( "=> get_printable_amount_params\n " ) ;
152
176
153
177
let mut libarg: libargs_t = libargs_t:: default ( ) ;
@@ -164,7 +188,7 @@ pub fn get_printable_amount_params<const COIN_CONFIG_BUF_SIZE: usize>(
164
188
* ( libarg. __bindgen_anon_1 . get_printable_amount as * const get_printable_amount_parameters_t )
165
189
} ;
166
190
167
- let mut printable_amount_params: PrintableAmountParams < COIN_CONFIG_BUF_SIZE > =
191
+ let mut printable_amount_params: PrintableAmountParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE > =
168
192
Default :: default ( ) ;
169
193
170
194
debug_print ( "==> GET_COIN_CONFIG_LENGTH\n " ) ;
@@ -206,9 +230,9 @@ extern "C" {
206
230
fn c_boot_std ( ) ;
207
231
}
208
232
209
- pub fn sign_tx_params < const COIN_CONFIG_BUF_SIZE : usize > (
233
+ pub fn sign_tx_params < const COIN_CONFIG_BUF_SIZE : usize , const ADDRESS_BUF_SIZE : usize > (
210
234
arg0 : u32 ,
211
- ) -> CreateTxParams < COIN_CONFIG_BUF_SIZE > {
235
+ ) -> CreateTxParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE > {
212
236
debug_print ( "=> sign_tx_params\n " ) ;
213
237
214
238
let mut libarg: libargs_t = libargs_t:: default ( ) ;
@@ -225,7 +249,8 @@ pub fn sign_tx_params<const COIN_CONFIG_BUF_SIZE: usize>(
225
249
* ( libarg. __bindgen_anon_1 . create_transaction as * const create_transaction_parameters_t )
226
250
} ;
227
251
228
- let mut create_tx_params: CreateTxParams < COIN_CONFIG_BUF_SIZE > = Default :: default ( ) ;
252
+ let mut create_tx_params: CreateTxParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE > =
253
+ Default :: default ( ) ;
229
254
230
255
debug_print ( "==> GET_COIN_CONFIG_LENGTH\n " ) ;
231
256
create_tx_params. coin_config_len = params. coin_configuration_length as usize ;
@@ -279,13 +304,28 @@ pub fn sign_tx_params<const COIN_CONFIG_BUF_SIZE: usize>(
279
304
create_tx_params
280
305
}
281
306
282
- pub enum SwapResult < ' a > {
283
- CheckAddressResult ( & ' a mut CheckAddressParams , i32 ) ,
284
- PrintableAmountResult ( & ' a mut PrintableAmountParams , & ' a str ) ,
285
- CreateTxResult ( & ' a mut CreateTxParams , u8 ) ,
307
+ pub enum SwapResult <
308
+ ' a ,
309
+ const COIN_CONFIG_BUF_SIZE : usize = DEFAULT_COIN_CONFIG_BUF_SIZE ,
310
+ const ADDRESS_BUF_SIZE : usize = DEFAULT_ADDRESS_BUF_SIZE ,
311
+ > {
312
+ CheckAddressResult (
313
+ & ' a mut CheckAddressParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE > ,
314
+ i32 ,
315
+ ) ,
316
+ PrintableAmountResult (
317
+ & ' a mut PrintableAmountParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE > ,
318
+ & ' a str ,
319
+ ) ,
320
+ CreateTxResult (
321
+ & ' a mut CreateTxParams < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE > ,
322
+ u8 ,
323
+ ) ,
286
324
}
287
325
288
- pub fn swap_return ( res : SwapResult ) {
326
+ pub fn swap_return < const COIN_CONFIG_BUF_SIZE : usize , const ADDRESS_BUF_SIZE : usize > (
327
+ res : SwapResult < COIN_CONFIG_BUF_SIZE , ADDRESS_BUF_SIZE > ,
328
+ ) {
289
329
match res {
290
330
SwapResult :: CheckAddressResult ( & mut ref p, r) => {
291
331
unsafe { * ( p. result ) = r } ;
0 commit comments