@@ -62,6 +62,37 @@ impl Metrics {
6262 }
6363}
6464
65+ #[ cfg( not( target_os = "windows" ) ) ]
66+ mod mtls {
67+ use super :: * ;
68+ use s2n_quic:: provider:: tls;
69+
70+ type Error = Box < dyn std:: error:: Error + Send + Sync > ;
71+
72+ pub fn build_client_mtls_provider ( ca_cert : & str ) -> Result < tls:: default:: Client , Error > {
73+ let tls = tls:: default:: Client :: builder ( )
74+ . with_certificate ( ca_cert) ?
75+ . with_client_identity (
76+ certificates:: MTLS_CLIENT_CERT ,
77+ certificates:: MTLS_CLIENT_KEY ,
78+ ) ?
79+ . build ( ) ?;
80+ Ok ( tls)
81+ }
82+
83+ pub fn build_server_mtls_provider ( ca_cert : & str ) -> Result < tls:: default:: Server , Error > {
84+ let tls = tls:: default:: Server :: builder ( )
85+ . with_certificate (
86+ certificates:: MTLS_SERVER_CERT ,
87+ certificates:: MTLS_SERVER_KEY ,
88+ ) ?
89+ . with_client_authentication ( ) ?
90+ . with_trusted_certificate ( ca_cert) ?
91+ . build ( ) ?;
92+ Ok ( tls)
93+ }
94+ }
95+
6596fn main ( ) -> Result < ( ) , Box < dyn std:: error:: Error + Send + Sync > > {
6697 tracing_subscriber:: registry ( )
6798 . with ( tracing_subscriber:: EnvFilter :: from_env ( "S2N_LOG" ) )
@@ -72,12 +103,15 @@ fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
72103 let Args { concurrency } = Args :: parse ( ) ;
73104 println ! ( "Starting benchmark with {concurrency} clients" ) ;
74105
75- // Use (&str, &str) which implements s2n_quic::provider::tls::Provider
76- let tls = ( certificates:: CERT_PEM , certificates:: KEY_PEM ) ;
77106 let sub = s2n_quic:: provider:: event:: disabled:: Subscriber ;
78107
79108 let server = server:: Provider :: builder ( )
80- . start_blocking ( "127.0.0.1:0" . parse ( ) . unwrap ( ) , tls, sub, new_map ( 500 ) )
109+ . start_blocking (
110+ "127.0.0.1:0" . parse ( ) . unwrap ( ) ,
111+ mtls:: build_server_mtls_provider ( certificates:: MTLS_CA_CERT ) ?,
112+ sub,
113+ new_map ( 500 ) ,
114+ )
81115 . unwrap ( ) ;
82116
83117 let registry = Registry :: new ( ) ;
@@ -111,7 +145,6 @@ fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
111145 // spin up gets a set of 5 redirect sockets which we read/write from to get to the actual
112146 // server.
113147 for _ in 0 ..num_groups {
114- let tls = ( certificates:: CERT_PEM , certificates:: KEY_PEM ) ;
115148 let sub = s2n_quic:: provider:: event:: disabled:: Subscriber ;
116149
117150 let client = client:: Provider :: builder ( )
@@ -121,7 +154,7 @@ fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
121154 . start (
122155 "127.0.0.1:0" . parse ( ) . unwrap ( ) ,
123156 new_map ( 10 ) ,
124- tls ,
157+ mtls :: build_client_mtls_provider ( certificates :: MTLS_CA_CERT ) . unwrap ( ) ,
125158 sub,
126159 server_name. clone ( ) ,
127160 ) ?;
0 commit comments