From 331e555e4c8914b189c33105ec479360b17e1b42 Mon Sep 17 00:00:00 2001 From: Andrew Poelstra Date: Thu, 4 Sep 2014 20:34:58 -0500 Subject: [PATCH] Use `verify_raw` rather than `verify` to check signatures `verify` cannot handle illegally padded signatures because it takes an object of type `Signature`, which is a fixed-size type. This should have been part of the previous commit --- an important lesson about running the unit tests before every push! --- src/blockdata/script.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/blockdata/script.rs b/src/blockdata/script.rs index 924b07e..40591ca 100644 --- a/src/blockdata/script.rs +++ b/src/blockdata/script.rs @@ -36,7 +36,6 @@ use crypto::sha1::Sha1; use crypto::sha2::Sha256; use secp256k1::Secp256k1; -use secp256k1::Signature; use secp256k1::key::PublicKey; use blockdata::opcodes; @@ -1466,8 +1465,7 @@ fn check_signature(sig_slice: &[u8], pk_slice: &[u8], script: Vec, serialize(&Sha256dHash::from_data(data_to_sign.as_slice())).unwrap() }; - let sig = try!(Signature::from_slice(sig_slice).map_err(EcdsaError)); - Secp256k1::verify(signature_hash.as_slice(), &sig, &pubkey).map_err(EcdsaError) + Secp256k1::verify_raw(signature_hash.as_slice(), sig_slice, &pubkey).map_err(EcdsaError) } // Macro to translate English stack instructions into Rust code.