0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-13 11:25:02 -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:
Andrew Chow 2021-11-15 13:54:01 -05:00
parent 577bd51a4b
commit eb9a1a2c59
3 changed files with 10 additions and 8 deletions

View file

@ -57,7 +57,7 @@ struct PSBTInput
std::map<CPubKey, KeyOriginInfo> hd_keypaths; std::map<CPubKey, KeyOriginInfo> hd_keypaths;
std::map<CKeyID, SigPair> partial_sigs; std::map<CKeyID, SigPair> partial_sigs;
std::map<std::vector<unsigned char>, std::vector<unsigned char>> unknown; std::map<std::vector<unsigned char>, std::vector<unsigned char>> unknown;
int sighash_type = 0; std::optional<int> sighash_type;
bool IsNull() const; bool IsNull() const;
void FillSignatureData(SignatureData& sigdata) const; void FillSignatureData(SignatureData& sigdata) const;
@ -86,9 +86,9 @@ struct PSBTInput
} }
// Write the sighash type // Write the sighash type
if (sighash_type > 0) { if (sighash_type != std::nullopt) {
SerializeToVector(s, PSBT_IN_SIGHASH); SerializeToVector(s, PSBT_IN_SIGHASH);
SerializeToVector(s, sighash_type); SerializeToVector(s, *sighash_type);
} }
// Write the redeem script // Write the redeem script
@ -201,7 +201,9 @@ struct PSBTInput
} else if (key.size() != 1) { } else if (key.size() != 1) {
throw std::ios_base::failure("Sighash type key is more than one byte type"); 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; break;
case PSBT_IN_REDEEMSCRIPT: case PSBT_IN_REDEEMSCRIPT:
{ {

View file

@ -1255,8 +1255,8 @@ static RPCHelpMan decodepsbt()
} }
// Sighash // Sighash
if (input.sighash_type > 0) { if (input.sighash_type != std::nullopt) {
in.pushKV("sighash", SighashToStr((unsigned char)input.sighash_type)); in.pushKV("sighash", SighashToStr((unsigned char)*input.sighash_type));
} }
// Redeem script and witness script // Redeem script and witness script

View file

@ -633,7 +633,7 @@ TransactionError LegacyScriptPubKeyMan::FillPSBT(PartiallySignedTransaction& psb
} }
// Get the Sighash type // 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; return TransactionError::SIGHASH_MISMATCH;
} }
@ -2114,7 +2114,7 @@ TransactionError DescriptorScriptPubKeyMan::FillPSBT(PartiallySignedTransaction&
} }
// Get the Sighash type // 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; return TransactionError::SIGHASH_MISMATCH;
} }