aboutsummaryrefslogtreecommitdiff
path: root/openssl-sys/src
diff options
context:
space:
mode:
authorGleb Kozyrev <[email protected]>2014-11-20 07:06:59 +0200
committerGleb Kozyrev <[email protected]>2014-11-26 21:38:06 +0200
commit5fafe4fc60848d525e3edb37266bc0f762cb7963 (patch)
tree8f85a76fb624b873506265382b4bcf4a7e67c5a1 /openssl-sys/src
parentBump to 0.1.1 (diff)
downloadrust-openssl-5fafe4fc60848d525e3edb37266bc0f762cb7963.tar.xz
rust-openssl-5fafe4fc60848d525e3edb37266bc0f762cb7963.zip
Hasher: static contract checking, context reuse
- Store EVP_MD_CTX in a separate struct. - Add with_context() constructor that uses an existing context. - Switch to EVP_Digest(Init|Final)_ex for efficient context reuse. - Make update() borrow &mut self. - Make finalize() consume self. Add finalize_reuse() that also returns the context which can be passed to from_context() constructor for reuse. These changes let the type system prevent illegal calls to update() and finalize().
Diffstat (limited to 'openssl-sys/src')
-rwxr-xr-xopenssl-sys/src/lib.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs
index 50186ae0..2b0c9292 100755
--- a/openssl-sys/src/lib.rs
+++ b/openssl-sys/src/lib.rs
@@ -340,8 +340,10 @@ extern "C" {
pub fn EVP_CipherFinal(ctx: *mut EVP_CIPHER_CTX, res: *mut u8, len: &mut c_int);
pub fn EVP_DigestInit(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD);
+ pub fn EVP_DigestInit_ex(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD, imple: *const ENGINE);
pub fn EVP_DigestUpdate(ctx: *mut EVP_MD_CTX, data: *const u8, n: c_uint);
pub fn EVP_DigestFinal(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32);
+ pub fn EVP_DigestFinal_ex(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32);
pub fn EVP_MD_CTX_create() -> *mut EVP_MD_CTX;
pub fn EVP_MD_CTX_destroy(ctx: *mut EVP_MD_CTX);