revme/cmd/statetest/
utils.rs1use k256::ecdsa::SigningKey;
2use revm::primitives::Address;
3
4pub fn recover_address(private_key: &[u8]) -> Option<Address> {
6 let key = SigningKey::from_slice(private_key).ok()?;
7 let public_key = key.verifying_key().to_encoded_point(false);
8 Some(Address::from_raw_public_key(&public_key.as_bytes()[1..]))
9}
10
11#[cfg(test)]
12mod tests {
13 use super::*;
14 use revm::primitives::{address, hex};
15
16 #[test]
17 fn sanity_test() {
18 assert_eq!(
19 Some(address!("a94f5374fce5edbc8e2a8697c15331677e6ebf0b")),
20 recover_address(&hex!(
21 "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8"
22 ))
23 )
24 }
25}