Commit 5ba7c49a authored by Erick Tryzelaar's avatar Erick Tryzelaar
Browse files

Add destructors to all the types that need destructing

parent e3fef0c4
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ mod libcrypto {
    #[link_args = "-lcrypto"]
    extern {
        fn EVP_MD_CTX_create() -> EVP_MD_CTX;
        fn EVP_MD_CTX_destroy(ctx: EVP_MD_CTX);

        fn EVP_md5() -> EVP_MD;
        fn EVP_sha1() -> EVP_MD;
@@ -96,6 +97,14 @@ impl Hasher {
    }
}

impl Drop for Hasher {
    fn drop(&self) {
        unsafe {
            libcrypto::EVP_MD_CTX_destroy(self.ctx);
        }
    }
}

/**
 * Hashes the supplied input data using hash t, returning the resulting hash
 * value
+8 −0
Original line number Diff line number Diff line
@@ -336,6 +336,14 @@ impl PKey {
    }
}

impl Drop for PKey {
    fn drop(&self) {
        unsafe {
            libcrypto::EVP_PKEY_free(self.evp);
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;
+9 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ pub mod libcrypto {
    #[link_args = "-lcrypto"]
        fn EVP_CIPHER_CTX_new() -> EVP_CIPHER_CTX;
        fn EVP_CIPHER_CTX_set_padding(ctx: EVP_CIPHER_CTX, padding: c_int);
        fn EVP_CIPHER_CTX_free(ctx: EVP_CIPHER_CTX);

        fn EVP_aes_128_ecb() -> EVP_CIPHER;
        fn EVP_aes_128_cbc() -> EVP_CIPHER;
@@ -149,6 +150,14 @@ impl Crypter {
    }
}

impl Drop for Crypter {
    fn drop(&self) {
        unsafe {
            libcrypto::EVP_CIPHER_CTX_free(self.ctx);
        }
    }
}

/**
 * Encrypts data, using the specified crypter type in encrypt mode with the
 * specified key and iv; returns the resulting (encrypted) data.