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 112382c4e9..a5e05f69e0 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 @@ -193,7 +193,7 @@ interface CryptoService { fun prepareToEncrypt(roomId: String, callback: MatrixCallback) /** - * Share all inbound sessions of the last chunk messages to the provided userId devices + * Share all inbound sessions of the last chunk messages to the provided userId devices. */ suspend fun sendSharedHistoryKeys(roomId: String, userId: String, sessionInfoSet: Set?) } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/model/ForwardedRoomKeyContent.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/model/ForwardedRoomKeyContent.kt index dbee04de88..664cd00e94 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/model/ForwardedRoomKeyContent.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/model/ForwardedRoomKeyContent.kt @@ -72,8 +72,7 @@ data class ForwardedRoomKeyContent( val senderClaimedEd25519Key: String? = null, /** - * MSC3061 - * Identifies keys that were sent when the room's visibility setting was set to world_readable or shared + * MSC3061 Identifies keys that were sent when the room's visibility setting was set to world_readable or shared. */ @Json(name = "org.matrix.msc3061.shared_history") val sharedHistory: Boolean? = false, diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/content/RoomKeyContent.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/content/RoomKeyContent.kt index 75162f8ace..5b18d29ea0 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/content/RoomKeyContent.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/content/RoomKeyContent.kt @@ -41,8 +41,7 @@ data class RoomKeyContent( val chainIndex: Any? = null, /** - * MSC3061 - * Identifies keys that were sent when the room's visibility setting was set to world_readable or shared + * MSC3061 Identifies keys that were sent when the room's visibility setting was set to world_readable or shared. */ @Json(name = "org.matrix.msc3061.shared_history") val sharedHistory: Boolean? = false diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/RoomHistoryVisibility.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/RoomHistoryVisibility.kt index 3648d6b883..2b0ea1d8fb 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/RoomHistoryVisibility.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/RoomHistoryVisibility.kt @@ -50,7 +50,7 @@ enum class RoomHistoryVisibility { } /** - * Room history should be shared only if room visibility is world_readable or shared + * Room history should be shared only if room visibility is world_readable or shared. */ internal fun RoomHistoryVisibility.shouldShareHistory() = this == RoomHistoryVisibility.WORLD_READABLE || this == RoomHistoryVisibility.SHARED diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/MXOlmDevice.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/MXOlmDevice.kt index 192df3ff0c..c4a6488258 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/MXOlmDevice.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/MXOlmDevice.kt @@ -601,6 +601,7 @@ internal class MXOlmDevice @Inject constructor( * @param forwardingCurve25519KeyChain Devices involved in forwarding this session to us. * @param keysClaimed Other keys the sender claims. * @param exportFormat true if the megolm keys are in export format + * @param sharedHistory MSC3061, this key is sharable on invite * @return true if the operation succeeds. */ fun addInboundGroupSession(sessionId: String, diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/MegolmSessionData.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/MegolmSessionData.kt index 43b88c0b42..ca0bdc8a0e 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/MegolmSessionData.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/MegolmSessionData.kt @@ -73,7 +73,7 @@ internal data class MegolmSessionData( /** * Flag that indicates whether or not the current inboundSession will be shared to - * invited users to decrypt past messages + * invited users to decrypt past messages. */ // When this feature lands in spec name = shared_history should be used @Json(name = "org.matrix.msc3061.shared_history") diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/algorithms/megolm/MXMegolmDecryption.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/algorithms/megolm/MXMegolmDecryption.kt index d884293ae1..410b74e19f 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/algorithms/megolm/MXMegolmDecryption.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/algorithms/megolm/MXMegolmDecryption.kt @@ -300,7 +300,7 @@ internal class MXMegolmDecryption( } /** - * Returns boolean shared key flag, if enabled with respect to matrix configuration + * Returns boolean shared key flag, if enabled with respect to matrix configuration. */ private fun RoomKeyContent.getSharedKey(): Boolean { if (!cryptoStore.isShareKeysOnInviteEnabled()) return false @@ -308,7 +308,7 @@ internal class MXMegolmDecryption( } /** - * Check if the some messages can be decrypted with a new session + * Check if the some messages can be decrypted with a new session. * * @param roomId the room id where the new Megolm session has been created for, may be null when importing from external sessions * @param senderKey the session sender key diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt index 2e52325e73..49cf60d051 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/DefaultKeysBackupService.kt @@ -1469,7 +1469,7 @@ internal class DefaultKeysBackupService @Inject constructor( } /** - * Returns boolean shared key flag, if enabled with respect to matrix configuration + * Returns boolean shared key flag, if enabled with respect to matrix configuration. */ private fun MXInboundMegolmSessionWrapper.getSharedKey(): Boolean { if (!cryptoStore.isShareKeysOnInviteEnabled()) return false diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/model/rest/KeyBackupData.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/model/rest/KeyBackupData.kt index 675bf12248..1817b18e2a 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/model/rest/KeyBackupData.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/keysbackup/model/rest/KeyBackupData.kt @@ -54,7 +54,7 @@ internal data class KeyBackupData( /** * Flag that indicates whether or not the current inboundSession will be shared to - * invited users to decrypt past messages + * invited users to decrypt past messages. */ @Json(name = "org.matrix.msc3061.shared_history") val sharedHistory: Boolean = false diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/InboundGroupSessionData.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/InboundGroupSessionData.kt index 0e60791282..2ce36aa209 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/InboundGroupSessionData.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/InboundGroupSessionData.kt @@ -43,9 +43,9 @@ data class InboundGroupSessionData( /** * Flag that indicates whether or not the current inboundSession will be shared to - *invited users to decrypt past messages + * invited users to decrypt past messages. */ @Json(name = "shared_history") val sharedHistory: Boolean = false, -) + ) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXInboundMegolmSessionWrapper.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXInboundMegolmSessionWrapper.kt index 0820b1c207..2772b34835 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXInboundMegolmSessionWrapper.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXInboundMegolmSessionWrapper.kt @@ -34,7 +34,7 @@ data class MXInboundMegolmSessionWrapper( val safeSessionId = tryOrNull("Fail to get megolm session Id") { session.sessionIdentifier() } /** - * Export the inbound group session keys + * Export the inbound group session keys. * @param index the index to export. If null, the first known index will be used * @return the inbound group session as MegolmSessionData if the operation succeeds */ diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/OlmInboundGroupSessionWrapper2.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/OlmInboundGroupSessionWrapper2.kt index f19275a8a1..4b37e97e0d 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/OlmInboundGroupSessionWrapper2.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/OlmInboundGroupSessionWrapper2.kt @@ -107,8 +107,8 @@ internal class OlmInboundGroupSessionWrapper2 : Serializable { /** * Export the inbound group session keys. - * @param index the index to export. If null, the first known index will be used * @param sharedHistory the flag that indicates whether or not the session can be shared + * @param index the index to export. If null, the first known index will be used * @return the inbound group session as MegolmSessionData if the operation succeeds */ fun exportKeys(sharedHistory: Boolean = false, index: Long? = null): MegolmSessionData? { diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/OutboundGroupSessionWrapper.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/OutboundGroupSessionWrapper.kt index e02953c9e0..5a6d1f4bc1 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/OutboundGroupSessionWrapper.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/OutboundGroupSessionWrapper.kt @@ -22,7 +22,7 @@ internal data class OutboundGroupSessionWrapper( val outboundGroupSession: OlmOutboundGroupSession, val creationTime: Long, /** - * As per MSC 3061, declares if this key could be shared when inviting a new user to the room + * As per MSC 3061, declares if this key could be shared when inviting a new user to the room. */ val sharedHistory: Boolean = 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 3a07149b58..0413fc730c 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 @@ -67,7 +67,7 @@ internal interface IMXCryptoStore { fun getInboundGroupSessions(): List /** - * Retrieve the known inbound group sessions for the specified room + * Retrieve the known inbound group sessions for the specified room. * * @param roomId The roomId that the sessions will be returned * @return the list of all known group sessions, for the provided roomId @@ -276,7 +276,7 @@ internal interface IMXCryptoStore { /** * Sets a boolean flag that will determine whether or not room history (existing inbound sessions) - * will be shared to new user invites + * will be shared to new user invites. * * @param roomId the room id * @param shouldShareHistory The boolean flag @@ -345,7 +345,7 @@ internal interface IMXCryptoStore { fun getInboundGroupSession(sessionId: String, senderKey: String, sharedHistory: Boolean): MXInboundMegolmSessionWrapper? /** - * Get the current outbound group session for this encrypted room + * Get the current outbound group session for this encrypted room. */ fun getCurrentOutboundGroupSessionForRoom(roomId: String): OutboundGroupSessionWrapper? @@ -355,7 +355,7 @@ internal interface IMXCryptoStore { fun storeCurrentOutboundGroupSessionForRoom(roomId: String, outboundGroupSession: OlmOutboundGroupSession?) /** - * Remove an inbound group session + * Remove an inbound group session. * * @param sessionId the session identifier. * @param senderKey the base64-encoded curve25519 key of the sender. diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/migration/MigrateCryptoTo018.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/migration/MigrateCryptoTo018.kt deleted file mode 100644 index d0989bc7d5..0000000000 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/migration/MigrateCryptoTo018.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.matrix.android.sdk.internal.crypto.store.db.migration - -import io.realm.DynamicRealm -import org.matrix.android.sdk.internal.crypto.store.db.model.CryptoMetadataEntityFields -import org.matrix.android.sdk.internal.util.database.RealmMigrator - -/** - * Support for MSC3061 (share room keys for past messages as a flag) - */ -internal class MigrateCryptoTo018(realm: DynamicRealm) : RealmMigrator(realm, 18) { - - override fun doMigrate(realm: DynamicRealm) { - realm.schema.get("CryptoMetadataEntity") - ?.addField(CryptoMetadataEntityFields.ENABLE_KEY_FORWARDING_ON_INVITE, Boolean::class.java) - ?.transform { obj -> - // default to false - obj.setBoolean(CryptoMetadataEntityFields.ENABLE_KEY_FORWARDING_ON_INVITE, false) - } - } -}