use std::fs; use std::io::{self, BufReader}; pub fn load_certs(filename: &str) -> io::Result> { let certfile = fs::File::open(filename)?; let mut reader = BufReader::new(certfile); rustls_pemfile::certs(&mut reader)? .into_iter() .map(|v| Ok(rustls::Certificate(v))) .collect() } pub fn load_private_key(filename: &str) -> io::Result { let keyfile = fs::File::open(filename)?; let mut reader = BufReader::new(keyfile); loop { match rustls_pemfile::read_one(&mut reader)? { Some(rustls_pemfile::Item::RSAKey(key)) => return Ok(rustls::PrivateKey(key)), Some(rustls_pemfile::Item::PKCS8Key(key)) => return Ok(rustls::PrivateKey(key)), Some(rustls_pemfile::Item::ECKey(key)) => return Ok(rustls::PrivateKey(key)), None => break, _ => {} } } Err(io::Error::new(io::ErrorKind::InvalidData, "No supported private key found")) }