diff options
author | Dong-hee Na <donghee.na@python.org> | 2023-04-08 17:56:42 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-08 17:56:42 (GMT) |
commit | 35167043e3a21055a94cf3de6ceccd1585554cb8 (patch) | |
tree | 54aec317a977e034b9cb050b87eab6f32ae43d63 | |
parent | 0ba0ca05d2b56afa0b055db02233e703fe138918 (diff) | |
download | cpython-35167043e3a21055a94cf3de6ceccd1585554cb8.zip cpython-35167043e3a21055a94cf3de6ceccd1585554cb8.tar.gz cpython-35167043e3a21055a94cf3de6ceccd1585554cb8.tar.bz2 |
gh-103242: Migrate SSLContext.set_ecdh_curve not to use deprecated APIs (#103378)
Migrate `SSLContext.set_ecdh_curve()` not to use deprecated OpenSSL APIs.
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2023-04-08-17-13-07.gh-issue-103242.ysI1b3.rst | 2 | ||||
-rw-r--r-- | Modules/_ssl.c | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-04-08-17-13-07.gh-issue-103242.ysI1b3.rst b/Misc/NEWS.d/next/Core and Builtins/2023-04-08-17-13-07.gh-issue-103242.ysI1b3.rst new file mode 100644 index 0000000..38b107f --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2023-04-08-17-13-07.gh-issue-103242.ysI1b3.rst @@ -0,0 +1,2 @@ +Migrate :meth:`~ssl.SSLContext.set_ecdh_curve` method not to use deprecated +OpenSSL APIs. Patch by Dong-hee Na. diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 5f17cd5..c9e2f24 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -4336,8 +4336,6 @@ _ssl__SSLContext_set_ecdh_curve(PySSLContext *self, PyObject *name) { PyObject *name_bytes; int nid; - EC_KEY *key; - if (!PyUnicode_FSConverter(name, &name_bytes)) return NULL; assert(PyBytes_Check(name_bytes)); @@ -4348,13 +4346,20 @@ _ssl__SSLContext_set_ecdh_curve(PySSLContext *self, PyObject *name) "unknown elliptic curve name %R", name); 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) { _setSSLError(get_state_ctx(self), NULL, 0, __FILE__, __LINE__); return NULL; } SSL_CTX_set_tmp_ecdh(self->ctx, 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; } |