diff options
author | Steven Fackler <sfackler@gmail.com> | 2014-02-27 23:39:28 -0800 |
---|---|---|
committer | Steven Fackler <sfackler@gmail.com> | 2014-02-27 23:39:28 -0800 |
commit | f5f10deadcd39872caa654e5439b473a325953bf (patch) | |
tree | 3241361a24ce4ff2bfcd3a0a7b340441d82a184a | |
parent | c3cf00ea10efdc922dd7215575fd390c2bfe54c6 (diff) | |
download | rust-openssl-f5f10deadcd39872caa654e5439b473a325953bf.zip |
Add SSLv2 support behind a cfg flag
Many OpenSSL distributions have SSLv2 support compiled out, so it should
be opt-in.
-rw-r--r-- | ssl/ffi.rs | 2 | ||||
-rw-r--r-- | ssl/mod.rs | 16 | ||||
-rw-r--r-- | ssl/tests.rs | 1 |
3 files changed, 18 insertions, 1 deletions
@@ -111,6 +111,8 @@ extern "C" { pub fn SSL_library_init() -> c_int; + #[cfg(sslv2)] + pub fn SSLv2_method() -> *SSL_METHOD; pub fn SSLv3_method() -> *SSL_METHOD; pub fn TLSv1_method() -> *SSL_METHOD; pub fn SSLv23_method() -> *SSL_METHOD; @@ -38,15 +38,29 @@ fn init() { /// Determines the SSL method supported pub enum SslMethod { + #[cfg(sslv2)] + /// Only support the SSLv2 protocol + Sslv2, /// Only support the SSLv3 protocol Sslv3, /// Only support the TLSv1 protocol Tlsv1, /// Support the SSLv2, SSLv3 and TLSv1 protocols - Sslv23 + Sslv23, } impl SslMethod { + #[cfg(sslv2)] + unsafe fn to_raw(&self) -> *ffi::SSL_METHOD { + match *self { + Sslv2 => ffi::SSLv2_method(), + Sslv3 => ffi::SSLv3_method(), + Tlsv1 => ffi::TLSv1_method(), + Sslv23 => ffi::SSLv23_method() + } + } + + #[cfg(not(sslv2))] unsafe fn to_raw(&self) -> *ffi::SSL_METHOD { match *self { Sslv3 => ffi::SSLv3_method(), diff --git a/ssl/tests.rs b/ssl/tests.rs index 39a756cd..751ca7ab 100644 --- a/ssl/tests.rs +++ b/ssl/tests.rs @@ -1,3 +1,4 @@ +use std::from_str::FromStr; use std::io::Writer; use std::io::net::tcp::TcpStream; use std::str; |