synapse/scripts/check_event_hash.py

48 lines
1.2 KiB
Python
Raw Normal View History

2014-11-03 19:35:24 +03:00
from synapse.crypto.event_signing import *
from syutil.base64util import encode_base64
import argparse
import hashlib
import sys
import json
2014-11-03 19:35:24 +03:00
class dictobj(dict):
def __init__(self, *args, **kargs):
dict.__init__(self, *args, **kargs)
self.__dict__ = self
def get_dict(self):
return dict(self)
def get_full_dict(self):
return dict(self)
2014-11-03 19:35:24 +03:00
def main():
parser = argparse.ArgumentParser()
2014-11-03 19:35:24 +03:00
parser.add_argument("input_json", nargs="?", type=argparse.FileType('r'),
default=sys.stdin)
args = parser.parse_args()
logging.basicConfig()
event_json = dictobj(json.load(args.input_json))
algorithms = {
"sha256": hashlib.sha256,
}
for alg_name in event_json.hashes:
if check_event_content_hash(event_json, algorithms[alg_name]):
2014-11-03 19:35:24 +03:00
print "PASS content hash %s" % (alg_name,)
else:
print "FAIL content hash %s" % (alg_name,)
for algorithm in algorithms.values():
name, h_bytes = compute_event_reference_hash(event_json, algorithm)
print "Reference hash %s: %s" % (name, encode_base64(h_bytes))
2014-11-03 19:35:24 +03:00
if __name__=="__main__":
main()