@@ -50,6 +50,51 @@ mod tests {
50
50
builder. connect ( "goggle.com" , s) . unwrap ( ) ;
51
51
}
52
52
53
+ #[ test]
54
+ fn connect_no_root_certs ( ) {
55
+ let builder = p ! ( TlsConnector :: builder( ) . disable_built_in_roots( true ) . build( ) ) ;
56
+ let s = p ! ( TcpStream :: connect( "google.com:443" ) ) ;
57
+ assert ! ( builder. connect( "google.com" , s) . is_err( ) ) ;
58
+ }
59
+
60
+ #[ test]
61
+ fn server_no_root_certs ( ) {
62
+ let buf = include_bytes ! ( "../test/identity.p12" ) ;
63
+ let identity = p ! ( Identity :: from_pkcs12( buf, "mypass" ) ) ;
64
+ let builder = p ! ( TlsAcceptor :: new( identity) ) ;
65
+
66
+ let listener = p ! ( TcpListener :: bind( "0.0.0.0:0" ) ) ;
67
+ let port = p ! ( listener. local_addr( ) ) . port ( ) ;
68
+
69
+ let j = thread:: spawn ( move || {
70
+ let socket = p ! ( listener. accept( ) ) . 0 ;
71
+ let mut socket = p ! ( builder. accept( socket) ) ;
72
+
73
+ let mut buf = [ 0 ; 5 ] ;
74
+ p ! ( socket. read_exact( & mut buf) ) ;
75
+ assert_eq ! ( & buf, b"hello" ) ;
76
+
77
+ p ! ( socket. write_all( b"world" ) ) ;
78
+ } ) ;
79
+
80
+ let root_ca = include_bytes ! ( "../test/root-ca.der" ) ;
81
+ let root_ca = Certificate :: from_der ( root_ca) . unwrap ( ) ;
82
+
83
+ let socket = p ! ( TcpStream :: connect( ( "localhost" , port) ) ) ;
84
+ let builder = p ! ( TlsConnector :: builder( )
85
+ . disable_built_in_roots( true )
86
+ . add_root_certificate( root_ca)
87
+ . build( ) ) ;
88
+ let mut socket = p ! ( builder. connect( "foobar.com" , socket) ) ;
89
+
90
+ p ! ( socket. write_all( b"hello" ) ) ;
91
+ let mut buf = vec ! [ ] ;
92
+ p ! ( socket. read_to_end( & mut buf) ) ;
93
+ assert_eq ! ( buf, b"world" ) ;
94
+
95
+ p ! ( j. join( ) ) ;
96
+ }
97
+
53
98
#[ test]
54
99
fn server ( ) {
55
100
let buf = include_bytes ! ( "../test/identity.p12" ) ;
0 commit comments