mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-29 07:28:55 +03:00
Make prev_event signing work again.
This commit is contained in:
parent
2f39dc19a2
commit
d30d79b5be
3 changed files with 18 additions and 8 deletions
|
@ -16,11 +16,12 @@
|
||||||
|
|
||||||
|
|
||||||
from synapse.federation.units import Pdu
|
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.jsonutil import encode_canonical_json
|
||||||
from syutil.base64util import encode_base64, decode_base64
|
from syutil.base64util import encode_base64, decode_base64
|
||||||
from syutil.crypto.jsonsign import sign_json, verify_signed_json
|
from syutil.crypto.jsonsign import sign_json, verify_signed_json
|
||||||
|
|
||||||
|
import copy
|
||||||
import hashlib
|
import hashlib
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -69,6 +70,16 @@ def compute_pdu_event_reference_hash(pdu, hash_algorithm=hashlib.sha256):
|
||||||
return (hashed.name, hashed.digest())
|
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):
|
def sign_event_pdu(pdu, signature_name, signing_key):
|
||||||
tmp_pdu = Pdu(**pdu.get_dict())
|
tmp_pdu = Pdu(**pdu.get_dict())
|
||||||
tmp_pdu = prune_pdu(tmp_pdu)
|
tmp_pdu = prune_pdu(tmp_pdu)
|
||||||
|
|
|
@ -46,7 +46,7 @@ from .signatures import SignatureStore
|
||||||
|
|
||||||
from syutil.base64util import decode_base64
|
from syutil.base64util import decode_base64
|
||||||
|
|
||||||
from synapse.crypto.event_signing import compute_pdu_event_reference_hash
|
from synapse.crypto.event_signing import compute_event_reference_hash
|
||||||
|
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
@ -271,11 +271,10 @@ class DataStore(RoomMemberStore, RoomStore,
|
||||||
txn, event.event_id, prev_event_id, alg, hash_bytes
|
txn, event.event_id, prev_event_id, alg, hash_bytes
|
||||||
)
|
)
|
||||||
|
|
||||||
# TODO
|
(ref_alg, ref_hash_bytes) = compute_event_reference_hash(event)
|
||||||
# (ref_alg, ref_hash_bytes) = compute_pdu_event_reference_hash(pdu)
|
self._store_event_reference_hash_txn(
|
||||||
# self._store_event_reference_hash_txn(
|
txn, event.event_id, ref_alg, ref_hash_bytes
|
||||||
# txn, event.event_id, ref_alg, ref_hash_bytes
|
)
|
||||||
# )
|
|
||||||
|
|
||||||
self._update_min_depth_for_room_txn(txn, event.room_id, event.depth)
|
self._update_min_depth_for_room_txn(txn, event.room_id, event.depth)
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ class EventFederationStore(SQLBaseStore):
|
||||||
|
|
||||||
results = []
|
results = []
|
||||||
for event_id, depth in txn.fetchall():
|
for event_id, depth in txn.fetchall():
|
||||||
hashes = self._get_prev_event_hashes_txn(txn, event_id)
|
hashes = self._get_event_reference_hashes_txn(txn, event_id)
|
||||||
prev_hashes = {
|
prev_hashes = {
|
||||||
k: encode_base64(v) for k, v in hashes.items()
|
k: encode_base64(v) for k, v in hashes.items()
|
||||||
if k == "sha256"
|
if k == "sha256"
|
||||||
|
|
Loading…
Reference in a new issue