Skip to content

Commit ac65368

Browse files
author
Ivo Georgiev
committed
ethereum adapter: sigs match production now
1 parent 4797b13 commit ac65368

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

adapter/src/ethereum.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ impl Adapter for EthereumAdapter {
115115

116116
fn sign(&self, state_root: &str) -> AdapterResult<String> {
117117
if let Some(wallet) = &self.wallet {
118-
let message = Message::from_slice(&hash_message(state_root));
118+
let state_root = hex::decode(state_root)
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) }));
119121
let wallet_sign = wallet
120122
.sign(&self.keystore_pwd, &message)
121123
.map_err(|_| map_error("failed to sign messages"))?;
@@ -137,7 +139,9 @@ impl Adapter for EthereumAdapter {
137139
.map_err(|_| AdapterError::Signature("invalid signature".to_string()))?;
138140
let address = Address::from_slice(signer.inner());
139141
let signature = Signature::from_electrum(&decoded_signature);
140-
let message = Message::from_slice(&hash_message(state_root));
142+
let state_root = hex::decode(state_root)
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) }));
141145

142146
verify_address(&address, &signature, &message).or_else(|_| Ok(false))
143147
}

0 commit comments

Comments
 (0)