Skip to content
Snippets Groups Projects
Commit 23ed1e4d authored by Taras's avatar Taras
Browse files

Merge branch 'feature/custom_crypto_sdk' into main

parents b8a21f8b 4a6f41c8
No related branches found
No related tags found
No related merge requests found
...@@ -36,5 +36,10 @@ ...@@ -36,5 +36,10 @@
<option name="name" value="MavenRepo" /> <option name="name" value="MavenRepo" />
<option name="url" value="https://repo.maven.apache.org/maven2/" /> <option name="url" value="https://repo.maven.apache.org/maven2/" />
</remote-repository> </remote-repository>
<remote-repository>
<option name="id" value="maven2" />
<option name="name" value="maven2" />
<option name="url" value="https://gitlab.futo.org/api/v4/projects/130/packages/maven" />
</remote-repository>
</component> </component>
</project> </project>
\ No newline at end of file
...@@ -28,6 +28,7 @@ allprojects { ...@@ -28,6 +28,7 @@ allprojects {
groups.jitpack.group.each { includeGroup it } groups.jitpack.group.each { includeGroup it }
} }
} }
maven { url 'https://gitlab.futo.org/api/v4/projects/130/packages/maven' }
google { google {
content { content {
groups.google.regex.each { includeGroupByRegex it } groups.google.regex.each { includeGroupByRegex it }
......
configurations.maybeCreate("default")
artifacts.add("default", file('matrix-rust-sdk-crypto.aar'))
File added
...@@ -199,8 +199,8 @@ dependencies { ...@@ -199,8 +199,8 @@ dependencies {
//Bcrypt //Bcrypt
implementation 'at.favre.lib:bcrypt:0.9.0' implementation 'at.favre.lib:bcrypt:0.9.0'
rustCryptoImplementation("org.matrix.rustcomponents:crypto-android:0.3.15") rustCryptoImplementation("org.futo.rustcomponents:crypto-android:0.3.15.1")
// rustCryptoApi project(":library:rustCrypto") //rustCryptoApi project(":library:rustCrypto")
testImplementation libs.tests.junit testImplementation libs.tests.junit
// Note: version sticks to 1.9.2 due to https://github.com/mockk/mockk/issues/281 // Note: version sticks to 1.9.2 due to https://github.com/mockk/mockk/issues/281
......
...@@ -3,7 +3,7 @@ apply plugin: 'maven-publish' ...@@ -3,7 +3,7 @@ apply plugin: 'maven-publish'
def groupIdString = "org.matrix.android" def groupIdString = "org.matrix.android"
def artifactIdString = "matrix-sdk-android-rustCrypto" def artifactIdString = "matrix-sdk-android-rustCrypto"
def versionName = "1.5.30.24" def versionName = "1.5.30.27"
def artifactPath = "$buildDir/outputs/aar/$artifactIdString-release.aar" def artifactPath = "$buildDir/outputs/aar/$artifactIdString-release.aar"
def publicationName = "release" def publicationName = "release"
def projectId = "16" def projectId = "16"
......
...@@ -30,9 +30,7 @@ import org.matrix.android.sdk.api.session.room.members.MembershipService ...@@ -30,9 +30,7 @@ import org.matrix.android.sdk.api.session.room.members.MembershipService
import org.matrix.android.sdk.api.session.room.members.RoomMemberQueryParams import org.matrix.android.sdk.api.session.room.members.RoomMemberQueryParams
import org.matrix.android.sdk.api.session.room.model.Membership import org.matrix.android.sdk.api.session.room.model.Membership
import org.matrix.android.sdk.api.session.room.model.RoomMemberSummary import org.matrix.android.sdk.api.session.room.model.RoomMemberSummary
import org.matrix.android.sdk.internal.database.helper.findLatestSessionInfo
import org.matrix.android.sdk.internal.database.mapper.asDomain import org.matrix.android.sdk.internal.database.mapper.asDomain
import org.matrix.android.sdk.internal.database.model.ChunkEntity
import org.matrix.android.sdk.internal.database.model.RoomMemberSummaryEntity import org.matrix.android.sdk.internal.database.model.RoomMemberSummaryEntity
import org.matrix.android.sdk.internal.database.model.RoomMemberSummaryEntityFields import org.matrix.android.sdk.internal.database.model.RoomMemberSummaryEntityFields
import org.matrix.android.sdk.internal.database.model.RoomMembersLoadStatusType import org.matrix.android.sdk.internal.database.model.RoomMembersLoadStatusType
...@@ -157,12 +155,7 @@ internal class DefaultMembershipService @AssistedInject constructor( ...@@ -157,12 +155,7 @@ internal class DefaultMembershipService @AssistedInject constructor(
} }
private suspend fun sendShareHistoryKeysIfNeeded(userId: String) { private suspend fun sendShareHistoryKeysIfNeeded(userId: String) {
if (!cryptoService.isShareKeysOnInviteEnabled()) return cryptoService.sendSharedHistoryKeys(roomId, userId, null)
// TODO not sure it's the right way to get the latest messages in a room
val sessionInfo = Realm.getInstance(monarchy.realmConfiguration).use {
ChunkEntity.findLatestSessionInfo(it, roomId)
}
cryptoService.sendSharedHistoryKeys(roomId, userId, sessionInfo)
} }
override suspend fun invite3pid(threePid: ThreePid) { override suspend fun invite3pid(threePid: ThreePid) {
......
...@@ -277,7 +277,7 @@ internal class OlmMachine @Inject constructor( ...@@ -277,7 +277,7 @@ internal class OlmMachine @Inject constructor(
val events = adapter.toJson(toDevice ?: ToDeviceSyncResponse()) val events = adapter.toJson(toDevice ?: ToDeviceSyncResponse())
// field pass in the list of unused fallback keys here // field pass in the list of unused fallback keys here
val receiveSyncChanges = inner.receiveSyncChanges(events, devices, counts, deviceUnusedFallbackKeyTypes) val receiveSyncChanges = inner.receiveSyncChanges(events, devices, counts, deviceUnusedFallbackKeyTypes,"").toDeviceEvents.toString()
val outAdapter = moshi.adapter<List<Event>>( val outAdapter = moshi.adapter<List<Event>>(
Types.newParameterizedType( Types.newParameterizedType(
......
...@@ -735,7 +735,7 @@ internal class RustCryptoService @Inject constructor( ...@@ -735,7 +735,7 @@ internal class RustCryptoService @Inject constructor(
return true return true
} }
override fun supportsShareKeysOnInvite() = false override fun supportsShareKeysOnInvite() = true
override fun supportsKeyWithheld() = true override fun supportsKeyWithheld() = true
override fun supportsForwardedKeyWiththeld() = false override fun supportsForwardedKeyWiththeld() = false
...@@ -746,7 +746,7 @@ internal class RustCryptoService @Inject constructor( ...@@ -746,7 +746,7 @@ internal class RustCryptoService @Inject constructor(
} }
} }
override fun isShareKeysOnInviteEnabled() = false override fun isShareKeysOnInviteEnabled() = true
override fun setRoomUnBlockUnverifiedDevices(roomId: String) { override fun setRoomUnBlockUnverifiedDevices(roomId: String) {
cryptoStore.blockUnverifiedDevicesInRoom(roomId, false) cryptoStore.blockUnverifiedDevicesInRoom(roomId, false)
...@@ -845,9 +845,9 @@ internal class RustCryptoService @Inject constructor( ...@@ -845,9 +845,9 @@ internal class RustCryptoService @Inject constructor(
override fun removeSessionListener(listener: NewSessionListener) { override fun removeSessionListener(listener: NewSessionListener) {
megolmSessionImportManager.removeListener(listener) megolmSessionImportManager.removeListener(listener)
} }
/* ========================================================================================== /* ==========================================================================================
* DEBUG INFO * DEBUG INFO
* ========================================================================================== */ * ========================================================================================== */
override fun toString(): String { override fun toString(): String {
return "DefaultCryptoService of $myUserId ($deviceId)" return "DefaultCryptoService of $myUserId ($deviceId)"
...@@ -901,7 +901,17 @@ internal class RustCryptoService @Inject constructor( ...@@ -901,7 +901,17 @@ internal class RustCryptoService @Inject constructor(
override suspend fun prepareToEncrypt(roomId: String) = prepareToEncrypt.invoke(roomId, ensureAllMembersAreLoaded = true) override suspend fun prepareToEncrypt(roomId: String) = prepareToEncrypt.invoke(roomId, ensureAllMembersAreLoaded = true)
override suspend fun sendSharedHistoryKeys(roomId: String, userId: String, sessionInfoSet: Set<SessionInfo>?) { override suspend fun sendSharedHistoryKeys(roomId: String, userId: String, sessionInfoSet: Set<SessionInfo>?) {
// TODO("Not yet implemented") val cryptoInfo = cryptoStore.getRoomCryptoInfo(roomId) ?: return
if (cryptoInfo.shouldShareHistory.not()) return
withContext(coroutineDispatchers.crypto) {
downloadKeysIfNeeded(listOf(userId))
getUserDevices(userId)
with(olmMachine) {
inner().shareRoomHistoryKeys(roomId, listOf(userId))
updateTrackedUsers(listOf(userId))
outgoingRequestsProcessor.processOutgoingRequests(olmMachine)
}
}
} }
companion object { companion object {
......
...@@ -100,7 +100,7 @@ fun RealmToMigrate.getPickledAccount(pickleKey: ByteArray): MigrationData { ...@@ -100,7 +100,7 @@ fun RealmToMigrate.getPickledAccount(pickleKey: ByteArray): MigrationData {
) )
MigrationData( MigrationData(
account = pickledAccount, account = pickledAccount,
pickleKey = pickleKey.map { it.toUByte() }, pickleKey = pickleKey,
crossSigning = CrossSigningKeyExport( crossSigning = CrossSigningKeyExport(
masterKey = masterKey, masterKey = masterKey,
selfSigningKey = selfSignedKey, selfSigningKey = selfSignedKey,
...@@ -153,7 +153,7 @@ fun RealmToMigrate.getPickledAccount(pickleKey: ByteArray): MigrationData { ...@@ -153,7 +153,7 @@ fun RealmToMigrate.getPickledAccount(pickleKey: ByteArray): MigrationData {
migrationData = MigrationData( migrationData = MigrationData(
account = pickledAccount, account = pickledAccount,
pickleKey = pickleKey.map { it.toUByte() }, pickleKey = pickleKey,
crossSigning = CrossSigningKeyExport( crossSigning = CrossSigningKeyExport(
masterKey = masterKey, masterKey = masterKey,
selfSigningKey = selfSignedKey, selfSigningKey = selfSignedKey,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment