diff --git a/synapse/rest/client/versions.py b/synapse/rest/client/versions.py
index 2d2be6ef38..e9b56fc3f8 100644
--- a/synapse/rest/client/versions.py
+++ b/synapse/rest/client/versions.py
@@ -79,6 +79,7 @@ class VersionsRestServlet(RestServlet):
"v1.3",
"v1.4",
"v1.5",
+ "v1.6",
],
# as per MSC1497:
"unstable_features": {
diff --git a/synapse/rest/key/v2/local_key_resource.py b/synapse/rest/key/v2/local_key_resource.py
index d03e728d42..22e7bf9d86 100644
--- a/synapse/rest/key/v2/local_key_resource.py
+++ b/synapse/rest/key/v2/local_key_resource.py
@@ -34,6 +34,8 @@ class LocalKey(RestServlet):
"""HTTP resource containing encoding the TLS X.509 certificate and NACL
signature verification keys for this server::
+ GET /_matrix/key/v2/server HTTP/1.1
+
GET /_matrix/key/v2/server/a.key.id HTTP/1.1
HTTP/1.1 200 OK
@@ -100,6 +102,15 @@ class LocalKey(RestServlet):
def on_GET(
self, request: Request, key_id: Optional[str] = None
) -> Tuple[int, JsonDict]:
+ # Matrix 1.6 drops support for passing the key_id, this is incompatible
+ # with earlier versions and is allowed in order to support both.
+ # A warning is issued to help determine when it is safe to drop this.
+ if key_id:
+ logger.warning(
+ "Request for local server key with deprecated key ID (logging to determine usage level for future removal): %s",
+ key_id,
+ )
+
time_now = self.clock.time_msec()
# Update the expiry time if less than half the interval remains.
if time_now + self.config.key.key_refresh_interval / 2 > self.valid_until_ts:
diff --git a/synapse/rest/key/v2/remote_key_resource.py b/synapse/rest/key/v2/remote_key_resource.py
index ff0454ca57..8f3865d412 100644
--- a/synapse/rest/key/v2/remote_key_resource.py
+++ b/synapse/rest/key/v2/remote_key_resource.py
@@ -126,6 +126,15 @@ class RemoteKey(RestServlet):
self, request: Request, server: str, key_id: Optional[str] = None
) -> Tuple[int, JsonDict]:
if server and key_id:
+ # Matrix 1.6 drops support for passing the key_id, this is incompatible
+ # with earlier versions and is allowed in order to support both.
+ # A warning is issued to help determine when it is safe to drop this.
+ logger.warning(
+ "Request for remote server key with deprecated key ID (logging to determine usage level for future removal): %s / %s",
+ server,
+ key_id,
+ )
+
minimum_valid_until_ts = parse_integer(request, "minimum_valid_until_ts")
arguments = {}
if minimum_valid_until_ts is not None:
@@ -161,7 +170,7 @@ class RemoteKey(RestServlet):
time_now_ms = self.clock.time_msec()
- # Map server_name->key_id->int. Note that the value of the init is unused.
+ # Map server_name->key_id->int. Note that the value of the int is unused.
# XXX: why don't we just use a set?
cache_misses: Dict[str, Dict[str, int]] = {}
for (server_name, key_id, _), key_results in cached.items():
|