Store session data in a secure way (#98)

* Replace SessionData DataStore with an encrypted SQLite DB.

---------

Co-authored-by: Benoit Marty <benoit@matrix.org>
This commit is contained in:
Jorge Martin Espinosa 2023-03-02 16:48:54 +01:00 committed by GitHub
parent 1ec629c304
commit c20013243b
38 changed files with 600 additions and 199 deletions

View file

@ -19,7 +19,6 @@ package io.element.android.libraries.matrixtest
import io.element.android.libraries.matrix.MatrixClient
import io.element.android.libraries.matrix.core.RoomId
import io.element.android.libraries.matrix.core.SessionId
import io.element.android.libraries.matrix.core.UserId
import io.element.android.libraries.matrix.media.MediaResolver
import io.element.android.libraries.matrix.room.MatrixRoom
import io.element.android.libraries.matrix.room.RoomSummaryDataSource
@ -30,7 +29,7 @@ import kotlinx.coroutines.delay
import org.matrix.rustcomponents.sdk.MediaSource
class FakeMatrixClient(
override val sessionId: SessionId = SessionId(A_SESSION_ID),
override val sessionId: SessionId = A_SESSION_ID,
private val userDisplayName: Result<String> = Result.success(A_USER_NAME),
private val userAvatarURLString: Result<String> = Result.success(AN_AVATAR_URL),
val roomSummaryDataSource: RoomSummaryDataSource = FakeRoomSummaryDataSource()
@ -63,8 +62,6 @@ class FakeMatrixClient(
logoutFailure?.let { throw it }
}
override fun userId(): UserId = A_USER_ID
override suspend fun loadUserDisplayName(): Result<String> {
return userDisplayName
}

View file

@ -18,12 +18,14 @@ package io.element.android.libraries.matrixtest
import io.element.android.libraries.matrix.core.EventId
import io.element.android.libraries.matrix.core.RoomId
import io.element.android.libraries.matrix.core.SessionId
import io.element.android.libraries.matrix.core.UserId
const val A_USER_NAME = "alice"
const val A_PASSWORD = "password"
val A_USER_ID = UserId("@alice:server.org")
val A_SESSION_ID = SessionId(A_USER_ID.value)
val A_ROOM_ID = RoomId("!aRoomId")
val AN_EVENT_ID = EventId("\$anEventId")
@ -34,7 +36,6 @@ const val ANOTHER_MESSAGE = "Hello universe!"
const val A_HOMESERVER = "matrix.org"
const val A_HOMESERVER_2 = "matrix-client.org"
const val A_SESSION_ID = "sessionId"
const val AN_AVATAR_URL = "mxc://data"

View file

@ -18,9 +18,9 @@ package io.element.android.libraries.matrixtest.auth
import io.element.android.libraries.matrix.MatrixClient
import io.element.android.libraries.matrix.auth.MatrixAuthenticationService
import io.element.android.libraries.matrix.core.SessionId
import io.element.android.libraries.matrix.core.UserId
import io.element.android.libraries.matrixtest.A_HOMESERVER
import io.element.android.libraries.matrixtest.A_SESSION_ID
import io.element.android.libraries.matrixtest.A_USER_ID
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf
@ -33,11 +33,11 @@ class FakeAuthenticationService : MatrixAuthenticationService {
return flowOf(false)
}
override suspend fun getLatestSessionId(): SessionId? {
override suspend fun getLatestSessionId(): UserId? {
return null
}
override suspend fun restoreSession(sessionId: SessionId): MatrixClient? {
override suspend fun restoreSession(userId: UserId): MatrixClient? {
return null
}
@ -57,10 +57,10 @@ class FakeAuthenticationService : MatrixAuthenticationService {
delay(100)
}
override suspend fun login(username: String, password: String): SessionId {
override suspend fun login(username: String, password: String): UserId {
delay(100)
loginError?.let { throw it }
return SessionId(A_SESSION_ID)
return A_USER_ID
}
fun givenLoginError(throwable: Throwable?) {