use reqwest::Identity; use std::ffi::OsStr; use std::io::Read; #[derive(thiserror::Error, Debug)] pub(crate) enum CertificateError { #[error(transparent)] Io(#[from] std::io::Error), #[error(transparent)] Reqwest(reqwest::Error), } /// Return the `Identity` from the provided file. pub(crate) fn read_identity(ssl_client_cert: &OsStr) -> Result { let mut buf = Vec::new(); fs_err::File::open(ssl_client_cert)?.read_to_end(&mut buf)?; Identity::from_pem(&buf).map_err(|tls_err| { debug_assert!(tls_err.is_builder(), "must be a rustls::Error internally"); CertificateError::Reqwest(tls_err) }) }