| 212 | } |
| 213 | |
| 214 | static bool CheckSighashEncoding(const valtype &vchSig, uint32_t flags, |
| 215 | ScriptError *serror) { |
| 216 | if (flags & SCRIPT_VERIFY_STRICTENC) { |
| 217 | if (!GetHashType(vchSig).isDefined()) { |
| 218 | return set_error(serror, ScriptError::SIG_HASHTYPE); |
| 219 | } |
| 220 | |
| 221 | bool usesForkId = GetHashType(vchSig).hasForkId(); |
| 222 | bool forkIdEnabled = flags & SCRIPT_ENABLE_SIGHASH_FORKID; |
| 223 | if (!forkIdEnabled && usesForkId) { |
| 224 | return set_error(serror, ScriptError::ILLEGAL_FORKID); |
| 225 | } |
| 226 | |
| 227 | if (forkIdEnabled && !usesForkId) { |
| 228 | return set_error(serror, ScriptError::MUST_USE_FORKID); |
| 229 | } |
| 230 | } |
| 231 | |
| 232 | return true; |
| 233 | } |
| 234 | |
| 235 | template <typename F> |
| 236 | static bool CheckTransactionSignatureEncodingImpl(const valtype &vchSig, |
no test coverage detected