File tree Expand file tree Collapse file tree 1 file changed +13
-4
lines changed Expand file tree Collapse file tree 1 file changed +13
-4
lines changed Original file line number Diff line number Diff line change 1
1
// Stream wrapper.
2
2
3
- use rustls_pemfile:: { certs, rsa_private_keys} ;
3
+ use rustls_pemfile:: { certs, read_one, Item } ;
4
+ use std:: iter;
4
5
use std:: path:: Path ;
5
6
use std:: sync:: Arc ;
6
7
use tokio_rustls:: rustls:: { self , Certificate , PrivateKey } ;
@@ -17,9 +18,17 @@ pub fn load_certs(path: &Path) -> std::io::Result<Vec<Certificate>> {
17
18
}
18
19
19
20
pub fn load_keys ( path : & Path ) -> std:: io:: Result < Vec < PrivateKey > > {
20
- rsa_private_keys ( & mut std:: io:: BufReader :: new ( std:: fs:: File :: open ( path) ?) )
21
- . map_err ( |_| std:: io:: Error :: new ( std:: io:: ErrorKind :: InvalidInput , "invalid key" ) )
22
- . map ( |mut keys| keys. drain ( ..) . map ( PrivateKey ) . collect ( ) )
21
+ let mut rd = std:: io:: BufReader :: new ( std:: fs:: File :: open ( path) ?) ;
22
+
23
+ iter:: from_fn ( || read_one ( & mut rd) . transpose ( ) )
24
+ . filter_map ( |item| match item {
25
+ Err ( err) => Some ( Err ( err) ) ,
26
+ Ok ( Item :: RSAKey ( key) ) => Some ( Ok ( PrivateKey ( key) ) ) ,
27
+ Ok ( Item :: ECKey ( key) ) => Some ( Ok ( PrivateKey ( key) ) ) ,
28
+ Ok ( Item :: PKCS8Key ( key) ) => Some ( Ok ( PrivateKey ( key) ) ) ,
29
+ _ => None ,
30
+ } )
31
+ . collect ( )
23
32
}
24
33
25
34
pub struct Tls {
You can’t perform that action at this time.
0 commit comments