1
- use std:: io:: { BufReader , Cursor , ErrorKind } ;
1
+ use std:: io:: { Cursor , ErrorKind } ;
2
2
use std:: net:: SocketAddr ;
3
3
use std:: sync:: mpsc:: channel;
4
4
use std:: sync:: Arc ;
@@ -8,31 +8,17 @@ use std::{io, thread};
8
8
use futures_util:: future:: TryFutureExt ;
9
9
use lazy_static:: lazy_static;
10
10
use rustls:: ClientConfig ;
11
- use rustls_pemfile:: { certs, rsa_private_keys} ;
12
11
use tokio:: io:: { copy, split, AsyncReadExt , AsyncWriteExt } ;
13
12
use tokio:: net:: { TcpListener , TcpStream } ;
14
13
use tokio:: sync:: oneshot;
15
14
use tokio:: { runtime, time} ;
16
15
use tokio_rustls:: { LazyConfigAcceptor , TlsAcceptor , TlsConnector } ;
17
16
18
- const CERT : & str = include_str ! ( "certs/end.cert" ) ;
19
17
const CHAIN : & [ u8 ] = include_bytes ! ( "certs/end.chain" ) ;
20
- const RSA : & str = include_str ! ( "certs/end.rsa" ) ;
21
18
22
19
lazy_static ! {
23
20
static ref TEST_SERVER : ( SocketAddr , & ' static str , & ' static [ u8 ] ) = {
24
- let cert = certs( & mut BufReader :: new( Cursor :: new( CERT ) ) )
25
- . map( |result| result. unwrap( ) )
26
- . collect( ) ;
27
- let key = rsa_private_keys( & mut BufReader :: new( Cursor :: new( RSA ) ) )
28
- . next( )
29
- . unwrap( )
30
- . unwrap( ) ;
31
-
32
- let config = rustls:: ServerConfig :: builder( )
33
- . with_no_client_auth( )
34
- . with_single_cert( cert, key. into( ) )
35
- . unwrap( ) ;
21
+ let ( config, _) = utils:: make_configs( ) ;
36
22
let acceptor = TlsAcceptor :: from( Arc :: new( config) ) ;
37
23
38
24
let ( send, recv) = channel( ) ;
@@ -102,22 +88,15 @@ async fn start_client(addr: SocketAddr, domain: &str, config: Arc<ClientConfig>)
102
88
103
89
#[ tokio:: test]
104
90
async fn pass ( ) -> io:: Result < ( ) > {
105
- let ( addr, domain, chain ) = start_server ( ) ;
91
+ let ( addr, domain, _ ) = start_server ( ) ;
106
92
107
93
// TODO: not sure how to resolve this right now but since
108
94
// TcpStream::bind now returns a future it creates a race
109
95
// condition until its ready sometimes.
110
96
use std:: time:: * ;
111
97
tokio:: time:: sleep ( Duration :: from_secs ( 1 ) ) . await ;
112
98
113
- let mut root_store = rustls:: RootCertStore :: empty ( ) ;
114
- for cert in certs ( & mut std:: io:: Cursor :: new ( * chain) ) {
115
- root_store. add ( cert. unwrap ( ) ) . unwrap ( ) ;
116
- }
117
-
118
- let config = rustls:: ClientConfig :: builder ( )
119
- . with_root_certificates ( root_store)
120
- . with_no_client_auth ( ) ;
99
+ let ( _, config) = utils:: make_configs ( ) ;
121
100
let config = Arc :: new ( config) ;
122
101
123
102
start_client ( * addr, domain, config) . await ?;
@@ -127,16 +106,9 @@ async fn pass() -> io::Result<()> {
127
106
128
107
#[ tokio:: test]
129
108
async fn fail ( ) -> io:: Result < ( ) > {
130
- let ( addr, domain, chain) = start_server ( ) ;
131
-
132
- let mut root_store = rustls:: RootCertStore :: empty ( ) ;
133
- for cert in certs ( & mut std:: io:: Cursor :: new ( * chain) ) {
134
- root_store. add ( cert. unwrap ( ) ) . unwrap ( ) ;
135
- }
109
+ let ( addr, domain, _) = start_server ( ) ;
136
110
137
- let config = rustls:: ClientConfig :: builder ( )
138
- . with_root_certificates ( root_store)
139
- . with_no_client_auth ( ) ;
111
+ let ( _, config) = utils:: make_configs ( ) ;
140
112
let config = Arc :: new ( config) ;
141
113
142
114
assert_ne ! ( domain, & "google.com" ) ;
0 commit comments