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:
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<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:
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue