From 8692f05e34cde3269963ef07cca0503a6cc03eaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Fri, 9 Apr 2021 12:35:13 +0200 Subject: [PATCH] crypto: Connect the room key discarding logic --- .../android/sdk/internal/crypto/DefaultCryptoService.kt | 2 +- .../org/matrix/android/sdk/internal/crypto/OlmMachine.kt | 7 +++++++ rust-sdk/src/machine.rs | 8 ++++++++ rust-sdk/src/olm.udl | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt index 43010475d6..8e0620507f 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt @@ -543,7 +543,7 @@ internal class DefaultCryptoService @Inject constructor( } override fun discardOutboundSession(roomId: String) { - // TODO + olmMachine?.discardRoomKey(roomId) } /** diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/OlmMachine.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/OlmMachine.kt index 44a0434f77..49773428c6 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/OlmMachine.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/OlmMachine.kt @@ -496,4 +496,11 @@ internal class OlmMachine(user_id: String, device_id: String, path: File, device return devices } + + /** + * Discard the currently active room key for the given room if there is one. + */ + fun discardRoomKey(roomId: String) { + this.inner.discardRoomKey(roomId) + } } diff --git a/rust-sdk/src/machine.rs b/rust-sdk/src/machine.rs index dc84e7b021..4462707b2f 100644 --- a/rust-sdk/src/machine.rs +++ b/rust-sdk/src/machine.rs @@ -450,6 +450,14 @@ impl OlmMachine { }) } + /// Discard the currently active room key for the given room if there is + /// one. + pub fn discard_room_key(&self, room_id: &str) { + let room_id = RoomId::try_from(room_id).unwrap(); + + self.inner.invalidate_group_session(&room_id); + } + pub fn start_verification(&self, device: &Device) -> Result { let user_id = UserId::try_from(device.user_id.clone()).unwrap(); let device_id = device.device_id.as_str().into(); diff --git a/rust-sdk/src/olm.udl b/rust-sdk/src/olm.udl index 1d32503e15..66ebb09f80 100644 --- a/rust-sdk/src/olm.udl +++ b/rust-sdk/src/olm.udl @@ -127,4 +127,5 @@ interface OlmMachine { [ByRef] string passphrase, ProgressListener progress_listener ); + void discard_room_key([ByRef] string room_id); };