From d2d82ab869af430e4c985a8f3ae6eb345f1fa978 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Tue, 3 Sep 2024 10:15:35 +0200 Subject: [PATCH] Upgrade to rustls-native-certs 0.8 --- Cargo.toml | 2 +- src/client.rs | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 205c3f7..057e420 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ async-trait = "0.1.52" celes = "2.1" chrono = { version = "0.4.23", features = ["serde"] } instant-xml = { version = "0.5", features = ["chrono"] } -rustls-native-certs = { version = "0.7", optional = true } +rustls-native-certs = { version = "0.8", optional = true } rustls-pki-types = { version = "1", optional = true } serde = { version = "1.0", features = ["derive"] } tokio = { version = "1.0", features = ["io-util", "net", "time"] } diff --git a/src/client.rs b/src/client.rs index f85921a..e9ab857 100644 --- a/src/client.rs +++ b/src/client.rs @@ -215,6 +215,7 @@ mod rustls_connector { use std::time::Duration; use async_trait::async_trait; + use rustls_native_certs::CertificateResult; use rustls_pki_types::{CertificateDer, PrivateKeyDer, ServerName}; use tokio::net::lookup_host; use tokio::net::TcpStream; @@ -238,7 +239,14 @@ mod rustls_connector { identity: Option<(Vec>, PrivateKeyDer<'static>)>, ) -> Result { let mut roots = RootCertStore::empty(); - for cert in rustls_native_certs::load_native_certs()? { + let CertificateResult { + certs, mut errors, .. + } = rustls_native_certs::load_native_certs(); + if let Some(err) = errors.pop() { + return Err(Error::Other(err.into())); + } + + for cert in certs { roots.add(cert).map_err(|err| { Box::new(err) as Box })?;