Skip to content

Commit 9976b62

Browse files
committed
added multiple keys test
1 parent da4cf1a commit 9976b62

File tree

2 files changed

+73
-2
lines changed

2 files changed

+73
-2
lines changed

src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,6 @@ extern crate lazy_static;
104104
#[cfg(test)]
105105
extern crate hex;
106106

107-
mod pem;
108-
109107
use std::any::Any;
110108
use std::error;
111109
use std::fmt;

src/test.rs

+73
Original file line numberDiff line numberDiff line change
@@ -423,4 +423,77 @@ mod tests {
423423

424424
p!(j.join());
425425
}
426+
#[test]
427+
fn two_servers() {
428+
let key = include_bytes!("../test/key.pem");
429+
let cert = include_bytes!("../test/cert.pem");
430+
let identity = p!(Identity::from_pkcs8(cert, key));
431+
let builder = TlsAcceptor::builder(identity);
432+
let builder = p!(builder.build());
433+
434+
let listener = p!(TcpListener::bind("0.0.0.0:0"));
435+
let port = p!(listener.local_addr()).port();
436+
437+
let j = thread::spawn(move || {
438+
let socket = p!(listener.accept()).0;
439+
let mut socket = p!(builder.accept(socket));
440+
441+
let mut buf = [0; 5];
442+
p!(socket.read_exact(&mut buf));
443+
assert_eq!(&buf, b"hello");
444+
445+
p!(socket.write_all(b"world"));
446+
});
447+
448+
let key = include_bytes!("../test/key2.pem");
449+
let cert = include_bytes!("../test/cert2.pem");
450+
let identity = p!(Identity::from_pkcs8(cert, key));
451+
let builder = TlsAcceptor::builder(identity);
452+
let builder = p!(builder.build());
453+
454+
let listener = p!(TcpListener::bind("0.0.0.0:0"));
455+
let port2 = p!(listener.local_addr()).port();
456+
457+
let j2 = thread::spawn(move || {
458+
let socket = p!(listener.accept()).0;
459+
let mut socket = p!(builder.accept(socket));
460+
461+
let mut buf = [0; 5];
462+
p!(socket.read_exact(&mut buf));
463+
assert_eq!(&buf, b"hello");
464+
465+
p!(socket.write_all(b"world"));
466+
});
467+
468+
let root_ca = include_bytes!("../test/root-ca.pem");
469+
let root_ca = p!(Certificate::from_pem(root_ca));
470+
471+
let socket = p!(TcpStream::connect(("localhost", port)));
472+
let mut builder = TlsConnector::builder();
473+
builder.add_root_certificate(root_ca);
474+
let builder = p!(builder.build());
475+
let mut socket = p!(builder.connect("foobar.com", socket));
476+
477+
p!(socket.write_all(b"hello"));
478+
let mut buf = vec![];
479+
p!(socket.read_to_end(&mut buf));
480+
assert_eq!(buf, b"world");
481+
482+
let root_ca = include_bytes!("../test/cert2.pem");
483+
let root_ca = p!(Certificate::from_pem(root_ca));
484+
485+
let socket = p!(TcpStream::connect(("localhost", port2)));
486+
let mut builder = TlsConnector::builder();
487+
builder.add_root_certificate(root_ca);
488+
let builder = p!(builder.build());
489+
let mut socket = p!(builder.connect("foobar.com", socket));
490+
491+
p!(socket.write_all(b"hello"));
492+
let mut buf = vec![];
493+
p!(socket.read_to_end(&mut buf));
494+
assert_eq!(buf, b"world");
495+
496+
p!(j.join());
497+
p!(j2.join());
498+
}
426499
}

0 commit comments

Comments
 (0)