sigs2dot/sigs2dot.py

50 lines
1.3 KiB
Python
Raw Normal View History

2016-07-12 02:01:52 +02:00
#!/usr/bin/env python3
2016-07-11 04:51:34 +02:00
import string, sys
def sanitize(s):
final = ''
for char in s:
if char in string.ascii_letters:
final += char
return final
2016-07-12 01:58:38 +02:00
def sanitize2(s):
for char in ["\""]:
s = s.replace(char,"")
return s
2017-01-18 15:13:32 +01:00
def get(label, rev = False):
2016-07-12 01:58:38 +02:00
s = "\"" + sanitize2(label) + "\""
if rev:
s += '[color="red",label="revocation"]'
2016-07-11 04:51:34 +02:00
return s
f = open(sys.argv[1], "r").read().split('\n')
inuid = False
print("digraph test {")
# print("\tsize=\"24,24\";")
# print("\tratio=1;")
2016-07-15 16:05:19 +02:00
print("\tsplines=true;")
print("\toverlap=false;")
2016-07-11 04:51:34 +02:00
print("\tgraph [overlap = false];")
for line in f:
if "User ID not found" in line:
continue
if line[:3] == 'uid':
inuid = True
2016-07-12 01:58:38 +02:00
# current_id = " ".join(line.split()[1:])
current_id = line[25:]
2016-07-11 04:51:34 +02:00
continue
elif line[:3] == 'sub':
inuid = False
continue
if inuid:
2016-07-12 01:58:38 +02:00
if line[:3] in ["sig", "rev"]:
2016-07-11 04:51:34 +02:00
currentsig = line[42:]
if currentsig in current_id:
# Its a selfsig
continue
if "PGP Global Directory Verification Key" in currentsig:
continue
2016-07-12 01:58:38 +02:00
rev = line[:3] == "rev"
2016-07-11 04:51:34 +02:00
else:
continue
2017-01-18 15:13:32 +01:00
print("\t" + get(currentsig) + " -> " + get(current_id, rev) + ";")
2016-07-11 04:51:34 +02:00
print("}")