|
1 | 1 | use anyhow::{ensure, Context, Error, Result}; |
2 | | -use rustls::internal::msgs::codec::{Codec, Reader}; |
| 2 | +use rustls::internal::msgs::codec::Codec; |
| 3 | +use rustls::Reader; |
3 | 4 | use rustls::{Certificate, PrivateKey}; |
4 | | -use rustls_pemfile::{pkcs8_private_keys, rsa_private_keys}; |
| 5 | +use rustls_pemfile::{pkcs8_private_keys, rsa_private_keys, Item}; |
5 | 6 | use serde::Deserialize; |
6 | 7 | use std::fs::File; |
7 | | -use std::io::{BufRead, BufReader}; |
| 8 | +use std::io::{BufRead, BufReader, Read}; |
| 9 | +use std::iter; |
8 | 10 | use std::path::Path; |
9 | 11 | use std::str::FromStr; |
10 | 12 |
|
@@ -36,19 +38,10 @@ pub fn load_cert(path: &Path) -> Result<Vec<Certificate>> { |
36 | 38 | path.to_str().unwrap() |
37 | 39 | ))?; |
38 | 40 | let mut buf_reader = BufReader::new(file); |
39 | | - let bytes = buf_reader |
40 | | - .fill_buf() |
41 | | - .context("Failed to read cerficate bytes.")?; |
| 41 | + let cert_bytes = &rustls_pemfile::certs(&mut buf_reader).unwrap()[0]; |
42 | 42 |
|
43 | | - ensure!(bytes.is_empty(), "The provided certificate is empty"); |
44 | | - |
45 | | - let mut reader = Reader::init(bytes); |
46 | | - |
47 | | - if let Some(cert) = Certificate::read(&mut reader) { |
48 | | - return Ok(vec![cert]); |
49 | | - } |
50 | | - |
51 | | - Err(Error::msg("Failed to read certificate")) |
| 43 | + ensure!(cert_bytes.len() > 0, "Empty certificate"); |
| 44 | + Ok(vec![Certificate(cert_bytes.to_vec())]) |
52 | 45 | } |
53 | 46 |
|
54 | 47 | pub fn load_private_key(path: &Path, kind: &PrivateKeyAlgorithm) -> Result<PrivateKey> { |
|
0 commit comments