summaryrefslogtreecommitdiff
path: root/monitor/josef_mover.py
blob: 34680d8f872e55440485acb5a1e09647912b300c (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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/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"