diff --git a/Modules/_ssl.c b/Modules/_ssl.c --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -495,7 +495,7 @@ PySSL_BEGIN_ALLOW_THREADS self->ssl = SSL_new(ctx); PySSL_END_ALLOW_THREADS - SSL_set_app_data(self->ssl,self); + SSL_set_app_data(self->ssl,self); SSL_set_fd(self->ssl, Py_SAFE_DOWNCAST(sock->sock_fd, SOCKET_T, int)); mode = SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER; #ifdef SSL_MODE_AUTO_RETRY @@ -2319,6 +2319,30 @@ return 0; } +static PyObject * +get_verify_depth(PySSLContext *self) +{ + int n; + n = SSL_CTX_get_verify_depth(self->ctx); + return PyInt_FromLong(n); +} + + +static int +set_verify_depth(PySSLContext *self, PyObject *arg) +{ + int depth; + if (!PyArg_Parse(arg, "i", &depth)) + return -1; + if (depth < 0 || depth > 100) { + PyErr_SetString(PyExc_ValueError, + "invalid value for depth"); + return -1; + } + SSL_CTX_set_verify_depth(self->ctx, depth); + return 0; +} + #ifdef HAVE_OPENSSL_VERIFY_PARAM static PyObject * get_verify_flags(PySSLContext *self, void *c) @@ -3254,6 +3278,8 @@ #endif {"verify_mode", (getter) get_verify_mode, (setter) set_verify_mode, NULL}, + {"verify_depth", (getter) get_verify_depth, + (setter) set_verify_depth, NULL}, {NULL}, /* sentinel */ };