MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / EvalChecksigPreTapscript

Function EvalChecksigPreTapscript

src/script/interpreter.cpp:331–355  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

329}
330
331static bool EvalChecksigPreTapscript(const valtype& vchSig, const valtype& vchPubKey, CScript::const_iterator pbegincodehash, CScript::const_iterator pend, script_verify_flags flags, const BaseSignatureChecker& checker, SigVersion sigversion, ScriptError* serror, bool& fSuccess)
332{
333 assert(sigversion == SigVersion::BASE || sigversion == SigVersion::WITNESS_V0);
334
335 // Subset of script starting at the most recent codeseparator
336 CScript scriptCode(pbegincodehash, pend);
337
338 // Drop the signature in pre-segwit scripts but not segwit scripts
339 if (sigversion == SigVersion::BASE) {
340 int found = FindAndDelete(scriptCode, CScript() << vchSig);
341 if (found > 0 && (flags & SCRIPT_VERIFY_CONST_SCRIPTCODE))
342 return set_error(serror, SCRIPT_ERR_SIG_FINDANDDELETE);
343 }
344
345 if (!CheckSignatureEncoding(vchSig, flags, serror) || !CheckPubKeyEncoding(vchPubKey, flags, sigversion, serror)) {
346 //serror is set
347 return false;
348 }
349 fSuccess = checker.CheckECDSASignature(vchSig, vchPubKey, scriptCode, sigversion);
350
351 if (!fSuccess && (flags & SCRIPT_VERIFY_NULLFAIL) && vchSig.size())
352 return set_error(serror, SCRIPT_ERR_SIG_NULLFAIL);
353
354 return true;
355}
356
357static bool EvalChecksigTapscript(const valtype& sig, const valtype& pubkey, ScriptExecutionData& execdata, script_verify_flags flags, const BaseSignatureChecker& checker, SigVersion sigversion, ScriptError* serror, bool& success)
358{

Callers 1

EvalChecksigFunction · 0.85

Calls 7

set_errorFunction · 0.85
CheckSignatureEncodingFunction · 0.85
CheckPubKeyEncodingFunction · 0.85
FindAndDeleteFunction · 0.70
CScriptClass · 0.70
CheckECDSASignatureMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected