diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs index 0644a674d955b40ace038f52c790088ad2e5e5b3..1faf749eddc8d738dc1e23602d0331865993d645 100644 --- a/openssl-sys/src/lib.rs +++ b/openssl-sys/src/lib.rs @@ -361,6 +361,7 @@ extern "C" { pub fn HMAC_Init_ex(ctx: *mut HMAC_CTX, key: *const u8, keylen: c_int, md: *const EVP_MD, imple: *const ENGINE); pub fn HMAC_Final(ctx: *mut HMAC_CTX, output: *mut u8, len: *mut c_uint); pub fn HMAC_Update(ctx: *mut HMAC_CTX, input: *const u8, len: c_uint); + pub fn HMAC_CTX_cleanup(ctx: *mut HMAC_CTX); pub fn PEM_read_bio_X509(bio: *mut BIO, out: *mut *mut X509, callback: Option, diff --git a/src/crypto/hmac.rs b/src/crypto/hmac.rs index a7a854b7a72371044300e8e2f09f6496ecc3c42b..8096a9480641effbee6bd23553fd3c0cd48dda81 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;