Add hash of current state to events

This commit is contained in:
Erik Johnston 2014-11-07 11:36:40 +00:00
parent 3b4dec442d
commit 97a096b507
2 changed files with 11 additions and 1 deletions

View File

@ -75,6 +75,7 @@ class SynapseEvent(JsonEncodedObject):
"signatures",
"prev_state",
"auth_events",
"state_hash",
]
required_keys = [

View File

@ -81,6 +81,15 @@ def compute_event_signature(event, signature_name, signing_key):
def add_hashes_and_signatures(event, signature_name, signing_key,
hash_algorithm=hashlib.sha256):
if hasattr(event, "old_state_events"):
state_json_bytes = encode_canonical_json(
[e.event_id for e in event.old_state_events.values()]
)
hashed = hash_algorithm(state_json_bytes)
event.state_hash = {
hashed.name: encode_base64(hashed.digest())
}
hashed = _compute_content_hash(event, hash_algorithm=hash_algorithm)
if not hasattr(event, "hashes"):