#!/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