1use rustls_pki_types::{CertificateDer, PrivateKeyDer};
2
3pub fn load_certs(filename: &str) -> std::io::Result<Vec<CertificateDer<'static>>> {
5 let certfile = std::fs::File::open(filename)
6 .map_err(|e| std::io::Error::other(format!("failed to open {}: {}", filename, e)))?;
7 let mut reader = std::io::BufReader::new(certfile);
8 rustls_pemfile::certs(&mut reader).collect()
9}
10
11pub fn load_private_key(filename: &str) -> std::io::Result<PrivateKeyDer<'static>> {
13 let keyfile = std::fs::File::open(filename)
14 .map_err(|e| std::io::Error::other(format!("failed to open {}: {}", filename, e)))?;
15 let mut reader = std::io::BufReader::new(keyfile);
16 match rustls_pemfile::private_key(&mut reader) {
17 Ok(Some(private_key)) => Ok(private_key),
18 Ok(None) => Err(std::io::Error::new(
19 std::io::ErrorKind::InvalidData,
20 "Invalid private key",
21 )),
22 Err(err) => Err(err),
23 }
24}