From e439b72e48170c9bfcd0b57157c60816655d52e8 Mon Sep 17 00:00:00 2001 From: Hugh Nimmo-Smith Date: Fri, 14 Oct 2022 13:46:57 +0100 Subject: [PATCH] Handle master key trust during E2EE set up --- .../android/sdk/api/rendezvous/Rendezvous.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/rendezvous/Rendezvous.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/rendezvous/Rendezvous.kt index e33130e529..17f3a73181 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/rendezvous/Rendezvous.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/rendezvous/Rendezvous.kt @@ -176,10 +176,17 @@ class Rendezvous( crypto.setDeviceVerification(DeviceTrustLevel(locallyVerified = true, crossSigningVerified = false), userId, verifyingDeviceId) // TODO: what do we do with the master key? -// verificationResponse.master_key ?.let { -// // set master key as trusted -// crypto.setDeviceVerification(DeviceTrustLevel(locallyVerified = true, crossSigningVerified = false), userId, it) -// } + verificationResponse.master_key ?.let { masterKeyFromVerifyingDevice -> + // set master key as trusted + crypto.crossSigningService().getMyCrossSigningKeys()?.masterKey()?.let { localMasterKey -> + if (localMasterKey.unpaddedBase64PublicKey == masterKeyFromVerifyingDevice) { + Timber.tag(TAG).i("Setting master key as trusted") + crypto.crossSigningService().markMyMasterKeyAsTrusted() + } else { + Timber.tag(TAG).w("Master key from verifying device doesn't match: $masterKeyFromVerifyingDevice vs $localMasterKey") + } + } ?: Timber.tag(TAG).i("No local master key") + } ?: Timber.tag(TAG).i("No master key given by verifying device") // request secrets from the verifying device Timber.tag(TAG).i("Requesting secrets from $verifyingDeviceId")