Pass room_version into add_hashes_and_signatures
This commit is contained in:
parent
54f3f369bd
commit
2a81393a4b
|
@ -20,10 +20,13 @@ import logging
|
||||||
|
|
||||||
from canonicaljson import encode_canonical_json
|
from canonicaljson import encode_canonical_json
|
||||||
from signedjson.sign import sign_json
|
from signedjson.sign import sign_json
|
||||||
|
from signedjson.types import SigningKey
|
||||||
from unpaddedbase64 import decode_base64, encode_base64
|
from unpaddedbase64 import decode_base64, encode_base64
|
||||||
|
|
||||||
from synapse.api.errors import Codes, SynapseError
|
from synapse.api.errors import Codes, SynapseError
|
||||||
|
from synapse.api.room_versions import RoomVersion
|
||||||
from synapse.events.utils import prune_event, prune_event_dict
|
from synapse.events.utils import prune_event, prune_event_dict
|
||||||
|
from synapse.types import JsonDict
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -137,20 +140,23 @@ def compute_event_signature(event_dict, signature_name, signing_key):
|
||||||
|
|
||||||
|
|
||||||
def add_hashes_and_signatures(
|
def add_hashes_and_signatures(
|
||||||
event_dict, signature_name, signing_key, hash_algorithm=hashlib.sha256
|
room_version: RoomVersion,
|
||||||
|
event_dict: JsonDict,
|
||||||
|
signature_name: str,
|
||||||
|
signing_key: SigningKey,
|
||||||
):
|
):
|
||||||
"""Add content hash and sign the event
|
"""Add content hash and sign the event
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
event_dict (dict): The event to add hashes to and sign
|
room_version: the version of the room this event is in
|
||||||
signature_name (str): The name of the entity signing the event
|
|
||||||
|
event_dict: The event to add hashes to and sign
|
||||||
|
signature_name: The name of the entity signing the event
|
||||||
(typically the server's hostname).
|
(typically the server's hostname).
|
||||||
signing_key (syutil.crypto.SigningKey): The key to sign with
|
signing_key: The key to sign with
|
||||||
hash_algorithm: A hasher from `hashlib`, e.g. hashlib.sha256, to use
|
|
||||||
to hash the event
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
name, digest = compute_content_hash(event_dict, hash_algorithm=hash_algorithm)
|
name, digest = compute_content_hash(event_dict, hash_algorithm=hashlib.sha256)
|
||||||
|
|
||||||
event_dict.setdefault("hashes", {})[name] = encode_base64(digest)
|
event_dict.setdefault("hashes", {})[name] = encode_base64(digest)
|
||||||
|
|
||||||
|
|
|
@ -255,7 +255,7 @@ def create_local_event_from_event_dict(
|
||||||
|
|
||||||
event_dict.setdefault("signatures", {})
|
event_dict.setdefault("signatures", {})
|
||||||
|
|
||||||
add_hashes_and_signatures(event_dict, hostname, signing_key)
|
add_hashes_and_signatures(room_version, event_dict, hostname, signing_key)
|
||||||
return event_type_from_format_version(format_version)(
|
return event_type_from_format_version(format_version)(
|
||||||
event_dict, internal_metadata_dict=internal_metadata_dict
|
event_dict, internal_metadata_dict=internal_metadata_dict
|
||||||
)
|
)
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
import nacl.signing
|
import nacl.signing
|
||||||
from unpaddedbase64 import decode_base64
|
from unpaddedbase64 import decode_base64
|
||||||
|
|
||||||
|
from synapse.api.room_versions import RoomVersions
|
||||||
from synapse.crypto.event_signing import add_hashes_and_signatures
|
from synapse.crypto.event_signing import add_hashes_and_signatures
|
||||||
from synapse.events import FrozenEvent
|
from synapse.events import FrozenEvent
|
||||||
|
|
||||||
|
@ -49,7 +50,9 @@ class EventSigningTestCase(unittest.TestCase):
|
||||||
"unsigned": {"age_ts": 1000000},
|
"unsigned": {"age_ts": 1000000},
|
||||||
}
|
}
|
||||||
|
|
||||||
add_hashes_and_signatures(event_dict, HOSTNAME, self.signing_key)
|
add_hashes_and_signatures(
|
||||||
|
RoomVersions.V1, event_dict, HOSTNAME, self.signing_key
|
||||||
|
)
|
||||||
|
|
||||||
event = FrozenEvent(event_dict)
|
event = FrozenEvent(event_dict)
|
||||||
|
|
||||||
|
@ -81,7 +84,9 @@ class EventSigningTestCase(unittest.TestCase):
|
||||||
"unsigned": {"age_ts": 1000000},
|
"unsigned": {"age_ts": 1000000},
|
||||||
}
|
}
|
||||||
|
|
||||||
add_hashes_and_signatures(event_dict, HOSTNAME, self.signing_key)
|
add_hashes_and_signatures(
|
||||||
|
RoomVersions.V1, event_dict, HOSTNAME, self.signing_key
|
||||||
|
)
|
||||||
|
|
||||||
event = FrozenEvent(event_dict)
|
event = FrozenEvent(event_dict)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue