ferron/util/
load_tls.rs

1use rustls_pki_types::{pem::PemObject, CertificateDer, PrivateKeyDer};
2
3/// Loads a public certificate from file
4pub fn load_certs(filename: &str) -> std::io::Result<Vec<CertificateDer<'static>>> {
5  let mut certfile = std::fs::File::open(filename)?;
6  CertificateDer::pem_reader_iter(&mut certfile)
7    .collect::<Result<Vec<_>, _>>()
8    .map_err(|e| match e {
9      rustls_pki_types::pem::Error::Io(err) => err,
10      err => std::io::Error::other(err),
11    })
12}
13
14/// Loads a private key from file
15pub fn load_private_key(filename: &str) -> std::io::Result<PrivateKeyDer<'static>> {
16  let mut keyfile = std::fs::File::open(filename)?;
17  match PrivateKeyDer::from_pem_reader(&mut keyfile) {
18    Ok(private_key) => Ok(private_key),
19    Err(rustls_pki_types::pem::Error::Io(err)) => Err(err),
20    Err(err) => Err(std::io::Error::other(err)),
21  }
22}