summaryrefslogtreecommitdiff
path: root/monitor/josef_experimental.py
blob: 46e4b2e5b9941039ee5fe732741de91627db3ea6 (plain)
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
#!/usr/bin/python
# -*- coding: utf-8 -*-     

import sys
from josef_lib import *
import leveldb
import argparse
import json
from josef_leveldb import *
from datetime import datetime as dt



f = open("sct_example")
s = f.read()
sctentry = json.loads(s)
sct = sctentry["sct"]
# print sct

baseurl = None
logpublickey = get_public_key_from_file("sct_example_logkey.pem")
# print key
# print base64.b64encode(key)
# keyhash = hashlib.sha256(key).digest()
# print base64.b64encode(keyhash)

# print check_sct_signature(None, sctentry, sct, False, key)


timing = timing_point()

leafcert = base64.b64decode(sctentry["leafcert"])
if "issuer_key_hash" in sctentry:
    issuer_key_hash = base64.b64decode(sctentry["issuer_key_hash"])
else:
    issuer_key_hash = None
try:
    if issuer_key_hash:
        signed_entry = pack_precert(leafcert, issuer_key_hash)
    else:
        signed_entry = pack_cert(leafcert)
    check_sct_signature(baseurl, signed_entry, sctentry["sct"], precert=issuer_key_hash, publickey=logpublickey)
    timing_point(timing, "checksig")
except AssertionError, e:
    print "ERROR:", e
except urllib2.HTTPError, e:
    print "ERROR:", e
except ecdsa.keys.BadSignatureError, e:
    print "ERROR: bad signature"

# print sctentry