Skip to content

Commit 872af0c

Browse files
authored
refactor: upgrade to rustls-pemfile 2 (#2222)
1 parent 68a3f58 commit 872af0c

File tree

3 files changed

+21
-21
lines changed

3 files changed

+21
-21
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ pin-project-lite = "0.2.0"
124124
ipnet = "2.3"
125125

126126
# Optional deps...
127-
rustls-pemfile = { version = "1.0", optional = true }
127+
rustls-pemfile = { version = "2", optional = true }
128128

129129
## default-tls
130130
hyper-tls = { version = "0.6", optional = true }

src/tls.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,11 @@ impl Certificate {
220220

221221
fn read_pem_certs(reader: &mut impl BufRead) -> crate::Result<Vec<Vec<u8>>> {
222222
rustls_pemfile::certs(reader)
223-
.map_err(|_| crate::error::builder("invalid certificate encoding"))
223+
.map(|result| match result {
224+
Ok(cert) => Ok(cert.as_ref().to_vec()),
225+
Err(_) => Err(crate::error::builder("invalid certificate encoding")),
226+
})
227+
.collect()
224228
}
225229
}
226230

@@ -326,34 +330,30 @@ impl Identity {
326330
/// This requires the `rustls-tls(-...)` Cargo feature enabled.
327331
#[cfg(feature = "__rustls")]
328332
pub fn from_pem(buf: &[u8]) -> crate::Result<Identity> {
333+
use rustls_pemfile::Item;
329334
use std::io::Cursor;
330335

331336
let (key, certs) = {
332337
let mut pem = Cursor::new(buf);
333338
let mut sk = Vec::<rustls_pki_types::PrivateKeyDer>::new();
334339
let mut certs = Vec::<rustls_pki_types::CertificateDer>::new();
335340

336-
for item in std::iter::from_fn(|| rustls_pemfile::read_one(&mut pem).transpose()) {
337-
match item.map_err(|_| {
338-
crate::error::builder(TLSError::General(String::from(
339-
"Invalid identity PEM file",
340-
)))
341-
})? {
342-
rustls_pemfile::Item::X509Certificate(cert) => certs.push(cert.into()),
343-
rustls_pemfile::Item::PKCS8Key(key) => {
344-
sk.push(rustls_pki_types::PrivateKeyDer::Pkcs8(key.into()))
345-
}
346-
rustls_pemfile::Item::RSAKey(key) => {
347-
sk.push(rustls_pki_types::PrivateKeyDer::Pkcs1(key.into()))
348-
}
349-
rustls_pemfile::Item::ECKey(key) => {
350-
sk.push(rustls_pki_types::PrivateKeyDer::Sec1(key.into()))
351-
}
352-
_ => {
341+
for result in rustls_pemfile::read_all(&mut pem) {
342+
match result {
343+
Ok(Item::X509Certificate(cert)) => certs.push(cert),
344+
Ok(Item::Pkcs1Key(key)) => sk.push(key.into()),
345+
Ok(Item::Pkcs8Key(key)) => sk.push(key.into()),
346+
Ok(Item::Sec1Key(key)) => sk.push(key.into()),
347+
Ok(_) => {
353348
return Err(crate::error::builder(TLSError::General(String::from(
354349
"No valid certificate was found",
355350
))))
356351
}
352+
Err(_) => {
353+
return Err(crate::error::builder(TLSError::General(String::from(
354+
"Invalid identity PEM file",
355+
))))
356+
}
357357
}
358358
}
359359

tests/multipart.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ async fn stream_part() {
8989

9090
let ct = format!("multipart/form-data; boundary={}", form.boundary());
9191

92-
let server = server::http(move |mut req| {
92+
let server = server::http(move |req| {
9393
let ct = ct.clone();
9494
let expected_body = expected_body.clone();
9595
async move {
@@ -144,7 +144,7 @@ fn blocking_file_part() {
144144

145145
let ct = format!("multipart/form-data; boundary={}", form.boundary());
146146

147-
let server = server::http(move |mut req| {
147+
let server = server::http(move |req| {
148148
let ct = ct.clone();
149149
let expected_body = expected_body.clone();
150150
async move {

0 commit comments

Comments
 (0)