From 8a9fbe6cd4beb8ee6609ad3209113b27963c7818 Mon Sep 17 00:00:00 2001 From: William Brown Date: Sun, 18 Aug 2024 13:58:52 +1000 Subject: [PATCH 1/4] Support EC keys --- src/tls_rustls/mod.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/tls_rustls/mod.rs b/src/tls_rustls/mod.rs index fabb983c..46f3c880 100644 --- a/src/tls_rustls/mod.rs +++ b/src/tls_rustls/mod.rs @@ -339,7 +339,13 @@ async fn config_from_pem_chain_file( .ok_or_else(|| io_other("could not parse pem file"))? { Item::Pkcs8Key(key) => { - Ok(PrivateKeyDer::try_from(key.secret_pkcs8_der().to_vec()).map_err(io_other)?) + Ok(PrivateKeyDer::from(key)) + } + Item::Sec1Key(key) => { + Ok(PrivateKeyDer::from(key)) + } + Item::Pkcs1Key(key) => { + Ok(PrivateKeyDer::from(key)) } x => Err(io_other(format!( "invalid certificate format, received: {x:?}" From e118cae03e153d38569b2b229ce0af7309177281 Mon Sep 17 00:00:00 2001 From: William Brown Date: Sun, 18 Aug 2024 13:59:04 +1000 Subject: [PATCH 2/4] fmt --- src/tls_rustls/mod.rs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/tls_rustls/mod.rs b/src/tls_rustls/mod.rs index 46f3c880..13c66fa2 100644 --- a/src/tls_rustls/mod.rs +++ b/src/tls_rustls/mod.rs @@ -338,15 +338,9 @@ async fn config_from_pem_chain_file( let key_cert: PrivateKeyDer = match rustls_pemfile::read_one(&mut key.as_ref())? .ok_or_else(|| io_other("could not parse pem file"))? { - Item::Pkcs8Key(key) => { - Ok(PrivateKeyDer::from(key)) - } - Item::Sec1Key(key) => { - Ok(PrivateKeyDer::from(key)) - } - Item::Pkcs1Key(key) => { - Ok(PrivateKeyDer::from(key)) - } + Item::Pkcs8Key(key) => Ok(PrivateKeyDer::from(key)), + Item::Sec1Key(key) => Ok(PrivateKeyDer::from(key)), + Item::Pkcs1Key(key) => Ok(PrivateKeyDer::from(key)), x => Err(io_other(format!( "invalid certificate format, received: {x:?}" ))), From 343ade4039d59ad49e25852497262248298f394d Mon Sep 17 00:00:00 2001 From: William Brown Date: Wed, 21 Aug 2024 10:21:37 +1000 Subject: [PATCH 3/4] Review comments --- CHANGELOG.md | 1 + src/tls_rustls/mod.rs | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b8998536..19345cf5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog], and this project adheres to # Unreleased - **changed**: Updated `tower` from `0.4` to `0.5`. +- **added**: Support `Pkcs1` and `Sec1` private keys with rustls. # 0.7.1 (31. July 2024) diff --git a/src/tls_rustls/mod.rs b/src/tls_rustls/mod.rs index 13c66fa2..ab7e5fd1 100644 --- a/src/tls_rustls/mod.rs +++ b/src/tls_rustls/mod.rs @@ -338,9 +338,9 @@ async fn config_from_pem_chain_file( let key_cert: PrivateKeyDer = match rustls_pemfile::read_one(&mut key.as_ref())? .ok_or_else(|| io_other("could not parse pem file"))? { - Item::Pkcs8Key(key) => Ok(PrivateKeyDer::from(key)), - Item::Sec1Key(key) => Ok(PrivateKeyDer::from(key)), - Item::Pkcs1Key(key) => Ok(PrivateKeyDer::from(key)), + Item::Pkcs8Key(key) => Ok(key.into()), + Item::Sec1Key(key) => Ok(key.into()), + Item::Pkcs1Key(key) => Ok(key.into()), x => Err(io_other(format!( "invalid certificate format, received: {x:?}" ))), From 0db264f7d6dd32353265672318dd8b54ddbd0347 Mon Sep 17 00:00:00 2001 From: daxpedda Date: Wed, 21 Aug 2024 16:43:30 +0200 Subject: [PATCH 4/4] Adjust changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19345cf5..eb59db2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ The format is based on [Keep a Changelog], and this project adheres to # Unreleased - **changed**: Updated `tower` from `0.4` to `0.5`. -- **added**: Support `Pkcs1` and `Sec1` private keys with rustls. +- **added**: Support reading PKCS\#1 and SEC1 private keys with Rustls. # 0.7.1 (31. July 2024)