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