diff --git a/script/src/flags.rs b/script/src/flags.rs index 4e6a81b5..068c0e1a 100644 --- a/script/src/flags.rs +++ b/script/src/flags.rs @@ -139,6 +139,11 @@ impl VerificationFlags { self } + pub fn verify_sigpushonly(mut self, value: bool) -> Self { + self.verify_sigpushonly = value; + self + } + pub fn verify_discourage_upgradable_witness_program(mut self, value: bool) -> Self { self.verify_discourage_upgradable_witness_program = value; self diff --git a/verification/src/accept_transaction.rs b/verification/src/accept_transaction.rs index 1b1d43c4..57ff09e9 100644 --- a/verification/src/accept_transaction.rs +++ b/verification/src/accept_transaction.rs @@ -308,6 +308,7 @@ pub struct TransactionEval<'a> { verify_nulldummy: bool, verify_monolith_opcodes: bool, verify_magnetic_anomaly_opcodes: bool, + verify_sigpushonly: bool, signature_version: SignatureVersion, } @@ -345,6 +346,7 @@ impl<'a> TransactionEval<'a> { let verify_checksequence = deployments.csv(); let verify_witness = deployments.segwit(); let verify_nulldummy = verify_witness; + let verify_sigpushonly = verify_magnetic_anomaly_opcodes; TransactionEval { transaction: transaction, @@ -359,6 +361,7 @@ impl<'a> TransactionEval<'a> { verify_nulldummy: verify_nulldummy, verify_monolith_opcodes: verify_monolith_opcodes, verify_magnetic_anomaly_opcodes: verify_magnetic_anomaly_opcodes, + verify_sigpushonly: verify_sigpushonly, signature_version: signature_version, } } @@ -409,7 +412,8 @@ impl<'a> TransactionEval<'a> { .verify_mod(self.verify_monolith_opcodes) .verify_bin2num(self.verify_monolith_opcodes) .verify_num2bin(self.verify_monolith_opcodes) - .verify_checkdatasig(self.verify_magnetic_anomaly_opcodes); + .verify_checkdatasig(self.verify_magnetic_anomaly_opcodes) + .verify_sigpushonly(self.verify_sigpushonly); try!(verify_script(&input, &output, &script_witness, &flags, &checker, self.signature_version) .map_err(|e| TransactionError::Signature(index, e)));