diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/certtools.py | 37 | ||||
-rwxr-xr-x | tools/merge.py | 28 | ||||
-rwxr-xr-x | tools/testcase1.py | 17 |
3 files changed, 49 insertions, 33 deletions
diff --git a/tools/certtools.py b/tools/certtools.py index cbb4ff7..af94fb8 100644 --- a/tools/certtools.py +++ b/tools/certtools.py @@ -42,22 +42,31 @@ def get_cert_info(s): result[key] = value return result -def get_certs_from_file(certfile): - certs = [] - cert = "" - incert = False - for line in open(certfile): +def get_pemlike(filename, marker): + entries = [] + entry = "" + inentry = False + + for line in open(filename): line = line.strip() - if line == "-----BEGIN CERTIFICATE-----": - cert = "" - incert = True - elif line == "-----END CERTIFICATE-----": - certs.append(base64.decodestring(cert)) - incert = False - elif incert: - cert += line - return certs + if line == "-----BEGIN " + marker + "-----": + entry = "" + inentry = True + elif line == "-----END " + marker + "-----": + entries.append(base64.decodestring(entry)) + inentry = False + elif inentry: + entry += line + return entries + +def get_certs_from_file(certfile): + return get_pemlike(certfile, "CERTIFICATE") + +def get_eckey_from_file(keyfile): + keys = get_pemlike(keyfile, "EC PRIVATE KEY") + assert len(keys) == 1 + return keys[0] def get_root_cert(issuer): accepted_certs = \ diff --git a/tools/merge.py b/tools/merge.py index 1cc75ef..2b83f54 100755 --- a/tools/merge.py +++ b/tools/merge.py @@ -4,20 +4,29 @@ # Copyright (c) 2014, NORDUnet A/S. # See LICENSE for licensing information. +import argparse import json import base64 import urllib import urllib2 import sys import time -from certtools import build_merkle_tree, create_sth_signature, check_sth_signature +from certtools import build_merkle_tree, create_sth_signature, check_sth_signature, get_eckey_from_file -ctbaseurl = "https://127.0.0.1:8080/" -frontendnodes = ["https://127.0.0.1:8082/"] -storagenodes = ["https://127.0.0.1:8081/"] +parser = argparse.ArgumentParser(description="") +parser.add_argument("--baseurl", metavar="url", help="Base URL for CT server", required=True) +parser.add_argument("--frontend", action="append", metavar="url", help="Base URL for frontend server", required=True) +parser.add_argument("--storage", action="append", metavar="url", help="Base URL for storage server", required=True) +parser.add_argument("--mergedb", metavar="dir", help="Merge database directory", required=True) +parser.add_argument("--keyfile", metavar="keyfile", help="File containing log key", required=True) +args = parser.parse_args() -chainsdir = "../rel/mergedb/chains" -logorderfile = "../rel/mergedb/logorder" +ctbaseurl = args.baseurl +frontendnodes = args.frontend +storagenodes = args.storage + +chainsdir = args.mergedb + "/chains" +logorderfile = args.mergedb + "/logorder" def parselogrow(row): return base64.b16decode(row) @@ -165,12 +174,7 @@ tree = build_merkle_tree(logorder) tree_size = len(logorder) root_hash = tree[-1][0] timestamp = int(time.time() * 1000) -privatekey = base64.decodestring( - "MHcCAQEEIMM/FjZ4FSzfENTTwGpTve6CP+IVr" - "Y7p8OKV634uJI/foAoGCCqGSM49AwEHoUQDQg" - "AE4qWq6afhBUi0OdcWUYhyJLNXTkGqQ9PMS5l" - "qoCgkV2h1ZvpNjBH2u8UbgcOQwqDo66z6BWQJ" - "GolozZYmNHE2kQ==") +privatekey = get_eckey_from_file(args.keyfile) tree_head_signature = create_sth_signature(tree_size, timestamp, root_hash, privatekey) diff --git a/tools/testcase1.py b/tools/testcase1.py index 639cd69..415d475 100755 --- a/tools/testcase1.py +++ b/tools/testcase1.py @@ -120,16 +120,19 @@ def get_and_check_entry(timestamp, chain, leaf_index): len(submittedcertchain), len(submittedcertchain)) +def merge(): + return subprocess.call(["./merge.py", "--baseurl", "https://127.0.0.1:8080/", "--frontend", "https://127.0.0.1:8082/", "--storage", "https://127.0.0.1:8081/", "--mergedb", "../rel/mergedb", "--keyfile", "../rel/test/eckey.pem"]) + print_and_check_tree_size(0) -mergeresult = subprocess.call(["./merge.py"]) +mergeresult = merge() assert_equal(mergeresult, 0, "merge", quiet=True) testgroup("cert1") result1 = do_add_chain(cc1) -mergeresult = subprocess.call(["./merge.py"]) +mergeresult = merge() assert_equal(mergeresult, 0, "merge", quiet=True) print_and_check_tree_size(1) @@ -138,7 +141,7 @@ result2 = do_add_chain(cc1) assert_equal(result2["timestamp"], result1["timestamp"], "timestamp") -mergeresult = subprocess.call(["./merge.py"]) +mergeresult = merge() assert_equal(mergeresult, 0, "merge", quiet=True) print_and_check_tree_size(1) @@ -152,7 +155,7 @@ testgroup("cert2") result3 = do_add_chain(cc2) -mergeresult = subprocess.call(["./merge.py"]) +mergeresult = merge() assert_equal(mergeresult, 0, "merge", quiet=True) print_and_check_tree_size(2) @@ -164,7 +167,7 @@ testgroup("cert3") result4 = do_add_chain(cc3) -mergeresult = subprocess.call(["./merge.py"]) +mergeresult = merge() assert_equal(mergeresult, 0, "merge", quiet=True) print_and_check_tree_size(3) @@ -177,7 +180,7 @@ testgroup("cert4") result5 = do_add_chain(cc4) -mergeresult = subprocess.call(["./merge.py"]) +mergeresult = merge() assert_equal(mergeresult, 0, "merge", quiet=True) print_and_check_tree_size(4) @@ -191,7 +194,7 @@ testgroup("cert5") result6 = do_add_chain(cc5) -mergeresult = subprocess.call(["./merge.py"]) +mergeresult = merge() assert_equal(mergeresult, 0, "merge", quiet=True) print_and_check_tree_size(5) |