summary refs log tree commit diff
diff options
context:
space:
mode:
authorHubert Chathi <hubert@uhoreg.ca>2019-07-22 12:40:24 -0400
committerHubert Chathi <hubert@uhoreg.ca>2019-07-22 12:40:24 -0400
commit8f63558f6e3558879cbd7bfcee912a4d92067d3e (patch)
tree9707fc262bfd57293cb35c0b30a247c3771250a0
parentMerge branch 'develop' into cross-signing (diff)
downloadsynapse-8f63558f6e3558879cbd7bfcee912a4d92067d3e.tar.xz
make black happy
-rw-r--r--synapse/handlers/device.py4
-rw-r--r--synapse/handlers/e2e_keys.py52
-rw-r--r--synapse/rest/client/v2_alpha/keys.py7
-rw-r--r--synapse/storage/__init__.py2
-rw-r--r--synapse/storage/devices.py27
-rw-r--r--synapse/storage/end_to_end_keys.py39
-rw-r--r--synapse/types.py10
-rw-r--r--tests/handlers/test_e2e_keys.py26
8 files changed, 78 insertions, 89 deletions
diff --git a/synapse/handlers/device.py b/synapse/handlers/device.py

index 4e65825f0f..2a8fa9c818 100644 --- a/synapse/handlers/device.py +++ b/synapse/handlers/device.py
@@ -423,9 +423,7 @@ class DeviceHandler(DeviceWorkerHandler): from_user_id, user_ids ) - self.notifier.on_new_event( - "device_list_key", position, users=[from_user_id], - ) + self.notifier.on_new_event("device_list_key", position, users=[from_user_id]) @defer.inlineCallbacks def on_federation_query_user_devices(self, user_id): diff --git a/synapse/handlers/e2e_keys.py b/synapse/handlers/e2e_keys.py
index 454f99524b..1501fde990 100644 --- a/synapse/handlers/e2e_keys.py +++ b/synapse/handlers/e2e_keys.py
@@ -227,16 +227,22 @@ class E2eKeysHandler(object): except Exception: pass - yield make_deferred_yieldable(defer.gatherResults([ - run_in_background(get_cross_signing_key, user_id) - for user_id in query.keys() - ])) + yield make_deferred_yieldable( + defer.gatherResults( + [ + run_in_background(get_cross_signing_key, user_id) + for user_id in query.keys() + ] + ) + ) - defer.returnValue({ - "master": master_keys, - "self_signing": self_signing_keys, - "user_signing": user_signing_keys, - }) + defer.returnValue( + { + "master": master_keys, + "self_signing": self_signing_keys, + "user_signing": user_signing_keys, + } + ) @defer.inlineCallbacks def query_local_devices(self, query): @@ -455,11 +461,7 @@ class E2eKeysHandler(object): # if there is no master key, then we can't do anything, because all the # other cross-signing keys need to be signed by the master key if not master_key: - raise SynapseError( - 400, - "No master key available", - Codes.MISSING_PARAM - ) + raise SynapseError(400, "No master key available", Codes.MISSING_PARAM) master_key_id, master_verify_key = get_verify_key_from_cross_signing_key( master_key @@ -484,9 +486,7 @@ class E2eKeysHandler(object): # if everything checks out, then store the keys and send notifications deviceids = [] if "master_key" in keys: - yield self.store.set_e2e_cross_signing_key( - user_id, "master", master_key - ) + yield self.store.set_e2e_cross_signing_key(user_id, "master", master_key) deviceids.append(master_verify_key.version) if "self_signing_key" in keys: yield self.store.set_e2e_cross_signing_key( @@ -523,22 +523,20 @@ def _check_cross_signing_key(key, user_id, key_type, signing_key=None): signing_key (VerifyKey): (optional) the signing key that the key should be signed with. If omitted, signatures will not be checked. """ - if "user_id" not in key or key["user_id"] != user_id \ - or "usage" not in key or key_type not in key["usage"]: - raise SynapseError( - 400, - ("Invalid %s key" % key_type), - Codes.INVALID_PARAM - ) + if ( + "user_id" not in key + or key["user_id"] != user_id + or "usage" not in key + or key_type not in key["usage"] + ): + raise SynapseError(400, ("Invalid %s key" % key_type), Codes.INVALID_PARAM) if signing_key: try: verify_signed_json(key, user_id, signing_key) except SignatureVerifyException: raise SynapseError( - 400, - ("Invalid signature or %s key" % key_type), - Codes.INVALID_SIGNATURE + 400, ("Invalid signature or %s key" % key_type), Codes.INVALID_SIGNATURE ) diff --git a/synapse/rest/client/v2_alpha/keys.py b/synapse/rest/client/v2_alpha/keys.py
index 1ec4823910..29825a2081 100644 --- a/synapse/rest/client/v2_alpha/keys.py +++ b/synapse/rest/client/v2_alpha/keys.py
@@ -237,6 +237,7 @@ class SigningKeyUploadServlet(RestServlet): { } """ + PATTERNS = client_patterns("/keys/device_signing/upload$") def __init__(self, hs): @@ -258,12 +259,10 @@ class SigningKeyUploadServlet(RestServlet): body = parse_json_object_from_request(request) yield self.auth_handler.validate_user_via_ui_auth( - requester, body, self.hs.get_ip_from_request(request), + requester, body, self.hs.get_ip_from_request(request) ) - result = yield self.e2e_keys_handler.upload_signing_keys_for_user( - user_id, body - ) + result = yield self.e2e_keys_handler.upload_signing_keys_for_user(user_id, body) defer.returnValue((200, result)) diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index bad709171b..c20ba1001c 100644 --- a/synapse/storage/__init__.py +++ b/synapse/storage/__init__.py
@@ -208,7 +208,7 @@ class DataStore( "DeviceListStreamChangeCache", device_list_max ) self._user_signature_stream_cache = StreamChangeCache( - "UserSignatureStreamChangeCache", device_list_max, + "UserSignatureStreamChangeCache", device_list_max ) self._device_list_federation_stream_cache = StreamChangeCache( "DeviceListFederationStreamChangeCache", device_list_max diff --git a/synapse/storage/devices.py b/synapse/storage/devices.py
index aae765754e..138ced7d7b 100644 --- a/synapse/storage/devices.py +++ b/synapse/storage/devices.py
@@ -314,15 +314,19 @@ class DeviceWorkerStore(SQLBaseStore): with self._device_list_id_gen.get_next() as stream_id: yield self.runInteraction( - "add_user_sig_change_to_streams", self._add_user_signature_change_txn, - from_user_id, user_ids, stream_id, + "add_user_sig_change_to_streams", + self._add_user_signature_change_txn, + from_user_id, + user_ids, + stream_id, ) defer.returnValue(stream_id) def _add_user_signature_change_txn(self, txn, from_user_id, user_ids, stream_id): txn.call_after( self._user_signature_stream_cache.entity_has_changed, - from_user_id, stream_id, + from_user_id, + stream_id, ) self._simple_insert_txn( txn, @@ -614,7 +618,7 @@ class DeviceStore(DeviceWorkerStore, BackgroundUpdateStore): "user_id": user_id, "device_id": device_id, "display_name": initial_device_display_name, - "hidden": False + "hidden": False, }, desc="store_device", or_ignore=True, @@ -624,16 +628,11 @@ class DeviceStore(DeviceWorkerStore, BackgroundUpdateStore): # if the device ID is reserved by something else hidden = yield self._simple_select_one_onecol( "devices", - keyvalues={ - "user_id": user_id, - "device_id": device_id - }, - retcol="hidden" + keyvalues={"user_id": user_id, "device_id": device_id}, + retcol="hidden", ) if hidden: - raise StoreError( - 400, "The device ID is in use", Codes.FORBIDDEN - ) + raise StoreError(400, "The device ID is in use", Codes.FORBIDDEN) self.device_id_exists_cache.prefill(key, True) defer.returnValue(inserted) except StoreError as e: @@ -686,7 +685,9 @@ class DeviceStore(DeviceWorkerStore, BackgroundUpdateStore): sql = """ DELETE FROM devices WHERE user_id = ? AND device_id IN (%s) AND NOT COALESCE(hidden, ?) - """ % (",".join("?" for _ in device_ids)) + """ % ( + ",".join("?" for _ in device_ids) + ) values = [user_id] values.extend(device_ids) values.append(False) diff --git a/synapse/storage/end_to_end_keys.py b/synapse/storage/end_to_end_keys.py
index b53b096def..f0bf7ab654 100644 --- a/synapse/storage/end_to_end_keys.py +++ b/synapse/storage/end_to_end_keys.py
@@ -325,9 +325,9 @@ class EndToEndKeyStore(EndToEndKeyWorkerStore, SQLBaseStore): "user_id": user_id, "device_id": pubkey, "display_name": key_type + " signing key", - "hidden": True + "hidden": True, }, - desc="store_master_key_device" + desc="store_master_key_device", ) # and finally, store the key itself @@ -337,9 +337,9 @@ class EndToEndKeyStore(EndToEndKeyWorkerStore, SQLBaseStore): "user_id": user_id, "keytype": key_type, "keydata": json.dumps(key), - "ts": time.time() * 1000 + "ts": time.time() * 1000, }, - desc="store_master_key" + desc="store_master_key", ) def set_e2e_cross_signing_key(self, user_id, key_type, key): @@ -353,7 +353,9 @@ class EndToEndKeyStore(EndToEndKeyWorkerStore, SQLBaseStore): return self.runInteraction( "add_e2e_cross_signing_key", self._set_e2e_cross_signing_key_txn, - user_id, key_type, key + user_id, + key_type, + key, ) def _get_e2e_cross_signing_key_txn(self, txn, user_id, key_type, from_user_id=None): @@ -397,8 +399,9 @@ class EndToEndKeyStore(EndToEndKeyWorkerStore, SQLBaseStore): txn.execute(sql, (from_user_id, user_id, device_id)) row = txn.fetchone() if row: - key.setdefault("signatures", {}) \ - .setdefault(from_user_id, {})[row[0]] = row[1] + key.setdefault("signatures", {}).setdefault(from_user_id, {})[ + row[0] + ] = row[1] return key @@ -417,7 +420,9 @@ class EndToEndKeyStore(EndToEndKeyWorkerStore, SQLBaseStore): return self.runInteraction( "get_e2e_cross_signing_key", self._get_e2e_cross_signing_key_txn, - user_id, key_type, from_user_id + user_id, + key_type, + from_user_id, ) def store_e2e_cross_signing_signatures(self, user_id, signatures): @@ -434,11 +439,15 @@ class EndToEndKeyStore(EndToEndKeyWorkerStore, SQLBaseStore): """ return self._simple_insert_many( "e2e_cross_signing_signatures", - [{"user_id": user_id, - "key_id": key_id, - "target_user_id": target_user_id, - "target_device_id": target_device_id, - "signature": signature} - for (key_id, target_user_id, target_device_id, signature) in signatures], - "add_e2e_signing_key" + [ + { + "user_id": user_id, + "key_id": key_id, + "target_user_id": target_user_id, + "target_device_id": target_device_id, + "signature": signature, + } + for (key_id, target_user_id, target_device_id, signature) in signatures + ], + "add_e2e_signing_key", ) diff --git a/synapse/types.py b/synapse/types.py
index ce886d8ac4..7a80471a0c 100644 --- a/synapse/types.py +++ b/synapse/types.py
@@ -492,16 +492,10 @@ def get_verify_key_from_cross_signing_key(key_info): """ # make sure that exactly one key is provided if "keys" not in key_info: - raise SynapseError( - 400, - "Invalid key" - ) + raise SynapseError(400, "Invalid key") keys = key_info["keys"] if len(keys) != 1: - raise SynapseError( - 400, - "Invalid key" - ) + raise SynapseError(400, "Invalid key") # and return that one key for key_id, key_data in keys.items(): return (key_id, decode_verify_key_bytes(key_id, decode_base64(key_data))) diff --git a/tests/handlers/test_e2e_keys.py b/tests/handlers/test_e2e_keys.py
index 28cac58a05..211e7357d6 100644 --- a/tests/handlers/test_e2e_keys.py +++ b/tests/handlers/test_e2e_keys.py
@@ -158,9 +158,8 @@ class E2eKeysHandlerTestCase(unittest.TestCase): "user_id": local_user, "usage": ["master"], "keys": { - "ed25519:nqOvzeuGWT/sRx3h7+MHoInYj3Uk2LD/unI9kDYcHwk": - "nqOvzeuGWT/sRx3h7+MHoInYj3Uk2LD/unI9kDYcHwk" - } + "ed25519:nqOvzeuGWT/sRx3h7+MHoInYj3Uk2LD/unI9kDYcHwk": "nqOvzeuGWT/sRx3h7+MHoInYj3Uk2LD/unI9kDYcHwk" + }, } } yield self.handler.upload_signing_keys_for_user(local_user, keys1) @@ -171,22 +170,14 @@ class E2eKeysHandlerTestCase(unittest.TestCase): "user_id": local_user, "usage": ["master"], "keys": { - "ed25519:Hq6gL+utB4ET+UvD5ci0kgAwsX6qP/zvf8v6OInU5iw": - "Hq6gL+utB4ET+UvD5ci0kgAwsX6qP/zvf8v6OInU5iw" - } + "ed25519:Hq6gL+utB4ET+UvD5ci0kgAwsX6qP/zvf8v6OInU5iw": "Hq6gL+utB4ET+UvD5ci0kgAwsX6qP/zvf8v6OInU5iw" + }, } } yield self.handler.upload_signing_keys_for_user(local_user, keys2) - devices = yield self.handler.query_devices( - {"device_keys": {local_user: []}}, 0 - ) - self.assertDictEqual( - devices["master_keys"], - { - local_user: keys2["master_key"] - }, - ) + devices = yield self.handler.query_devices({"device_keys": {local_user: []}}, 0) + self.assertDictEqual(devices["master_keys"], {local_user: keys2["master_key"]}) @defer.inlineCallbacks def test_self_signing_key_doesnt_show_up_as_device(self): @@ -198,9 +189,8 @@ class E2eKeysHandlerTestCase(unittest.TestCase): "user_id": local_user, "usage": ["master"], "keys": { - "ed25519:nqOvzeuGWT/sRx3h7+MHoInYj3Uk2LD/unI9kDYcHwk": - "nqOvzeuGWT/sRx3h7+MHoInYj3Uk2LD/unI9kDYcHwk" - } + "ed25519:nqOvzeuGWT/sRx3h7+MHoInYj3Uk2LD/unI9kDYcHwk": "nqOvzeuGWT/sRx3h7+MHoInYj3Uk2LD/unI9kDYcHwk" + }, } } yield self.handler.upload_signing_keys_for_user(local_user, keys1)