bip32: make Xpriv::new_master be infallible
The only error path for this is cryptographically unreachable and was removed in a previous commit.
This commit is contained in:
parent
0e5e021b69
commit
32d96f6c33
|
@ -33,7 +33,7 @@ fn main() {
|
|||
let secp = Secp256k1::preallocated_new(buf.as_mut_slice()).unwrap();
|
||||
|
||||
// calculate root key from seed
|
||||
let root = Xpriv::new_master(NetworkKind::Main, &seed).unwrap();
|
||||
let root = Xpriv::new_master(NetworkKind::Main, &seed);
|
||||
println!("Root key: {}", root);
|
||||
|
||||
// derive child xpub
|
||||
|
|
|
@ -598,12 +598,12 @@ impl From<InvalidBase58PayloadLengthError> for Error {
|
|||
|
||||
impl Xpriv {
|
||||
/// Constructs a new master key from a seed value
|
||||
pub fn new_master(network: impl Into<NetworkKind>, seed: &[u8]) -> Result<Xpriv, Error> {
|
||||
pub fn new_master(network: impl Into<NetworkKind>, seed: &[u8]) -> Xpriv {
|
||||
let mut engine = HmacEngine::<sha512::HashEngine>::new(b"Bitcoin seed");
|
||||
engine.input(seed);
|
||||
let hmac = engine.finalize();
|
||||
|
||||
Ok(Xpriv {
|
||||
Xpriv {
|
||||
network: network.into(),
|
||||
depth: 0,
|
||||
parent_fingerprint: Default::default(),
|
||||
|
@ -613,7 +613,7 @@ impl Xpriv {
|
|||
)
|
||||
.expect("cryptographically unreachable"),
|
||||
chain_code: ChainCode::from_hmac(hmac),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/// Constructs a new ECDSA compressed private key matching internal secret key representation.
|
||||
|
@ -1111,7 +1111,7 @@ mod tests {
|
|||
expected_sk: &str,
|
||||
expected_pk: &str,
|
||||
) {
|
||||
let mut sk = Xpriv::new_master(network, seed).unwrap();
|
||||
let mut sk = Xpriv::new_master(network, seed);
|
||||
let mut pk = Xpub::from_xpriv(secp, &sk);
|
||||
|
||||
// Check derivation convenience method for Xpriv
|
||||
|
|
|
@ -1439,7 +1439,7 @@ mod tests {
|
|||
|
||||
let mut hd_keypaths: BTreeMap<secp256k1::PublicKey, KeySource> = Default::default();
|
||||
|
||||
let mut sk: Xpriv = Xpriv::new_master(NetworkKind::Main, &seed).unwrap();
|
||||
let mut sk: Xpriv = Xpriv::new_master(NetworkKind::Main, &seed);
|
||||
|
||||
let fprint = sk.fingerprint(secp);
|
||||
|
||||
|
|
|
@ -120,7 +120,7 @@ fn build_extended_private_key() -> Xpriv {
|
|||
let xpriv = extended_private_key.parse::<Xpriv>().unwrap();
|
||||
|
||||
let sk = PrivateKey::from_wif(seed).unwrap();
|
||||
let seeded = Xpriv::new_master(NetworkKind::Test, &sk.inner.secret_bytes()).unwrap();
|
||||
let seeded = Xpriv::new_master(NetworkKind::Test, &sk.inner.secret_bytes());
|
||||
assert_eq!(xpriv, seeded);
|
||||
|
||||
xpriv
|
||||
|
|
Loading…
Reference in New Issue