(key_file: &str)
| 38 | } |
| 39 | |
| 40 | pub async fn load_key(key_file: &str) -> Result<PrivateKeyDer<'static>> { |
| 41 | let key_s = fs::read_to_string(key_file) |
| 42 | .await |
| 43 | .context("Read private key")?; |
| 44 | let key_s = private_key_to_pkcs8(&key_s)?; |
| 45 | let mut key_b = key_s.as_bytes(); |
| 46 | let mut keys = rustls_pemfile::pkcs8_private_keys(&mut key_b); |
| 47 | if let Some(key) = keys.next() { |
| 48 | match key { |
| 49 | Ok(v) => return Ok(PrivateKeyDer::Pkcs8(v.clone_key())), |
| 50 | Err(e) => { |
| 51 | return Err(anyhow!("Error parsing private key, error: {}", e)); |
| 52 | } |
| 53 | } |
| 54 | } |
| 55 | |
| 56 | Err(anyhow!("No private key found")) |
| 57 | } |
| 58 | |
| 59 | pub fn private_key_to_pkcs8(pem: &str) -> Result<String> { |
| 60 | if pem.contains("RSA PRIVATE KEY") { |
no test coverage detected