File size: 967 Bytes
9552aa0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use rustls_pki_types::{CertificateDer, PrivateKeyDer};

// Load public certificate from file
pub fn load_certs(filename: &str) -> std::io::Result<Vec<CertificateDer<'static>>> {
  let certfile = std::fs::File::open(filename)
    .map_err(|e| std::io::Error::other(format!("failed to open {}: {}", filename, e)))?;
  let mut reader = std::io::BufReader::new(certfile);
  rustls_pemfile::certs(&mut reader).collect()
}

// Load private key from file
pub fn load_private_key(filename: &str) -> std::io::Result<PrivateKeyDer<'static>> {
  let keyfile = std::fs::File::open(filename)
    .map_err(|e| std::io::Error::other(format!("failed to open {}: {}", filename, e)))?;
  let mut reader = std::io::BufReader::new(keyfile);
  match rustls_pemfile::private_key(&mut reader) {
    Ok(Some(private_key)) => Ok(private_key),
    Ok(None) => Err(std::io::Error::new(
      std::io::ErrorKind::InvalidData,
      "Invalid private key",
    )),
    Err(err) => Err(err),
  }
}