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

Query missing cross-signing keys on local sig upload #7289

Merged
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
8348481
Query missing cross-signing keys on local sig upload
anoadragon453 Apr 16, 2020
1063495
Add changelog
anoadragon453 Apr 16, 2020
cc86457
Save retrieved keys to the db
anoadragon453 Apr 16, 2020
c265bc7
lint
anoadragon453 Apr 16, 2020
39ed9f6
Fix and de-brittle remote result dict processing
anoadragon453 Apr 16, 2020
fd8d154
Use query_user_devices instead, assume only master, self_signing key …
anoadragon453 Apr 16, 2020
759b6b0
Make changelog more useful
anoadragon453 Apr 16, 2020
03d2c8c
Remove very specific exception handling
anoadragon453 Apr 16, 2020
b386658
Wrap get_verify_key_from_cross_signing_key in a try/except
anoadragon453 Apr 16, 2020
bd9a671
Note that _get_e2e_cross_signing_verify_key can raise a SynapseError
anoadragon453 Apr 16, 2020
745e653
lint
anoadragon453 Apr 16, 2020
f8b6f14
Add comment explaining why this is useful
anoadragon453 Apr 16, 2020
37ae643
Only fetch master and self_signing key types
anoadragon453 Apr 16, 2020
83861c3
Fix log statements, docstrings
anoadragon453 Apr 17, 2020
671178b
Remove extraneous items from remote query try/except
anoadragon453 Apr 17, 2020
2d88b5d
lint
anoadragon453 Apr 17, 2020
f417300
Factor key retrieval out into a separate function
anoadragon453 Apr 17, 2020
2f87051
Send device updates, modeled after SigningKeyEduUpdater._handle_signi…
anoadragon453 Apr 17, 2020
5990d1c
Update method docstring
anoadragon453 Apr 17, 2020
4f8ba5c
Remove extraneous key_id and verify_key
anoadragon453 Apr 20, 2020
9240abc
Update changelog
anoadragon453 Apr 20, 2020
3282423
Update changelog
anoadragon453 Apr 20, 2020
95dd9d5
Resolve review comments
anoadragon453 Apr 20, 2020
4f41f37
lint
anoadragon453 Apr 20, 2020
6d559ba
Update changelog.d/7289.bugfix
anoadragon453 Apr 21, 2020
1b4dda5
Refactor _get_e2e_cross_signing_verify_key
anoadragon453 Apr 21, 2020
7cb1e48
Refactor and add validation to _retrieve_cross_signing_keys_for_remot…
anoadragon453 Apr 21, 2020
74eaac0
Improve details of query_client_keys and query_user_devices docstrings
anoadragon453 Apr 21, 2020
b08b7c7
lint
anoadragon453 Apr 21, 2020
de29d1f
Merge branch 'anoa/query_cross_signing_keys_key_upload' of github.com…
anoadragon453 Apr 21, 2020
8484a72
Address review comments
anoadragon453 Apr 22, 2020
2932b9b
JSON brace endings on separate lines
anoadragon453 Apr 22, 2020
ebea2ee
Spaces and braces
anoadragon453 Apr 22, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 21 additions & 11 deletions synapse/federation/transport/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -399,20 +399,24 @@ def query_client_keys(self, destination, query_content, timeout):
{
"device_keys": {
"<user_id>": ["<device_id>"]
} }
}
}

Response:
{
"device_keys": {
"<user_id>": {
"<device_id>": {...}
} }
}
},
"master_key": {
"<user_id>": {...}
} }
}
},
"self_signing_key": {
"<user_id>": {...}
} }
}
}

Args:
destination(str): The server to query.
Expand Down Expand Up @@ -442,16 +446,17 @@ def query_user_devices(self, destination, user_id, timeout):
"keys": {...},
"signatures": {
"<user_id>": {...}
}
},
}
},
anoadragon453 marked this conversation as resolved.
Show resolved Hide resolved
anoadragon453 marked this conversation as resolved.
Show resolved Hide resolved
"self_signing_key": {
"user_id": "<user_id>",
"usage": [...],
"keys": {...},
"signatures": {
"<user_id>": {...}
}
} }
}
}

Args:
destination(str): The server to query.
Expand All @@ -475,22 +480,27 @@ def claim_client_keys(self, destination, query_content, timeout):
{
"one_time_keys": {
"<user_id>": {
"<device_id>": "<algorithm>"
} } }
"<device_id>": "<algorithm>"
}
}
}

Response:
{
"device_keys": {
"<user_id>": {
"<device_id>": {
"<algorithm>:<key_id>": "<key_base64>"
} } } }
}
}
}
}

Args:
destination(str): The server to query.
query_content(dict): The user ids to query.
Returns:
A dict containg the one-time keys.
A dict containing the one-time keys.
"""

path = _create_v1_path("/user/keys/claim")
Expand Down
3 changes: 2 additions & 1 deletion synapse/handlers/e2e_keys.py
Original file line number Diff line number Diff line change
Expand Up @@ -1005,7 +1005,7 @@ def _get_e2e_cross_signing_verify_key(
if self.is_mine(user) or key_type not in ["master", "self_signing"]:
# Note that master and self_signing keys are the only cross-signing keys we
# can request over federation
return
raise NotFoundError("No %s key found for %s" % (key_type, user_id))

(
key,
Expand Down Expand Up @@ -1109,6 +1109,7 @@ def _retrieve_cross_signing_keys_for_remote_user(

# Notify clients that new devices for this user have been discovered
anoadragon453 marked this conversation as resolved.
Show resolved Hide resolved
if retrieved_device_ids:
# XXX is this necessary?
yield self.device_handler.notify_device_update(
user.to_string(), retrieved_device_ids
)
Expand Down