cpython: 8b729d65cfd2 (original) (raw)

Mercurial > cpython

changeset 74084:8b729d65cfd2

Issue #13627: Add support for SSL Elliptic Curve-based Diffie-Hellman key exchange, through the SSLContext.set_ecdh_curve() method and the ssl.OP_SINGLE_ECDH_USE option. [#13627]

Antoine Pitrou solipsis@pitrou.net
date Mon, 19 Dec 2011 17:16:51 +0100
parents a3d5f522065f
children a882aa30a713
files Doc/library/ssl.rst Lib/ssl.py Lib/test/ssl_servers.py Lib/test/test_ssl.py Misc/NEWS Modules/_ssl.c
diffstat 6 files changed, 76 insertions(+), 1 deletions(-)[+] [-] Doc/library/ssl.rst 26 Lib/ssl.py 2 Lib/test/ssl_servers.py 5 Lib/test/test_ssl.py 10 Misc/NEWS 4 Modules/_ssl.c 30

line wrap: on

line diff

--- a/Doc/library/ssl.rst +++ b/Doc/library/ssl.rst @@ -428,6 +428,14 @@ Constants .. versionadded:: 3.3 +.. data:: OP_SINGLE_ECDH_USE +

.. data:: HAS_SNI Whether the OpenSSL library has built-in support for the *Server Name @@ -672,6 +680,24 @@ to speed up repeated connections from th when connected, the :meth:SSLSocket.cipher method of SSL sockets will give the currently selected cipher. +.. method:: SSLContext.set_ecdh_curve(curve_name) +

+ .. method:: SSLContext.wrap_socket(sock, server_side=False, [](#l1.40) do_handshake_on_connect=True, suppress_ragged_eofs=True, [](#l1.41) server_hostname=None)

--- a/Lib/ssl.py +++ b/Lib/ssl.py @@ -68,7 +68,7 @@ from _ssl import ( from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED from _ssl import ( OP_ALL, OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_TLSv1,

--- a/Lib/test/ssl_servers.py +++ b/Lib/test/ssl_servers.py @@ -176,6 +176,9 @@ if name == "main": action='store_false', help='be less verbose') parser.add_argument('-s', '--stats', dest='use_stats_handler', default=False, action='store_true', help='always return stats page')

server = HTTPSServer(("", args.port), handler_class, context) if args.verbose:

--- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -99,6 +99,7 @@ class BasicSocketTests(unittest.TestCase ssl.CERT_OPTIONAL ssl.CERT_REQUIRED ssl.OP_CIPHER_SERVER_PREFERENCE

def test_random(self): @@ -558,6 +559,15 @@ class ContextTests(unittest.TestCase): ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) ctx.set_default_verify_paths()

+ class NetworkedTests(unittest.TestCase):

--- a/Misc/NEWS +++ b/Misc/NEWS @@ -419,6 +419,10 @@ Core and Builtins Library ------- +- Issue #13627: Add support for SSL Elliptic Curve-based Diffie-Hellman

--- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -1986,6 +1986,33 @@ set_default_verify_paths(PySSLContext *s Py_RETURN_NONE; } +static PyObject * +set_ecdh_curve(PySSLContext *self, PyObject *name) +{

+

+} + static PyGetSetDef context_getsetlist[] = { {"options", (getter) get_options, (setter) set_options, NULL}, @@ -2007,6 +2034,8 @@ static struct PyMethodDef context_method METH_NOARGS, NULL}, {"set_default_verify_paths", (PyCFunction) set_default_verify_paths, METH_NOARGS, NULL},

#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME r = Py_True;