Change inline assertions to debug_asserts

All of these were things that are (should be) guaranteed true no matter
what input is given to the API, barring unsafe operations on the data.
This commit is contained in:
Andrew Poelstra 2015-04-11 13:07:43 -05:00
parent 9e717d4219
commit 96e1844c25
3 changed files with 8 additions and 13 deletions

View File

@ -128,12 +128,12 @@ impl PublicKey {
unsafe { unsafe {
// We can assume the return value because it's not possible to construct // We can assume the return value because it's not possible to construct
// an invalid `SecretKey` without transmute trickery or something // an invalid `SecretKey` without transmute trickery or something
assert_eq!(ffi::secp256k1_ec_pubkey_create( let res = ffi::secp256k1_ec_pubkey_create(secp.ctx,
secp.ctx, pk.as_mut_ptr(), &mut len,
pk.as_mut_ptr(), &mut len, sk.as_ptr(), compressed);
sk.as_ptr(), compressed), 1); debug_assert_eq!(res, 1);
} }
assert_eq!(len as usize, pk.len()); debug_assert_eq!(len as usize, pk.len());
pk pk
} }
@ -406,7 +406,7 @@ impl Deserialize for PublicKey {
fn visit_seq<V>(&mut self, mut v: V) -> Result<PublicKey, V::Error> fn visit_seq<V>(&mut self, mut v: V) -> Result<PublicKey, V::Error>
where V: de::SeqVisitor where V: de::SeqVisitor
{ {
assert!(constants::UNCOMPRESSED_PUBLIC_KEY_SIZE >= constants::COMPRESSED_PUBLIC_KEY_SIZE); debug_assert!(constants::UNCOMPRESSED_PUBLIC_KEY_SIZE >= constants::COMPRESSED_PUBLIC_KEY_SIZE);
unsafe { unsafe {
use std::mem; use std::mem;

View File

@ -56,9 +56,6 @@ pub mod constants;
pub mod ffi; pub mod ffi;
pub mod key; pub mod key;
/// I dunno where else to put this..
fn assert_type_is_copy<T: Copy>() { }
/// A tag used for recovering the public key from a compact signature /// A tag used for recovering the public key from a compact signature
#[derive(Copy, Clone, PartialEq, Eq, Debug)] #[derive(Copy, Clone, PartialEq, Eq, Debug)]
pub struct RecoveryId(i32); pub struct RecoveryId(i32);
@ -269,7 +266,7 @@ impl<R: Rng> Secp256k1<R> {
return Err(Error::SignFailed); return Err(Error::SignFailed);
} }
// This assertation is probably too late :) // This assertation is probably too late :)
assert!(len as usize <= constants::MAX_SIGNATURE_SIZE); debug_assert!(len as usize <= constants::MAX_SIGNATURE_SIZE);
}; };
Ok(Signature(len as usize, sig)) Ok(Signature(len as usize, sig))
} }
@ -306,7 +303,7 @@ impl<R: Rng> Secp256k1<R> {
recid) != 1 { recid) != 1 {
return Err(Error::InvalidSignature); return Err(Error::InvalidSignature);
} }
assert_eq!(len as usize, pk.len()); debug_assert_eq!(len as usize, pk.len());
}; };
Ok(pk) Ok(pk)
} }

View File

@ -116,8 +116,6 @@ macro_rules! impl_array_newtype {
fn decode<D: ::serialize::Decoder>(d: &mut D) -> Result<$thing, D::Error> { fn decode<D: ::serialize::Decoder>(d: &mut D) -> Result<$thing, D::Error> {
use serialize::Decodable; use serialize::Decodable;
::assert_type_is_copy::<$ty>();
d.read_seq(|d, len| { d.read_seq(|d, len| {
if len != $len { if len != $len {
Err(d.error("Invalid length")) Err(d.error("Invalid length"))