Add SSLv2 support behind a cfg flag

Many OpenSSL distributions have SSLv2 support compiled out, so it should
be opt-in.
This commit is contained in:
Steven Fackler 2014-02-27 23:39:28 -08:00
parent c3cf00ea10
commit f5f10deadc
3 changed files with 18 additions and 1 deletions

View File

@ -111,6 +111,8 @@ extern "C" {
pub fn SSL_library_init() -> c_int; pub fn SSL_library_init() -> c_int;
#[cfg(sslv2)]
pub fn SSLv2_method() -> *SSL_METHOD;
pub fn SSLv3_method() -> *SSL_METHOD; pub fn SSLv3_method() -> *SSL_METHOD;
pub fn TLSv1_method() -> *SSL_METHOD; pub fn TLSv1_method() -> *SSL_METHOD;
pub fn SSLv23_method() -> *SSL_METHOD; pub fn SSLv23_method() -> *SSL_METHOD;

View File

@ -38,15 +38,29 @@ fn init() {
/// Determines the SSL method supported /// Determines the SSL method supported
pub enum SslMethod { pub enum SslMethod {
#[cfg(sslv2)]
/// Only support the SSLv2 protocol
Sslv2,
/// Only support the SSLv3 protocol /// Only support the SSLv3 protocol
Sslv3, Sslv3,
/// Only support the TLSv1 protocol /// Only support the TLSv1 protocol
Tlsv1, Tlsv1,
/// Support the SSLv2, SSLv3 and TLSv1 protocols /// Support the SSLv2, SSLv3 and TLSv1 protocols
Sslv23 Sslv23,
} }
impl SslMethod { 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 { unsafe fn to_raw(&self) -> *ffi::SSL_METHOD {
match *self { match *self {
Sslv3 => ffi::SSLv3_method(), Sslv3 => ffi::SSLv3_method(),

View File

@ -1,3 +1,4 @@
use std::from_str::FromStr;
use std::io::Writer; use std::io::Writer;
use std::io::net::tcp::TcpStream; use std::io::net::tcp::TcpStream;
use std::str; use std::str;