Index: Doc/library/ssl.rst =================================================================== --- Doc/library/ssl.rst (révision 86493) +++ Doc/library/ssl.rst (copie de travail) @@ -536,6 +536,15 @@ following an `OpenSSL specific layout `_. +.. method:: SSLContext.set_default_verify_paths() + + Load a set of default "certification authority" (CA) certificates from + a filesystem path defined when building the OpenSSL library. Unfortunately, + there's no easy way to know whether this method succeeds: no error is + returned if no certificates are to be found. When the OpenSSL library is + provided as part of the operating system, though, it is likely to be + configured properly. + .. method:: SSLContext.set_ciphers(ciphers) Set the available ciphers for sockets created with this context. Index: Lib/test/test_ssl.py =================================================================== --- Lib/test/test_ssl.py (révision 86493) +++ Lib/test/test_ssl.py (copie de travail) @@ -412,7 +412,13 @@ 'cache_full': 0, }) + def test_set_default_verify_paths(self): + # There's not much we can do to test that it acts as expected, + # so just check it doesn't crash or raise an exception. + ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) + ctx.set_default_verify_paths() + class NetworkedTests(unittest.TestCase): def test_connect(self): Index: Modules/_ssl.c =================================================================== --- Modules/_ssl.c (révision 86493) +++ Modules/_ssl.c (copie de travail) @@ -1783,6 +1783,16 @@ return NULL; } +static PyObject * +set_default_verify_paths(PySSLContext *self, PyObject *unused) +{ + if (!SSL_CTX_set_default_verify_paths(self->ctx)) { + _setSSLError(NULL, 0, __FILE__, __LINE__); + return NULL; + } + Py_RETURN_NONE; +} + static PyGetSetDef context_getsetlist[] = { {"options", (getter) get_options, (setter) set_options, NULL}, @@ -1802,6 +1812,8 @@ METH_VARARGS | METH_KEYWORDS, NULL}, {"session_stats", (PyCFunction) session_stats, METH_NOARGS, NULL}, + {"set_default_verify_paths", (PyCFunction) set_default_verify_paths, + METH_NOARGS, NULL}, {NULL, NULL} /* sentinel */ };