From b6aee04e246f664c75aec6b8cd93197ea4b22b76 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 5 Mar 2020 11:21:44 +0100 Subject: [PATCH] Move method to interface step 1 --- .../crypto/model/rest/KeyVerificationStart.kt | 37 ------------------ .../verification/VerificationInfoStart.kt | 38 +++++++++++++++++++ 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/model/rest/KeyVerificationStart.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/model/rest/KeyVerificationStart.kt index c6a64fc2c8..01e4d48ce7 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/model/rest/KeyVerificationStart.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/model/rest/KeyVerificationStart.kt @@ -17,11 +17,8 @@ package im.vector.matrix.android.internal.crypto.model.rest import com.squareup.moshi.Json import com.squareup.moshi.JsonClass -import im.vector.matrix.android.api.session.crypto.verification.SasMode -import im.vector.matrix.android.internal.crypto.verification.SASDefaultVerificationTransaction import im.vector.matrix.android.internal.crypto.verification.VerificationInfoStart import im.vector.matrix.android.internal.util.JsonCanonicalizer -import timber.log.Timber /** * Sent by Alice to initiate an interactive key verification. @@ -43,39 +40,5 @@ internal data class KeyVerificationStart( return JsonCanonicalizer.getCanonicalJson(KeyVerificationStart::class.java, this) } - // TODO Move those method to the interface? - override fun isValid(): Boolean { - if (transactionID.isNullOrBlank() - || fromDevice.isNullOrBlank() - || (method == VERIFICATION_METHOD_SAS && !isValidSas()) - || (method == VERIFICATION_METHOD_RECIPROCATE && !isValidReciprocate())) { - Timber.e("## received invalid verification request") - return false - } - return true - } - - private fun isValidSas(): Boolean { - if (keyAgreementProtocols.isNullOrEmpty() - || hashes.isNullOrEmpty() - || !hashes.contains("sha256") || messageAuthenticationCodes.isNullOrEmpty() - || (!messageAuthenticationCodes.contains(SASDefaultVerificationTransaction.SAS_MAC_SHA256) - && !messageAuthenticationCodes.contains(SASDefaultVerificationTransaction.SAS_MAC_SHA256_LONGKDF)) - || shortAuthenticationStrings.isNullOrEmpty() - || !shortAuthenticationStrings.contains(SasMode.DECIMAL)) { - return false - } - - return true - } - - private fun isValidReciprocate(): Boolean { - if (sharedSecret.isNullOrBlank()) { - return false - } - - return true - } - override fun toSendToDeviceObject() = this } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/VerificationInfoStart.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/VerificationInfoStart.kt index 3f3e4f27a6..5bbb069e94 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/VerificationInfoStart.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/verification/VerificationInfoStart.kt @@ -15,6 +15,11 @@ */ package im.vector.matrix.android.internal.crypto.verification +import im.vector.matrix.android.api.session.crypto.verification.SasMode +import im.vector.matrix.android.internal.crypto.model.rest.VERIFICATION_METHOD_RECIPROCATE +import im.vector.matrix.android.internal.crypto.model.rest.VERIFICATION_METHOD_SAS +import timber.log.Timber + internal interface VerificationInfoStart : VerificationInfo { val method: String? @@ -58,4 +63,37 @@ internal interface VerificationInfoStart : VerificationInfo { val sharedSecret: String? fun toCanonicalJson(): String? + + override fun isValid(): Boolean { + if (transactionID.isNullOrBlank() + || fromDevice.isNullOrBlank() + || (method == VERIFICATION_METHOD_SAS && !isValidSas()) + || (method == VERIFICATION_METHOD_RECIPROCATE && !isValidReciprocate())) { + Timber.e("## received invalid verification request") + return false + } + return true + } + + private fun isValidSas(): Boolean { + if (keyAgreementProtocols.isNullOrEmpty() + || hashes.isNullOrEmpty() + || !hashes.contains("sha256") || messageAuthenticationCodes.isNullOrEmpty() + || (!messageAuthenticationCodes.contains(SASDefaultVerificationTransaction.SAS_MAC_SHA256) + && !messageAuthenticationCodes.contains(SASDefaultVerificationTransaction.SAS_MAC_SHA256_LONGKDF)) + || shortAuthenticationStrings.isNullOrEmpty() + || !shortAuthenticationStrings.contains(SasMode.DECIMAL)) { + return false + } + + return true + } + + private fun isValidReciprocate(): Boolean { + if (sharedSecret.isNullOrBlank()) { + return false + } + + return true + } }