diff options
author | Erik Johnston <erik@matrix.org> | 2014-10-31 15:35:39 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-10-31 15:35:39 +0000 |
commit | d30d79b5bed98c7e46852c54875c976d3ac3bc0c (patch) | |
tree | 4741544c8802ffbd1ed5ce5c5b2f66d852619741 /synapse/crypto | |
parent | Remove more references to dead PDU tables (diff) | |
download | synapse-d30d79b5bed98c7e46852c54875c976d3ac3bc0c.tar.xz |
Make prev_event signing work again.
Diffstat (limited to 'synapse/crypto')
-rw-r--r-- | synapse/crypto/event_signing.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/synapse/crypto/event_signing.py b/synapse/crypto/event_signing.py index 61edd2c6f9..07e383e221 100644 --- a/synapse/crypto/event_signing.py +++ b/synapse/crypto/event_signing.py @@ -16,11 +16,12 @@ from synapse.federation.units import Pdu -from synapse.api.events.utils import prune_pdu +from synapse.api.events.utils import prune_pdu, prune_event from syutil.jsonutil import encode_canonical_json from syutil.base64util import encode_base64, decode_base64 from syutil.crypto.jsonsign import sign_json, verify_signed_json +import copy import hashlib import logging @@ -69,6 +70,16 @@ def compute_pdu_event_reference_hash(pdu, hash_algorithm=hashlib.sha256): return (hashed.name, hashed.digest()) +def compute_event_reference_hash(event, hash_algorithm=hashlib.sha256): + tmp_event = copy.deepcopy(event) + tmp_event = prune_event(tmp_event) + event_json = tmp_event.get_dict() + event_json.pop("signatures", None) + event_json_bytes = encode_canonical_json(event_json) + hashed = hash_algorithm(event_json_bytes) + return (hashed.name, hashed.digest()) + + def sign_event_pdu(pdu, signature_name, signing_key): tmp_pdu = Pdu(**pdu.get_dict()) tmp_pdu = prune_pdu(tmp_pdu) |