Author: Amaury Forgeot d'Arc <[email protected]>
Branch: stdlib-2.7.9
Changeset: r75656:5be3e3aef9b7
Date: 2015-02-02 21:20 +0100
http://bitbucket.org/pypy/pypy/changeset/5be3e3aef9b7/
Log: ssl: Add ALERT_DESCRIPTION_* constants
diff --git a/pypy/module/_ssl/__init__.py b/pypy/module/_ssl/__init__.py
--- a/pypy/module/_ssl/__init__.py
+++ b/pypy/module/_ssl/__init__.py
@@ -1,4 +1,5 @@
from pypy.interpreter.mixedmodule import MixedModule
+from pypy.module._ssl import ssl_data
class Module(MixedModule):
"""Implementation module for SSL socket operations.
@@ -36,6 +37,9 @@
Module.interpleveldefs['RAND_status'] = "interp_ssl.RAND_status"
Module.interpleveldefs['RAND_egd'] = "interp_ssl.RAND_egd"
+ for name, value in ssl_data.ALERT_DESCRIPTION_CODES.items():
+ Module.interpleveldefs[name] = "space.wrap(%r)" % value
+
super(Module, cls).buildloaders()
def startup(self, space):
diff --git a/pypy/module/_ssl/ssl_data.py b/pypy/module/_ssl/ssl_data.py
--- a/pypy/module/_ssl/ssl_data.py
+++ b/pypy/module/_ssl/ssl_data.py
@@ -347,6 +347,21 @@
setattr(CConfig, code, rffi_platform.DefinedConstantInteger(
'%s_R_%s' % (lib, code)))
+# Constants for ALERT_DESCRIPTION_ error codes
+AD_NAMES = """
+ CLOSE_NOTIFY UNEXPECTED_MESSAGE BAD_RECORD_MAC RECORD_OVERFLOW
+ DECOMPRESSION_FAILURE HANDSHAKE_FAILURE BAD_CERTIFICATE
+ UNSUPPORTED_CERTIFICATE CERTIFICATE_REVOKED CERTIFICATE_EXPIRED
+ CERTIFICATE_UNKNOWN ILLEGAL_PARAMETER UNKNOWN_CA ACCESS_DENIED
+ DECODE_ERROR DECRYPT_ERROR PROTOCOL_VERSION INSUFFICIENT_SECURITY
+ INTERNAL_ERROR USER_CANCELLED NO_RENEGOTIATION UNSUPPORTED_EXTENSION
+ CERTIFICATE_UNOBTAINABLE UNRECOGNIZED_NAME BAD_CERTIFICATE_STATUS_RESPONSE
+ BAD_CERTIFICATE_HASH_VALUE UNKNOWN_PSK_IDENTITY
+ """.split()
+for name in AD_NAMES:
+ setattr(CConfig, name, rffi_platform.DefinedConstantInteger(
+ 'SSL_AD_%s' % name))
+
cconfig = rffi_platform.configure(CConfig)
LIBRARY_CODES_TO_NAMES = {}
@@ -356,3 +371,8 @@
for lib, code in error_codes:
ERROR_CODES_TO_NAMES[cconfig[lib], cconfig[code]] = code
+ALERT_DESCRIPTION_CODES = {}
+for name in AD_NAMES:
+ value = cconfig[name]
+ if value is not None:
+ ALERT_DESCRIPTION_CODES['ALERT_DESCRIPTION_%s' % name] = value
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
@@ -38,6 +38,8 @@
assert isinstance(_ssl.OPENSSL_VERSION, str)
assert 'openssl' in _ssl.OPENSSL_VERSION.lower()
+ assert isinstance(_ssl.ALERT_DESCRIPTION_ACCESS_DENIED, int)
+
def test_RAND_add(self):
import _ssl
if not hasattr(_ssl, "RAND_add"):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit