@@ -14,6 +14,7 @@ use gem_ton::signer::TonChainSigner;
1414use gem_tron:: signer:: TronChainSigner ;
1515use gem_xrp:: signer:: XrpChainSigner ;
1616use primitives:: { Chain , ChainSigner , ChainType , EVMChain , SignerError , SignerInput } ;
17+ use zeroize:: Zeroizing ;
1718
1819#[ derive( uniffi:: Object ) ]
1920pub struct GemChainSigner {
@@ -97,7 +98,8 @@ impl GemChainSigner {
9798 }
9899
99100 pub fn sign_message ( & self , message : Vec < u8 > , private_key : Vec < u8 > ) -> Result < String , GemstoneError > {
100- self . dispatch_message ( message, private_key, "message" , |signer, msg, key| signer. sign_message ( msg, key) )
101+ let private_key = Zeroizing :: new ( private_key) ;
102+ self . dispatch_message ( & message, private_key. as_slice ( ) , "message" , |signer, msg, key| signer. sign_message ( msg, key) )
101103 }
102104}
103105
@@ -107,16 +109,16 @@ impl GemChainSigner {
107109 F : Fn ( & dyn ChainSigner , & SignerInput , & [ u8 ] ) -> Result < T , SignerError > ,
108110 {
109111 let signer_input: SignerInput = input. into ( ) ;
110- let key = private_key;
112+ let private_key = Zeroizing :: new ( private_key) ;
111113
112- method ( self . signer . as_ref ( ) , & signer_input, key . as_slice ( ) ) . map_err ( |err| map_signer_error ( self . chain , action, err) )
114+ method ( self . signer . as_ref ( ) , & signer_input, private_key . as_slice ( ) ) . map_err ( |err| map_signer_error ( self . chain , action, err) )
113115 }
114116
115- fn dispatch_message < T , F > ( & self , message : Vec < u8 > , private_key : Vec < u8 > , action : & ' static str , method : F ) -> Result < T , GemstoneError >
117+ fn dispatch_message < T , F > ( & self , message : & [ u8 ] , private_key : & [ u8 ] , action : & ' static str , method : F ) -> Result < T , GemstoneError >
116118 where
117119 F : Fn ( & dyn ChainSigner , & [ u8 ] , & [ u8 ] ) -> Result < T , SignerError > ,
118120 {
119- method ( self . signer . as_ref ( ) , & message, & private_key) . map_err ( |err| map_signer_error ( self . chain , action, err) )
121+ method ( self . signer . as_ref ( ) , message, private_key) . map_err ( |err| map_signer_error ( self . chain , action, err) )
120122 }
121123}
122124
0 commit comments