1- use boring:: ssl:: { SslAcceptor , SslConnector , SslFiletype , SslMethod } ;
1+ use boring:: error:: ErrorStack ;
2+ use boring:: ssl:: { SslAcceptor , SslConnector , SslConnectorBuilder , SslFiletype , SslMethod } ;
23use futures:: future;
34use std:: future:: Future ;
45use std:: net:: { SocketAddr , ToSocketAddrs } ;
@@ -46,12 +47,15 @@ fn create_server() -> (
4647
4748 let server = async move {
4849 let mut acceptor = SslAcceptor :: mozilla_intermediate ( SslMethod :: tls ( ) ) . unwrap ( ) ;
50+
4951 acceptor
5052 . set_private_key_file ( "tests/key.pem" , SslFiletype :: PEM )
5153 . unwrap ( ) ;
54+
5255 acceptor
5356 . set_certificate_chain_file ( "tests/cert.pem" )
5457 . unwrap ( ) ;
58+
5559 let acceptor = acceptor. build ( ) ;
5660
5761 let stream = listener. accept ( ) . await . unwrap ( ) . 0 ;
@@ -62,6 +66,21 @@ fn create_server() -> (
6266 ( server, addr)
6367}
6468
69+ async fn connect (
70+ addr : SocketAddr ,
71+ setup : impl FnOnce ( & mut SslConnectorBuilder ) -> Result < ( ) , ErrorStack > ,
72+ ) -> Result < SslStream < TcpStream > , HandshakeError < TcpStream > > {
73+ let mut connector = SslConnector :: builder ( SslMethod :: tls ( ) ) . unwrap ( ) ;
74+
75+ setup ( & mut connector) . unwrap ( ) ;
76+
77+ let config = connector. build ( ) . configure ( ) . unwrap ( ) ;
78+
79+ let stream = TcpStream :: connect ( & addr) . await . unwrap ( ) ;
80+
81+ tokio_boring:: connect ( config, "localhost" , stream) . await
82+ }
83+
6584#[ tokio:: test]
6685async fn server ( ) {
6786 let ( stream, addr) = create_server ( ) ;
@@ -80,12 +99,7 @@ async fn server() {
8099 } ;
81100
82101 let client = async {
83- let mut connector = SslConnector :: builder ( SslMethod :: tls ( ) ) . unwrap ( ) ;
84- connector. set_ca_file ( "tests/cert.pem" ) . unwrap ( ) ;
85- let config = connector. build ( ) . configure ( ) . unwrap ( ) ;
86-
87- let stream = TcpStream :: connect ( & addr) . await . unwrap ( ) ;
88- let mut stream = tokio_boring:: connect ( config, "localhost" , stream)
102+ let mut stream = connect ( addr, |builder| builder. set_ca_file ( "tests/cert.pem" ) )
89103 . await
90104 . unwrap ( ) ;
91105
@@ -110,13 +124,7 @@ async fn handshake_error() {
110124 } ;
111125
112126 let client = async {
113- let connector = SslConnector :: builder ( SslMethod :: tls ( ) ) . unwrap ( ) ;
114- let config = connector. build ( ) . configure ( ) . unwrap ( ) ;
115- let stream = TcpStream :: connect ( & addr) . await . unwrap ( ) ;
116-
117- let err = tokio_boring:: connect ( config, "localhost" , stream)
118- . await
119- . unwrap_err ( ) ;
127+ let err = connect ( addr, |_| Ok ( ( ) ) ) . await . unwrap_err ( ) ;
120128
121129 assert ! ( err. into_source_stream( ) . is_some( ) ) ;
122130 } ;
0 commit comments