Changeset View
Changeset View
Standalone View
Standalone View
src/script/sigencoding.cpp
Show First 20 Lines • Show All 149 Lines • ▼ Show 20 Lines | if (lenS > 1 && (sig[startS + 2] == 0x00) && !(sig[startS + 3] & 0x80)) { | ||||
return false; | return false; | ||||
} | } | ||||
return true; | return true; | ||||
} | } | ||||
static bool CheckRawSignatureEncoding(const slicedvaltype &sig, uint32_t flags, | static bool CheckRawSignatureEncoding(const slicedvaltype &sig, uint32_t flags, | ||||
ScriptError *serror) { | ScriptError *serror) { | ||||
if ((flags & SCRIPT_ENABLE_SCHNORR) && (sig.size() == 64)) { | |||||
// Schnorr signatures have no ambiguity over encoding. | |||||
return true; | |||||
} | |||||
if ((flags & (SCRIPT_VERIFY_DERSIG | SCRIPT_VERIFY_LOW_S | | if ((flags & (SCRIPT_VERIFY_DERSIG | SCRIPT_VERIFY_LOW_S | | ||||
SCRIPT_VERIFY_STRICTENC)) && | SCRIPT_VERIFY_STRICTENC)) && | ||||
!IsValidSignatureEncoding(sig)) { | !IsValidSignatureEncoding(sig)) { | ||||
return set_error(serror, SCRIPT_ERR_SIG_DER); | return set_error(serror, SCRIPT_ERR_SIG_DER); | ||||
} | } | ||||
if ((flags & SCRIPT_VERIFY_LOW_S) && !CPubKey::CheckLowS(sig)) { | if ((flags & SCRIPT_VERIFY_LOW_S) && !CPubKey::CheckLowS(sig)) { | ||||
return set_error(serror, SCRIPT_ERR_SIG_HIGH_S); | return set_error(serror, SCRIPT_ERR_SIG_HIGH_S); | ||||
▲ Show 20 Lines • Show All 93 Lines • Show Last 20 Lines |