Loading src/ssl/mod.rs +6 −23 Original line number Diff line number Diff line Loading @@ -127,8 +127,8 @@ impl Drop for SslContext { } impl SslContext { /// Attempts to create a new SSL context. pub fn try_new(method: SslMethod) -> Result<SslContext, SslError> { /// Creates a new SSL context. pub fn new(method: SslMethod) -> Result<SslContext, SslError> { init(); let ctx = unsafe { ffi::SSL_CTX_new(method.to_raw()) }; Loading @@ -139,14 +139,6 @@ impl SslContext { Ok(SslContext { ctx: ctx }) } /// A convenience wrapper around `try_new`. pub fn new(method: SslMethod) -> SslContext { match SslContext::try_new(method) { Ok(ctx) => ctx, Err(err) => fail!("Error creating SSL context: {}", err) } } /// Configures the certificate verification method for new connections. pub fn set_verify(&mut self, mode: SslVerifyMode, verify: Option<VerifyCallback>) { Loading Loading @@ -302,7 +294,7 @@ impl Drop for Ssl { } impl Ssl { pub fn try_new(ctx: &SslContext) -> Result<Ssl, SslError> { pub fn new(ctx: &SslContext) -> Result<Ssl, SslError> { let ssl = unsafe { ffi::SSL_new(ctx.ctx) }; if ssl == ptr::mut_null() { return Err(SslError::get()); Loading Loading @@ -480,10 +472,9 @@ impl<S: Stream> SslStream<S> { } } /// Attempts to create a new SSL stream pub fn try_new(ctx: &SslContext, stream: S) -> Result<SslStream<S>, SslError> { let ssl = match Ssl::try_new(ctx) { /// Creates a new SSL stream pub fn new(ctx: &SslContext, stream: S) -> Result<SslStream<S>, SslError> { let ssl = match Ssl::new(ctx) { Ok(ssl) => ssl, Err(err) => return Err(err) }; Loading @@ -491,14 +482,6 @@ impl<S: Stream> SslStream<S> { SslStream::new_from(ssl, stream) } /// A convenience wrapper around `try_new`. pub fn new(ctx: &SslContext, stream: S) -> SslStream<S> { match SslStream::try_new(ctx, stream) { Ok(stream) => stream, Err(err) => fail!("Error creating SSL stream: {}", err) } } fn in_retry_wrapper(&mut self, blk: |&Ssl| -> c_int) -> Result<c_int, SslError> { loop { Loading src/ssl/tests.rs +22 −22 Original line number Diff line number Diff line Loading @@ -6,21 +6,21 @@ use ssl::{Sslv23, SslContext, SslStream, SslVerifyPeer, X509StoreContext}; #[test] fn test_new_ctx() { SslContext::new(Sslv23); SslContext::new(Sslv23).unwrap(); } #[test] fn test_new_sslstream() { let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); SslStream::new(&SslContext::new(Sslv23), stream); SslStream::new(&SslContext::new(Sslv23).unwrap(), stream).unwrap(); } #[test] fn test_verify_untrusted() { let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, None); match SslStream::try_new(&ctx, stream) { match SslStream::new(&ctx, stream) { Ok(_) => fail!("expected failure"), Err(err) => println!("error {}", err) } Loading @@ -29,13 +29,13 @@ fn test_verify_untrusted() { #[test] fn test_verify_trusted() { let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, None); match ctx.set_CA_file("test/cert.pem") { None => {} Some(err) => fail!("Unexpected error {}", err) } match SslStream::try_new(&ctx, stream) { match SslStream::new(&ctx, stream) { Ok(_) => (), Err(err) => fail!("Expected success, got {}", err) } Loading @@ -47,9 +47,9 @@ fn test_verify_untrusted_callback_override_ok() { true } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); match SslStream::try_new(&ctx, stream) { match SslStream::new(&ctx, stream) { Ok(_) => (), Err(err) => fail!("Expected success, got {}", err) } Loading @@ -61,9 +61,9 @@ fn test_verify_untrusted_callback_override_bad() { false } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); assert!(SslStream::try_new(&ctx, stream).is_err()); assert!(SslStream::new(&ctx, stream).is_err()); } #[test] Loading @@ -72,13 +72,13 @@ fn test_verify_trusted_callback_override_ok() { true } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); match ctx.set_CA_file("test/cert.pem") { None => {} Some(err) => fail!("Unexpected error {}", err) } match SslStream::try_new(&ctx, stream) { match SslStream::new(&ctx, stream) { Ok(_) => (), Err(err) => fail!("Expected success, got {}", err) } Loading @@ -90,13 +90,13 @@ fn test_verify_trusted_callback_override_bad() { false } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); match ctx.set_CA_file("test/cert.pem") { None => {} Some(err) => fail!("Unexpected error {}", err) } assert!(SslStream::try_new(&ctx, stream).is_err()); assert!(SslStream::new(&ctx, stream).is_err()); } #[test] Loading @@ -106,9 +106,9 @@ fn test_verify_callback_load_certs() { true } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); assert!(SslStream::try_new(&ctx, stream).is_ok()); assert!(SslStream::new(&ctx, stream).is_ok()); } #[test] Loading @@ -118,13 +118,13 @@ fn test_verify_trusted_get_error_ok() { true } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); match ctx.set_CA_file("test/cert.pem") { None => {} Some(err) => fail!("Unexpected error {}", err) } assert!(SslStream::try_new(&ctx, stream).is_ok()); assert!(SslStream::new(&ctx, stream).is_ok()); } #[test] Loading @@ -134,15 +134,15 @@ fn test_verify_trusted_get_error_err() { false } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); assert!(SslStream::try_new(&ctx, stream).is_err()); assert!(SslStream::new(&ctx, stream).is_err()); } #[test] fn test_write() { let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut stream = SslStream::new(&SslContext::new(Sslv23), stream); let mut stream = SslStream::new(&SslContext::new(Sslv23).unwrap(), stream).unwrap(); stream.write("hello".as_bytes()).unwrap(); stream.flush().unwrap(); stream.write(" there".as_bytes()).unwrap(); Loading @@ -152,7 +152,7 @@ fn test_write() { #[test] fn test_read() { let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut stream = SslStream::new(&SslContext::new(Sslv23), stream); let mut stream = SslStream::new(&SslContext::new(Sslv23).unwrap(), stream).unwrap(); stream.write("GET /\r\n\r\n".as_bytes()).unwrap(); stream.flush().unwrap(); let buf = stream.read_to_end().ok().expect("read error"); Loading Loading
src/ssl/mod.rs +6 −23 Original line number Diff line number Diff line Loading @@ -127,8 +127,8 @@ impl Drop for SslContext { } impl SslContext { /// Attempts to create a new SSL context. pub fn try_new(method: SslMethod) -> Result<SslContext, SslError> { /// Creates a new SSL context. pub fn new(method: SslMethod) -> Result<SslContext, SslError> { init(); let ctx = unsafe { ffi::SSL_CTX_new(method.to_raw()) }; Loading @@ -139,14 +139,6 @@ impl SslContext { Ok(SslContext { ctx: ctx }) } /// A convenience wrapper around `try_new`. pub fn new(method: SslMethod) -> SslContext { match SslContext::try_new(method) { Ok(ctx) => ctx, Err(err) => fail!("Error creating SSL context: {}", err) } } /// Configures the certificate verification method for new connections. pub fn set_verify(&mut self, mode: SslVerifyMode, verify: Option<VerifyCallback>) { Loading Loading @@ -302,7 +294,7 @@ impl Drop for Ssl { } impl Ssl { pub fn try_new(ctx: &SslContext) -> Result<Ssl, SslError> { pub fn new(ctx: &SslContext) -> Result<Ssl, SslError> { let ssl = unsafe { ffi::SSL_new(ctx.ctx) }; if ssl == ptr::mut_null() { return Err(SslError::get()); Loading Loading @@ -480,10 +472,9 @@ impl<S: Stream> SslStream<S> { } } /// Attempts to create a new SSL stream pub fn try_new(ctx: &SslContext, stream: S) -> Result<SslStream<S>, SslError> { let ssl = match Ssl::try_new(ctx) { /// Creates a new SSL stream pub fn new(ctx: &SslContext, stream: S) -> Result<SslStream<S>, SslError> { let ssl = match Ssl::new(ctx) { Ok(ssl) => ssl, Err(err) => return Err(err) }; Loading @@ -491,14 +482,6 @@ impl<S: Stream> SslStream<S> { SslStream::new_from(ssl, stream) } /// A convenience wrapper around `try_new`. pub fn new(ctx: &SslContext, stream: S) -> SslStream<S> { match SslStream::try_new(ctx, stream) { Ok(stream) => stream, Err(err) => fail!("Error creating SSL stream: {}", err) } } fn in_retry_wrapper(&mut self, blk: |&Ssl| -> c_int) -> Result<c_int, SslError> { loop { Loading
src/ssl/tests.rs +22 −22 Original line number Diff line number Diff line Loading @@ -6,21 +6,21 @@ use ssl::{Sslv23, SslContext, SslStream, SslVerifyPeer, X509StoreContext}; #[test] fn test_new_ctx() { SslContext::new(Sslv23); SslContext::new(Sslv23).unwrap(); } #[test] fn test_new_sslstream() { let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); SslStream::new(&SslContext::new(Sslv23), stream); SslStream::new(&SslContext::new(Sslv23).unwrap(), stream).unwrap(); } #[test] fn test_verify_untrusted() { let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, None); match SslStream::try_new(&ctx, stream) { match SslStream::new(&ctx, stream) { Ok(_) => fail!("expected failure"), Err(err) => println!("error {}", err) } Loading @@ -29,13 +29,13 @@ fn test_verify_untrusted() { #[test] fn test_verify_trusted() { let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, None); match ctx.set_CA_file("test/cert.pem") { None => {} Some(err) => fail!("Unexpected error {}", err) } match SslStream::try_new(&ctx, stream) { match SslStream::new(&ctx, stream) { Ok(_) => (), Err(err) => fail!("Expected success, got {}", err) } Loading @@ -47,9 +47,9 @@ fn test_verify_untrusted_callback_override_ok() { true } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); match SslStream::try_new(&ctx, stream) { match SslStream::new(&ctx, stream) { Ok(_) => (), Err(err) => fail!("Expected success, got {}", err) } Loading @@ -61,9 +61,9 @@ fn test_verify_untrusted_callback_override_bad() { false } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); assert!(SslStream::try_new(&ctx, stream).is_err()); assert!(SslStream::new(&ctx, stream).is_err()); } #[test] Loading @@ -72,13 +72,13 @@ fn test_verify_trusted_callback_override_ok() { true } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); match ctx.set_CA_file("test/cert.pem") { None => {} Some(err) => fail!("Unexpected error {}", err) } match SslStream::try_new(&ctx, stream) { match SslStream::new(&ctx, stream) { Ok(_) => (), Err(err) => fail!("Expected success, got {}", err) } Loading @@ -90,13 +90,13 @@ fn test_verify_trusted_callback_override_bad() { false } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); match ctx.set_CA_file("test/cert.pem") { None => {} Some(err) => fail!("Unexpected error {}", err) } assert!(SslStream::try_new(&ctx, stream).is_err()); assert!(SslStream::new(&ctx, stream).is_err()); } #[test] Loading @@ -106,9 +106,9 @@ fn test_verify_callback_load_certs() { true } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); assert!(SslStream::try_new(&ctx, stream).is_ok()); assert!(SslStream::new(&ctx, stream).is_ok()); } #[test] Loading @@ -118,13 +118,13 @@ fn test_verify_trusted_get_error_ok() { true } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); match ctx.set_CA_file("test/cert.pem") { None => {} Some(err) => fail!("Unexpected error {}", err) } assert!(SslStream::try_new(&ctx, stream).is_ok()); assert!(SslStream::new(&ctx, stream).is_ok()); } #[test] Loading @@ -134,15 +134,15 @@ fn test_verify_trusted_get_error_err() { false } let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut ctx = SslContext::new(Sslv23); let mut ctx = SslContext::new(Sslv23).unwrap(); ctx.set_verify(SslVerifyPeer, Some(callback)); assert!(SslStream::try_new(&ctx, stream).is_err()); assert!(SslStream::new(&ctx, stream).is_err()); } #[test] fn test_write() { let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut stream = SslStream::new(&SslContext::new(Sslv23), stream); let mut stream = SslStream::new(&SslContext::new(Sslv23).unwrap(), stream).unwrap(); stream.write("hello".as_bytes()).unwrap(); stream.flush().unwrap(); stream.write(" there".as_bytes()).unwrap(); Loading @@ -152,7 +152,7 @@ fn test_write() { #[test] fn test_read() { let stream = TcpStream::connect("127.0.0.1", 15418).unwrap(); let mut stream = SslStream::new(&SslContext::new(Sslv23), stream); let mut stream = SslStream::new(&SslContext::new(Sslv23).unwrap(), stream).unwrap(); stream.write("GET /\r\n\r\n".as_bytes()).unwrap(); stream.flush().unwrap(); let buf = stream.read_to_end().ok().expect("read error"); Loading