diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/crypto/hmac.rs | 8 | ||||
| -rw-r--r-- | src/ssl/mod.rs | 9 | ||||
| -rw-r--r-- | src/x509/mod.rs | 8 |
3 files changed, 20 insertions, 5 deletions
diff --git a/src/crypto/hmac.rs b/src/crypto/hmac.rs index a7a854b7..8096a948 100644 --- a/src/crypto/hmac.rs +++ b/src/crypto/hmac.rs @@ -61,6 +61,14 @@ impl HMAC { } } +impl Drop for HMAC { + fn drop(&mut self) { + unsafe { + ffi::HMAC_CTX_cleanup(&mut self.ctx); + } + } +} + #[cfg(test)] mod tests { use serialize::hex::FromHex; diff --git a/src/ssl/mod.rs b/src/ssl/mod.rs index d29d633e..6112bc8d 100644 --- a/src/ssl/mod.rs +++ b/src/ssl/mod.rs @@ -410,7 +410,14 @@ impl<S: Stream> SslStream<S> { stream: stream, ssl: Arc::new(ssl), // Maximum TLS record size is 16k - buf: Vec::from_elem(16 * 1024, 0u8) + // We're just using this as a buffer, so there's no reason to pay + // to memset it + buf: { + const CAP: uint = 16 * 1024; + let mut v = Vec::with_capacity(CAP); + unsafe { v.set_len(CAP); } + v + } } } diff --git a/src/x509/mod.rs b/src/x509/mod.rs index 86152ac4..a06fe4e1 100644 --- a/src/x509/mod.rs +++ b/src/x509/mod.rs @@ -145,15 +145,15 @@ impl<'a, T: AsStr<'a>> ToStr for Vec<T> { /// use std::io::{File, Open, Write}; /// # use std::io::fs; /// -/// use openssl::crypto::hash::SHA256; -/// use openssl::x509::{DigitalSignature, X509Generator}; +/// use openssl::crypto::hash::HashType; +/// use openssl::x509::{KeyUsage, X509Generator}; /// /// let gen = X509Generator::new() /// .set_bitlength(2048) /// .set_valid_period(365*2) /// .set_CN("SuperMegaCorp Inc.") -/// .set_sign_hash(SHA256) -/// .set_usage(&[DigitalSignature]); +/// .set_sign_hash(HashType::SHA256) +/// .set_usage(&[KeyUsage::DigitalSignature]); /// /// let (cert, pkey) = gen.generate().unwrap(); /// |