diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b135cba..f9fe4e79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Overhauled sync logic for electrum and esplora. - Unify ureq and reqwest esplora backends to have the same configuration parameters. This means reqwest now has a timeout parameter and ureq has a concurrency parameter. - Fixed esplora fee estimation. +- Fixed generating WIF in the correct network format. ## [v0.14.0] - [v0.13.0] diff --git a/src/keys/mod.rs b/src/keys/mod.rs index 7c7fb279..a21a0c97 100644 --- a/src/keys/mod.rs +++ b/src/keys/mod.rs @@ -319,6 +319,7 @@ impl ExtendedKey { match self { ExtendedKey::Private((mut xprv, _)) => { xprv.network = network; + xprv.private_key.network = network; Some(xprv) } ExtendedKey::Public(_) => None, @@ -931,4 +932,43 @@ pub mod test { "L2wTu6hQrnDMiFNWA5na6jB12ErGQqtXwqpSL7aWquJaZG8Ai3ch" ); } + + #[test] + fn test_keys_wif_network() { + // test mainnet wif + let generated_xprv: GeneratedKey<_, miniscript::Segwitv0> = + bip32::ExtendedPrivKey::generate_with_entropy_default(TEST_ENTROPY).unwrap(); + let xkey = generated_xprv.into_extended_key().unwrap(); + + let network = Network::Bitcoin; + let xprv = xkey.into_xprv(network).unwrap(); + let wif = PrivateKey::from_wif(&xprv.private_key.to_wif()).unwrap(); + assert_eq!(wif.network, network); + + // test testnet wif + let generated_xprv: GeneratedKey<_, miniscript::Segwitv0> = + bip32::ExtendedPrivKey::generate_with_entropy_default(TEST_ENTROPY).unwrap(); + let xkey = generated_xprv.into_extended_key().unwrap(); + + let network = Network::Testnet; + let xprv = xkey.into_xprv(network).unwrap(); + let wif = PrivateKey::from_wif(&xprv.private_key.to_wif()).unwrap(); + assert_eq!(wif.network, network); + } + + #[cfg(feature = "keys-bip39")] + #[test] + fn test_keys_wif_network_bip39() { + let xkey: ExtendedKey = bip39::Mnemonic::parse_in( + bip39::Language::English, + "jelly crash boy whisper mouse ecology tuna soccer memory million news short", + ) + .unwrap() + .into_extended_key() + .unwrap(); + let xprv = xkey.into_xprv(Network::Testnet).unwrap(); + let wif = PrivateKey::from_wif(&xprv.private_key.to_wif()).unwrap(); + + assert_eq!(wif.network, Network::Testnet); + } }