@@ -23,22 +23,24 @@ fn supported_protocols(
2323 min : Option < Protocol > ,
2424 max : Option < Protocol > ,
2525 ctx : & mut SslContextBuilder ,
26- ) -> Result < ( ) , ErrorStack > {
26+ ) -> Result < ( ) , Error > {
2727 use self :: openssl:: ssl:: SslVersion ;
2828
29- fn cvt ( p : Protocol ) -> SslVersion {
29+ fn cvt ( p : Protocol ) -> Result < SslVersion , Error > {
3030 match p {
31- Protocol :: Sslv3 => SslVersion :: SSL3 ,
32- Protocol :: Tlsv10 => SslVersion :: TLS1 ,
33- Protocol :: Tlsv11 => SslVersion :: TLS1_1 ,
34- Protocol :: Tlsv12 => SslVersion :: TLS1_2 ,
31+ Protocol :: Sslv3 => Ok ( SslVersion :: SSL3 ) ,
32+ Protocol :: Tlsv10 => Ok ( SslVersion :: TLS1 ) ,
33+ Protocol :: Tlsv11 => Ok ( SslVersion :: TLS1_1 ) ,
34+ Protocol :: Tlsv12 => Ok ( SslVersion :: TLS1_2 ) ,
3535 #[ cfg( have_tls13_version) ]
36- Protocol :: Tlsv13 => SslVersion :: TLS1_3 ,
36+ Protocol :: Tlsv13 => Ok ( SslVersion :: TLS1_3 ) ,
37+ #[ cfg( not( have_tls13_version) ) ]
38+ Protocol :: Tlsv13 => Err ( Error :: UnsupportedTls13 )
3739 }
3840 }
3941
40- ctx. set_min_proto_version ( min. map ( cvt) ) ?;
41- ctx. set_max_proto_version ( max. map ( cvt) ) ?;
42+ ctx. set_min_proto_version ( min. map ( cvt) . transpose ( ) ? ) ?;
43+ ctx. set_max_proto_version ( max. map ( cvt) . transpose ( ) ? ) ?;
4244
4345 Ok ( ( ) )
4446}
@@ -117,6 +119,7 @@ pub enum Error {
117119 Ssl ( ssl:: Error , X509VerifyResult ) ,
118120 EmptyChain ,
119121 NotPkcs8 ,
122+ UnsupportedTls13 ,
120123}
121124
122125impl error:: Error for Error {
@@ -126,6 +129,7 @@ impl error::Error for Error {
126129 Error :: Ssl ( ref e, _) => error:: Error :: source ( e) ,
127130 Error :: EmptyChain => None ,
128131 Error :: NotPkcs8 => None ,
132+ Error :: UnsupportedTls13 => None ,
129133 }
130134 }
131135}
@@ -141,6 +145,7 @@ impl fmt::Display for Error {
141145 "at least one certificate must be provided to create an identity"
142146 ) ,
143147 Error :: NotPkcs8 => write ! ( fmt, "expected PKCS#8 PEM" ) ,
148+ Error :: UnsupportedTls13 => write ! ( fmt, "TLS version 1.3 not supported" ) ,
144149 }
145150 }
146151}
0 commit comments