1"""Utilities for certificate management."""
2
3import os
4
5certifi_available = False
6certifi_where = None
7try:
8 from certifi import where as certifi_where
9 certifi_available = True
10except ImportError:
11 pass
12
13custom_ca_locater_available = False
14custom_ca_locater_where = None
15try:
16 from ca_certs_locater import get as custom_ca_locater_where
17 custom_ca_locater_available = True
18except ImportError:
19 pass
20
21
22BUILTIN_CA_CERTS = os.path.join(
23 os.path.dirname(os.path.abspath(__file__)), "cacerts.txt"
24)
25
26
27def where():
28 env = os.environ.get("HTTPLIB2_CA_CERTS")
29 if env is not None:
30 if os.path.isfile(env):
31 return env
32 else:
33 raise RuntimeError("Environment variable HTTPLIB2_CA_CERTS not a valid file")
34 if custom_ca_locater_available:
35 return custom_ca_locater_where()
36 if certifi_available:
37 return certifi_where()
38 return BUILTIN_CA_CERTS
39
40
41if __name__ == "__main__":
42 print(where())