From 446b0cfb1eb0cc9e591bce737f18af8be6288c9b Mon Sep 17 00:00:00 2001 From: Melefo <42809472+melefo@users.noreply.github.com> Date: Fri, 24 May 2024 15:37:11 +0200 Subject: [PATCH] Adding EC private keys to rustls config (#787) * Add ed25519 to to private keycert build * Fix type of ec private key --- crates/core/src/conn/rustls/config.rs | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/crates/core/src/conn/rustls/config.rs b/crates/core/src/conn/rustls/config.rs index f1080bdb7..8de92a54c 100644 --- a/crates/core/src/conn/rustls/config.rs +++ b/crates/core/src/conn/rustls/config.rs @@ -88,20 +88,27 @@ impl Keycert { .collect::>(); let key = { - let mut pkcs8 = rustls_pemfile::pkcs8_private_keys(&mut self.key.as_ref()) + let mut ec = rustls_pemfile::ec_private_keys(&mut self.key.as_ref()) .collect::, _>>() .map_err(|_| IoError::new(ErrorKind::Other, "failed to parse tls private keys"))?; - if !pkcs8.is_empty() { - PrivateKeyDer::Pkcs8(pkcs8.remove(0)) + if !ec.is_empty() { + PrivateKeyDer::Sec1(ec.remove(0)) } else { - let mut rsa = rustls_pemfile::rsa_private_keys(&mut self.key.as_ref()) + let mut pkcs8 = rustls_pemfile::pkcs8_private_keys(&mut self.key.as_ref()) .collect::, _>>() .map_err(|_| IoError::new(ErrorKind::Other, "failed to parse tls private keys"))?; - - if !rsa.is_empty() { - PrivateKeyDer::Pkcs1(rsa.remove(0)) + if !pkcs8.is_empty() { + PrivateKeyDer::Pkcs8(pkcs8.remove(0)) } else { - return Err(IoError::new(ErrorKind::Other, "failed to parse tls private keys")); + let mut rsa = rustls_pemfile::rsa_private_keys(&mut self.key.as_ref()) + .collect::, _>>() + .map_err(|_| IoError::new(ErrorKind::Other, "failed to parse tls private keys"))?; + + if !rsa.is_empty() { + PrivateKeyDer::Pkcs1(rsa.remove(0)) + } else { + return Err(IoError::new(ErrorKind::Other, "failed to parse tls private keys")); + } } } }; @@ -308,4 +315,4 @@ where fn into_stream(self) -> Self { self } -} \ No newline at end of file +}