Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 3bd6786

Browse files
committed
Merge commit '481f76c7a' into anoa/dinsic_release_1_21_x
* commit '481f76c7a': Remove signature check on v1 identity server lookups (#8001)
2 parents 73381ab + 481f76c commit 3bd6786

File tree

2 files changed

+4
-31
lines changed

2 files changed

+4
-31
lines changed

changelog.d/8001.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Remove redundant and unreliable signature check for v1 Identity Service lookup responses.

synapse/handlers/identity.py

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@
2222
from typing import Awaitable, Callable, Dict, List, Optional, Tuple
2323

2424
from canonicaljson import json
25-
from signedjson.key import decode_verify_key_bytes
26-
from signedjson.sign import verify_signed_json
27-
from unpaddedbase64 import decode_base64
2825

2926
from twisted.internet import defer
3027
from twisted.internet.error import TimeoutError
@@ -770,9 +767,9 @@ async def _lookup_3pid_v1(
770767
)
771768

772769
if "mxid" in data:
773-
if "signatures" not in data:
774-
raise AuthError(401, "No signatures on 3pid binding")
775-
await self._verify_any_signature(data, id_server)
770+
# note: we used to verify the identity server's signature here, but no longer
771+
# require or validate it. See the following for context:
772+
# https://github.com/matrix-org/synapse/issues/5253#issuecomment-666246950
776773
return data["mxid"]
777774
except TimeoutError:
778775
raise SynapseError(500, "Timed out contacting identity server")
@@ -891,31 +888,6 @@ async def _lookup_3pid_v2(
891888
mxid = lookup_results["mappings"].get(lookup_value)
892889
return mxid
893890

894-
async def _verify_any_signature(self, data, id_server):
895-
if id_server not in data["signatures"]:
896-
raise AuthError(401, "No signature from server %s" % (id_server,))
897-
898-
for key_name, signature in data["signatures"][id_server].items():
899-
id_server_url = self.rewrite_id_server_url(id_server, add_https=True)
900-
901-
key_data = await self.http_client.get_json(
902-
"%s/_matrix/identity/api/v1/pubkey/%s" % (id_server_url, key_name)
903-
)
904-
if "public_key" not in key_data:
905-
raise AuthError(
906-
401, "No public key named %s from %s" % (key_name, id_server)
907-
)
908-
verify_signed_json(
909-
data,
910-
id_server,
911-
decode_verify_key_bytes(
912-
key_name, decode_base64(key_data["public_key"])
913-
),
914-
)
915-
return
916-
917-
raise AuthError(401, "No signature from server %s" % (id_server,))
918-
919891
async def ask_id_server_for_third_party_invite(
920892
self,
921893
requester: Requester,

0 commit comments

Comments
 (0)