added `from_bytes` for `Wallet` type (#1983)
* added `from_bytes` for `Wallet` type * added key_from_bytes test for Wallet::from_bytes * updated changelog
This commit is contained in:
parent
69e0ff7301
commit
f94e6f549f
|
@ -275,6 +275,7 @@
|
||||||
|
|
||||||
- `eth-keystore-rs` crate updated. Allow an optional name for the to-be-generated
|
- `eth-keystore-rs` crate updated. Allow an optional name for the to-be-generated
|
||||||
keystore file [#910](https://github.com/gakonst/ethers-rs/pull/910)
|
keystore file [#910](https://github.com/gakonst/ethers-rs/pull/910)
|
||||||
|
- [1983](https://github.com/gakonst/ethers-rs/pull/1983) Added a `from_bytes` function for the `Wallet` type.
|
||||||
|
|
||||||
### 0.6.0
|
### 0.6.0
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,13 @@ impl Wallet<SigningKey> {
|
||||||
let address = secret_key_to_address(&signer);
|
let address = secret_key_to_address(&signer);
|
||||||
Self { signer, address, chain_id: 1 }
|
Self { signer, address, chain_id: 1 }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a new Wallet instance from a raw scalar value (big endian).
|
||||||
|
pub fn from_bytes(bytes: &[u8]) -> Result<Self, WalletError> {
|
||||||
|
let signer = SigningKey::from_bytes(bytes)?;
|
||||||
|
let address = secret_key_to_address(&signer);
|
||||||
|
Ok(Self { signer, address, chain_id: 1 })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PartialEq for Wallet<SigningKey> {
|
impl PartialEq for Wallet<SigningKey> {
|
||||||
|
@ -305,4 +312,17 @@ mod tests {
|
||||||
Address::from_str("6813Eb9362372EEF6200f3b1dbC3f819671cBA69").expect("Decoding failed")
|
Address::from_str("6813Eb9362372EEF6200f3b1dbC3f819671cBA69").expect("Decoding failed")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn key_from_bytes() {
|
||||||
|
let wallet: Wallet<SigningKey> =
|
||||||
|
"0000000000000000000000000000000000000000000000000000000000000001".parse().unwrap();
|
||||||
|
|
||||||
|
let key_as_bytes = wallet.signer.to_bytes();
|
||||||
|
let wallet_from_bytes = Wallet::from_bytes(&key_as_bytes).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(wallet.address, wallet_from_bytes.address);
|
||||||
|
assert_eq!(wallet.chain_id, wallet_from_bytes.chain_id);
|
||||||
|
assert_eq!(wallet.signer, wallet_from_bytes.signer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue