From bb23b33829ef872ae00ceea8c701d6f64f64e39b Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sat, 15 Oct 2016 12:24:20 -0700 Subject: [PATCH] Fix signature of EVP_DigestVerifyFinal on 1.0.1 --- openssl-sys/src/lib.rs | 5 +++++ openssl-sys/src/ossl10x.rs | 4 +++- openssl/src/crypto/sign.rs | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs index 8ad26003..6fe44750 100644 --- a/openssl-sys/src/lib.rs +++ b/openssl-sys/src/lib.rs @@ -504,6 +504,11 @@ extern { type_: *const EVP_MD, e: *mut ENGINE, pkey: *mut EVP_PKEY) -> c_int; + #[cfg(ossl101)] + pub fn EVP_DigestVerifyFinal(ctx: *mut EVP_MD_CTX, + sigret: *mut c_uchar, + siglen: size_t) -> c_int; + #[cfg(not(ossl101))] pub fn EVP_DigestVerifyFinal(ctx: *mut EVP_MD_CTX, sigret: *const c_uchar, siglen: size_t) -> c_int; diff --git a/openssl-sys/src/ossl10x.rs b/openssl-sys/src/ossl10x.rs index 16d669b0..595b673b 100644 --- a/openssl-sys/src/ossl10x.rs +++ b/openssl-sys/src/ossl10x.rs @@ -2,7 +2,9 @@ use std::sync::{Mutex, MutexGuard}; use std::sync::{Once, ONCE_INIT}; use std::mem; -use libc::{c_int, c_char, c_void, c_long, c_uchar, size_t, c_uint, c_ulong, time_t}; +use libc::{c_int, c_char, c_void, c_long, c_uchar, size_t, c_uint, c_ulong}; +#[cfg(not(ossl101))] +use libc::time_t; #[repr(C)] pub struct stack_st_ASN1_OBJECT { diff --git a/openssl/src/crypto/sign.rs b/openssl/src/crypto/sign.rs index 47549574..db3be9fa 100644 --- a/openssl/src/crypto/sign.rs +++ b/openssl/src/crypto/sign.rs @@ -113,7 +113,7 @@ impl<'a> Verifier<'a> { pub fn finish(&self, signature: &[u8]) -> Result<(), ErrorStack> { unsafe { try_ssl_if!(ffi::EVP_DigestVerifyFinal(self.0, - signature.as_ptr() as *const _, + signature.as_ptr() as *const _ as _, signature.len()) != 1); Ok(()) }