From f16cd5586f554530aa1511a7586ed7d3b4642235 Mon Sep 17 00:00:00 2001 From: Andrei Oprisan Date: Tue, 4 Oct 2016 12:00:40 +0300 Subject: added try_ssl_size, which handles -1 as error and returns the value otherwise; added RSA private_decrypt and public encrypt lift_ssl_size Added public/private encrypt/decrypt to RSA from the original commit + tests; added try_ssl_returns_size macro to check for -1 in case of SSL functions which return size --- openssl/src/macros.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'openssl/src/macros.rs') diff --git a/openssl/src/macros.rs b/openssl/src/macros.rs index 35221f1c..e2d9cae5 100644 --- a/openssl/src/macros.rs +++ b/openssl/src/macros.rs @@ -33,6 +33,17 @@ macro_rules! try_ssl_null{ }) } +/// Shortcut return with SSL error if last error result is -1 +/// (default for size) +macro_rules! try_ssl_returns_size{ + ($e:expr) => ( + if $e == -1 { + return Err(::error::ErrorStack::get().into()) + } else { + $e + } + ) +} /// Lifts current SSL error code into Result<(), Error> /// if expression is true @@ -57,3 +68,15 @@ macro_rules! lift_ssl_if{ macro_rules! lift_ssl { ($e:expr) => (lift_ssl_if!($e == 0)) } + +/// Lifts current SSL error code into Result<(), Error> +/// if SSL returned -1 (default size error indication) +macro_rules! lift_ssl_returns_size { + ($e:expr) => ( { + if $e == -1 { + Err(::error::ErrorStack::get().into()) + } else { + Ok($e) + } + }) +} -- cgit v1.2.3 From 43c951f743e68fac5f45119eda7c994882a1d489 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 30 Sep 2016 00:43:05 -0700 Subject: Add support for OpenSSL 1.1.0 This commit is relatively major refactoring of the `openssl-sys` crate as well as the `openssl` crate itself. The end goal here was to support OpenSSL 1.1.0, and lots of other various tweaks happened along the way. The major new features are: * OpenSSL 1.1.0 is supported * OpenSSL 0.9.8 is no longer supported (aka all OSX users by default) * All FFI bindings are verified with the `ctest` crate (same way as the `libc` crate) * CI matrixes are vastly expanded to include 32/64 of all platforms, more OpenSSL version coverage, as well as ARM coverage on Linux * The `c_helpers` module is completely removed along with the `gcc` dependency. * The `openssl-sys` build script was completely rewritten * Now uses `OPENSSL_DIR` to find the installation, not include/lib env vars. * Better error messages for mismatched versions. * Better error messages for failing to find OpenSSL on a platform (more can be done here) * Probing of OpenSSL build-time configuration to inform the API of the `*-sys` crate. * Many Cargo features have been removed as they're now enabled by default. As this is a breaking change to both the `openssl` and `openssl-sys` crates this will necessitate a major version bump of both. There's still a few more API questions remaining but let's hash that out on a PR! Closes #452 --- openssl/src/macros.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'openssl/src/macros.rs') diff --git a/openssl/src/macros.rs b/openssl/src/macros.rs index e2d9cae5..31c298fa 100644 --- a/openssl/src/macros.rs +++ b/openssl/src/macros.rs @@ -80,3 +80,17 @@ macro_rules! lift_ssl_returns_size { } }) } + +#[cfg(ossl10x)] +macro_rules! CRYPTO_free { + ($e:expr) => (::ffi::CRYPTO_free($e)) +} + +#[cfg(ossl110)] +macro_rules! CRYPTO_free { + ($e:expr) => ( + ::ffi::CRYPTO_free($e, + concat!(file!(), "\0").as_ptr() as *const _, + line!() as i32) + ) +} -- cgit v1.2.3 From 7ec015325b0d900ddaf375b62f5a52d4231dc9a2 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sun, 16 Oct 2016 21:07:17 -0700 Subject: Finish error overhaul --- openssl/src/macros.rs | 81 --------------------------------------------------- 1 file changed, 81 deletions(-) (limited to 'openssl/src/macros.rs') diff --git a/openssl/src/macros.rs b/openssl/src/macros.rs index 31c298fa..85175445 100644 --- a/openssl/src/macros.rs +++ b/openssl/src/macros.rs @@ -1,86 +1,5 @@ #![macro_use] -macro_rules! try_ssl_stream { - ($e:expr) => ( - match $e { - Ok(ok) => ok, - Err(err) => return Err(StreamError(err)) - } - ) -} - -/// Shortcut return with SSL error if something went wrong -macro_rules! try_ssl_if { - ($e:expr) => ( - if $e { - return Err(::error::ErrorStack::get().into()) - } - ) -} - -/// Shortcut return with SSL error if last error result is 0 -/// (default) -macro_rules! try_ssl{ - ($e:expr) => (try_ssl_if!($e == 0)) -} - -/// Shortcut return with SSL if got a null result -macro_rules! try_ssl_null{ - ($e:expr) => ({ - let t = $e; - try_ssl_if!(t == ptr::null_mut()); - t - }) -} - -/// Shortcut return with SSL error if last error result is -1 -/// (default for size) -macro_rules! try_ssl_returns_size{ - ($e:expr) => ( - if $e == -1 { - return Err(::error::ErrorStack::get().into()) - } else { - $e - } - ) -} - -/// Lifts current SSL error code into Result<(), Error> -/// if expression is true -/// Lifting is actually a shortcut of the following form: -/// -/// ```ignore -/// let _ = try!(something) -/// Ok(()) -/// ``` -macro_rules! lift_ssl_if{ - ($e:expr) => ( { - if $e { - Err(::error::ErrorStack::get().into()) - } else { - Ok(()) - } - }) -} - -/// Lifts current SSL error code into Result<(), Error> -/// if SSL returned 0 (default error indication) -macro_rules! lift_ssl { - ($e:expr) => (lift_ssl_if!($e == 0)) -} - -/// Lifts current SSL error code into Result<(), Error> -/// if SSL returned -1 (default size error indication) -macro_rules! lift_ssl_returns_size { - ($e:expr) => ( { - if $e == -1 { - Err(::error::ErrorStack::get().into()) - } else { - Ok($e) - } - }) -} - #[cfg(ossl10x)] macro_rules! CRYPTO_free { ($e:expr) => (::ffi::CRYPTO_free($e)) -- cgit v1.2.3 From 548c8b5fbaca291237e22b8959c05769a884b08c Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Wed, 26 Oct 2016 21:55:13 -0700 Subject: Remove macros module --- openssl/src/macros.rs | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 openssl/src/macros.rs (limited to 'openssl/src/macros.rs') diff --git a/openssl/src/macros.rs b/openssl/src/macros.rs deleted file mode 100644 index 85175445..00000000 --- a/openssl/src/macros.rs +++ /dev/null @@ -1,15 +0,0 @@ -#![macro_use] - -#[cfg(ossl10x)] -macro_rules! CRYPTO_free { - ($e:expr) => (::ffi::CRYPTO_free($e)) -} - -#[cfg(ossl110)] -macro_rules! CRYPTO_free { - ($e:expr) => ( - ::ffi::CRYPTO_free($e, - concat!(file!(), "\0").as_ptr() as *const _, - line!() as i32) - ) -} -- cgit v1.2.3