MCPcopy Create free account
hub / github.com/cosdata/cosdata / load_rustls_config

Function load_rustls_config

src/web_server.rs:83–126  ·  view source on GitHub ↗
(ssl_config: &Ssl)

Source from the content-addressed store, hash-verified

81}
82
83fn load_rustls_config(ssl_config: &Ssl) -> rustls::ServerConfig {
84 rustls::crypto::aws_lc_rs::default_provider()
85 .install_default()
86 .unwrap();
87
88 // init server config builder with safe defaults
89 let config = ServerConfig::builder().with_no_client_auth();
90
91 // load TLS key/cert files
92 let cert_file = &mut BufReader::new(File::open(&ssl_config.cert_file).unwrap_or_else(|_| {
93 eprintln!(
94 "Failed to open certificate file: {}",
95 ssl_config.key_file.display()
96 );
97 std::process::exit(1);
98 }));
99 let key_file = &mut BufReader::new(File::open(&ssl_config.key_file).unwrap_or_else(|_| {
100 eprintln!("Failed to open key file: {}", ssl_config.key_file.display());
101 std::process::exit(1);
102 }));
103
104 // convert files to key/cert objects
105 let cert_chain = certs(cert_file)
106 .collect::<Result<Vec<_>, _>>()
107 .unwrap_or_else(|_| {
108 eprintln!("Failed to parse certificate chain.");
109 std::process::exit(1);
110 });
111 let mut keys = pkcs8_private_keys(key_file)
112 .map(|key| key.map(PrivateKeyDer::Pkcs8))
113 .collect::<Result<Vec<_>, _>>()
114 .unwrap_or_else(|_| {
115 eprintln!("Failed to parse private keys.");
116 std::process::exit(1);
117 });
118
119 // exit if no keys could be parsed
120 if keys.is_empty() {
121 eprintln!("Could not locate PKCS 8 private keys.");
122 std::process::exit(1);
123 }
124
125 config.with_single_cert(cert_chain, keys.remove(0)).unwrap()
126}

Callers 1

Calls 2

removeMethod · 0.80
is_emptyMethod · 0.45

Tested by

no test coverage detected