@@ -278,9 +278,15 @@ fn load_private_key(bytes: Vec<u8>) -> ZResult<PrivateKey> {
278
278
loop {
279
279
match rustls_pemfile:: read_one ( & mut reader) {
280
280
Ok ( item) => match item {
281
- Some ( rustls_pemfile:: Item :: RSAKey ( key) ) => return Ok ( rustls:: PrivateKey ( key) ) ,
282
- Some ( rustls_pemfile:: Item :: PKCS8Key ( key) ) => return Ok ( rustls:: PrivateKey ( key) ) ,
283
- Some ( rustls_pemfile:: Item :: ECKey ( key) ) => return Ok ( rustls:: PrivateKey ( key) ) ,
281
+ Some ( rustls_pemfile:: Item :: Pkcs1Key ( key) ) => {
282
+ return Ok ( rustls:: PrivateKey ( key. secret_pkcs1_der ( ) . to_vec ( ) ) )
283
+ }
284
+ Some ( rustls_pemfile:: Item :: Pkcs8Key ( key) ) => {
285
+ return Ok ( rustls:: PrivateKey ( key. secret_pkcs8_der ( ) . to_vec ( ) ) )
286
+ }
287
+ Some ( rustls_pemfile:: Item :: Sec1Key ( key) ) => {
288
+ return Ok ( rustls:: PrivateKey ( key. secret_sec1_der ( ) . to_vec ( ) ) )
289
+ }
284
290
None => break ,
285
291
_ => continue ,
286
292
} ,
@@ -293,14 +299,14 @@ fn load_private_key(bytes: Vec<u8>) -> ZResult<PrivateKey> {
293
299
fn load_certs ( bytes : Vec < u8 > ) -> ZResult < Vec < Certificate > > {
294
300
let mut reader = BufReader :: new ( bytes. as_slice ( ) ) ;
295
301
296
- let certs = match rustls_pemfile:: certs ( & mut reader) {
297
- Ok ( certs ) => certs ,
298
- Err ( e ) => return Err ( zerror ! ( "Cannot parse certificate {e:?}" ) . into ( ) ) ,
299
- } ;
302
+ let certs: Vec < Certificate > = rustls_pemfile:: certs ( & mut reader)
303
+ . map ( |c| c . map ( |c| Certificate ( c . to_vec ( ) ) ) )
304
+ . collect :: < Result < _ , _ > > ( )
305
+ . map_err ( |err| zerror ! ( "Error processing client certificate: {err}." ) ) ? ;
300
306
301
307
match certs. is_empty ( ) {
302
308
true => Err ( zerror ! ( "No certificates found" ) . into ( ) ) ,
303
- false => Ok ( certs. iter ( ) . map ( |c| Certificate ( c . to_vec ( ) ) ) . collect ( ) ) ,
309
+ false => Ok ( certs) ,
304
310
}
305
311
}
306
312
0 commit comments