#!/usr/bin/python # -*- coding: utf-8 -*- import sys import time import datetime import os import json from precerttools import cleanprecert from monitor_conf import * from josef_lib import * def print_reply(rep, entry): t = datetime.datetime.fromtimestamp(rep['timestamp'] / 1000, UTC()).strftime("%Y-%m-%d %H:%M:%S") log_id = rep["id"] for log in ctlogs: if str(log_id) == log["id"]: l = log break else: l = {"name" : "Log not found" + log_id} print "Time:", t if entry[2]: print "Type: Precert" signed_entry = pack_precert(cleanprecert(entry[0][0]), entry[2]) else: print "Type: Cert" signed_entry = pack_cert(entry[0][0]) key = base64.b64decode(log["key"]) try: check_sct_signature(log["url"], signed_entry, rep, entry[2], key) print "Signature: OK" except: print "Could not verify signature!" print "" source = [ctlogs[0]] dests = [ctlogs[0]] # source = ctlogs # dests = ctlogs first = 0 last = 1 # print entries for s_log in source: entries = get_entries(s_log["url"], first, last)["entries"] print "\n\nSource: " + s_log["name"] + "\n" for d_log in dests: for item in entries: print "Log: " + d_log["name"] try: entry = extract_original_entry(item) if entry[2]: precert = True else: precert = False submission = [] for e in entry[0]: submission.append(base64.b64encode(e)) if entry[2]: res = add_prechain(d_log["url"], {"chain" : submission}) else: res = add_chain(d_log["url"], {"chain" : submission}) print_reply(res, entry) # time.sleep(5) except KeyboardInterrupt: sys.exit() except: print "FAILED!\n"