Author: Ronan Lamy <[email protected]>
Branch: py3.7
Changeset: r97363:c45e8e15bf26
Date: 2019-09-01 17:01 +0100
http://bitbucket.org/pypy/pypy/changeset/c45e8e15bf26/

Log:    Add some constants to _ssl

diff --git a/lib_pypy/_cffi_ssl/_stdssl/__init__.py 
b/lib_pypy/_cffi_ssl/_stdssl/__init__.py
--- a/lib_pypy/_cffi_ssl/_stdssl/__init__.py
+++ b/lib_pypy/_cffi_ssl/_stdssl/__init__.py
@@ -8,10 +8,10 @@
     _decode_certificate, _certificate_to_der)
 from _cffi_ssl._stdssl.utility import (_str_with_len, _bytes_with_len,
     _str_to_ffi_buffer, _str_from_buf, _cstr_decode_fs)
-from _cffi_ssl._stdssl.error import (ssl_error, pyssl_error,
-        SSLError, SSLZeroReturnError, SSLWantReadError,
-        SSLWantWriteError, SSLSyscallError,
-        SSLEOFError)
+from _cffi_ssl._stdssl.error import (
+    ssl_error, pyssl_error, SSLError, SSLCertVerificationError,
+    SSLZeroReturnError, SSLWantReadError, SSLWantWriteError, SSLSyscallError,
+    SSLEOFError)
 from _cffi_ssl._stdssl.error import (SSL_ERROR_NONE,
         SSL_ERROR_SSL, SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE,
         SSL_ERROR_WANT_X509_LOOKUP, SSL_ERROR_SYSCALL,
@@ -100,8 +100,23 @@
     PROTOCOL_TLSv1_2 = 5
 PROTOCOL_TLS_CLIENT = 0x10
 PROTOCOL_TLS_SERVER = 0x11
+HAS_SSLv2 = bool(lib.Cryptography_HAS_SSL2)
+HAS_SSLv3 = SSLv3_method_ok
+HAS_TLSv1 = True # XXX
+HAS_TLSv1_1 = bool(lib.Cryptography_HAS_TLSv1_1)
+HAS_TLSv1_2 = bool(lib.Cryptography_HAS_TLSv1_2)
 HAS_TLSv1_3 = bool(lib.Cryptography_HAS_TLSv1_3)
 
+# Values brute-copied from CPython 3.7. They're documented as meaningless.
+PROTO_MINIMUM_SUPPORTED = -2
+PROTO_MAXIMUM_SUPPORTED = -1
+PROTO_SSLv3 = 0x300
+PROTO_TLSv1 = 0x301
+PROTO_TLSv1_1 = 0x302
+PROTO_TLSv1_2 = 0x303
+PROTO_TLSv1_3 = 0x304
+
+
 _PROTOCOL_NAMES = (name for name in dir(lib) if name.startswith('PROTOCOL_'))
 
 _IntEnum._convert('_SSLMethod', __name__,
@@ -118,6 +133,9 @@
     if hasattr(lib, lib_attr):
         globals()[attr] = getattr(lib, lib_attr)
 
+# from CPython
+_DEFAULT_CIPHERS = 
"DEFAULT:!aNULL:!eNULL:!MD5:!3DES:!DES:!RC4:!IDEA:!SEED:!aDSS:!SRP:!PSK"
+
 # init open ssl
 lib.SSL_load_error_strings()
 lib.SSL_library_init()
diff --git a/lib_pypy/_cffi_ssl/_stdssl/error.py 
b/lib_pypy/_cffi_ssl/_stdssl/error.py
--- a/lib_pypy/_cffi_ssl/_stdssl/error.py
+++ b/lib_pypy/_cffi_ssl/_stdssl/error.py
@@ -33,7 +33,10 @@
      'SSL_ERROR_WANT_WRITE', 'SSL_ERROR_WANT_X509_LOOKUP', 'SSL_ERROR_SYSCALL',
      'SSL_ERROR_SSL', 'SSL_ERROR_WANT_CONNECT', 'SSL_ERROR_EOF',
      'SSL_ERROR_INVALID_ERROR_CODE' ]:
-    setattr(socket, v, locals()[v]) 
+    setattr(socket, v, locals()[v])
+
+class SSLCertVerificationError(SSLError, ValueError):
+    """A certificate could not be verified."""
 
 class SSLZeroReturnError(SSLError):
     """ SSL/TLS session closed cleanly. """
diff --git a/lib_pypy/_ssl/__init__.py b/lib_pypy/_ssl/__init__.py
--- a/lib_pypy/_ssl/__init__.py
+++ b/lib_pypy/_ssl/__init__.py
@@ -1,5 +1,6 @@
-from _cffi_ssl._stdssl import (_PROTOCOL_NAMES, _OPENSSL_API_VERSION,
-        _test_decode_cert, _SSLContext)
+from _cffi_ssl._stdssl import (
+    _PROTOCOL_NAMES, _OPENSSL_API_VERSION, _test_decode_cert, _SSLContext,
+    _DEFAULT_CIPHERS)
 from _cffi_ssl import _stdssl
 from _cffi_ssl._stdssl import *
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to