Skip to content

Commit 76aba84

Browse files
author
Ivo Georgiev
committed
ethereum adapter: hash_message takes a byte slice now, so no need of unsafe
1 parent ac65368 commit 76aba84

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

adapter/src/ethereum.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ impl Adapter for EthereumAdapter {
117117
if let Some(wallet) = &self.wallet {
118118
let state_root = hex::decode(state_root)
119119
.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));
121121
let wallet_sign = wallet
122122
.sign(&self.keystore_pwd, &message)
123123
.map_err(|_| map_error("failed to sign messages"))?;
@@ -141,7 +141,7 @@ impl Adapter for EthereumAdapter {
141141
let signature = Signature::from_electrum(&decoded_signature);
142142
let state_root = hex::decode(state_root)
143143
.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));
145145

146146
verify_address(&address, &signature, &message).or_else(|_| Ok(false))
147147
}
@@ -321,14 +321,13 @@ impl RelayerClient {
321321
}
322322
}
323323

324-
fn hash_message(message: &str) -> [u8; 32] {
324+
fn hash_message(message: &[u8]) -> [u8; 32] {
325325
let eth = "\x19Ethereum Signed Message:\n";
326326
let message_length = message.len();
327327

328-
let encoded = format!("{}{}{}", eth, message_length, message);
329-
330328
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);
332331

333332
let mut res: [u8; 32] = [0; 32];
334333
result.finalize(&mut res);
@@ -381,7 +380,7 @@ pub fn ewt_sign(
381380
let message = Message::from_slice(&hash_message(&format!(
382381
"{}.{}",
383382
header_encoded, payload_encoded
384-
)));
383+
).as_bytes()));
385384
let signature: Signature = signer
386385
.sign(password, &message)
387386
.map_err(|_| map_error("sign message"))?
@@ -404,7 +403,7 @@ pub fn ewt_verify(
404403
let message = Message::from_slice(&hash_message(&format!(
405404
"{}.{}",
406405
header_encoded, payload_encoded
407-
)));
406+
).as_bytes()));
408407

409408
let decoded_signature = base64::decode_config(&token, base64::URL_SAFE_NO_PAD)?;
410409
let signature = Signature::from_electrum(&decoded_signature);

0 commit comments

Comments
 (0)