Source code for runtimepy.net.ssl
"""
A module implementing SSL-related interfaces.
"""
# built-in
import ssl
from typing import Any
[docs]
def handle_possible_ssl(client: bool = True, **kwargs) -> dict[str, Any]:
"""Handle creating an SSL context based on keyword arguments."""
args = ["cafile", "capath", "cadata"]
if (
kwargs.pop("use_ssl", False)
or any(x in kwargs for x in args)
or "certfile" in kwargs
):
context = ssl.create_default_context(
purpose=(
ssl.Purpose.SERVER_AUTH if client else ssl.Purpose.CLIENT_AUTH
),
**{x: kwargs.pop(x, None) for x in args},
)
if "certfile" in kwargs:
context.load_cert_chain(
kwargs.pop("certfile"), keyfile=kwargs.pop("keyfile", None)
)
kwargs["ssl"] = context
return kwargs