From df2cfb3faf87930fd16943ec0d86ebc326346d27 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Wed, 16 Sep 2020 13:42:05 +0200 Subject: [PATCH] fix: Ask only own devices on automated key requests --- lib/encryption/key_manager.dart | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/encryption/key_manager.dart b/lib/encryption/key_manager.dart index edf908e4..37221a5e 100644 --- a/lib/encryption/key_manager.dart +++ b/lib/encryption/key_manager.dart @@ -207,7 +207,7 @@ class KeyManager { !_requestedSessionIds.contains(requestIdent)) { // do e2ee recovery _requestedSessionIds.add(requestIdent); - unawaited(request(room, sessionId, senderKey)); + unawaited(request(room, sessionId, senderKey, askOnlyOwnDevices: true)); } return null; } @@ -442,8 +442,13 @@ class KeyManager { } /// Request a certain key from another device - Future request(Room room, String sessionId, String senderKey, - {bool tryOnlineBackup = true}) async { + Future request( + Room room, + String sessionId, + String senderKey, { + bool tryOnlineBackup = true, + bool askOnlyOwnDevices = false, + }) async { if (tryOnlineBackup) { // let's first check our online key backup store thingy... var hadPreviously = @@ -470,6 +475,9 @@ class KeyManager { // while we just send the to-device event to '*', we still need to save the // devices themself to know where to send the cancel to after receiving a reply final devices = await room.getUserDeviceKeys(); + if (askOnlyOwnDevices) { + devices.removeWhere((d) => d.userId != client.userID); + } final requestId = client.generateUniqueTransactionId(); final request = KeyManagerKeyShareRequest( requestId: requestId,