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
|