Commit 6db4944c authored by Antoine Pitrou's avatar Antoine Pitrou

Issue #13635: Add ssl.OP_CIPHER_SERVER_PREFERENCE, so that SSL servers

choose the cipher based on their own preferences, rather than on the
client's.
parent bfaa79a9
...@@ -421,6 +421,13 @@ Constants ...@@ -421,6 +421,13 @@ Constants
.. versionadded:: 3.2 .. versionadded:: 3.2
.. data:: OP_CIPHER_SERVER_PREFERENCE
Use the server's cipher ordering preference, rather than the client's.
This option has no effect on client sockets and SSLv2 server sockets.
.. versionadded:: 3.3
.. data:: HAS_SNI .. data:: HAS_SNI
Whether the OpenSSL library has built-in support for the *Server Name Whether the OpenSSL library has built-in support for the *Server Name
......
...@@ -66,7 +66,10 @@ from _ssl import ( ...@@ -66,7 +66,10 @@ from _ssl import (
SSLSyscallError, SSLEOFError, SSLSyscallError, SSLEOFError,
) )
from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
from _ssl import OP_ALL, OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_TLSv1 from _ssl import (
OP_ALL, OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_TLSv1,
OP_CIPHER_SERVER_PREFERENCE,
)
from _ssl import RAND_status, RAND_egd, RAND_add, RAND_bytes, RAND_pseudo_bytes from _ssl import RAND_status, RAND_egd, RAND_add, RAND_bytes, RAND_pseudo_bytes
from _ssl import ( from _ssl import (
SSL_ERROR_ZERO_RETURN, SSL_ERROR_ZERO_RETURN,
......
...@@ -98,6 +98,7 @@ class BasicSocketTests(unittest.TestCase): ...@@ -98,6 +98,7 @@ class BasicSocketTests(unittest.TestCase):
ssl.CERT_NONE ssl.CERT_NONE
ssl.CERT_OPTIONAL ssl.CERT_OPTIONAL
ssl.CERT_REQUIRED ssl.CERT_REQUIRED
ssl.OP_CIPHER_SERVER_PREFERENCE
self.assertIn(ssl.HAS_SNI, {True, False}) self.assertIn(ssl.HAS_SNI, {True, False})
def test_random(self): def test_random(self):
......
...@@ -419,6 +419,10 @@ Core and Builtins ...@@ -419,6 +419,10 @@ Core and Builtins
Library Library
------- -------
- Issue #13635: Add ssl.OP_CIPHER_SERVER_PREFERENCE, so that SSL servers
choose the cipher based on their own preferences, rather than on the
client's.
- Issue #11813: Fix inspect.getattr_static for modules. Patch by Andreas - Issue #11813: Fix inspect.getattr_static for modules. Patch by Andreas
Stührk. Stührk.
......
...@@ -2450,6 +2450,8 @@ PyInit__ssl(void) ...@@ -2450,6 +2450,8 @@ PyInit__ssl(void)
PyModule_AddIntConstant(m, "OP_NO_SSLv2", SSL_OP_NO_SSLv2); PyModule_AddIntConstant(m, "OP_NO_SSLv2", SSL_OP_NO_SSLv2);
PyModule_AddIntConstant(m, "OP_NO_SSLv3", SSL_OP_NO_SSLv3); PyModule_AddIntConstant(m, "OP_NO_SSLv3", SSL_OP_NO_SSLv3);
PyModule_AddIntConstant(m, "OP_NO_TLSv1", SSL_OP_NO_TLSv1); PyModule_AddIntConstant(m, "OP_NO_TLSv1", SSL_OP_NO_TLSv1);
PyModule_AddIntConstant(m, "OP_CIPHER_SERVER_PREFERENCE",
SSL_OP_CIPHER_SERVER_PREFERENCE);
#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME #ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
r = Py_True; r = Py_True;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment