mirror of
				https://github.com/matrix-org/synapse.git
				synced 2025-10-31 00:01:33 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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()
 | |
| 
 |