mirror of https://github.com/python/cpython
gh-103242: Migrate SSLContext.set_ecdh_curve not to use deprecated APIs (#103378)
Migrate `SSLContext.set_ecdh_curve()` not to use deprecated OpenSSL APIs.
This commit is contained in:
parent
0ba0ca05d2
commit
35167043e3
|
@ -0,0 +1,2 @@
|
||||||
|
Migrate :meth:`~ssl.SSLContext.set_ecdh_curve` method not to use deprecated
|
||||||
|
OpenSSL APIs. Patch by Dong-hee Na.
|
|
@ -4336,8 +4336,6 @@ _ssl__SSLContext_set_ecdh_curve(PySSLContext *self, PyObject *name)
|
||||||
{
|
{
|
||||||
PyObject *name_bytes;
|
PyObject *name_bytes;
|
||||||
int nid;
|
int nid;
|
||||||
EC_KEY *key;
|
|
||||||
|
|
||||||
if (!PyUnicode_FSConverter(name, &name_bytes))
|
if (!PyUnicode_FSConverter(name, &name_bytes))
|
||||||
return NULL;
|
return NULL;
|
||||||
assert(PyBytes_Check(name_bytes));
|
assert(PyBytes_Check(name_bytes));
|
||||||
|
@ -4348,13 +4346,20 @@ _ssl__SSLContext_set_ecdh_curve(PySSLContext *self, PyObject *name)
|
||||||
"unknown elliptic curve name %R", name);
|
"unknown elliptic curve name %R", name);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
key = EC_KEY_new_by_curve_name(nid);
|
#if OPENSSL_VERSION_MAJOR < 3
|
||||||
|
EC_KEY *key = EC_KEY_new_by_curve_name(nid);
|
||||||
if (key == NULL) {
|
if (key == NULL) {
|
||||||
_setSSLError(get_state_ctx(self), NULL, 0, __FILE__, __LINE__);
|
_setSSLError(get_state_ctx(self), NULL, 0, __FILE__, __LINE__);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
SSL_CTX_set_tmp_ecdh(self->ctx, key);
|
SSL_CTX_set_tmp_ecdh(self->ctx, key);
|
||||||
EC_KEY_free(key);
|
EC_KEY_free(key);
|
||||||
|
#else
|
||||||
|
if (!SSL_CTX_set1_groups(self->ctx, &nid, 1)) {
|
||||||
|
_setSSLError(get_state_ctx(self), NULL, 0, __FILE__, __LINE__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue