Author: Brian Kearns <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit