|
22 | 22 | from typing import Awaitable, Callable, Dict, List, Optional, Tuple
|
23 | 23 |
|
24 | 24 | 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 |
28 | 25 |
|
29 | 26 | from twisted.internet import defer
|
30 | 27 | from twisted.internet.error import TimeoutError
|
@@ -770,9 +767,9 @@ async def _lookup_3pid_v1(
|
770 | 767 | )
|
771 | 768 |
|
772 | 769 | 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 |
776 | 773 | return data["mxid"]
|
777 | 774 | except TimeoutError:
|
778 | 775 | raise SynapseError(500, "Timed out contacting identity server")
|
@@ -891,31 +888,6 @@ async def _lookup_3pid_v2(
|
891 | 888 | mxid = lookup_results["mappings"].get(lookup_value)
|
892 | 889 | return mxid
|
893 | 890 |
|
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 |
| - |
919 | 891 | async def ask_id_server_for_third_party_invite(
|
920 | 892 | self,
|
921 | 893 | requester: Requester,
|
|
0 commit comments