summaryrefslogtreecommitdiff
path: root/tools/certtools.py
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordberg.se>2015-03-25 09:55:03 +0100
committerLinus Nordberg <linus@nordberg.se>2015-03-25 09:55:03 +0100
commit94282d502072f894f3168ef8c2c7527fe4a69e52 (patch)
tree0ae1b630221867acf3f56f08a042cbf94df3943a /tools/certtools.py
parent575d810afbcfcca99f701f3ea42de79bf6e283d1 (diff)
Add tools/fetchacert.py, fetching exactly one chain from a log.
Also move a piece of common code from fetchallcerts.py to certtools.py.
Diffstat (limited to 'tools/certtools.py')
-rw-r--r--tools/certtools.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/tools/certtools.py b/tools/certtools.py
index 0e639f2..ffd631c 100644
--- a/tools/certtools.py
+++ b/tools/certtools.py
@@ -588,3 +588,13 @@ def verify_inclusion_proof(inclusion_proof, index, treesize, leafhash):
chain = zip([(index, 0)] + nodes_for_index(index, treesize), [leafhash] + inclusion_proof)
(_, hash) = reduce(lambda e1, e2: combine_two_hashes(e1, e2, treesize), chain)
return hash
+
+def extract_original_entry(entry):
+ leaf_input = base64.decodestring(entry["leaf_input"])
+ (leaf_cert, timestamp, issuer_key_hash) = unpack_mtl(leaf_input)
+ extra_data = base64.decodestring(entry["extra_data"])
+ if issuer_key_hash != None:
+ (precert, extra_data) = extract_precertificate(extra_data)
+ leaf_cert = precert
+ certchain = decode_certificate_chain(extra_data)
+ return ([leaf_cert] + certchain, timestamp, issuer_key_hash)