From cebfb270f6db02d2763dd97e00a3ba9baacd440a Mon Sep 17 00:00:00 2001 From: Damien Deville Date: Thu, 27 Oct 2022 10:42:15 +0200 Subject: [PATCH] Add --keylog command line option for perf client and server binaries. This allow dumping crypto keys to disk using SSLKEYLOGFILE env var. --- perf/src/bin/perf_client.rs | 7 +++++++ perf/src/bin/perf_server.rs | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/perf/src/bin/perf_client.rs b/perf/src/bin/perf_client.rs index c0ee74d87..84d3ed9d0 100644 --- a/perf/src/bin/perf_client.rs +++ b/perf/src/bin/perf_client.rs @@ -60,6 +60,9 @@ struct Opt { #[cfg(feature = "json-output")] #[clap(long)] json: Option, + /// Perform NSS-compatible TLS key logging to the file specified in `SSLKEYLOGFILE`. + #[clap(long = "keylog")] + keylog: bool, } #[tokio::main(flavor = "current_thread")] @@ -115,6 +118,10 @@ async fn run(opt: Opt) -> Result<()> { .with_no_client_auth(); crypto.alpn_protocols = vec![b"perf".to_vec()]; + if opt.keylog { + crypto.key_log = Arc::new(rustls::KeyLogFile::new()); + } + let cfg = quinn::ClientConfig::new(Arc::new(crypto)); let stream_stats = OpenStreamStats::default(); diff --git a/perf/src/bin/perf_server.rs b/perf/src/bin/perf_server.rs index 37e1964c0..f5b40a57e 100644 --- a/perf/src/bin/perf_server.rs +++ b/perf/src/bin/perf_server.rs @@ -29,6 +29,9 @@ struct Opt { /// Whether to print connection statistics #[clap(long)] conn_stats: bool, + /// Perform NSS-compatible TLS key logging to the file specified in `SSLKEYLOGFILE`. + #[clap(long = "keylog")] + keylog: bool, } #[tokio::main(flavor = "current_thread")] @@ -74,6 +77,10 @@ async fn run(opt: Opt) -> Result<()> { .unwrap(); crypto.alpn_protocols = vec![b"perf".to_vec()]; + if opt.keylog { + crypto.key_log = Arc::new(rustls::KeyLogFile::new()); + } + let server_config = quinn::ServerConfig::with_crypto(Arc::new(crypto)); let socket = bind_socket(opt.listen, opt.send_buffer_size, opt.recv_buffer_size)?;