diff --git a/matrix-sdk-android/src/androidTest/java/im/vector/matrix/android/internal/crypto/crosssigning/XSigningTest.kt b/matrix-sdk-android/src/androidTest/java/im/vector/matrix/android/internal/crypto/crosssigning/XSigningTest.kt index b56ee4a489..f8d30a2679 100644 --- a/matrix-sdk-android/src/androidTest/java/im/vector/matrix/android/internal/crypto/crosssigning/XSigningTest.kt +++ b/matrix-sdk-android/src/androidTest/java/im/vector/matrix/android/internal/crypto/crosssigning/XSigningTest.kt @@ -138,7 +138,7 @@ class XSigningTest : InstrumentedTest { // Manually mark it as trusted from first session mTestHelper.doSync { - bobSession.cryptoService().crossSigningService().signDevice(bobSecondDeviceId, it) + bobSession.cryptoService().crossSigningService().trustDevice(bobSecondDeviceId, it) } // Now alice should cross trust bob's second device diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/extensions/MatrixSdkExtensions.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/extensions/MatrixSdkExtensions.kt index 97365e01e5..6ce04f8b30 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/extensions/MatrixSdkExtensions.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/extensions/MatrixSdkExtensions.kt @@ -16,7 +16,6 @@ package im.vector.matrix.android.api.extensions -import im.vector.matrix.android.api.comparators.DatedObjectComparators import im.vector.matrix.android.internal.crypto.model.CryptoDeviceInfo import im.vector.matrix.android.internal.crypto.model.rest.DeviceInfo diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/crypto/crosssigning/CrossSigningService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/crypto/crosssigning/CrossSigningService.kt index 042ac83235..89062e171a 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/crypto/crosssigning/CrossSigningService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/crypto/crosssigning/CrossSigningService.kt @@ -63,8 +63,8 @@ interface CrossSigningService { /** * Sign one of your devices and upload the signature */ - fun signDevice(deviceId: String, - callback: MatrixCallback) + fun trustDevice(deviceId: String, + callback: MatrixCallback) fun checkDeviceTrust(otherUserId: String, otherDeviceId: String, diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/crosssigning/DefaultCrossSigningService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/crosssigning/DefaultCrossSigningService.kt index 4d7ab83d69..c1187e6a1c 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/crosssigning/DefaultCrossSigningService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/crosssigning/DefaultCrossSigningService.kt @@ -587,7 +587,7 @@ internal class DefaultCrossSigningService @Inject constructor( checkSelfTrust() } - override fun signDevice(deviceId: String, callback: MatrixCallback) { + override fun trustDevice(deviceId: String, callback: MatrixCallback) { // This device should be yours val device = cryptoStore.getUserDevice(userId, deviceId) if (device == null) { diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/SASDefaultVerificationTransaction.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/SASDefaultVerificationTransaction.kt index 22f543f267..17d0db0450 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/SASDefaultVerificationTransaction.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/SASDefaultVerificationTransaction.kt @@ -312,7 +312,7 @@ internal abstract class SASDefaultVerificationTransaction( if (otherUserId == userId) { // If me it's reasonable to sign and upload the device signature // Notice that i might not have the private keys, so may not be able to do it - crossSigningService.signDevice(otherDeviceId!!, object : MatrixCallback { + crossSigningService.trustDevice(otherDeviceId!!, object : MatrixCallback { override fun onFailure(failure: Throwable) { Timber.w(failure, "## SAS Verification: Failed to sign new device $otherDeviceId") } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/qrcode/DefaultQrCodeVerificationTransaction.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/qrcode/DefaultQrCodeVerificationTransaction.kt index 5762b56993..b423bd0ea8 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/qrcode/DefaultQrCodeVerificationTransaction.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/qrcode/DefaultQrCodeVerificationTransaction.kt @@ -240,7 +240,7 @@ internal class DefaultQrCodeVerificationTransaction( if (otherUserId == userId) { // If me it's reasonable to sign and upload the device signature // Notice that i might not have the private keys, so may not be able to do it - crossSigningService.signDevice(otherDeviceId!!, object : MatrixCallback { + crossSigningService.trustDevice(otherDeviceId!!, object : MatrixCallback { override fun onFailure(failure: Throwable) { Timber.w(failure, "## QR Verification: Failed to sign new device $otherDeviceId") } diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheetViewModel.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheetViewModel.kt index d31fb96f5b..b7da38526a 100644 --- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheetViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheetViewModel.kt @@ -47,6 +47,7 @@ import im.vector.matrix.android.internal.crypto.crosssigning.isVerified import im.vector.matrix.android.internal.crypto.verification.PendingVerificationRequest import im.vector.riotx.core.extensions.exhaustive import im.vector.riotx.core.platform.VectorViewModel +import timber.log.Timber data class VerificationBottomSheetViewState( val otherUserMxItem: MatrixItem? = null, @@ -272,6 +273,16 @@ class VerificationBottomSheetViewModel @AssistedInject constructor(@Assisted ini res?.get(SELF_SIGNING_KEY_SSSS_NAME) ) if (trustResult.isVerified()) { + // Sign this device and upload the signature + session.sessionParams.credentials.deviceId?.let { deviceId -> + session.cryptoService() + .crossSigningService().trustDevice(deviceId, object : MatrixCallback { + override fun onFailure(failure: Throwable) { + Timber.w("Failed to sign my device after recovery", failure) + } + }) + } + setState { copy(verifiedFromPrivateKeys = true) }