Pass SslMethod into constructors

This commit is contained in:
Steven Fackler 2016-10-30 14:26:28 -07:00
parent 33cce627da
commit 43b430e5b0
3 changed files with 16 additions and 25 deletions

View File

@ -47,11 +47,7 @@ impl ClientConnectorBuilder {
/// Creates a new builder for TLS connections. /// Creates a new builder for TLS connections.
/// ///
/// The default configuration is based off of libcurl's and is subject to change. /// The default configuration is based off of libcurl's and is subject to change.
pub fn tls() -> Result<ClientConnectorBuilder, ErrorStack> { pub fn new(method: SslMethod) -> Result<ClientConnectorBuilder, ErrorStack> {
ClientConnectorBuilder::new(SslMethod::tls())
}
fn new(method: SslMethod) -> Result<ClientConnectorBuilder, ErrorStack> {
let mut ctx = try!(ctx(method)); let mut ctx = try!(ctx(method));
try!(ctx.set_default_verify_paths()); try!(ctx.set_default_verify_paths());
try!(ctx.set_cipher_list("ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH")); try!(ctx.set_cipher_list("ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH"));
@ -107,17 +103,7 @@ impl ServerConnectorBuilder {
/// ///
/// The default configuration is based off of the intermediate profile of Mozilla's server side /// The default configuration is based off of the intermediate profile of Mozilla's server side
/// TLS configuration recommendations, and is subject to change. /// TLS configuration recommendations, and is subject to change.
pub fn tls<I>(private_key: &PKeyRef, pub fn new<I>(method: SslMethod,
certificate: &X509Ref,
chain: I)
-> Result<ServerConnectorBuilder, ErrorStack>
where I: IntoIterator,
I::Item: AsRef<X509Ref>
{
ServerConnectorBuilder::new(SslMethod::tls(), private_key, certificate, chain)
}
fn new<I>(method: SslMethod,
private_key: &PKeyRef, private_key: &PKeyRef,
certificate: &X509Ref, certificate: &X509Ref,
chain: I) chain: I)

View File

@ -8,11 +8,11 @@
//! To connect as a client to a remote server: //! To connect as a client to a remote server:
//! //!
//! ``` //! ```
//! use openssl::ssl::ClientConnectorBuilder; //! use openssl::ssl::{SslMethod, ClientConnectorBuilder};
//! use std::io::{Read, Write}; //! use std::io::{Read, Write};
//! use std::net::TcpStream; //! use std::net::TcpStream;
//! //!
//! let connector = ClientConnectorBuilder::tls().unwrap().build(); //! let connector = ClientConnectorBuilder::new(SslMethod::tls()).unwrap().build();
//! //!
//! let stream = TcpStream::connect("google.com:443").unwrap(); //! let stream = TcpStream::connect("google.com:443").unwrap();
//! let mut stream = connector.connect("google.com", stream).unwrap(); //! let mut stream = connector.connect("google.com", stream).unwrap();
@ -27,7 +27,7 @@
//! //!
//! ```no_run //! ```no_run
//! use openssl::pkcs12::Pkcs12; //! use openssl::pkcs12::Pkcs12;
//! use openssl::ssl::{ServerConnectorBuilder, SslStream}; //! use openssl::ssl::{SslMethod, ServerConnectorBuilder, SslStream};
//! use std::fs::File; //! use std::fs::File;
//! use std::io::{Read, Write}; //! use std::io::{Read, Write};
//! use std::net::{TcpListener, TcpStream}; //! use std::net::{TcpListener, TcpStream};
@ -43,7 +43,10 @@
//! let pkcs12 = Pkcs12::from_der(&pkcs12).unwrap(); //! let pkcs12 = Pkcs12::from_der(&pkcs12).unwrap();
//! let identity = pkcs12.parse("password123").unwrap(); //! let identity = pkcs12.parse("password123").unwrap();
//! //!
//! let connector = ServerConnectorBuilder::tls(&identity.pkey, &identity.cert, &identity.chain) //! let connector = ServerConnectorBuilder::new(SslMethod::tls(),
//! &identity.pkey,
//! &identity.cert,
//! &identity.chain)
//! .unwrap() //! .unwrap()
//! .build(); //! .build();
//! let connector = Arc::new(connector); //! let connector = Arc::new(connector);

View File

@ -1082,7 +1082,7 @@ fn verify_invalid_hostname() {
#[test] #[test]
fn connector_valid_hostname() { fn connector_valid_hostname() {
let connector = ClientConnectorBuilder::tls().unwrap().build(); let connector = ClientConnectorBuilder::new(SslMethod::tls()).unwrap().build();
let s = TcpStream::connect("google.com:443").unwrap(); let s = TcpStream::connect("google.com:443").unwrap();
let mut socket = connector.connect("google.com", s).unwrap(); let mut socket = connector.connect("google.com", s).unwrap();
@ -1098,7 +1098,7 @@ fn connector_valid_hostname() {
#[test] #[test]
fn connector_invalid_hostname() { fn connector_invalid_hostname() {
let connector = ClientConnectorBuilder::tls().unwrap().build(); let connector = ClientConnectorBuilder::new(SslMethod::tls()).unwrap().build();
let s = TcpStream::connect("google.com:443").unwrap(); let s = TcpStream::connect("google.com:443").unwrap();
assert!(connector.connect("foobar.com", s).is_err()); assert!(connector.connect("foobar.com", s).is_err());
@ -1112,14 +1112,16 @@ fn connector_client_server() {
let t = thread::spawn(move || { let t = thread::spawn(move || {
let key = PKey::private_key_from_pem(KEY).unwrap(); let key = PKey::private_key_from_pem(KEY).unwrap();
let cert = X509::from_pem(CERT).unwrap(); let cert = X509::from_pem(CERT).unwrap();
let connector = ServerConnectorBuilder::tls(&key, &cert, None::<X509>).unwrap().build(); let connector = ServerConnectorBuilder::new(SslMethod::tls(), &key, &cert, None::<X509>)
.unwrap()
.build();
let stream = listener.accept().unwrap().0; let stream = listener.accept().unwrap().0;
let mut stream = connector.connect(stream).unwrap(); let mut stream = connector.connect(stream).unwrap();
stream.write_all(b"hello").unwrap(); stream.write_all(b"hello").unwrap();
}); });
let mut connector = ClientConnectorBuilder::tls().unwrap(); let mut connector = ClientConnectorBuilder::new(SslMethod::tls()).unwrap();
connector.context_mut().set_CA_file("test/root-ca.pem").unwrap(); connector.context_mut().set_CA_file("test/root-ca.pem").unwrap();
let connector = connector.build(); let connector = connector.build();