diff options
| author | Gleb Kozyrev <[email protected]> | 2014-11-20 07:06:59 +0200 |
|---|---|---|
| committer | Gleb Kozyrev <[email protected]> | 2014-11-26 21:38:06 +0200 |
| commit | 5fafe4fc60848d525e3edb37266bc0f762cb7963 (patch) | |
| tree | 8f85a76fb624b873506265382b4bcf4a7e67c5a1 /openssl-sys/src | |
| parent | Bump to 0.1.1 (diff) | |
| download | rust-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-x | openssl-sys/src/lib.rs | 2 |
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); |