1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from synapse.crypto.event_signing import *
- from unpaddedbase64 import encode_base64
- import argparse
- import hashlib
- import sys
- import json
- 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)
- def get_pdu_json(self):
- return dict(self)
- def main():
- parser = argparse.ArgumentParser()
- 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]):
- 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))
- if __name__=="__main__":
- main()
|