Create common action
This commit is contained in:
parent
340830d45f
commit
e0e41d9e5c
|
@ -37,6 +37,7 @@ import im.vector.matrix.android.api.session.events.model.toModel
|
||||||
import im.vector.matrix.android.api.session.room.Room
|
import im.vector.matrix.android.api.session.room.Room
|
||||||
import im.vector.matrix.android.api.session.room.RoomService
|
import im.vector.matrix.android.api.session.room.RoomService
|
||||||
import im.vector.matrix.android.api.session.room.model.Membership
|
import im.vector.matrix.android.api.session.room.model.Membership
|
||||||
|
import im.vector.matrix.android.internal.crypto.actions.SetDeviceVerificationAction
|
||||||
import im.vector.matrix.android.internal.crypto.algorithms.IMXEncrypting
|
import im.vector.matrix.android.internal.crypto.algorithms.IMXEncrypting
|
||||||
import im.vector.matrix.android.internal.crypto.keysbackup.KeysBackup
|
import im.vector.matrix.android.internal.crypto.keysbackup.KeysBackup
|
||||||
import im.vector.matrix.android.internal.crypto.model.*
|
import im.vector.matrix.android.internal.crypto.model.*
|
||||||
|
@ -95,6 +96,8 @@ internal class CryptoManager(
|
||||||
private val mRoomService: RoomService,
|
private val mRoomService: RoomService,
|
||||||
// Olm Manager
|
// Olm Manager
|
||||||
private val mOlmManager: OlmManager,
|
private val mOlmManager: OlmManager,
|
||||||
|
// Actions
|
||||||
|
private val mSetDeviceVerificationAction: SetDeviceVerificationAction,
|
||||||
// Tasks
|
// Tasks
|
||||||
private val mClaimOneTimeKeysForUsersDeviceTask: ClaimOneTimeKeysForUsersDeviceTask,
|
private val mClaimOneTimeKeysForUsersDeviceTask: ClaimOneTimeKeysForUsersDeviceTask,
|
||||||
private val mDeleteDeviceTask: DeleteDeviceTask,
|
private val mDeleteDeviceTask: DeleteDeviceTask,
|
||||||
|
@ -529,25 +532,7 @@ internal class CryptoManager(
|
||||||
* @param callback the asynchronous callback
|
* @param callback the asynchronous callback
|
||||||
*/
|
*/
|
||||||
override fun setDeviceVerification(verificationStatus: Int, deviceId: String, userId: String) {
|
override fun setDeviceVerification(verificationStatus: Int, deviceId: String, userId: String) {
|
||||||
val device = mCryptoStore.getUserDevice(deviceId, userId)
|
mSetDeviceVerificationAction.handle(verificationStatus, deviceId, userId)
|
||||||
|
|
||||||
// Sanity check
|
|
||||||
if (null == device) {
|
|
||||||
Timber.w("## setDeviceVerification() : Unknown device $userId:$deviceId")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (device.mVerified != verificationStatus) {
|
|
||||||
device.mVerified = verificationStatus
|
|
||||||
mCryptoStore.storeUserDevice(userId, device)
|
|
||||||
|
|
||||||
if (userId == mCredentials.userId) {
|
|
||||||
// If one of the user's own devices is being marked as verified / unverified,
|
|
||||||
// check the key backup status, since whether or not we use this depends on
|
|
||||||
// whether it has a signature from a verified device
|
|
||||||
mKeysBackup.checkAndStartKeysBackup()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -19,6 +19,7 @@ package im.vector.matrix.android.internal.crypto
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import im.vector.matrix.android.api.auth.data.Credentials
|
import im.vector.matrix.android.api.auth.data.Credentials
|
||||||
import im.vector.matrix.android.api.session.crypto.CryptoService
|
import im.vector.matrix.android.api.session.crypto.CryptoService
|
||||||
|
import im.vector.matrix.android.internal.crypto.actions.SetDeviceVerificationAction
|
||||||
import im.vector.matrix.android.internal.crypto.api.CryptoApi
|
import im.vector.matrix.android.internal.crypto.api.CryptoApi
|
||||||
import im.vector.matrix.android.internal.crypto.keysbackup.KeysBackup
|
import im.vector.matrix.android.internal.crypto.keysbackup.KeysBackup
|
||||||
import im.vector.matrix.android.internal.crypto.keysbackup.api.RoomKeysApi
|
import im.vector.matrix.android.internal.crypto.keysbackup.api.RoomKeysApi
|
||||||
|
@ -107,6 +108,12 @@ internal class CryptoModule {
|
||||||
OneTimeKeysManager(get(), get(), get(), get(), get())
|
OneTimeKeysManager(get(), get(), get(), get(), get())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Actions
|
||||||
|
scope(DefaultSession.SCOPE) {
|
||||||
|
SetDeviceVerificationAction(get(), get(), get())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// CryptoManager
|
// CryptoManager
|
||||||
scope(DefaultSession.SCOPE) {
|
scope(DefaultSession.SCOPE) {
|
||||||
CryptoManager(
|
CryptoManager(
|
||||||
|
@ -124,6 +131,8 @@ internal class CryptoModule {
|
||||||
get(),
|
get(),
|
||||||
get(),
|
get(),
|
||||||
get(),
|
get(),
|
||||||
|
// Actions
|
||||||
|
get(),
|
||||||
// Tasks
|
// Tasks
|
||||||
get(), get(), get(), get(), get(), get(), get(),
|
get(), get(), get(), get(), get(), get(), get(),
|
||||||
// Task executor
|
// Task executor
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2019 New Vector Ltd
|
||||||
|
*
|
||||||
|
* 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 im.vector.matrix.android.internal.crypto.actions
|
||||||
|
|
||||||
|
import im.vector.matrix.android.api.auth.data.Credentials
|
||||||
|
import im.vector.matrix.android.internal.crypto.keysbackup.KeysBackup
|
||||||
|
import im.vector.matrix.android.internal.crypto.store.IMXCryptoStore
|
||||||
|
import timber.log.Timber
|
||||||
|
|
||||||
|
internal class SetDeviceVerificationAction(val mCryptoStore: IMXCryptoStore,
|
||||||
|
val mCredentials: Credentials,
|
||||||
|
val mKeysBackup: KeysBackup) {
|
||||||
|
|
||||||
|
fun handle(verificationStatus: Int, deviceId: String, userId: String) {
|
||||||
|
val device = mCryptoStore.getUserDevice(deviceId, userId)
|
||||||
|
|
||||||
|
// Sanity check
|
||||||
|
if (null == device) {
|
||||||
|
Timber.w("## setDeviceVerification() : Unknown device $userId:$deviceId")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (device.mVerified != verificationStatus) {
|
||||||
|
device.mVerified = verificationStatus
|
||||||
|
mCryptoStore.storeUserDevice(userId, device)
|
||||||
|
|
||||||
|
if (userId == mCredentials.userId) {
|
||||||
|
// If one of the user's own devices is being marked as verified / unverified,
|
||||||
|
// check the key backup status, since whether or not we use this depends on
|
||||||
|
// whether it has a signature from a verified device
|
||||||
|
mKeysBackup.checkAndStartKeysBackup()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -29,6 +29,7 @@ import im.vector.matrix.android.api.session.events.model.EventType
|
||||||
import im.vector.matrix.android.api.session.events.model.toModel
|
import im.vector.matrix.android.api.session.events.model.toModel
|
||||||
import im.vector.matrix.android.internal.crypto.CryptoAsyncHelper
|
import im.vector.matrix.android.internal.crypto.CryptoAsyncHelper
|
||||||
import im.vector.matrix.android.internal.crypto.DeviceListManager
|
import im.vector.matrix.android.internal.crypto.DeviceListManager
|
||||||
|
import im.vector.matrix.android.internal.crypto.actions.SetDeviceVerificationAction
|
||||||
import im.vector.matrix.android.internal.crypto.model.MXDeviceInfo
|
import im.vector.matrix.android.internal.crypto.model.MXDeviceInfo
|
||||||
import im.vector.matrix.android.internal.crypto.model.MXUsersDevicesMap
|
import im.vector.matrix.android.internal.crypto.model.MXUsersDevicesMap
|
||||||
import im.vector.matrix.android.internal.crypto.model.rest.*
|
import im.vector.matrix.android.internal.crypto.model.rest.*
|
||||||
|
@ -48,6 +49,7 @@ import kotlin.collections.HashMap
|
||||||
internal class DefaultSasVerificationService(private val mCredentials: Credentials,
|
internal class DefaultSasVerificationService(private val mCredentials: Credentials,
|
||||||
private val mCryptoStore: IMXCryptoStore,
|
private val mCryptoStore: IMXCryptoStore,
|
||||||
private val deviceListManager: DeviceListManager,
|
private val deviceListManager: DeviceListManager,
|
||||||
|
private val setDeviceVerificationAction: SetDeviceVerificationAction,
|
||||||
private val mSendToDeviceTask: SendToDeviceTask,
|
private val mSendToDeviceTask: SendToDeviceTask,
|
||||||
private val mTaskExecutor: TaskExecutor)
|
private val mTaskExecutor: TaskExecutor)
|
||||||
: VerificationTransaction.Listener, SasVerificationService {
|
: VerificationTransaction.Listener, SasVerificationService {
|
||||||
|
@ -130,7 +132,7 @@ internal class DefaultSasVerificationService(private val mCredentials: Credentia
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun markedLocallyAsManuallyVerified(userId: String, deviceID: String) {
|
override fun markedLocallyAsManuallyVerified(userId: String, deviceID: String) {
|
||||||
mCryptoListener.setDeviceVerification(MXDeviceInfo.DEVICE_VERIFICATION_VERIFIED,
|
setDeviceVerificationAction.handle(MXDeviceInfo.DEVICE_VERIFICATION_VERIFIED,
|
||||||
deviceID,
|
deviceID,
|
||||||
userId)
|
userId)
|
||||||
|
|
||||||
|
@ -427,12 +429,7 @@ internal class DefaultSasVerificationService(private val mCredentials: Credentia
|
||||||
mCryptoListener = listener
|
mCryptoListener = listener
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setDeviceVerification(verificationStatus: Int, deviceId: String, userId: String) {
|
|
||||||
mCryptoListener.setDeviceVerification(verificationStatus, deviceId, userId)
|
|
||||||
}
|
|
||||||
|
|
||||||
interface SasCryptoListener {
|
interface SasCryptoListener {
|
||||||
fun setDeviceVerification(verificationStatus: Int, deviceId: String, userId: String)
|
|
||||||
fun getMyDevice(): MXDeviceInfo
|
fun getMyDevice(): MXDeviceInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue