@@ -120,10 +120,11 @@ async fn load_certs(file_path: &Path) -> anyhow::Result<Vec<CertificateDer<'stat
120120 let certs: Vec < CertificateDer < ' static > > = rustls_pemfile:: certs ( & mut std:: io:: Cursor :: new ( data) )
121121 . collect :: < Result < Vec < _ > , _ > > ( )
122122 . map_err ( |e| anyhow:: anyhow!( "Failed to parse certificates from {}: {:?}" , file_path. display( ) , e) ) ?;
123- if certs. is_empty ( ) {
124- return Err ( anyhow:: anyhow!( "No certificates found in file {}" , file_path. display( ) ) ) ;
123+ match certs. len ( ) {
124+ 0 => Err ( anyhow:: anyhow!( "No certificates found in file {}" , file_path. display( ) ) ) ,
125+ 1 => Ok ( certs) ,
126+ _ => Err ( anyhow:: anyhow!( "Multiple certificates found in file {}; only one certificate is expected." , file_path. display( ) ) ) ,
125127 }
126- Ok ( certs)
127128}
128129
129130/// Loads a private key from a PEM file.
@@ -132,11 +133,11 @@ async fn load_private_key(file_path: &Path) -> anyhow::Result<PrivateKeyDer<'sta
132133 let keys: Vec < PrivatePkcs8KeyDer < ' static > > = rustls_pemfile:: pkcs8_private_keys ( & mut std:: io:: Cursor :: new ( data) )
133134 . collect :: < Result < Vec < _ > , _ > > ( )
134135 . map_err ( |e| anyhow:: anyhow!( "Failed to parse private keys from {}: {:?}" , file_path. display( ) , e) ) ?;
135- let key = keys
136- . into_iter ( )
137- . next ( )
138- . ok_or_else ( || anyhow:: anyhow!( "No private key found in file {}" , file_path. display( ) ) ) ? ;
139- Ok ( PrivateKeyDer :: Pkcs8 ( key ) )
136+ match keys. len ( ) {
137+ 0 => Err ( anyhow :: anyhow! ( "No private key found in file {}" , file_path . display ( ) ) ) ,
138+ 1 => Ok ( PrivateKeyDer :: Pkcs8 ( keys . into_iter ( ) . next ( ) . unwrap ( ) ) ) ,
139+ _ => Err ( anyhow:: anyhow!( "Multiple private keys found in file {}; only one private key is expected. " , file_path. display( ) ) ) ,
140+ }
140141}
141142
142143/// Creates a custom CryptoProvider with specific cipher suites.
0 commit comments