@@ -1161,6 +1161,9 @@ where
1161
1161
let psbt_input = & mut psbt. inputs [ n] ;
1162
1162
psbt_input. final_script_sig = Some ( tmp_input. script_sig ) ;
1163
1163
psbt_input. final_script_witness = Some ( tmp_input. witness ) ;
1164
+ if sign_options. remove_partial_sigs {
1165
+ psbt_input. partial_sigs . clear ( ) ;
1166
+ }
1164
1167
}
1165
1168
Err ( e) => {
1166
1169
debug ! ( "satisfy error {:?} for input {}" , e, n) ;
@@ -1745,6 +1748,15 @@ pub(crate) mod test {
1745
1748
use crate :: signer:: { SignOptions , SignerError } ;
1746
1749
use crate :: wallet:: AddressIndex :: { LastUnused , New , Peek , Reset } ;
1747
1750
1751
+ fn create_drain_all_and_consolidate_psbt (
1752
+ wallet : & Wallet < AnyDatabase > ,
1753
+ ) -> psbt:: PartiallySignedTransaction {
1754
+ let addr = wallet. get_address ( New ) . unwrap ( ) ;
1755
+ let mut builder = wallet. build_tx ( ) ;
1756
+ builder. drain_to ( addr. script_pubkey ( ) ) . drain_wallet ( ) ;
1757
+ builder. finish ( ) . unwrap ( ) . 0
1758
+ }
1759
+
1748
1760
#[ test]
1749
1761
fn test_cache_addresses_fixed ( ) {
1750
1762
let db = MemoryDatabase :: new ( ) ;
@@ -3878,6 +3890,32 @@ pub(crate) mod test {
3878
3890
)
3879
3891
}
3880
3892
3893
+ #[ test]
3894
+ fn test_remove_partial_sigs_after_finalize_sign_option ( ) {
3895
+ let ( wallet, _, _) = get_funded_wallet ( "wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)" ) ;
3896
+
3897
+ for remove_partial_sigs in & [ true , false ] {
3898
+ let mut psbt = create_drain_all_and_consolidate_psbt ( & wallet) ;
3899
+ assert ! ( wallet
3900
+ . sign(
3901
+ & mut psbt,
3902
+ SignOptions {
3903
+ remove_partial_sigs: * remove_partial_sigs,
3904
+ ..Default :: default ( )
3905
+ } ,
3906
+ )
3907
+ . unwrap( ) ) ;
3908
+
3909
+ psbt. inputs . iter ( ) . for_each ( |input| {
3910
+ if * remove_partial_sigs {
3911
+ assert ! ( input. partial_sigs. is_empty( ) )
3912
+ } else {
3913
+ assert ! ( !input. partial_sigs. is_empty( ) )
3914
+ }
3915
+ } ) ;
3916
+ }
3917
+ }
3918
+
3881
3919
#[ test]
3882
3920
fn test_sign_nonstandard_sighash ( ) {
3883
3921
let sighash = EcdsaSighashType :: NonePlusAnyoneCanPay ;
0 commit comments