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.
43 lines
971 B
43 lines
971 B
2 years ago
|
"""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())
|