@@ -117,7 +117,7 @@ impl Adapter for EthereumAdapter {
117
117
if let Some ( wallet) = & self . wallet {
118
118
let state_root = hex:: decode ( state_root)
119
119
. map_err ( |_| AdapterError :: Signature ( "invalid state_root" . to_string ( ) ) ) ?;
120
- let message = Message :: from_slice ( & hash_message ( unsafe { std :: str :: from_utf8_unchecked ( & state_root) } ) ) ;
120
+ let message = Message :: from_slice ( & hash_message ( & state_root) ) ;
121
121
let wallet_sign = wallet
122
122
. sign ( & self . keystore_pwd , & message)
123
123
. map_err ( |_| map_error ( "failed to sign messages" ) ) ?;
@@ -141,7 +141,7 @@ impl Adapter for EthereumAdapter {
141
141
let signature = Signature :: from_electrum ( & decoded_signature) ;
142
142
let state_root = hex:: decode ( state_root)
143
143
. map_err ( |_| AdapterError :: Signature ( "invalid state_root" . to_string ( ) ) ) ?;
144
- let message = Message :: from_slice ( & hash_message ( unsafe { std :: str :: from_utf8_unchecked ( & state_root) } ) ) ;
144
+ let message = Message :: from_slice ( & hash_message ( & state_root) ) ;
145
145
146
146
verify_address ( & address, & signature, & message) . or_else ( |_| Ok ( false ) )
147
147
}
@@ -321,14 +321,13 @@ impl RelayerClient {
321
321
}
322
322
}
323
323
324
- fn hash_message ( message : & str ) -> [ u8 ; 32 ] {
324
+ fn hash_message ( message : & [ u8 ] ) -> [ u8 ; 32 ] {
325
325
let eth = "\x19 Ethereum Signed Message:\n " ;
326
326
let message_length = message. len ( ) ;
327
327
328
- let encoded = format ! ( "{}{}{}" , eth, message_length, message) ;
329
-
330
328
let mut result = Keccak :: new_keccak256 ( ) ;
331
- result. update ( & encoded. as_bytes ( ) ) ;
329
+ result. update ( & format ! ( "{}{}" , eth, message_length) . as_bytes ( ) ) ;
330
+ result. update ( & message) ;
332
331
333
332
let mut res: [ u8 ; 32 ] = [ 0 ; 32 ] ;
334
333
result. finalize ( & mut res) ;
@@ -381,7 +380,7 @@ pub fn ewt_sign(
381
380
let message = Message :: from_slice ( & hash_message ( & format ! (
382
381
"{}.{}" ,
383
382
header_encoded, payload_encoded
384
- ) ) ) ;
383
+ ) . as_bytes ( ) ) ) ;
385
384
let signature: Signature = signer
386
385
. sign ( password, & message)
387
386
. map_err ( |_| map_error ( "sign message" ) ) ?
@@ -404,7 +403,7 @@ pub fn ewt_verify(
404
403
let message = Message :: from_slice ( & hash_message ( & format ! (
405
404
"{}.{}" ,
406
405
header_encoded, payload_encoded
407
- ) ) ) ;
406
+ ) . as_bytes ( ) ) ) ;
408
407
409
408
let decoded_signature = base64:: decode_config ( & token, base64:: URL_SAFE_NO_PAD ) ?;
410
409
let signature = Signature :: from_electrum ( & decoded_signature) ;
0 commit comments