mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-15 10:03:54 +01:00
Type defintions for use in refactoring for redaction changes (#6803)
* Bump signedjson to 1.1 ... so that we can use the type definitions * Fix breakage caused by upgrade to signedjson 1.1 Thanks, @illicitonion...
This commit is contained in:
parent
a855b7c3a8
commit
5a246611e3
5 changed files with 24 additions and 8 deletions
1
changelog.d/6803.misc
Normal file
1
changelog.d/6803.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Refactoring work in preparation for changing the event redaction algorithm.
|
|
@ -23,6 +23,7 @@ from unpaddedbase64 import encode_base64
|
||||||
|
|
||||||
from synapse.api.errors import UnsupportedRoomVersionError
|
from synapse.api.errors import UnsupportedRoomVersionError
|
||||||
from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, EventFormatVersions
|
from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, EventFormatVersions
|
||||||
|
from synapse.types import JsonDict
|
||||||
from synapse.util.caches import intern_dict
|
from synapse.util.caches import intern_dict
|
||||||
from synapse.util.frozenutils import freeze
|
from synapse.util.frozenutils import freeze
|
||||||
|
|
||||||
|
@ -197,7 +198,7 @@ class EventBase(object):
|
||||||
def is_state(self):
|
def is_state(self):
|
||||||
return hasattr(self, "state_key") and self.state_key is not None
|
return hasattr(self, "state_key") and self.state_key is not None
|
||||||
|
|
||||||
def get_dict(self):
|
def get_dict(self) -> JsonDict:
|
||||||
d = dict(self._event_dict)
|
d = dict(self._event_dict)
|
||||||
d.update({"signatures": self.signatures, "unsigned": dict(self.unsigned)})
|
d.update({"signatures": self.signatures, "unsigned": dict(self.unsigned)})
|
||||||
|
|
||||||
|
@ -209,7 +210,7 @@ class EventBase(object):
|
||||||
def get_internal_metadata_dict(self):
|
def get_internal_metadata_dict(self):
|
||||||
return self.internal_metadata.get_dict()
|
return self.internal_metadata.get_dict()
|
||||||
|
|
||||||
def get_pdu_json(self, time_now=None):
|
def get_pdu_json(self, time_now=None) -> JsonDict:
|
||||||
pdu_json = self.get_dict()
|
pdu_json = self.get_dict()
|
||||||
|
|
||||||
if time_now is not None and "age_ts" in pdu_json["unsigned"]:
|
if time_now is not None and "age_ts" in pdu_json["unsigned"]:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Copyright 2015, 2016 OpenMarket Ltd
|
# Copyright 2015, 2016 OpenMarket Ltd
|
||||||
# Copyright 2017 Vector Creations Ltd
|
# Copyright 2017 Vector Creations Ltd
|
||||||
# Copyright 2018 New Vector Ltd
|
# Copyright 2018 New Vector Ltd
|
||||||
|
# Copyright 2020 The Matrix.org Foundation C.I.C.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
|
@ -43,7 +44,8 @@ REQUIREMENTS = [
|
||||||
"frozendict>=1",
|
"frozendict>=1",
|
||||||
"unpaddedbase64>=1.1.0",
|
"unpaddedbase64>=1.1.0",
|
||||||
"canonicaljson>=1.1.3",
|
"canonicaljson>=1.1.3",
|
||||||
"signedjson>=1.0.0",
|
# we use the type definitions added in signedjson 1.1.
|
||||||
|
"signedjson>=1.1.0",
|
||||||
"pynacl>=1.2.1",
|
"pynacl>=1.2.1",
|
||||||
"idna>=2.5",
|
"idna>=2.5",
|
||||||
# validating SSL certs for IP addresses requires service_identity 18.1.
|
# validating SSL certs for IP addresses requires service_identity 18.1.
|
||||||
|
|
|
@ -17,7 +17,7 @@ import re
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from typing import Dict, Tuple, TypeVar
|
from typing import Any, Dict, Tuple, TypeVar
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
from signedjson.key import decode_verify_key_bytes
|
from signedjson.key import decode_verify_key_bytes
|
||||||
|
@ -43,6 +43,11 @@ T = TypeVar("T")
|
||||||
StateMap = Dict[Tuple[str, str], T]
|
StateMap = Dict[Tuple[str, str], T]
|
||||||
|
|
||||||
|
|
||||||
|
# the type of a JSON-serialisable dict. This could be made stronger, but it will
|
||||||
|
# do for now.
|
||||||
|
JsonDict = Dict[str, Any]
|
||||||
|
|
||||||
|
|
||||||
class Requester(
|
class Requester(
|
||||||
namedtuple(
|
namedtuple(
|
||||||
"Requester", ["user", "access_token_id", "is_guest", "device_id", "app_service"]
|
"Requester", ["user", "access_token_id", "is_guest", "device_id", "app_service"]
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import signedjson.key
|
import signedjson.key
|
||||||
|
import unpaddedbase64
|
||||||
|
|
||||||
from twisted.internet.defer import Deferred
|
from twisted.internet.defer import Deferred
|
||||||
|
|
||||||
|
@ -21,11 +22,17 @@ from synapse.storage.keys import FetchKeyResult
|
||||||
|
|
||||||
import tests.unittest
|
import tests.unittest
|
||||||
|
|
||||||
KEY_1 = signedjson.key.decode_verify_key_base64(
|
|
||||||
"ed25519", "key1", "fP5l4JzpZPq/zdbBg5xx6lQGAAOM9/3w94cqiJ5jPrw"
|
def decode_verify_key_base64(key_id: str, key_base64: str):
|
||||||
|
key_bytes = unpaddedbase64.decode_base64(key_base64)
|
||||||
|
return signedjson.key.decode_verify_key_bytes(key_id, key_bytes)
|
||||||
|
|
||||||
|
|
||||||
|
KEY_1 = decode_verify_key_base64(
|
||||||
|
"ed25519:key1", "fP5l4JzpZPq/zdbBg5xx6lQGAAOM9/3w94cqiJ5jPrw"
|
||||||
)
|
)
|
||||||
KEY_2 = signedjson.key.decode_verify_key_base64(
|
KEY_2 = decode_verify_key_base64(
|
||||||
"ed25519", "key2", "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw"
|
"ed25519:key2", "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue