File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change @@ -806,6 +806,47 @@ mod _ssl {
806806 self . check_hostname . store ( ch) ;
807807 }
808808
809+ // PY_PROTO_MINIMUM_SUPPORTED = -2, PY_PROTO_MAXIMUM_SUPPORTED = -1
810+ #[ pygetset]
811+ fn minimum_version ( & self ) -> i32 {
812+ let ctx = self . ctx ( ) ;
813+ let version = unsafe { sys:: SSL_CTX_get_min_proto_version ( ctx. as_ptr ( ) ) } ;
814+ if version == 0 {
815+ -2 // PY_PROTO_MINIMUM_SUPPORTED
816+ } else {
817+ version
818+ }
819+ }
820+ #[ pygetset( setter) ]
821+ fn set_minimum_version ( & self , value : i32 , vm : & VirtualMachine ) -> PyResult < ( ) > {
822+ let ctx = self . builder ( ) ;
823+ let result = unsafe { sys:: SSL_CTX_set_min_proto_version ( ctx. as_ptr ( ) , value) } ;
824+ if result == 0 {
825+ return Err ( vm. new_value_error ( "invalid protocol version" ) ) ;
826+ }
827+ Ok ( ( ) )
828+ }
829+
830+ #[ pygetset]
831+ fn maximum_version ( & self ) -> i32 {
832+ let ctx = self . ctx ( ) ;
833+ let version = unsafe { sys:: SSL_CTX_get_max_proto_version ( ctx. as_ptr ( ) ) } ;
834+ if version == 0 {
835+ -1 // PY_PROTO_MAXIMUM_SUPPORTED
836+ } else {
837+ version
838+ }
839+ }
840+ #[ pygetset( setter) ]
841+ fn set_maximum_version ( & self , value : i32 , vm : & VirtualMachine ) -> PyResult < ( ) > {
842+ let ctx = self . builder ( ) ;
843+ let result = unsafe { sys:: SSL_CTX_set_max_proto_version ( ctx. as_ptr ( ) , value) } ;
844+ if result == 0 {
845+ return Err ( vm. new_value_error ( "invalid protocol version" ) ) ;
846+ }
847+ Ok ( ( ) )
848+ }
849+
809850 #[ pymethod]
810851 fn set_default_verify_paths ( & self , vm : & VirtualMachine ) -> PyResult < ( ) > {
811852 cfg_if:: cfg_if! {
You can’t perform that action at this time.
0 commit comments