Skip to content

Commit 5a0bd02

Browse files
lattwoodpetyaslavova
authored andcommitted
Support using ssl.VerifyMode enum for ssl_cert_reqs (#3346)
1 parent 41ce3a2 commit 5a0bd02

File tree

5 files changed

+13
-10
lines changed

5 files changed

+13
-10
lines changed

redis/asyncio/client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,10 @@
8080
)
8181

8282
if TYPE_CHECKING and SSL_AVAILABLE:
83-
from ssl import TLSVersion
83+
from ssl import TLSVersion, VerifyMode
8484
else:
8585
TLSVersion = None
86+
VerifyMode = None
8687

8788
PubSubHandler = Callable[[Dict[str, str]], Awaitable[None]]
8889
_KeyT = TypeVar("_KeyT", bound=KeyT)
@@ -227,7 +228,7 @@ def __init__(
227228
ssl: bool = False,
228229
ssl_keyfile: Optional[str] = None,
229230
ssl_certfile: Optional[str] = None,
230-
ssl_cert_reqs: str = "required",
231+
ssl_cert_reqs: Union[str, VerifyMode] = "required",
231232
ssl_ca_certs: Optional[str] = None,
232233
ssl_ca_data: Optional[str] = None,
233234
ssl_check_hostname: bool = False,

redis/asyncio/cluster.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,10 @@
7474
)
7575

7676
if SSL_AVAILABLE:
77-
from ssl import TLSVersion
77+
from ssl import TLSVersion, VerifyMode
7878
else:
7979
TLSVersion = None
80+
VerifyMode = None
8081

8182
TargetNodesT = TypeVar(
8283
"TargetNodesT", str, "ClusterNode", List["ClusterNode"], Dict[Any, "ClusterNode"]
@@ -267,7 +268,7 @@ def __init__(
267268
ssl: bool = False,
268269
ssl_ca_certs: Optional[str] = None,
269270
ssl_ca_data: Optional[str] = None,
270-
ssl_cert_reqs: str = "required",
271+
ssl_cert_reqs: Union[str, VerifyMode] = "required",
271272
ssl_certfile: Optional[str] = None,
272273
ssl_check_hostname: bool = False,
273274
ssl_keyfile: Optional[str] = None,

redis/asyncio/connection.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,7 @@ def __init__(
768768
self,
769769
ssl_keyfile: Optional[str] = None,
770770
ssl_certfile: Optional[str] = None,
771-
ssl_cert_reqs: str = "required",
771+
ssl_cert_reqs: Union[str, ssl.VerifyMode] = "required",
772772
ssl_ca_certs: Optional[str] = None,
773773
ssl_ca_data: Optional[str] = None,
774774
ssl_check_hostname: bool = False,
@@ -842,7 +842,7 @@ def __init__(
842842
self,
843843
keyfile: Optional[str] = None,
844844
certfile: Optional[str] = None,
845-
cert_reqs: Optional[str] = None,
845+
cert_reqs: Optional[Union[str, ssl.VerifyMode]] = None,
846846
ca_certs: Optional[str] = None,
847847
ca_data: Optional[str] = None,
848848
check_hostname: bool = False,
@@ -855,7 +855,7 @@ def __init__(
855855
self.keyfile = keyfile
856856
self.certfile = certfile
857857
if cert_reqs is None:
858-
self.cert_reqs = ssl.CERT_NONE
858+
cert_reqs = ssl.CERT_NONE
859859
elif isinstance(cert_reqs, str):
860860
CERT_REQS = { # noqa: N806
861861
"none": ssl.CERT_NONE,
@@ -866,7 +866,8 @@ def __init__(
866866
raise RedisError(
867867
f"Invalid SSL Certificate Requirements Flag: {cert_reqs}"
868868
)
869-
self.cert_reqs = CERT_REQS[cert_reqs]
869+
cert_reqs = CERT_REQS[cert_reqs]
870+
self.cert_reqs = cert_reqs
870871
self.ca_certs = ca_certs
871872
self.ca_data = ca_data
872873
self.check_hostname = check_hostname

redis/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ def __init__(
210210
ssl: bool = False,
211211
ssl_keyfile: Optional[str] = None,
212212
ssl_certfile: Optional[str] = None,
213-
ssl_cert_reqs: str = "required",
213+
ssl_cert_reqs: Union[str, "ssl.VerifyMode"] = "required",
214214
ssl_ca_certs: Optional[str] = None,
215215
ssl_ca_path: Optional[str] = None,
216216
ssl_ca_data: Optional[str] = None,

redis/connection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1017,7 +1017,7 @@ def __init__(
10171017
Args:
10181018
ssl_keyfile: Path to an ssl private key. Defaults to None.
10191019
ssl_certfile: Path to an ssl certificate. Defaults to None.
1020-
ssl_cert_reqs: The string value for the SSLContext.verify_mode (none, optional, required). Defaults to "required".
1020+
ssl_cert_reqs: The string value for the SSLContext.verify_mode (none, optional, required), or an ssl.VerifyMode. Defaults to "required".
10211021
ssl_ca_certs: The path to a file of concatenated CA certificates in PEM format. Defaults to None.
10221022
ssl_ca_data: Either an ASCII string of one or more PEM-encoded certificates or a bytes-like object of DER-encoded certificates.
10231023
ssl_check_hostname: If set, match the hostname during the SSL handshake. Defaults to False.

0 commit comments

Comments
 (0)