Skip to content

Commit 4ad83cf

Browse files
committed
RUSTSEC-2025-0134: rustls-pemfile is unmaintained
Replace unmaintained dependency as recommended by rustls/pemfile#61
1 parent 45a649b commit 4ad83cf

4 files changed

Lines changed: 15 additions & 31 deletions

File tree

ci/Cargo.lock.min

Lines changed: 1 addition & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ci/Cargo.lock.msrv

Lines changed: 1 addition & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ neo4rs-macros = { version = "0.3.0", path = "../macros" }
4040
pastey = "0.2.0"
4141
pin-project-lite = "0.2.9"
4242
rustls-native-certs = "0.8.0"
43-
rustls-pemfile = "2.1.2"
43+
rustls-pki-types = "1.9.0"
4444
serde = { version = "1.0.185", features = ["derive"] } # TODO: eliminate derive
4545
serde_json = { version = "1.0.0", optional = true }
4646
thiserror = "2.0.0"

lib/src/connection.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use bytes::{BufMut, Bytes, BytesMut};
2323
use log::{info, warn};
2424
use rustls::client::danger::{HandshakeSignatureValid, ServerCertVerified, ServerCertVerifier};
2525
use rustls::crypto::CryptoProvider;
26-
use rustls::pki_types::{CertificateDer, UnixTime};
26+
use rustls::pki_types::{pem::PemObject, CertificateDer, PrivateKeyDer, UnixTime};
2727
use rustls::{DigitallySignedStruct, SignatureScheme};
2828
use std::fmt::{Debug, Display, Formatter};
2929
use std::time::Duration;
@@ -511,8 +511,8 @@ impl ConnectionInfo {
511511
}
512512
ConnectionTLSConfig::ClientCACertificate(certificate) => {
513513
let cert_file = File::open(&certificate.cert_file)?;
514-
let mut reader = BufReader::new(cert_file);
515-
let certs = rustls_pemfile::certs(&mut reader).flatten();
514+
let reader = BufReader::new(cert_file);
515+
let certs = CertificateDer::pem_reader_iter(reader).flatten();
516516
root_cert_store.add_parsable_certificates(certs);
517517
builder
518518
.with_root_certificates(root_cert_store)
@@ -524,17 +524,19 @@ impl ConnectionInfo {
524524
.with_no_client_auth(),
525525
ConnectionTLSConfig::MutualTLS(mutual) => {
526526
let cert_file = File::open(&mutual.client_cert)?;
527-
let mut cert_reader = BufReader::new(cert_file);
528-
let cert_certs = rustls_pemfile::certs(&mut cert_reader).flatten();
527+
let cert_reader = BufReader::new(cert_file);
528+
let cert_certs = CertificateDer::pem_reader_iter(cert_reader).flatten();
529529

530530
let cert_key = File::open(&mutual.client_key)?;
531-
let mut key_reader = BufReader::new(cert_key);
532-
let keys = rustls_pemfile::private_key(&mut key_reader);
533-
let keys = keys?.unwrap();
531+
let key_reader = BufReader::new(cert_key);
532+
let keys = PrivateKeyDer::pem_reader_iter(key_reader)
533+
.collect::<Result<Vec<_>, _>>()
534+
.map_err(std::io::Error::other);
535+
let keys = keys?.pop().unwrap();
534536
if mutual.cert_file.is_some() {
535537
let root_cert_file = File::open(mutual.cert_file.as_ref().unwrap())?;
536-
let mut root_reader = BufReader::new(root_cert_file);
537-
let root_certs = rustls_pemfile::certs(&mut root_reader).flatten();
538+
let root_reader = BufReader::new(root_cert_file);
539+
let root_certs = CertificateDer::pem_reader_iter(root_reader).flatten();
538540
root_cert_store.add_parsable_certificates(root_certs);
539541
builder
540542
.with_root_certificates(root_cert_store)

0 commit comments

Comments
 (0)