diff --git a/rcgen/src/error.rs b/rcgen/src/error.rs index 624ac068..691c6df3 100644 --- a/rcgen/src/error.rs +++ b/rcgen/src/error.rs @@ -34,7 +34,7 @@ pub enum Error { Time, #[cfg(feature = "pem")] /// Error from the pem crate - PemError(pem::PemError), + PemError(String), /// Error generated by a remote key operation RemoteKeyError, /// Unsupported field when generating a CSR @@ -97,10 +97,3 @@ impl fmt::Display for Error { } impl std::error::Error for Error {} - -#[cfg(feature = "pem")] -impl From for Error { - fn from(e: pem::PemError) -> Self { - Error::PemError(e) - } -} diff --git a/rcgen/src/key_pair.rs b/rcgen/src/key_pair.rs index a276b297..3d43ac4c 100644 --- a/rcgen/src/key_pair.rs +++ b/rcgen/src/key_pair.rs @@ -67,7 +67,7 @@ impl KeyPair { /// Parses the key pair from the ASCII PEM format #[cfg(feature = "pem")] pub fn from_pem(pem_str: &str) -> Result { - let private_key = pem::parse(pem_str)?; + let private_key = pem::parse(pem_str).map_err(|e| Error::PemError(e.to_string()))?; let private_key_der: &[_] = private_key.contents(); Ok(private_key_der.try_into()?) } @@ -90,7 +90,7 @@ impl KeyPair { pem_str: &str, alg: &'static SignatureAlgorithm, ) -> Result { - let private_key = pem::parse(pem_str)?; + let private_key = pem::parse(pem_str).map_err(|e| Error::PemError(e.to_string()))?; let private_key_der: &[_] = private_key.contents(); Ok(Self::from_der_and_sign_algo(private_key_der, alg)?) }