use bitcoin::consensus::encode::serialize;
use bitcoin::util::bip32::ChildNumber;
use bitcoin::util::psbt::PartiallySignedTransaction as PSBT;
-use bitcoin::{Address, Network, OutPoint, Script, SigHashType, Transaction, TxOut, Txid};
+use bitcoin::{Address, Network, OutPoint, Script, Transaction, TxOut, Txid};
use miniscript::psbt::PsbtInputSatisfier;
None => continue,
};
- // Add sighash, default is obviously "ALL"
- psbt_input.sighash_type = builder.sighash.or(Some(SigHashType::All));
+ // Only set it if the builder has a custom one, otherwise leave blank which defaults to
+ // SIGHASH_ALL
+ if let Some(sighash_type) = builder.sighash {
+ psbt_input.sighash_type = Some(sighash_type);
+ }
// Try to find the prev_script in our db to figure out if this is internal or external,
// and the derivation index
)]))
.unwrap();
- assert_eq!(psbt.inputs[0].sighash_type, Some(bitcoin::SigHashType::All));
+ assert_eq!(psbt.inputs[0].sighash_type, None);
}
#[test]
InvalidKey,
/// The user canceled the operation
UserCanceled,
- /// The sighash is missing in the PSBT input
- MissingSighash,
/// Input index is out of range
InputIndexOutOfRange,
/// The `non_witness_utxo` field of the transaction is required to sign this input
let psbt_input = &psbt.inputs[input_index];
let tx_input = &psbt.global.unsigned_tx.input[input_index];
- let sighash = psbt_input.sighash_type.ok_or(SignerError::MissingSighash)?;
+ let sighash = psbt_input.sighash_type.unwrap_or(SigHashType::All);
let script = match psbt_input.redeem_script {
Some(ref redeem_script) => redeem_script.clone(),
None => {
let psbt_input = &psbt.inputs[input_index];
- let sighash = psbt_input.sighash_type.ok_or(SignerError::MissingSighash)?;
+ let sighash = psbt_input.sighash_type.unwrap_or(SigHashType::All);
let witness_utxo = psbt_input
.witness_utxo