mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-09 10:43:19 -05:00
psbt: Make sighash_type std::optional<int>
It is better to ues an optional to determine whether the sighash type is set rather than using 0 as a magic number.
This commit is contained in:
parent
577bd51a4b
commit
eb9a1a2c59
3 changed files with 10 additions and 8 deletions
10
src/psbt.h
10
src/psbt.h
|
@ -57,7 +57,7 @@ struct PSBTInput
|
|||
std::map<CPubKey, KeyOriginInfo> hd_keypaths;
|
||||
std::map<CKeyID, SigPair> partial_sigs;
|
||||
std::map<std::vector<unsigned char>, std::vector<unsigned char>> unknown;
|
||||
int sighash_type = 0;
|
||||
std::optional<int> sighash_type;
|
||||
|
||||
bool IsNull() const;
|
||||
void FillSignatureData(SignatureData& sigdata) const;
|
||||
|
@ -86,9 +86,9 @@ struct PSBTInput
|
|||
}
|
||||
|
||||
// Write the sighash type
|
||||
if (sighash_type > 0) {
|
||||
if (sighash_type != std::nullopt) {
|
||||
SerializeToVector(s, PSBT_IN_SIGHASH);
|
||||
SerializeToVector(s, sighash_type);
|
||||
SerializeToVector(s, *sighash_type);
|
||||
}
|
||||
|
||||
// Write the redeem script
|
||||
|
@ -201,7 +201,9 @@ struct PSBTInput
|
|||
} else if (key.size() != 1) {
|
||||
throw std::ios_base::failure("Sighash type key is more than one byte type");
|
||||
}
|
||||
UnserializeFromVector(s, sighash_type);
|
||||
int sighash;
|
||||
UnserializeFromVector(s, sighash);
|
||||
sighash_type = sighash;
|
||||
break;
|
||||
case PSBT_IN_REDEEMSCRIPT:
|
||||
{
|
||||
|
|
|
@ -1255,8 +1255,8 @@ static RPCHelpMan decodepsbt()
|
|||
}
|
||||
|
||||
// Sighash
|
||||
if (input.sighash_type > 0) {
|
||||
in.pushKV("sighash", SighashToStr((unsigned char)input.sighash_type));
|
||||
if (input.sighash_type != std::nullopt) {
|
||||
in.pushKV("sighash", SighashToStr((unsigned char)*input.sighash_type));
|
||||
}
|
||||
|
||||
// Redeem script and witness script
|
||||
|
|
|
@ -633,7 +633,7 @@ TransactionError LegacyScriptPubKeyMan::FillPSBT(PartiallySignedTransaction& psb
|
|||
}
|
||||
|
||||
// Get the Sighash type
|
||||
if (sign && input.sighash_type > 0 && input.sighash_type != sighash_type) {
|
||||
if (sign && input.sighash_type != std::nullopt && *input.sighash_type != sighash_type) {
|
||||
return TransactionError::SIGHASH_MISMATCH;
|
||||
}
|
||||
|
||||
|
@ -2114,7 +2114,7 @@ TransactionError DescriptorScriptPubKeyMan::FillPSBT(PartiallySignedTransaction&
|
|||
}
|
||||
|
||||
// Get the Sighash type
|
||||
if (sign && input.sighash_type > 0 && input.sighash_type != sighash_type) {
|
||||
if (sign && input.sighash_type != std::nullopt && *input.sighash_type != sighash_type) {
|
||||
return TransactionError::SIGHASH_MISMATCH;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue