From 2e168ab820384c543faaa4eabf4004dfc1670851 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sat, 9 Nov 2013 17:27:17 -0800 Subject: Update for latest master and fix segfault --- .gitignore | 2 +- ffi.rs | 4 +- lib.rs | 5 +-- test.rs | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests.rs | 121 ----------------------------------------------------------- 5 files changed, 128 insertions(+), 128 deletions(-) create mode 100644 test.rs delete mode 100644 tests.rs diff --git a/.gitignore b/.gitignore index 502167fa..6706cdd9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/lib +/.rust/ diff --git a/ffi.rs b/ffi.rs index deb552e7..7711032c 100644 --- a/ffi.rs +++ b/ffi.rs @@ -11,10 +11,10 @@ pub type BIO_METHOD = c_void; pub type X509_STORE_CTX = c_void; pub type CRYPTO_EX_DATA = c_void; -pub type CRYPTO_EX_new = Option c_int>; + -> c_int; pub type CRYPTO_EX_dup = extern "C" fn(to: *CRYPTO_EX_DATA, from: *CRYPTO_EX_DATA, from_d: *c_void, idx: c_int, argl: c_long, argp: *c_void) diff --git a/lib.rs b/lib.rs index 2742a48f..4ca8fd10 100644 --- a/lib.rs +++ b/lib.rs @@ -9,13 +9,10 @@ use std::unstable::atomics::{AtomicBool, INIT_ATOMIC_BOOL, AtomicInt, use std::rt::io::{Stream, Reader, Writer, Decorator}; use std::vec; -use error::{SslError, SslSessionClosed, StreamEof}; +use self::error::{SslError, SslSessionClosed, StreamEof}; pub mod error; -#[cfg(test)] -mod tests; - mod ffi; static mut STARTED_INIT: AtomicBool = INIT_ATOMIC_BOOL; diff --git a/test.rs b/test.rs new file mode 100644 index 00000000..dbcb19db --- /dev/null +++ b/test.rs @@ -0,0 +1,124 @@ +#[feature(struct_variant)]; + +use std::rt::io::Writer; +use std::rt::io::net::tcp::TcpStream; +use std::str; + +use lib::{Sslv23, SslContext, SslStream, SslVerifyPeer}; + +mod lib; + +#[test] +fn test_new_ctx() { + SslContext::new(Sslv23); +} + +#[test] +fn test_new_sslstream() { + let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); + SslStream::new(&SslContext::new(Sslv23), stream); +} + +#[test] +fn test_verify_untrusted() { + let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); + let mut ctx = SslContext::new(Sslv23); + ctx.set_verify(SslVerifyPeer, None); + match SslStream::try_new(&ctx, stream) { + Ok(_) => fail!("expected failure"), + Err(err) => println!("error {:?}", err) + } +} + +#[test] +fn test_verify_trusted() { + let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); + let mut ctx = SslContext::new(Sslv23); + 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) { + Ok(_) => (), + Err(err) => fail!("Expected success, got {:?}", err) + } +} + +#[test] +fn test_verify_untrusted_callback_override_ok() { + fn callback(_preverify_ok: bool) -> bool { + true + } + let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); + let mut ctx = SslContext::new(Sslv23); + ctx.set_verify(SslVerifyPeer, Some(callback)); + match SslStream::try_new(&ctx, stream) { + Ok(_) => (), + Err(err) => fail!("Expected success, got {:?}", err) + } +} + +#[test] +fn test_verify_untrusted_callback_override_bad() { + fn callback(_preverify_ok: bool) -> bool { + false + } + let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); + let mut ctx = SslContext::new(Sslv23); + ctx.set_verify(SslVerifyPeer, Some(callback)); + assert!(SslStream::try_new(&ctx, stream).is_err()); +} + +#[test] +fn test_verify_trusted_callback_override_ok() { + fn callback(_preverify_ok: bool) -> bool { + true + } + let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); + let mut ctx = SslContext::new(Sslv23); + 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) { + Ok(_) => (), + Err(err) => fail!("Expected success, got {:?}", err) + } +} + +#[test] +fn test_verify_trusted_callback_override_bad() { + fn callback(_preverify_ok: bool) -> bool { + false + } + let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); + let mut ctx = SslContext::new(Sslv23); + 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()); +} + +#[test] +fn test_write() { + let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); + let mut stream = SslStream::new(&SslContext::new(Sslv23), stream); + stream.write("hello".as_bytes()); + stream.flush(); + stream.write(" there".as_bytes()); + stream.flush(); +} + +#[test] +fn test_read() { + let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); + let mut stream = SslStream::new(&SslContext::new(Sslv23), stream); + stream.write("GET /\r\n\r\n".as_bytes()); + stream.flush(); + let buf = stream.read_to_end(); + print!("{}", str::from_utf8(buf)); +} diff --git a/tests.rs b/tests.rs deleted file mode 100644 index 9ea5c00c..00000000 --- a/tests.rs +++ /dev/null @@ -1,121 +0,0 @@ -use std::rt::io::Writer; -use std::rt::io::extensions::ReaderUtil; -use std::rt::io::net::tcp::TcpStream; -use std::str; - -use super::{Sslv23, SslContext, SslStream, SslVerifyPeer}; - -#[test] -fn test_new_ctx() { - SslContext::new(Sslv23); -} - -#[test] -fn test_new_sslstream() { - let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); - SslStream::new(&SslContext::new(Sslv23), stream); -} - -#[test] -fn test_verify_untrusted() { - let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); - let mut ctx = SslContext::new(Sslv23); - ctx.set_verify(SslVerifyPeer, None); - match SslStream::try_new(&ctx, stream) { - Ok(_) => fail!("expected failure"), - Err(err) => println!("error {:?}", err) - } -} - -#[test] -fn test_verify_trusted() { - let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); - let mut ctx = SslContext::new(Sslv23); - 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) { - Ok(_) => (), - Err(err) => fail!("Expected success, got {:?}", err) - } -} - -#[test] -fn test_verify_untrusted_callback_override_ok() { - fn callback(_preverify_ok: bool) -> bool { - true - } - let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); - let mut ctx = SslContext::new(Sslv23); - ctx.set_verify(SslVerifyPeer, Some(callback)); - match SslStream::try_new(&ctx, stream) { - Ok(_) => (), - Err(err) => fail!("Expected success, got {:?}", err) - } -} - -#[test] -fn test_verify_untrusted_callback_override_bad() { - fn callback(_preverify_ok: bool) -> bool { - false - } - let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); - let mut ctx = SslContext::new(Sslv23); - ctx.set_verify(SslVerifyPeer, Some(callback)); - assert!(SslStream::try_new(&ctx, stream).is_err()); -} - -#[test] -fn test_verify_trusted_callback_override_ok() { - fn callback(_preverify_ok: bool) -> bool { - true - } - let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); - let mut ctx = SslContext::new(Sslv23); - 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) { - Ok(_) => (), - Err(err) => fail!("Expected success, got {:?}", err) - } -} - -#[test] -fn test_verify_trusted_callback_override_bad() { - fn callback(_preverify_ok: bool) -> bool { - false - } - let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); - let mut ctx = SslContext::new(Sslv23); - 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()); -} - -#[test] -fn test_write() { - let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); - let mut stream = SslStream::new(&SslContext::new(Sslv23), stream); - stream.write("hello".as_bytes()); - stream.flush(); - stream.write(" there".as_bytes()); - stream.flush(); -} - -#[test] -fn test_read() { - let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap(); - let mut stream = SslStream::new(&SslContext::new(Sslv23), stream); - stream.write("GET /\r\n\r\n".as_bytes()); - stream.flush(); - let buf = stream.read_to_end(); - print!("{}", str::from_utf8(buf)); -} -- cgit v1.2.3