mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-15 12:51:00 +02:00
Merge bd482b3ffe into merged_master (Bitcoin PR bitcoin/bitcoin#24105)
This commit is contained in:
commit
23ffcd4fc8
5 changed files with 30 additions and 16 deletions
|
|
@ -2629,7 +2629,7 @@ static bool HandleMissingData(MissingDataBehavior mdb)
|
|||
}
|
||||
|
||||
template<typename T>
|
||||
bool SignatureHashSchnorr(uint256& hash_out, const ScriptExecutionData& execdata, const T& tx_to, uint32_t in_pos, uint8_t hash_type, SigVersion sigversion, const PrecomputedTransactionData& cache, MissingDataBehavior mdb)
|
||||
bool SignatureHashSchnorr(uint256& hash_out, ScriptExecutionData& execdata, const T& tx_to, uint32_t in_pos, uint8_t hash_type, SigVersion sigversion, const PrecomputedTransactionData& cache, MissingDataBehavior mdb)
|
||||
{
|
||||
uint8_t ext_flag, key_version;
|
||||
switch (sigversion) {
|
||||
|
|
@ -2717,13 +2717,20 @@ bool SignatureHashSchnorr(uint256& hash_out, const ScriptExecutionData& execdata
|
|||
// Data about the output (if only one).
|
||||
if (output_type == SIGHASH_SINGLE) {
|
||||
if (in_pos >= tx_to.vout.size()) return false;
|
||||
CHashWriter sha_single_output(SER_GETHASH, 0);
|
||||
sha_single_output << tx_to.vout[in_pos];
|
||||
ss << sha_single_output.GetSHA256();
|
||||
if (!execdata.m_output_hash) {
|
||||
CHashWriter sha_single_output(SER_GETHASH, 0);
|
||||
sha_single_output << tx_to.vout[in_pos];
|
||||
execdata.m_output_hash = sha_single_output.GetSHA256();
|
||||
}
|
||||
ss << execdata.m_output_hash.value();
|
||||
|
||||
CHashWriter sha_single_output_witness(SER_GETHASH, 0);
|
||||
sha_single_output_witness << tx_to.witness.vtxoutwit[in_pos];
|
||||
ss << sha_single_output_witness.GetSHA256();
|
||||
// ELEMENTS
|
||||
if (!execdata.m_output_witness_hash) {
|
||||
CHashWriter sha_single_output_witness(SER_GETHASH, 0);
|
||||
sha_single_output_witness << tx_to.witness.vtxoutwit[in_pos];
|
||||
execdata.m_output_witness_hash = sha_single_output_witness.GetSHA256();
|
||||
}
|
||||
ss << execdata.m_output_witness_hash.value();
|
||||
}
|
||||
|
||||
// Additional data for BIP 342 signatures
|
||||
|
|
@ -2883,7 +2890,7 @@ bool GenericTransactionSignatureChecker<T>::CheckECDSASignature(const std::vecto
|
|||
}
|
||||
|
||||
template <class T>
|
||||
bool GenericTransactionSignatureChecker<T>::CheckSchnorrSignature(Span<const unsigned char> sig, Span<const unsigned char> pubkey_in, SigVersion sigversion, const ScriptExecutionData& execdata, ScriptError* serror) const
|
||||
bool GenericTransactionSignatureChecker<T>::CheckSchnorrSignature(Span<const unsigned char> sig, Span<const unsigned char> pubkey_in, SigVersion sigversion, ScriptExecutionData& execdata, ScriptError* serror) const
|
||||
{
|
||||
assert(sigversion == SigVersion::TAPROOT || sigversion == SigVersion::TAPSCRIPT);
|
||||
// Schnorr signatures have 32-byte public keys. The caller is responsible for enforcing this.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue