123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import argparse
- import hashlib
- import json
- import logging
- import sys
- from unpaddedbase64 import encode_base64
- from synapse.crypto.event_signing import (
- check_event_content_hash,
- compute_event_reference_hash,
- )
- 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()
|