@@ -101,29 +101,27 @@ impl Identity {
101101 pub fn from_pkcs8 ( pem : & [ u8 ] , key : & [ u8 ] ) -> Result < Identity , Error > {
102102 let mut store = Memory :: new ( ) ?. into_store ( ) ;
103103 let mut cert_iter = crate :: pem:: PemBlock :: new ( pem) . into_iter ( ) ;
104- let leaf = cert_iter. next ( ) . unwrap ( ) ;
105- let cert = CertContext :: from_pem ( std:: str:: from_utf8 ( leaf) . unwrap ( ) ) . unwrap ( ) ;
104+ let leaf = cert_iter. next ( ) . expect ( "at least one certificate must be provided to create an identity" ) ;
105+ let cert = CertContext :: from_pem ( std:: str:: from_utf8 ( leaf) . map_err ( |_| io :: Error :: new ( io :: ErrorKind :: InvalidInput , "leaf cert contains invalid utf8" ) ) ? ) ? ;
106106
107107 let mut options = AcquireOptions :: new ( ) ;
108108 options. container ( "schannel" ) ;
109109 let type_ = ProviderType :: rsa_full ( ) ;
110110
111111 let mut container = match options. acquire ( type_) {
112112 Ok ( container) => container,
113- Err ( _) => options. new_keyset ( true ) . acquire ( type_) . unwrap ( ) ,
113+ Err ( _) => options. new_keyset ( true ) . acquire ( type_) ? ,
114114 } ;
115- let key = crate :: pem:: pem_to_der ( key, Some ( crate :: pem:: PEM_PRIVATE_KEY ) ) . unwrap ( ) ;
115+ let key = crate :: pem:: pem_to_der ( key, Some ( crate :: pem:: PEM_PRIVATE_KEY ) ) . expect ( "invalid PKCS8 key provided" ) ;
116116 container. import ( )
117- . import_pkcs8 ( & key)
118- . unwrap ( ) ;
117+ . import_pkcs8 ( & key) ?;
119118
120119 cert. set_key_prov_info ( )
121120 . container ( "schannel" )
122121 . type_ ( type_)
123122 . keep_open ( true )
124123 . key_spec ( KeySpec :: key_exchange ( ) )
125- . set ( )
126- . unwrap ( ) ;
124+ . set ( ) ?;
127125 let mut context = store. add_cert ( & cert, CertAdd :: Always ) ?;
128126
129127 for int_cert in cert_iter {
0 commit comments