summary refs log tree commit diff
path: root/synapse/federation
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2020-04-16 12:36:01 +0100
committerAndrew Morgan <andrew@amorgan.xyz>2020-04-17 15:47:49 +0100
commit72fe2affb6ac86d433b80b6452da57052365aa26 (patch)
treef3b8bcee12f6672500c8f89c6a963d6890d61b7d /synapse/federation
parentOnly register devices edu handler on the master process (#7255) (diff)
downloadsynapse-72fe2affb6ac86d433b80b6452da57052365aa26.tar.xz
Query missing cross-signing keys on local sig upload
Add changelog

Save retrieved keys to the db

lint

Fix and de-brittle remote result dict processing

Use query_user_devices instead, assume only master, self_signing key types

Make changelog more useful

Remove very specific exception handling

Wrap get_verify_key_from_cross_signing_key in a try/except

Note that _get_e2e_cross_signing_verify_key can raise a SynapseError

lint

Add comment explaining why this is useful

Only fetch master and self_signing key types

Fix log statements, docstrings

Remove extraneous items from remote query try/except

lint

Factor key retrieval out into a separate function

Send device updates, modeled after SigningKeyEduUpdater._handle_signing_key_updates

Update method docstring
Diffstat (limited to 'synapse/federation')
-rw-r--r--synapse/federation/transport/client.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/synapse/federation/transport/client.py b/synapse/federation/transport/client.py

index dc563538de..c35637a571 100644 --- a/synapse/federation/transport/client.py +++ b/synapse/federation/transport/client.py
@@ -406,13 +406,19 @@ class TransportLayerClient(object): "device_keys": { "<user_id>": { "<device_id>": {...} + } } + "master_keys": { + "<user_id>": {...} + } } + "self_signing_keys": { + "<user_id>": {...} } } } Args: destination(str): The server to query. query_content(dict): The user ids to query. Returns: - A dict containg the device keys. + A dict containing device and cross-signing keys. """ path = _create_v1_path("/user/keys/query") @@ -429,14 +435,16 @@ class TransportLayerClient(object): Response: { "stream_id": "...", - "devices": [ { ... } ] + "devices": [ { ... } ], + "master_key": { ... }, + "self_signing_key: { ... } } Args: destination(str): The server to query. query_content(dict): The user ids to query. Returns: - A dict containg the device keys. + A dict containing device and cross-signing keys. """ path = _create_v1_path("/user/devices/%s", user_id)