diff options
| -rwxr-xr-x | siglog-witness.py | 28 | 
1 files changed, 15 insertions, 13 deletions
| diff --git a/siglog-witness.py b/siglog-witness.py index ece3957..fe15c4e 100755 --- a/siglog-witness.py +++ b/siglog-witness.py @@ -232,21 +232,22 @@ def consistency_proof_valid(first, second, proof):      return sn == 0 and fr == first.root_hash() and sr == second.root_hash() -def send_to_log(keyhash_hex, signature_hex): -    post_data = 'signature={}\n'.format(signature_hex) -    post_data += 'key_hash={}\n'.format(keyhash_hex) +def sign_and_send_sig(signing_key, sth): +    hash = sha256(signing_key.verify_key.encode()) +    signature = signing_key.sign(sth.serialise()).signature + +    post_data = 'signature={}\n'.format(hexlify(signature).decode('ascii')) +    post_data += 'key_hash={}\n'.format(hash.hexdigest()) +      req = requests.post(g_args.base_url + 'st/v0/add-cosignature', post_data)      if req.status_code != 200: -        return req +        print("ERROR: Unable to post signature to log: {} => {}: {}". +              format(req.url, +                     req.err_code, +                     req.text)) +        return None +    return True -def sign_and_send_sig(signing_key, sth): -    keyhash = sha256(signing_key.verify_key.encode()).hexdigest() -    status = send_to_log(keyhash, -                         hexlify(signing_key.sign(sth.serialise()).signature).decode('ascii')) -    if status: -        print("ERROR: Unable to post signature to log: {} => {}: {}".format(status.url, -                                                                            status.status_code, -                                                                            status.text))  def main(args):      global g_args      g_args = Parser() @@ -333,7 +334,8 @@ def main(args):      store_tree_head(new)      if consistency_verified or ignore_consistency: -        sign_and_send_sig(signing_key, new) +        if not sign_and_send_sig(signing_key, new): +            return 13      return 0 | 
