diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/E2eeTestConfig.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/E2eeConfigTest.kt similarity index 86% rename from matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/E2eeTestConfig.kt rename to matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/E2eeConfigTest.kt index 7a03276d34..8b12092b79 100644 --- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/E2eeTestConfig.kt +++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/E2eeConfigTest.kt @@ -25,13 +25,14 @@ import org.junit.runners.JUnit4 import org.junit.runners.MethodSorters import org.matrix.android.sdk.InstrumentedTest import org.matrix.android.sdk.api.session.crypto.MXCryptoError +import org.matrix.android.sdk.api.session.getRoom import org.matrix.android.sdk.api.session.room.timeline.getLastMessageContent import org.matrix.android.sdk.common.CommonTestHelper.Companion.runCryptoTest @RunWith(JUnit4::class) @FixMethodOrder(MethodSorters.JVM) @LargeTest -class E2eeTestConfig : InstrumentedTest { +class E2eeConfigTest : InstrumentedTest { @Test fun testBlacklistUnverifiedDefault() = runCryptoTest(context()) { cryptoTestHelper, _ -> @@ -55,10 +56,8 @@ class E2eeTestConfig : InstrumentedTest { val roomBobPOV = cryptoTestData.secondSession!!.roomService().getRoom(cryptoTestData.roomId)!! // ensure other received - testHelper.waitWithLatch { latch -> - testHelper.retryPeriodicallyWithLatch(latch) { - roomBobPOV.timelineService().getTimelineEvent(sentMessage.eventId) != null - } + testHelper.retryPeriodically { + roomBobPOV.timelineService().getTimelineEvent(sentMessage.eventId) != null } cryptoTestHelper.ensureCannotDecrypt(listOf(sentMessage.eventId), cryptoTestData.secondSession!!, cryptoTestData.roomId) @@ -81,10 +80,8 @@ class E2eeTestConfig : InstrumentedTest { val roomBobPOV = cryptoTestData.secondSession!!.roomService().getRoom(cryptoTestData.roomId)!! // ensure other received - testHelper.waitWithLatch { latch -> - testHelper.retryPeriodicallyWithLatch(latch) { - roomBobPOV.timelineService().getTimelineEvent(sentMessage.eventId) != null - } + testHelper.retryPeriodically { + roomBobPOV.timelineService().getTimelineEvent(sentMessage.eventId) != null } cryptoTestHelper.ensureCanDecrypt( @@ -105,10 +102,8 @@ class E2eeTestConfig : InstrumentedTest { val roomBobPOV = cryptoTestData.secondSession!!.roomService().getRoom(cryptoTestData.roomId)!! // ensure other received - testHelper.waitWithLatch { latch -> - testHelper.retryPeriodicallyWithLatch(latch) { - roomBobPOV.timelineService().getTimelineEvent(beforeMessage.eventId) != null - } + testHelper.retryPeriodically { + roomBobPOV.timelineService().getTimelineEvent(beforeMessage.eventId) != null } cryptoTestHelper.ensureCanDecrypt( @@ -118,10 +113,15 @@ class E2eeTestConfig : InstrumentedTest { listOf(beforeMessage.getLastMessageContent()!!.body) ) - cryptoTestData.firstSession.cryptoService().setRoomBlacklistUnverifiedDevices(cryptoTestData.roomId, true) + cryptoTestData.firstSession.cryptoService().setRoomBlockUnverifiedDevices(cryptoTestData.roomId, true) val afterMessage = testHelper.sendTextMessage(roomAlicePOV, "you are blocked", 1).first() + // ensure received + testHelper.retryPeriodically { + cryptoTestData.secondSession?.getRoom(cryptoTestData.roomId)?.timelineService()?.getTimelineEvent(afterMessage.eventId)?.root != null + } + cryptoTestHelper.ensureCannotDecrypt( listOf(afterMessage.eventId), cryptoTestData.secondSession!!, diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt index c2151ab6aa..c383e05707 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt @@ -104,7 +104,7 @@ interface CryptoService { */ fun isShareKeysOnInviteEnabled(): Boolean - fun setRoomUnBlacklistUnverifiedDevices(roomId: String) + fun setRoomUnBlockUnverifiedDevices(roomId: String) fun getDeviceTrackingStatus(userId: String): Int @@ -116,7 +116,7 @@ interface CryptoService { suspend fun exportRoomKeys(password: String): ByteArray - fun setRoomBlacklistUnverifiedDevices(roomId: String, enable: Boolean) + fun setRoomBlockUnverifiedDevices(roomId: String, block: Boolean) fun getCryptoDeviceInfo(userId: String, deviceId: String?): CryptoDeviceInfo? diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/GlobalCryptoConfig.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/GlobalCryptoConfig.kt index a6afe6087b..6405652a68 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/GlobalCryptoConfig.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/GlobalCryptoConfig.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 New Vector Ltd + * Copyright (c) 2022 The Matrix.org Foundation C.I.C. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ package org.matrix.android.sdk.api.session.crypto data class GlobalCryptoConfig( - val globalBlacklistUnverifiedDevices: Boolean, + val globalBlockUnverifiedDevices: Boolean, val globalEnableKeyGossiping: Boolean, val enableKeyForwardingOnInvite: Boolean, ) 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 bdbd326fe3..4a160f07b2 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 @@ -1194,10 +1194,10 @@ internal class DefaultCryptoService @Inject constructor( * Add this room to the ones which don't encrypt messages to unverified devices. * * @param roomId the room id - * @param if true will block sending keys to unverified devices + * @param block if true will block sending keys to unverified devices */ - override fun setRoomBlacklistUnverifiedDevices(roomId: String, enable: Boolean) { - cryptoStore.blackListUnverifiedDevicesInRoom(roomId, enable) + override fun setRoomBlockUnverifiedDevices(roomId: String, block: Boolean) { + cryptoStore.blockUnverifiedDevicesInRoom(roomId, block) } /** @@ -1205,8 +1205,8 @@ internal class DefaultCryptoService @Inject constructor( * * @param roomId the room id */ - override fun setRoomUnBlacklistUnverifiedDevices(roomId: String) { - setRoomBlacklistUnverifiedDevices(roomId, false) + override fun setRoomUnBlockUnverifiedDevices(roomId: String) { + setRoomBlockUnverifiedDevices(roomId, false) } /** diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt index 193b53ec4e..7c5dd6c585 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt @@ -138,9 +138,9 @@ internal interface IMXCryptoStore { * Define if encryption keys should be sent to unverified devices in this room. * * @param roomId the roomId - * @param blacklist if true will not send keys to unverified devices + * @param block if true will not send keys to unverified devices */ - fun blackListUnverifiedDevicesInRoom(roomId: String, blacklist: Boolean) + fun blockUnverifiedDevicesInRoom(roomId: String, block: Boolean) /** * Get the current keys backup version. diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt index b5b2a2392d..81a4a9d427 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt @@ -451,7 +451,7 @@ internal class RealmCryptoStore @Inject constructor( realm.where().findFirst() ?.let { GlobalCryptoConfig( - globalBlacklistUnverifiedDevices = it.globalBlacklistUnverifiedDevices, + globalBlockUnverifiedDevices = it.globalBlacklistUnverifiedDevices, globalEnableKeyGossiping = it.globalEnableKeyGossiping, enableKeyForwardingOnInvite = it.enableKeyForwardingOnInvite ) @@ -467,7 +467,7 @@ internal class RealmCryptoStore @Inject constructor( }, { GlobalCryptoConfig( - globalBlacklistUnverifiedDevices = it.globalBlacklistUnverifiedDevices, + globalBlockUnverifiedDevices = it.globalBlacklistUnverifiedDevices, globalEnableKeyGossiping = it.globalEnableKeyGossiping, enableKeyForwardingOnInvite = it.enableKeyForwardingOnInvite ) @@ -1121,10 +1121,10 @@ internal class RealmCryptoStore @Inject constructor( } } - override fun blackListUnverifiedDevicesInRoom(roomId: String, blacklist: Boolean) { + override fun blockUnverifiedDevicesInRoom(roomId: String, block: Boolean) { doRealmTransaction(realmConfiguration) { realm -> CryptoRoomEntity.getById(realm, roomId) - ?.blacklistUnverifiedDevices = blacklist + ?.blacklistUnverifiedDevices = block } } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsAction.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsAction.kt index bb2dc08e76..13662c1f9b 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsAction.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsAction.kt @@ -28,7 +28,7 @@ sealed class RoomSettingsAction : VectorViewModelAction { data class SetRoomHistoryVisibility(val visibility: RoomHistoryVisibility) : RoomSettingsAction() data class SetRoomJoinRule(val roomJoinRule: RoomJoinRules) : RoomSettingsAction() data class SetRoomGuestAccess(val guestAccess: GuestAccess) : RoomSettingsAction() - data class SetEncryptToVerifiedDeviceOnly(val enable: Boolean) : RoomSettingsAction() + data class SetEncryptToVerifiedDeviceOnly(val enabled: Boolean) : RoomSettingsAction() object Save : RoomSettingsAction() object Cancel : RoomSettingsAction() diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsController.kt index 936ebbd861..04727eca2c 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsController.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsController.kt @@ -154,7 +154,7 @@ class RoomSettingsController @Inject constructor( buildProfileSection(stringProvider.getString(R.string.room_profile_section_security)) data.globalCryptoConfig.invoke()?.let { globalConfig -> - if (globalConfig.globalBlacklistUnverifiedDevices) { + if (globalConfig.globalBlockUnverifiedDevices) { genericFooterItem { id("globalConfig") centered(false) diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsViewModel.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsViewModel.kt index cb5809d96a..06a859a384 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsViewModel.kt @@ -252,7 +252,7 @@ class RoomSettingsViewModel @AssistedInject constructor( is RoomSettingsAction.SetRoomGuestAccess -> handleSetGuestAccess(action) is RoomSettingsAction.Save -> saveSettings() is RoomSettingsAction.Cancel -> cancel() - is RoomSettingsAction.SetEncryptToVerifiedDeviceOnly -> setEncryptToVerifiedDeviceOnly(action.enable) + is RoomSettingsAction.SetEncryptToVerifiedDeviceOnly -> setEncryptToVerifiedDeviceOnly(action.enabled) } } @@ -276,7 +276,7 @@ class RoomSettingsViewModel @AssistedInject constructor( private fun setEncryptToVerifiedDeviceOnly(enabled: Boolean) { session.coroutineScope.launch { - session.cryptoService().setRoomBlacklistUnverifiedDevices(room.roomId, enabled) + session.cryptoService().setRoomBlockUnverifiedDevices(room.roomId, enabled) } }