@@ -120,10 +120,11 @@ async fn load_certs(file_path: &Path) -> anyhow::Result<Vec<CertificateDer<'stat
120
120
let certs: Vec < CertificateDer < ' static > > = rustls_pemfile:: certs ( & mut std:: io:: Cursor :: new ( data) )
121
121
. collect :: < Result < Vec < _ > , _ > > ( )
122
122
. 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( ) ) ) ,
125
127
}
126
- Ok ( certs)
127
128
}
128
129
129
130
/// Loads a private key from a PEM file.
@@ -132,11 +133,11 @@ async fn load_private_key(file_path: &Path) -> anyhow::Result<PrivateKeyDer<'sta
132
133
let keys: Vec < PrivatePkcs8KeyDer < ' static > > = rustls_pemfile:: pkcs8_private_keys ( & mut std:: io:: Cursor :: new ( data) )
133
134
. collect :: < Result < Vec < _ > , _ > > ( )
134
135
. 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
+ }
140
141
}
141
142
142
143
/// Creates a custom CryptoProvider with specific cipher suites.
0 commit comments