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

Change callbacks to suspended

parent 9d9838c9
No related branches found
No related tags found
No related merge requests found
...@@ -20,7 +20,6 @@ import org.futo.circles.core.extensions.createResult ...@@ -20,7 +20,6 @@ import org.futo.circles.core.extensions.createResult
import org.futo.circles.core.provider.MatrixSessionProvider import org.futo.circles.core.provider.MatrixSessionProvider
import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo
import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo
import org.matrix.android.sdk.api.util.awaitCallback
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import javax.inject.Inject import javax.inject.Inject
...@@ -94,16 +93,12 @@ class ActiveSessionsDataSource @Inject constructor( ...@@ -94,16 +93,12 @@ class ActiveSessionsDataSource @Inject constructor(
} }
suspend fun removeSession(deviceId: String): Response<Unit> = createResult { suspend fun removeSession(deviceId: String): Response<Unit> = createResult {
awaitCallback { session.cryptoService().deleteDevice(deviceId, authConfirmationProvider)
session.cryptoService().deleteDevice(deviceId, authConfirmationProvider, it)
}
} }
suspend fun resetKeysToEnableCrossSigning(): Response<Unit> = createResult { suspend fun resetKeysToEnableCrossSigning(): Response<Unit> = createResult {
awaitCallback { session.cryptoService().crossSigningService()
session.cryptoService().crossSigningService() .initializeCrossSigning(authConfirmationProvider)
.initializeCrossSigning(authConfirmationProvider, it)
}
} }
private fun isSessionInactive(lastSeenTsMillis: Long?): Boolean = private fun isSessionInactive(lastSeenTsMillis: Long?): Boolean =
......
package org.futo.circles.auth.feature.cross_signing package org.futo.circles.auth.feature.cross_signing
import org.futo.circles.core.provider.MatrixSessionProvider import org.futo.circles.core.provider.MatrixSessionProvider
import org.matrix.android.sdk.api.extensions.tryOrNull
import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.Session
import org.matrix.android.sdk.api.session.crypto.crosssigning.MASTER_KEY_SSSS_NAME import org.matrix.android.sdk.api.session.crypto.crosssigning.MASTER_KEY_SSSS_NAME
import org.matrix.android.sdk.api.session.crypto.crosssigning.SELF_SIGNING_KEY_SSSS_NAME import org.matrix.android.sdk.api.session.crypto.crosssigning.SELF_SIGNING_KEY_SSSS_NAME
...@@ -9,7 +10,6 @@ import org.matrix.android.sdk.api.session.crypto.crosssigning.isVerified ...@@ -9,7 +10,6 @@ import org.matrix.android.sdk.api.session.crypto.crosssigning.isVerified
import org.matrix.android.sdk.api.session.securestorage.KeyInfoResult import org.matrix.android.sdk.api.session.securestorage.KeyInfoResult
import org.matrix.android.sdk.api.session.securestorage.KeyRef import org.matrix.android.sdk.api.session.securestorage.KeyRef
import org.matrix.android.sdk.api.session.securestorage.SsssKeySpec import org.matrix.android.sdk.api.session.securestorage.SsssKeySpec
import org.matrix.android.sdk.api.util.awaitCallback
import javax.inject.Inject import javax.inject.Inject
class CrossSigningDataSource @Inject constructor() { class CrossSigningDataSource @Inject constructor() {
...@@ -20,7 +20,7 @@ class CrossSigningDataSource @Inject constructor() { ...@@ -20,7 +20,7 @@ class CrossSigningDataSource @Inject constructor() {
try { try {
session.sharedSecretStorageService().getSecret(MASTER_KEY_SSSS_NAME, null, keySpec) session.sharedSecretStorageService().getSecret(MASTER_KEY_SSSS_NAME, null, keySpec)
} catch (ignore: Throwable) { } catch (ignore: Throwable) {
awaitCallback { crossSigningService.initializeCrossSigning(null, it) } tryOrNull { crossSigningService.initializeCrossSigning(null) }
storeKeys(session, keySpec) storeKeys(session, keySpec)
} }
} }
...@@ -45,10 +45,9 @@ class CrossSigningDataSource @Inject constructor() { ...@@ -45,10 +45,9 @@ class CrossSigningDataSource @Inject constructor() {
mskPrivateKey, uskPrivateKey, sskPrivateKey mskPrivateKey, uskPrivateKey, sskPrivateKey
) )
if (trustResult.isVerified()) { if (trustResult.isVerified()) {
awaitCallback { tryOrNull {
session.sessionParams.deviceId?.let { deviceId -> session.cryptoService().crossSigningService()
session.cryptoService().crossSigningService().trustDevice(deviceId, it) .trustDevice(session.sessionParams.deviceId)
}
} }
} }
} }
......
...@@ -3,6 +3,7 @@ package org.futo.circles.auth.feature.pass_phrase ...@@ -3,6 +3,7 @@ package org.futo.circles.auth.feature.pass_phrase
import org.futo.circles.core.provider.MatrixSessionProvider import org.futo.circles.core.provider.MatrixSessionProvider
import org.matrix.android.sdk.api.crypto.BCRYPT_ALGORITHM_BACKUP import org.matrix.android.sdk.api.crypto.BCRYPT_ALGORITHM_BACKUP
import org.matrix.android.sdk.api.crypto.BSSPEKE_ALGORITHM_BACKUP import org.matrix.android.sdk.api.crypto.BSSPEKE_ALGORITHM_BACKUP
import org.matrix.android.sdk.api.extensions.tryOrNull
import org.matrix.android.sdk.api.session.crypto.keysbackup.toKeysVersionResult import org.matrix.android.sdk.api.session.crypto.keysbackup.toKeysVersionResult
import org.matrix.android.sdk.api.session.securestorage.KeyInfoResult import org.matrix.android.sdk.api.session.securestorage.KeyInfoResult
import org.matrix.android.sdk.api.util.awaitCallback import org.matrix.android.sdk.api.util.awaitCallback
...@@ -21,10 +22,10 @@ class EncryptionAlgorithmHelper @Inject constructor() { ...@@ -21,10 +22,10 @@ class EncryptionAlgorithmHelper @Inject constructor() {
} }
private suspend fun getEncryptionAlgorithm(): String? { private suspend fun getEncryptionAlgorithm(): String? {
val keyVersion = awaitCallback { val keyVersion = tryOrNull {
MatrixSessionProvider.currentSession?.cryptoService()?.keysBackupService() MatrixSessionProvider.currentSession?.cryptoService()?.keysBackupService()
?.getCurrentVersion(it) ?.getCurrentVersion()
}.toKeysVersionResult() }?.toKeysVersionResult()
return keyVersion?.algorithm return keyVersion?.algorithm
} }
......
...@@ -8,10 +8,9 @@ import org.futo.circles.auth.feature.cross_signing.CrossSigningDataSource ...@@ -8,10 +8,9 @@ import org.futo.circles.auth.feature.cross_signing.CrossSigningDataSource
import org.futo.circles.auth.feature.pass_phrase.restore.SSSSDataSource import org.futo.circles.auth.feature.pass_phrase.restore.SSSSDataSource
import org.futo.circles.core.model.LoadingData import org.futo.circles.core.model.LoadingData
import org.futo.circles.core.provider.MatrixSessionProvider import org.futo.circles.core.provider.MatrixSessionProvider
import org.matrix.android.sdk.api.session.crypto.keysbackup.KeysVersion import org.matrix.android.sdk.api.extensions.tryOrNull
import org.matrix.android.sdk.api.session.crypto.keysbackup.MegolmBackupCreationInfo import org.matrix.android.sdk.api.session.crypto.keysbackup.MegolmBackupCreationInfo
import org.matrix.android.sdk.api.session.crypto.keysbackup.toKeysVersionResult import org.matrix.android.sdk.api.session.crypto.keysbackup.toKeysVersionResult
import org.matrix.android.sdk.api.util.awaitCallback
import java.security.SecureRandom import java.security.SecureRandom
import javax.inject.Inject import javax.inject.Inject
...@@ -29,9 +28,8 @@ class CreatePassPhraseDataSource @Inject constructor( ...@@ -29,9 +28,8 @@ class CreatePassPhraseDataSource @Inject constructor(
suspend fun createPassPhraseBackup() { suspend fun createPassPhraseBackup() {
loadingLiveData.postValue(LoadingData(messageId = R.string.generating_recovery_key)) loadingLiveData.postValue(LoadingData(messageId = R.string.generating_recovery_key))
val keyBackupPrivateKey = generateRandomPrivateKey() val keyBackupPrivateKey = generateRandomPrivateKey()
val backupCreationInfo = awaitCallback { val backupCreationInfo =
keysBackupService.prepareKeysBackupVersion(keyBackupPrivateKey, it) keysBackupService.prepareKeysBackupVersion(keyBackupPrivateKey, null)
}
createKeyBackup(backupCreationInfo) createKeyBackup(backupCreationInfo)
val keyData = ssssDataSource.storeBsSpekeKeyIntoSSSS(keyBackupPrivateKey) val keyData = ssssDataSource.storeBsSpekeKeyIntoSSSS(keyBackupPrivateKey)
crossSigningDataSource.initCrossSigningIfNeed(keyData.keySpec) crossSigningDataSource.initCrossSigningIfNeed(keyData.keySpec)
...@@ -61,21 +59,19 @@ class CreatePassPhraseDataSource @Inject constructor( ...@@ -61,21 +59,19 @@ class CreatePassPhraseDataSource @Inject constructor(
loadingLiveData.postValue(LoadingData(messageId = R.string.creating_backup)) loadingLiveData.postValue(LoadingData(messageId = R.string.creating_backup))
val versionData = getCurrentBackupVersion() val versionData = getCurrentBackupVersion()
if (versionData?.version.isNullOrBlank()) { if (versionData?.version.isNullOrBlank())
awaitCallback<KeysVersion> { keysBackupService.createKeysBackupVersion(backupCreationInfo)
keysBackupService.createKeysBackupVersion(backupCreationInfo, it) else throw Exception(context.getString(R.string.backup_already_exist))
}
} else throw Exception(context.getString(R.string.backup_already_exist))
} }
private suspend fun removeCurrentBackupIfExist() { private suspend fun removeCurrentBackupIfExist() {
loadingLiveData.postValue(LoadingData(messageId = R.string.removing_backup)) loadingLiveData.postValue(LoadingData(messageId = R.string.removing_backup))
getCurrentBackupVersion()?.version?.let { version -> getCurrentBackupVersion()?.version?.let { version ->
awaitCallback { keysBackupService.deleteBackup(version, it) } keysBackupService.deleteBackup(version)
} }
} }
private suspend fun getCurrentBackupVersion() = private suspend fun getCurrentBackupVersion() =
awaitCallback { keysBackupService.getCurrentVersion(it) }.toKeysVersionResult() tryOrNull { keysBackupService.getCurrentVersion() }?.toKeysVersionResult()
} }
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