Author: Brian Kearns <bdkea...@gmail.com>
Branch: stdlib-2.7.9
Changeset: r75574:140b8cf78407
Date: 2015-01-28 17:36 -0500
http://bitbucket.org/pypy/pypy/changeset/140b8cf78407/

Log:    provide SSLContext get_verify_flags

diff --git a/pypy/module/_ssl/interp_ssl.py b/pypy/module/_ssl/interp_ssl.py
--- a/pypy/module/_ssl/interp_ssl.py
+++ b/pypy/module/_ssl/interp_ssl.py
@@ -1071,6 +1071,11 @@
                         "check_hostname is enabled.")
         libssl_SSL_CTX_set_verify(self.ctx, mode, None)
 
+    def descr_get_verify_flags(self, space):
+        store = libssl_SSL_CTX_get_cert_store(self.ctx)
+        flags = libssl_X509_VERIFY_PARAM_get_flags(store[0].c_param)
+        return space.wrap(flags)
+
     def descr_get_check_hostname(self, space):
         return space.newbool(self.check_hostname)
 
@@ -1142,7 +1147,7 @@
             if libssl_SSL_CTX_set_tmp_dh(self.ctx, dh) == 0:
                 raise _ssl_seterror(space, None, 0)
         finally:
-            libssl_DH_free(dh)        
+            libssl_DH_free(dh)
 
     def load_verify_locations_w(self, space, w_cafile=None, w_capath=None,
                                 w_cadata=None):
@@ -1286,6 +1291,7 @@
                            _SSLContext.descr_set_options),
     verify_mode=GetSetProperty(_SSLContext.descr_get_verify_mode,
                                _SSLContext.descr_set_verify_mode),
+    verify_flags=GetSetProperty(_SSLContext.descr_get_verify_flags),
     check_hostname=GetSetProperty(_SSLContext.descr_get_check_hostname,
                                   _SSLContext.descr_set_check_hostname),
 )
diff --git a/pypy/module/_ssl/test/test_ssl.py 
b/pypy/module/_ssl/test/test_ssl.py
--- a/pypy/module/_ssl/test/test_ssl.py
+++ b/pypy/module/_ssl/test/test_ssl.py
@@ -136,6 +136,9 @@
         exc = raises(ValueError, "s.verify_mode = 1234")
         assert str(exc.value) == "invalid value for verify_mode"
 
+        assert type(s.verify_flags) is long
+        assert s.verify_flags == _ssl.VERIFY_DEFAULT
+
         s.check_hostname = True
         assert s.check_hostname
 
diff --git a/rpython/rlib/ropenssl.py b/rpython/rlib/ropenssl.py
--- a/rpython/rlib/ropenssl.py
+++ b/rpython/rlib/ropenssl.py
@@ -52,6 +52,7 @@
 ASN1_STRING = lltype.Ptr(lltype.ForwardReference())
 ASN1_ITEM = rffi.COpaquePtr('ASN1_ITEM')
 X509_NAME = rffi.COpaquePtr('X509_NAME')
+X509_VERIFY_PARAM = rffi.COpaquePtr('X509_VERIFY_PARAM')
 stack_st_X509_OBJECT = rffi.COpaquePtr('struct stack_st_X509_OBJECT')
 DH = rffi.COpaquePtr('DH')
 
@@ -148,8 +149,8 @@
         [('value', ASN1_STRING)])
     x509_store_st = rffi_platform.Struct(
         'struct x509_store_st',
-        [('objs', stack_st_X509_OBJECT)])
-    
+        [('objs', stack_st_X509_OBJECT),
+         ('param', X509_VERIFY_PARAM)])
     x509_object_st = rffi_platform.Struct(
         'struct x509_object_st',
         [('type', rffi.INT)])
@@ -307,6 +308,7 @@
 ssl_external('X509_get_ext', [X509, rffi.INT], X509_EXTENSION)
 ssl_external('X509V3_EXT_get', [X509_EXTENSION], X509V3_EXT_METHOD)
 
+ssl_external('X509_VERIFY_PARAM_get_flags', [X509_VERIFY_PARAM], rffi.ULONG)
 ssl_external('X509_STORE_add_cert', [X509_STORE, X509], rffi.INT)
 
 ssl_external('OBJ_obj2txt',
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to