11// Bitcoin Dev Kit
22// Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
33//
4- // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
4+ // Copyright (c) 2020-2025 Bitcoin Dev Kit Developers
55//
66// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
77// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
1515// something that should be fairly simple to re-implement.
1616
1717use alloc:: string:: String ;
18- use bitcoin:: bip32;
19- use bitcoin:: Network ;
2018
19+ use bitcoin:: { bip32, Network } ;
2120use miniscript:: ScriptContext ;
2221
22+ use super :: {
23+ any_network_kind, DerivableKey , DescriptorKey , ExtendedKey , GeneratableKey , GeneratedKey ,
24+ KeyError ,
25+ } ;
26+
2327pub use bip39:: { Error , Language , Mnemonic } ;
2428
2529type Seed = [ u8 ; 64 ] ;
@@ -38,20 +42,16 @@ pub enum WordCount {
3842 Words24 = 256 ,
3943}
4044
41- use super :: {
42- any_network, DerivableKey , DescriptorKey , ExtendedKey , GeneratableKey , GeneratedKey , KeyError ,
43- } ;
44-
45- fn set_valid_on_any_network < Ctx : ScriptContext > (
45+ fn set_valid_on_any_network_kind < Ctx : ScriptContext > (
4646 descriptor_key : DescriptorKey < Ctx > ,
4747) -> DescriptorKey < Ctx > {
48- // We have to pick one network to build the xprv, but since the bip39 standard doesn't
49- // encode the network, the xprv we create is actually valid everywhere. So we override the
50- // valid networks with `any_network ()`.
51- descriptor_key. override_valid_networks ( any_network ( ) )
48+ // We have to pick one network kind to build the xprv, but since the BIP39 standard doesn't
49+ // encode the network kind , the xprv we create is actually valid everywhere. So we override the
50+ // valid network kinds with `any_network_kind ()`.
51+ descriptor_key. override_valid_network_kinds ( any_network_kind ( ) )
5252}
5353
54- /// Type for a BIP39 mnemonic with an optional passphrase
54+ /// Type for a BIP39 mnemonic with an optional passphrase.
5555pub type MnemonicWithPassphrase = ( Mnemonic , Option < String > ) ;
5656
5757#[ cfg_attr( docsrs, doc( cfg( feature = "keys-bip39" ) ) ) ]
@@ -69,7 +69,7 @@ impl<Ctx: ScriptContext> DerivableKey<Ctx> for Seed {
6969 . into_extended_key ( ) ?
7070 . into_descriptor_key ( source, derivation_path) ?;
7171
72- Ok ( set_valid_on_any_network ( descriptor_key) )
72+ Ok ( set_valid_on_any_network_kind ( descriptor_key) )
7373 }
7474}
7575
@@ -91,7 +91,7 @@ impl<Ctx: ScriptContext> DerivableKey<Ctx> for MnemonicWithPassphrase {
9191 . into_extended_key ( ) ?
9292 . into_descriptor_key ( source, derivation_path) ?;
9393
94- Ok ( set_valid_on_any_network ( descriptor_key) )
94+ Ok ( set_valid_on_any_network_kind ( descriptor_key) )
9595 }
9696}
9797
@@ -127,7 +127,7 @@ impl<Ctx: ScriptContext> DerivableKey<Ctx> for Mnemonic {
127127 . into_extended_key ( ) ?
128128 . into_descriptor_key ( source, derivation_path) ?;
129129
130- Ok ( set_valid_on_any_network ( descriptor_key) )
130+ Ok ( set_valid_on_any_network_kind ( descriptor_key) )
131131 }
132132}
133133
@@ -145,22 +145,21 @@ impl<Ctx: ScriptContext> GeneratableKey<Ctx> for Mnemonic {
145145 let entropy = & entropy[ ..( word_count as usize / 8 ) ] ;
146146 let mnemonic = Mnemonic :: from_entropy_in ( language, entropy) ?;
147147
148- Ok ( GeneratedKey :: new ( mnemonic, any_network ( ) ) )
148+ Ok ( GeneratedKey :: new ( mnemonic, any_network_kind ( ) ) )
149149 }
150150}
151151
152152#[ cfg( test) ]
153153mod test {
154+ use super :: WordCount ;
155+
154156 use alloc:: string:: ToString ;
155157 use core:: str:: FromStr ;
156158
157- use bitcoin:: bip32;
158-
159159 use bip39:: { Language , Mnemonic } ;
160+ use bitcoin:: bip32;
160161
161- use crate :: keys:: { any_network, GeneratableKey , GeneratedKey } ;
162-
163- use super :: WordCount ;
162+ use crate :: keys:: { any_network_kind, GeneratableKey , GeneratedKey } ;
164163
165164 #[ test]
166165 fn test_keys_bip39_mnemonic ( ) {
@@ -170,10 +169,10 @@ mod test {
170169 let path = bip32:: DerivationPath :: from_str ( "m/44'/0'/0'/0" ) . unwrap ( ) ;
171170
172171 let key = ( mnemonic, path) ;
173- let ( desc, keys, networks ) = crate :: descriptor!( wpkh( key) ) . unwrap ( ) ;
172+ let ( desc, keys, network_kinds ) = crate :: descriptor!( wpkh( key) ) . unwrap ( ) ;
174173 assert_eq ! ( desc. to_string( ) , "wpkh([be83839f/44'/0'/0']xpub6DCQ1YcqvZtSwGWMrwHELPehjWV3f2MGZ69yBADTxFEUAoLwb5Mp5GniQK6tTp3AgbngVz9zEFbBJUPVnkG7LFYt8QMTfbrNqs6FNEwAPKA/0/*)#0r8v4nkv" ) ;
175174 assert_eq ! ( keys. len( ) , 1 ) ;
176- assert_eq ! ( networks , any_network ( ) ) ;
175+ assert_eq ! ( network_kinds , any_network_kind ( ) ) ;
177176 }
178177
179178 #[ test]
@@ -184,10 +183,10 @@ mod test {
184183 let path = bip32:: DerivationPath :: from_str ( "m/44'/0'/0'/0" ) . unwrap ( ) ;
185184
186185 let key = ( ( mnemonic, Some ( "passphrase" . into ( ) ) ) , path) ;
187- let ( desc, keys, networks ) = crate :: descriptor!( wpkh( key) ) . unwrap ( ) ;
186+ let ( desc, keys, network_kinds ) = crate :: descriptor!( wpkh( key) ) . unwrap ( ) ;
188187 assert_eq ! ( desc. to_string( ) , "wpkh([8f6cb80c/44'/0'/0']xpub6DWYS8bbihFevy29M4cbw4ZR3P5E12jB8R88gBDWCTCNpYiDHhYWNywrCF9VZQYagzPmsZpxXpytzSoxynyeFr4ZyzheVjnpLKuse4fiwZw/0/*)#h0j0tg5m" ) ;
189188 assert_eq ! ( keys. len( ) , 1 ) ;
190- assert_eq ! ( networks , any_network ( ) ) ;
189+ assert_eq ! ( network_kinds , any_network_kind ( ) ) ;
191190 }
192191
193192 #[ test]
@@ -198,7 +197,7 @@ mod test {
198197 crate :: keys:: test:: TEST_ENTROPY ,
199198 )
200199 . unwrap ( ) ;
201- assert_eq ! ( generated_mnemonic. valid_networks , any_network ( ) ) ;
200+ assert_eq ! ( generated_mnemonic. valid_network_kinds , any_network_kind ( ) ) ;
202201 assert_eq ! (
203202 generated_mnemonic. to_string( ) ,
204203 "primary fetch primary fetch primary fetch primary fetch primary fetch primary fever"
@@ -210,18 +209,18 @@ mod test {
210209 crate :: keys:: test:: TEST_ENTROPY ,
211210 )
212211 . unwrap ( ) ;
213- assert_eq ! ( generated_mnemonic. valid_networks , any_network ( ) ) ;
212+ assert_eq ! ( generated_mnemonic. valid_network_kinds , any_network_kind ( ) ) ;
214213 assert_eq ! ( generated_mnemonic. to_string( ) , "primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary foster" ) ;
215214 }
216215
217216 #[ test]
218217 fn test_keys_generate_bip39_random ( ) {
219218 let generated_mnemonic: GeneratedKey < _ , miniscript:: Segwitv0 > =
220219 Mnemonic :: generate ( ( WordCount :: Words12 , Language :: English ) ) . unwrap ( ) ;
221- assert_eq ! ( generated_mnemonic. valid_networks , any_network ( ) ) ;
220+ assert_eq ! ( generated_mnemonic. valid_network_kinds , any_network_kind ( ) ) ;
222221
223222 let generated_mnemonic: GeneratedKey < _ , miniscript:: Segwitv0 > =
224223 Mnemonic :: generate ( ( WordCount :: Words24 , Language :: English ) ) . unwrap ( ) ;
225- assert_eq ! ( generated_mnemonic. valid_networks , any_network ( ) ) ;
224+ assert_eq ! ( generated_mnemonic. valid_network_kinds , any_network_kind ( ) ) ;
226225 }
227226}
0 commit comments