diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs index 8550ce33100f75d9cde7090cba3eb22a3760e336..2a99d7108f9394f17f74be3a323f84830e50fd4d 100644 --- a/openssl-sys/src/lib.rs +++ b/openssl-sys/src/lib.rs @@ -39,7 +39,6 @@ pub type X509_NAME_ENTRY = c_void; pub type X509_REQ = c_void; pub type X509_STORE_CTX = c_void; -#[allow(missing_copy_implementations)] #[repr(C)] pub struct EVP_MD_CTX { digest: *mut EVP_MD, @@ -50,7 +49,8 @@ pub struct EVP_MD_CTX { update: *mut c_void } -#[allow(missing_copy_implementations)] +impl Copy for EVP_MD_CTX {} + #[repr(C)] pub struct HMAC_CTX { md: *mut EVP_MD, @@ -61,7 +61,8 @@ pub struct HMAC_CTX { key: [c_uchar, ..128] } -#[allow(missing_copy_implementations)] +impl Copy for HMAC_CTX {} + #[repr(C)] pub struct X509V3_CTX { flags: c_int, @@ -75,7 +76,8 @@ pub struct X509V3_CTX { // Maybe more here } -#[allow(missing_copy_implementations)] +impl Copy for X509V3_CTX {} + #[repr(C)] pub struct BIGNUM { pub d: *mut c_void, @@ -85,6 +87,8 @@ pub struct BIGNUM { pub flags: c_int, } +impl Copy for BIGNUM {} + pub type CRYPTO_EX_new = extern "C" fn(parent: *mut c_void, ptr: *mut c_void, ad: *const CRYPTO_EX_DATA, idx: c_int, argl: c_long, argp: *const c_void) -> c_int; diff --git a/src/x509/mod.rs b/src/x509/mod.rs index 47294c3d10f51db0ddae2ed00bc8baae0f339942..8baafe410b79e65b248edfe8aca463a163831350 100644 --- a/src/x509/mod.rs +++ b/src/x509/mod.rs @@ -362,7 +362,7 @@ impl<'ctx> X509<'ctx> { } /// Reads certificate from PEM, takes ownership of handle - pub fn from_pem(reader: &mut Reader) -> Result, SslError> { + pub fn from_pem(reader: &mut R) -> Result, SslError> where R: Reader { let mut mem_bio = try!(MemBio::new()); let buf = try!(reader.read_to_end().map_err(StreamError)); try!(mem_bio.write(buf.as_slice()).map_err(StreamError)); @@ -404,7 +404,7 @@ impl<'ctx> X509<'ctx> { } /// Writes certificate as PEM - pub fn write_pem(&self, writer: &mut Writer) -> Result<(), SslError> { + pub fn write_pem(&self, writer: &mut W) -> Result<(), SslError> where W: Writer{ let mut mem_bio = try!(MemBio::new()); unsafe { try_ssl!(ffi::PEM_write_bio_X509(mem_bio.get_handle(),