You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
971 B
42 lines
971 B
"""Utilities for certificate management."""
|
|
|
|
import os
|
|
|
|
certifi_available = False
|
|
certifi_where = None
|
|
try:
|
|
from certifi import where as certifi_where
|
|
certifi_available = True
|
|
except ImportError:
|
|
pass
|
|
|
|
custom_ca_locater_available = False
|
|
custom_ca_locater_where = None
|
|
try:
|
|
from ca_certs_locater import get as custom_ca_locater_where
|
|
custom_ca_locater_available = True
|
|
except ImportError:
|
|
pass
|
|
|
|
|
|
BUILTIN_CA_CERTS = os.path.join(
|
|
os.path.dirname(os.path.abspath(__file__)), "cacerts.txt"
|
|
)
|
|
|
|
|
|
def where():
|
|
env = os.environ.get("HTTPLIB2_CA_CERTS")
|
|
if env is not None:
|
|
if os.path.isfile(env):
|
|
return env
|
|
else:
|
|
raise RuntimeError("Environment variable HTTPLIB2_CA_CERTS not a valid file")
|
|
if custom_ca_locater_available:
|
|
return custom_ca_locater_where()
|
|
if certifi_available:
|
|
return certifi_where()
|
|
return BUILTIN_CA_CERTS
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print(where())
|
|
|