python-urllib3/python-urllib3-py315-ssl.patch
Filipe Rosset fed40e731b Deal with ssl.PROTOCOL_TLSv1 removal from Python built with OpenSSL 4+
OpenSSL 4+ removed TLSv1 and TLSv1.1 support, this patched address this
issue in rawhide, note the upstream already received another patch:

https://github.com/urllib3/urllib3/pull/5097

Resolves: rhbz#2504593

Signed-off-by: Filipe Rosset <rosset.filipe@gmail.com>
2026-07-27 16:23:08 -03:00

67 lines
3 KiB
Diff

--- a/src/urllib3/contrib/pyopenssl.py
+++ b/src/urllib3/contrib/pyopenssl.py
@@ -69,9 +69,11 @@
_openssl_versions: dict[int, int] = {
util.ssl_.PROTOCOL_TLS: OpenSSL.SSL.SSLv23_METHOD, # type: ignore[attr-defined]
util.ssl_.PROTOCOL_TLS_CLIENT: OpenSSL.SSL.SSLv23_METHOD, # type: ignore[attr-defined]
- ssl.PROTOCOL_TLSv1: OpenSSL.SSL.TLSv1_METHOD,
}
+if hasattr(ssl, "PROTOCOL_TLSv1") and hasattr(OpenSSL.SSL, "TLSv1_METHOD"):
+ _openssl_versions[ssl.PROTOCOL_TLSv1] = OpenSSL.SSL.TLSv1_METHOD
+
if hasattr(ssl, "PROTOCOL_TLSv1_1") and hasattr(OpenSSL.SSL, "TLSv1_1_METHOD"):
_openssl_versions[ssl.PROTOCOL_TLSv1_1] = OpenSSL.SSL.TLSv1_1_METHOD
--- a/test/test_ssl.py
+++ b/test/test_ssl.py
@@ -173,15 +173,15 @@
"kwargs",
[
{
- "ssl_version": ssl.PROTOCOL_TLSv1,
+ "ssl_version": getattr(ssl, "PROTOCOL_TLSv1", getattr(ssl, "PROTOCOL_TLSv1_2", 1)),
"ssl_minimum_version": ssl.TLSVersion.MINIMUM_SUPPORTED,
},
{
- "ssl_version": ssl.PROTOCOL_TLSv1,
+ "ssl_version": getattr(ssl, "PROTOCOL_TLSv1", getattr(ssl, "PROTOCOL_TLSv1_2", 1)),
"ssl_maximum_version": ssl.TLSVersion.TLSv1,
},
{
- "ssl_version": ssl.PROTOCOL_TLSv1,
+ "ssl_version": getattr(ssl, "PROTOCOL_TLSv1", getattr(ssl, "PROTOCOL_TLSv1_2", 1)),
"ssl_minimum_version": ssl.TLSVersion.MINIMUM_SUPPORTED,
"ssl_maximum_version": ssl.TLSVersion.MAXIMUM_SUPPORTED,
},
@@ -222,10 +222,10 @@
@pytest.mark.parametrize(
"kwargs",
[
- {"ssl_version": ssl.PROTOCOL_TLSv1, "ssl_minimum_version": None},
- {"ssl_version": ssl.PROTOCOL_TLSv1, "ssl_maximum_version": None},
+ {"ssl_version": getattr(ssl, "PROTOCOL_TLSv1", getattr(ssl, "PROTOCOL_TLSv1_2", 1)), "ssl_minimum_version": None},
+ {"ssl_version": getattr(ssl, "PROTOCOL_TLSv1", getattr(ssl, "PROTOCOL_TLSv1_2", 1)), "ssl_maximum_version": None},
{
- "ssl_version": ssl.PROTOCOL_TLSv1,
+ "ssl_version": getattr(ssl, "PROTOCOL_TLSv1", getattr(ssl, "PROTOCOL_TLSv1_2", 1)),
"ssl_minimum_version": None,
"ssl_maximum_version": None,
},
--- a/test/test_util.py
+++ b/test/test_util.py
@@ -982,9 +982,11 @@
@pytest.mark.parametrize(
"candidate, version",
[
- (ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1),
- ("PROTOCOL_TLSv1", ssl.PROTOCOL_TLSv1),
- ("TLSv1", ssl.PROTOCOL_TLSv1),
+ *([
+ (getattr(ssl, "PROTOCOL_TLSv1", None), getattr(ssl, "PROTOCOL_TLSv1", None)),
+ ("PROTOCOL_TLSv1", getattr(ssl, "PROTOCOL_TLSv1", None)),
+ ("TLSv1", getattr(ssl, "PROTOCOL_TLSv1", None)),
+ ] if hasattr(ssl, "PROTOCOL_TLSv1") else []),
(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23),
],
)