Commit 664c2d1f authored by Antoine Pitrou's avatar Antoine Pitrou

Issue #10443: Add the SSLContext.set_default_verify_paths() method.

parent b6d4ee53
...@@ -536,6 +536,15 @@ to speed up repeated connections from the same clients. ...@@ -536,6 +536,15 @@ to speed up repeated connections from the same clients.
following an `OpenSSL specific layout following an `OpenSSL specific layout
<http://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html>`_. <http://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html>`_.
.. 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) .. method:: SSLContext.set_ciphers(ciphers)
Set the available ciphers for sockets created with this context. Set the available ciphers for sockets created with this context.
......
...@@ -412,6 +412,12 @@ class ContextTests(unittest.TestCase): ...@@ -412,6 +412,12 @@ class ContextTests(unittest.TestCase):
'cache_full': 0, '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): class NetworkedTests(unittest.TestCase):
......
...@@ -13,6 +13,8 @@ Core and Builtins ...@@ -13,6 +13,8 @@ Core and Builtins
Library Library
------- -------
- Issue #10443: Add the SSLContext.set_default_verify_paths() method.
- Issue #10440: Support RUSAGE_THREAD as a constant in the resource module. - Issue #10440: Support RUSAGE_THREAD as a constant in the resource module.
Patch by Robert Collins. Patch by Robert Collins.
......
...@@ -1783,6 +1783,16 @@ error: ...@@ -1783,6 +1783,16 @@ error:
return NULL; 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[] = { static PyGetSetDef context_getsetlist[] = {
{"options", (getter) get_options, {"options", (getter) get_options,
(setter) set_options, NULL}, (setter) set_options, NULL},
...@@ -1802,6 +1812,8 @@ static struct PyMethodDef context_methods[] = { ...@@ -1802,6 +1812,8 @@ static struct PyMethodDef context_methods[] = {
METH_VARARGS | METH_KEYWORDS, NULL}, METH_VARARGS | METH_KEYWORDS, NULL},
{"session_stats", (PyCFunction) session_stats, {"session_stats", (PyCFunction) session_stats,
METH_NOARGS, NULL}, METH_NOARGS, NULL},
{"set_default_verify_paths", (PyCFunction) set_default_verify_paths,
METH_NOARGS, NULL},
{NULL, NULL} /* sentinel */ {NULL, NULL} /* sentinel */
}; };
......
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