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

Commit b47d10d

Browse files
authored
Support unprefixed versions of fallback key property names. (#11541)
1 parent b3bcacf commit b47d10d

File tree

4 files changed

+32
-6
lines changed

4 files changed

+32
-6
lines changed

changelog.d/11541.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Support unprefixed versions of fallback key property names.

synapse/handlers/e2e_keys.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,9 @@ async def upload_keys_for_user(
580580
log_kv(
581581
{"message": "Did not update one_time_keys", "reason": "no keys given"}
582582
)
583-
fallback_keys = keys.get("org.matrix.msc2732.fallback_keys", None)
583+
fallback_keys = keys.get("fallback_keys") or keys.get(
584+
"org.matrix.msc2732.fallback_keys"
585+
)
584586
if fallback_keys and isinstance(fallback_keys, dict):
585587
log_kv(
586588
{

synapse/rest/client/sync.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,9 @@ async def encode_response(
293293
response[
294294
"org.matrix.msc2732.device_unused_fallback_key_types"
295295
] = sync_result.device_unused_fallback_key_types
296+
response[
297+
"device_unused_fallback_key_types"
298+
] = sync_result.device_unused_fallback_key_types
296299

297300
if joined:
298301
response["rooms"][Membership.JOIN] = joined

tests/handlers/test_e2e_keys.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,9 @@ def test_claim_one_time_key(self):
161161
def test_fallback_key(self):
162162
local_user = "@boris:" + self.hs.hostname
163163
device_id = "xyz"
164-
fallback_key = {"alg1:k1": "key1"}
165-
fallback_key2 = {"alg1:k2": "key2"}
164+
fallback_key = {"alg1:k1": "fallback_key1"}
165+
fallback_key2 = {"alg1:k2": "fallback_key2"}
166+
fallback_key3 = {"alg1:k2": "fallback_key3"}
166167
otk = {"alg1:k2": "key2"}
167168

168169
# we shouldn't have any unused fallback keys yet
@@ -175,7 +176,7 @@ def test_fallback_key(self):
175176
self.handler.upload_keys_for_user(
176177
local_user,
177178
device_id,
178-
{"org.matrix.msc2732.fallback_keys": fallback_key},
179+
{"fallback_keys": fallback_key},
179180
)
180181
)
181182

@@ -220,7 +221,7 @@ def test_fallback_key(self):
220221
self.handler.upload_keys_for_user(
221222
local_user,
222223
device_id,
223-
{"org.matrix.msc2732.fallback_keys": fallback_key},
224+
{"fallback_keys": fallback_key},
224225
)
225226
)
226227

@@ -234,7 +235,7 @@ def test_fallback_key(self):
234235
self.handler.upload_keys_for_user(
235236
local_user,
236237
device_id,
237-
{"org.matrix.msc2732.fallback_keys": fallback_key2},
238+
{"fallback_keys": fallback_key2},
238239
)
239240
)
240241

@@ -271,6 +272,25 @@ def test_fallback_key(self):
271272
{"failures": {}, "one_time_keys": {local_user: {device_id: fallback_key2}}},
272273
)
273274

275+
# using the unstable prefix should also set the fallback key
276+
self.get_success(
277+
self.handler.upload_keys_for_user(
278+
local_user,
279+
device_id,
280+
{"org.matrix.msc2732.fallback_keys": fallback_key3},
281+
)
282+
)
283+
284+
res = self.get_success(
285+
self.handler.claim_one_time_keys(
286+
{"one_time_keys": {local_user: {device_id: "alg1"}}}, timeout=None
287+
)
288+
)
289+
self.assertEqual(
290+
res,
291+
{"failures": {}, "one_time_keys": {local_user: {device_id: fallback_key3}}},
292+
)
293+
274294
def test_replace_master_key(self):
275295
"""uploading a new signing key should make the old signing key unavailable"""
276296
local_user = "@boris:" + self.hs.hostname

0 commit comments

Comments
 (0)