@@ -64,9 +64,10 @@ use std::str::FromStr;
64
64
use serde:: { Deserialize , Serialize } ;
65
65
66
66
use miniscript:: descriptor:: { ShInner , WshInner } ;
67
- use miniscript:: { Descriptor , DescriptorPublicKey , ScriptContext , Terminal } ;
67
+ use miniscript:: { Descriptor , ScriptContext , Terminal } ;
68
68
69
69
use crate :: database:: BatchDatabase ;
70
+ use crate :: types:: KeychainKind ;
70
71
use crate :: wallet:: Wallet ;
71
72
72
73
/// Structure that contains the export of a wallet
@@ -117,8 +118,12 @@ impl WalletExport {
117
118
include_blockheight : bool ,
118
119
) -> Result < Self , & ' static str > {
119
120
let descriptor = wallet
120
- . descriptor
121
- . to_string_with_secret ( & wallet. signers . as_key_map ( wallet. secp_ctx ( ) ) ) ;
121
+ . get_descriptor_for_keychain ( KeychainKind :: External )
122
+ . to_string_with_secret (
123
+ & wallet
124
+ . get_signers ( KeychainKind :: External )
125
+ . as_key_map ( wallet. secp_ctx ( ) ) ,
126
+ ) ;
122
127
let descriptor = remove_checksum ( descriptor) ;
123
128
Self :: is_compatible_with_core ( & descriptor) ?;
124
129
@@ -142,12 +147,20 @@ impl WalletExport {
142
147
blockheight,
143
148
} ;
144
149
145
- let desc_to_string = |d : & Descriptor < DescriptorPublicKey > | {
146
- let descriptor =
147
- d. to_string_with_secret ( & wallet. change_signers . as_key_map ( wallet. secp_ctx ( ) ) ) ;
148
- remove_checksum ( descriptor)
150
+ let change_descriptor = match wallet. has_internal_descriptor ( ) {
151
+ false => None ,
152
+ true => {
153
+ let descriptor = wallet
154
+ . get_descriptor_for_keychain ( KeychainKind :: Internal )
155
+ . to_string_with_secret (
156
+ & wallet
157
+ . get_signers ( KeychainKind :: Internal )
158
+ . as_key_map ( wallet. secp_ctx ( ) ) ,
159
+ ) ;
160
+ Some ( remove_checksum ( descriptor) )
161
+ }
149
162
} ;
150
- if export. change_descriptor ( ) != wallet . change_descriptor . as_ref ( ) . map ( desc_to_string ) {
163
+ if export. change_descriptor ( ) != change_descriptor {
151
164
return Err ( "Incompatible change descriptor" ) ;
152
165
}
153
166
0 commit comments