Skip to content

Commit b09227d

Browse files
committed
all check sighash flag. Remove optional check
1 parent b342833 commit b09227d

File tree

1 file changed

+28
-29
lines changed

1 file changed

+28
-29
lines changed

src/psbt/finalizer.rs

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -251,42 +251,41 @@ pub fn finalize<C: secp256k1::Verification>(
251251

252252
// Check well-formedness of input data
253253
for (n, input) in psbt.inputs.iter().enumerate() {
254-
if let Some(target) = input.sighash_type {
255-
for (key, rawsig) in &input.partial_sigs {
256-
if rawsig.is_empty() {
254+
let target = input.sighash_type.unwrap_or(bitcoin::SigHashType::All);
255+
for (key, rawsig) in &input.partial_sigs {
256+
if rawsig.is_empty() {
257+
return Err(Error::InputError(
258+
InputError::InvalidSignature {
259+
pubkey: *key,
260+
sig: rawsig.clone(),
261+
},
262+
n,
263+
));
264+
}
265+
let (flag, sig) = rawsig.split_last().unwrap();
266+
let flag = bitcoin::SigHashType::from_u32(*flag as u32);
267+
if target != flag {
268+
return Err(Error::InputError(
269+
InputError::WrongSigHashFlag {
270+
required: target,
271+
got: flag,
272+
pubkey: *key,
273+
},
274+
n,
275+
));
276+
}
277+
match secp256k1::Signature::from_der(sig) {
278+
Err(..) => {
257279
return Err(Error::InputError(
258280
InputError::InvalidSignature {
259281
pubkey: *key,
260-
sig: rawsig.clone(),
261-
},
262-
n,
263-
));
264-
}
265-
let (flag, sig) = rawsig.split_last().unwrap();
266-
let flag = bitcoin::SigHashType::from_u32(*flag as u32);
267-
if target != flag {
268-
return Err(Error::InputError(
269-
InputError::WrongSigHashFlag {
270-
required: target,
271-
got: flag,
272-
pubkey: *key,
282+
sig: Vec::from(sig),
273283
},
274284
n,
275285
));
276286
}
277-
match secp256k1::Signature::from_der(sig) {
278-
Err(..) => {
279-
return Err(Error::InputError(
280-
InputError::InvalidSignature {
281-
pubkey: *key,
282-
sig: Vec::from(sig),
283-
},
284-
n,
285-
));
286-
}
287-
Ok(_sig) => {
288-
// Interpreter will check all the sigs later.
289-
}
287+
Ok(_sig) => {
288+
// Interpreter will check all the sigs later.
290289
}
291290
}
292291
}

0 commit comments

Comments
 (0)