@@ -23,7 +23,7 @@ use bytes::{BufMut, Bytes, BytesMut};
2323use log:: { info, warn} ;
2424use rustls:: client:: danger:: { HandshakeSignatureValid , ServerCertVerified , ServerCertVerifier } ;
2525use rustls:: crypto:: CryptoProvider ;
26- use rustls:: pki_types:: { CertificateDer , UnixTime } ;
26+ use rustls:: pki_types:: { pem :: PemObject , CertificateDer , PrivateKeyDer , UnixTime } ;
2727use rustls:: { DigitallySignedStruct , SignatureScheme } ;
2828use std:: fmt:: { Debug , Display , Formatter } ;
2929use 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