-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaggregate_issuers.py
executable file
·66 lines (58 loc) · 2.31 KB
/
aggregate_issuers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/python
"""Create a CSV file from the JSON output of sunlight.go."""
import json
import os
import sys
import codecs
def main():
if len(sys.argv) != 3:
sys.exit("Usage: " + sys.argv[0] + " <certs.json> <output_file.csv>")
f_in = open(sys.argv[1], "r")
#f_out = codecs.open(sys.argv[2], "w", encoding='utf8')
f_out = open(sys.argv[2], "w")
blob = json.loads(f_in.read())
certs = blob["Certs"]
issuers = {};
for c in certs:
issuer = c["Issuer"]
if not issuer in issuers:
issuers[issuer] = { "DeprecatedVersion": 0,
"DeprecatedSignatureAlgorithm": 0,
"ExpTooSmall": 0,
"IsCA": 0,
"KeyTooShort": 0,
"MissingCNinSAN": 0,
"ValidPeriodTooLong": 0 }
if c["DeprecatedVersion"]:
issuers[issuer]["DeprecatedVersion"] += 1
if c["DeprecatedSignatureAlgorithm"]:
issuers[issuer]["DeprecatedSignatureAlgorithm"] += 1
if c["ExpTooSmall"]:
issuers[issuer]["ExpTooSmall"] += 1
if c["IsCA"]:
issuers[issuer]["IsCA"] += 1
if c["KeyTooShort"]:
issuers[issuer]["KeyTooShort"] += 1
if c["MissingCNinSAN"]:
issuers[issuer]["MissingCNinSAN"] += 1
if c["ValidPeriodTooLong"]:
issuers[issuer]["ValidPeriodTooLong"] += 1
f_out.write("issuer,deprecatedVersion,deprecatedSignatureAlgorithm,expTooSmall,isCA,keyTooShort,missingCNinSAN,validPeriodTooLong,n_violations\n");
for issuer in issuers:
n_violations = (issuers[issuer]["DeprecatedVersion"] +
issuers[issuer]["DeprecatedSignatureAlgorithm"] +
issuers[issuer]["ExpTooSmall"] +
issuers[issuer]["KeyTooShort"] +
issuers[issuer]["MissingCNinSAN"] +
issuers[issuer]["ValidPeriodTooLong"])
f_out.write("%s,%d,%d,%d,%d,%d,%d,%d,%d\n" % (
issuer.encode('utf-8').replace(",", " - "),
issuers[issuer]["DeprecatedVersion"],
issuers[issuer]["DeprecatedSignatureAlgorithm"],
issuers[issuer]["ExpTooSmall"],
issuers[issuer]["IsCA"],
issuers[issuer]["KeyTooShort"],
issuers[issuer]["MissingCNinSAN"],
issuers[issuer]["ValidPeriodTooLong"], n_violations));
if __name__ == "__main__":
main()