Less "!!"

This commit is contained in:
Benoit Marty 2020-03-06 13:34:12 +01:00
parent 23c20acff1
commit 4504308f25
8 changed files with 72 additions and 83 deletions

View File

@ -33,12 +33,10 @@ internal data class MessageVerificationDoneContent(
override fun toEventContent(): Content? = toContent() override fun toEventContent(): Content? = toContent()
override fun asValidObject(): ValidVerificationDone? { override fun asValidObject(): ValidVerificationDone? {
if (transactionID.isNullOrEmpty()) { val validTransactionId = transactionID?.takeIf { it.isNotEmpty() } ?: return null
return null
}
return ValidVerificationDone( return ValidVerificationDone(
transactionID!! validTransactionId
) )
} }
} }

View File

@ -15,8 +15,6 @@
*/ */
package im.vector.matrix.android.internal.crypto.verification package im.vector.matrix.android.internal.crypto.verification
import timber.log.Timber
internal interface VerificationInfoAccept : VerificationInfo<ValidVerificationInfoAccept> { internal interface VerificationInfoAccept : VerificationInfo<ValidVerificationInfoAccept> {
/** /**
* The key agreement protocol that Bobs device has selected to use, out of the list proposed by Alices device * The key agreement protocol that Bobs device has selected to use, out of the list proposed by Alices device
@ -45,23 +43,20 @@ internal interface VerificationInfoAccept : VerificationInfo<ValidVerificationIn
var commitment: String? var commitment: String?
override fun asValidObject(): ValidVerificationInfoAccept? { override fun asValidObject(): ValidVerificationInfoAccept? {
if (transactionID.isNullOrBlank() val validTransactionId = transactionID?.takeIf { it.isNotEmpty() } ?: return null
|| keyAgreementProtocol.isNullOrBlank() val validKeyAgreementProtocol = keyAgreementProtocol?.takeIf { it.isNotEmpty() } ?: return null
|| hash.isNullOrBlank() val validHash = hash?.takeIf { it.isNotEmpty() } ?: return null
|| commitment.isNullOrBlank() val validMessageAuthenticationCode = messageAuthenticationCode?.takeIf { it.isNotEmpty() } ?: return null
|| messageAuthenticationCode.isNullOrBlank() val validShortAuthenticationStrings = shortAuthenticationStrings?.takeIf { it.isNotEmpty() } ?: return null
|| shortAuthenticationStrings.isNullOrEmpty()) { val validCommitment = commitment?.takeIf { it.isNotEmpty() } ?: return null
Timber.e("## received invalid verification request")
return null
}
return ValidVerificationInfoAccept( return ValidVerificationInfoAccept(
transactionID!!, validTransactionId,
keyAgreementProtocol!!, validKeyAgreementProtocol,
hash!!, validHash,
messageAuthenticationCode!!, validMessageAuthenticationCode,
shortAuthenticationStrings!!, validShortAuthenticationStrings,
commitment validCommitment
) )
} }
} }

View File

@ -27,12 +27,12 @@ internal interface VerificationInfoCancel : VerificationInfo<ValidVerificationIn
val reason: String? val reason: String?
override fun asValidObject(): ValidVerificationInfoCancel? { override fun asValidObject(): ValidVerificationInfoCancel? {
if (transactionID.isNullOrBlank() || code.isNullOrBlank()) { val validTransactionId = transactionID?.takeIf { it.isNotEmpty() } ?: return null
return null val validCode = code?.takeIf { it.isNotEmpty() } ?: return null
}
return ValidVerificationInfoCancel( return ValidVerificationInfoCancel(
transactionID!!, validTransactionId,
code!!, validCode,
reason reason
) )
} }

View File

@ -25,12 +25,12 @@ internal interface VerificationInfoKey : VerificationInfo<ValidVerificationInfoK
val key: String? val key: String?
override fun asValidObject(): ValidVerificationInfoKey? { override fun asValidObject(): ValidVerificationInfoKey? {
if (transactionID.isNullOrBlank() || key.isNullOrBlank()) { val validTransactionId = transactionID?.takeIf { it.isNotEmpty() } ?: return null
return null val validKey = key?.takeIf { it.isNotEmpty() } ?: return null
}
return ValidVerificationInfoKey( return ValidVerificationInfoKey(
transactionID!!, validTransactionId,
key!! validKey
) )
} }
} }

View File

@ -30,13 +30,14 @@ internal interface VerificationInfoMac : VerificationInfo<ValidVerificationInfoM
val keys: String? val keys: String?
override fun asValidObject(): ValidVerificationInfoMac? { override fun asValidObject(): ValidVerificationInfoMac? {
if (transactionID.isNullOrBlank() || keys.isNullOrBlank() || mac.isNullOrEmpty()) { val validTransactionId = transactionID?.takeIf { it.isNotEmpty() } ?: return null
return null val validMac = mac?.takeIf { it.isNotEmpty() } ?: return null
} val validKeys = keys?.takeIf { it.isNotEmpty() } ?: return null
return ValidVerificationInfoMac( return ValidVerificationInfoMac(
transactionID!!, validTransactionId,
mac!!, validMac,
keys!! validKeys
) )
} }
} }

View File

@ -37,16 +37,14 @@ internal interface VerificationInfoReady : VerificationInfo<ValidVerificationInf
val methods: List<String>? val methods: List<String>?
override fun asValidObject(): ValidVerificationInfoReady? { override fun asValidObject(): ValidVerificationInfoReady? {
if (transactionID.isNullOrBlank() val validTransactionId = transactionID?.takeIf { it.isNotEmpty() } ?: return null
|| fromDevice.isNullOrBlank() val validFromDevice = fromDevice?.takeIf { it.isNotEmpty() } ?: return null
|| methods.isNullOrEmpty()) { val validMethods = methods?.takeIf { it.isNotEmpty() } ?: return null
return null
}
return ValidVerificationInfoReady( return ValidVerificationInfoReady(
transactionID!!, validTransactionId,
fromDevice!!, validFromDevice,
methods!! validMethods
) )
} }
} }

View File

@ -38,13 +38,14 @@ internal interface VerificationInfoRequest : VerificationInfo<ValidVerificationI
override fun asValidObject(): ValidVerificationInfoRequest? { override fun asValidObject(): ValidVerificationInfoRequest? {
// FIXME No check on Timestamp? // FIXME No check on Timestamp?
if (transactionID.isNullOrBlank() || methods.isNullOrEmpty() || fromDevice.isNullOrEmpty()) { val validTransactionId = transactionID?.takeIf { it.isNotEmpty() } ?: return null
return null val validFromDevice = fromDevice?.takeIf { it.isNotEmpty() } ?: return null
} val validMethods = methods?.takeIf { it.isNotEmpty() } ?: return null
return ValidVerificationInfoRequest( return ValidVerificationInfoRequest(
transactionID!!, validTransactionId,
fromDevice!!, validFromDevice,
methods!!, validMethods,
timestamp timestamp
) )
} }

View File

@ -64,44 +64,40 @@ internal interface VerificationInfoStart : VerificationInfo<ValidVerificationInf
fun toCanonicalJson(): String fun toCanonicalJson(): String
override fun asValidObject(): ValidVerificationInfoStart? { override fun asValidObject(): ValidVerificationInfoStart? {
if (transactionID.isNullOrBlank() val validTransactionId = transactionID?.takeIf { it.isNotEmpty() } ?: return null
|| fromDevice.isNullOrBlank()) { val validFromDevice = fromDevice?.takeIf { it.isNotEmpty() } ?: return null
return null
}
return when (method) { return when (method) {
VERIFICATION_METHOD_SAS -> { VERIFICATION_METHOD_SAS -> {
if (keyAgreementProtocols.isNullOrEmpty() val validKeyAgreementProtocols = keyAgreementProtocols?.takeIf { it.isNotEmpty() } ?: return null
|| hashes.isNullOrEmpty() val validHashes = hashes?.takeIf { it.contains("sha256") } ?: return null
|| !hashes!!.contains("sha256") || messageAuthenticationCodes.isNullOrEmpty() val validMessageAuthenticationCodes = messageAuthenticationCodes
|| (!messageAuthenticationCodes!!.contains(SASDefaultVerificationTransaction.SAS_MAC_SHA256) ?.takeIf {
&& !messageAuthenticationCodes!!.contains(SASDefaultVerificationTransaction.SAS_MAC_SHA256_LONGKDF)) it.contains(SASDefaultVerificationTransaction.SAS_MAC_SHA256)
|| shortAuthenticationStrings.isNullOrEmpty() || it.contains(SASDefaultVerificationTransaction.SAS_MAC_SHA256_LONGKDF)
|| !shortAuthenticationStrings!!.contains(SasMode.DECIMAL)) { }
null ?: return null
} else { val validShortAuthenticationStrings = shortAuthenticationStrings?.takeIf { it.contains(SasMode.DECIMAL) } ?: return null
ValidVerificationInfoStart.SasVerificationInfoStart( ValidVerificationInfoStart.SasVerificationInfoStart(
transactionID!!, validTransactionId,
fromDevice!!, validFromDevice,
keyAgreementProtocols!!, validKeyAgreementProtocols,
hashes!!, validHashes,
messageAuthenticationCodes!!, validMessageAuthenticationCodes,
shortAuthenticationStrings!!, validShortAuthenticationStrings,
canonicalJson = toCanonicalJson() canonicalJson = toCanonicalJson()
) )
} }
}
VERIFICATION_METHOD_RECIPROCATE -> { VERIFICATION_METHOD_RECIPROCATE -> {
if (sharedSecret.isNullOrBlank()) { val validSharedSecret = sharedSecret?.takeIf { it.isNotEmpty() } ?: return null
null
} else {
ValidVerificationInfoStart.ReciprocateVerificationInfoStart( ValidVerificationInfoStart.ReciprocateVerificationInfoStart(
transactionID!!, validTransactionId,
fromDevice!!, validFromDevice,
sharedSecret!! validSharedSecret
) )
} }
}
else -> null else -> null
} }
} }