Support unprefixed versions of fallback key property names. (#11541)

pull/11547/head
Hubert Chathi 2021-12-09 06:41:27 -05:00 committed by GitHub
parent b3bcacf3c1
commit b47d10dc46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 6 deletions

1
changelog.d/11541.misc Normal file
View File

@ -0,0 +1 @@
Support unprefixed versions of fallback key property names.

View File

@ -580,7 +580,9 @@ class E2eKeysHandler:
log_kv( log_kv(
{"message": "Did not update one_time_keys", "reason": "no keys given"} {"message": "Did not update one_time_keys", "reason": "no keys given"}
) )
fallback_keys = keys.get("org.matrix.msc2732.fallback_keys", None) fallback_keys = keys.get("fallback_keys") or keys.get(
"org.matrix.msc2732.fallback_keys"
)
if fallback_keys and isinstance(fallback_keys, dict): if fallback_keys and isinstance(fallback_keys, dict):
log_kv( log_kv(
{ {

View File

@ -293,6 +293,9 @@ class SyncRestServlet(RestServlet):
response[ response[
"org.matrix.msc2732.device_unused_fallback_key_types" "org.matrix.msc2732.device_unused_fallback_key_types"
] = sync_result.device_unused_fallback_key_types ] = sync_result.device_unused_fallback_key_types
response[
"device_unused_fallback_key_types"
] = sync_result.device_unused_fallback_key_types
if joined: if joined:
response["rooms"][Membership.JOIN] = joined response["rooms"][Membership.JOIN] = joined

View File

@ -161,8 +161,9 @@ class E2eKeysHandlerTestCase(unittest.HomeserverTestCase):
def test_fallback_key(self): def test_fallback_key(self):
local_user = "@boris:" + self.hs.hostname local_user = "@boris:" + self.hs.hostname
device_id = "xyz" device_id = "xyz"
fallback_key = {"alg1:k1": "key1"} fallback_key = {"alg1:k1": "fallback_key1"}
fallback_key2 = {"alg1:k2": "key2"} fallback_key2 = {"alg1:k2": "fallback_key2"}
fallback_key3 = {"alg1:k2": "fallback_key3"}
otk = {"alg1:k2": "key2"} otk = {"alg1:k2": "key2"}
# we shouldn't have any unused fallback keys yet # we shouldn't have any unused fallback keys yet
@ -175,7 +176,7 @@ class E2eKeysHandlerTestCase(unittest.HomeserverTestCase):
self.handler.upload_keys_for_user( self.handler.upload_keys_for_user(
local_user, local_user,
device_id, device_id,
{"org.matrix.msc2732.fallback_keys": fallback_key}, {"fallback_keys": fallback_key},
) )
) )
@ -220,7 +221,7 @@ class E2eKeysHandlerTestCase(unittest.HomeserverTestCase):
self.handler.upload_keys_for_user( self.handler.upload_keys_for_user(
local_user, local_user,
device_id, device_id,
{"org.matrix.msc2732.fallback_keys": fallback_key}, {"fallback_keys": fallback_key},
) )
) )
@ -234,7 +235,7 @@ class E2eKeysHandlerTestCase(unittest.HomeserverTestCase):
self.handler.upload_keys_for_user( self.handler.upload_keys_for_user(
local_user, local_user,
device_id, device_id,
{"org.matrix.msc2732.fallback_keys": fallback_key2}, {"fallback_keys": fallback_key2},
) )
) )
@ -271,6 +272,25 @@ class E2eKeysHandlerTestCase(unittest.HomeserverTestCase):
{"failures": {}, "one_time_keys": {local_user: {device_id: fallback_key2}}}, {"failures": {}, "one_time_keys": {local_user: {device_id: fallback_key2}}},
) )
# using the unstable prefix should also set the fallback key
self.get_success(
self.handler.upload_keys_for_user(
local_user,
device_id,
{"org.matrix.msc2732.fallback_keys": fallback_key3},
)
)
res = self.get_success(
self.handler.claim_one_time_keys(
{"one_time_keys": {local_user: {device_id: "alg1"}}}, timeout=None
)
)
self.assertEqual(
res,
{"failures": {}, "one_time_keys": {local_user: {device_id: fallback_key3}}},
)
def test_replace_master_key(self): def test_replace_master_key(self):
"""uploading a new signing key should make the old signing key unavailable""" """uploading a new signing key should make the old signing key unavailable"""
local_user = "@boris:" + self.hs.hostname local_user = "@boris:" + self.hs.hostname