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 asValidObject(): ValidVerificationDone? {
if (transactionID.isNullOrEmpty()) {
return null
}
val validTransactionId = transactionID?.takeIf { it.isNotEmpty() } ?: return null
return ValidVerificationDone(
transactionID!!
validTransactionId
)
}
}

View File

@ -15,8 +15,6 @@
*/
package im.vector.matrix.android.internal.crypto.verification
import timber.log.Timber
internal interface VerificationInfoAccept : VerificationInfo<ValidVerificationInfoAccept> {
/**
* 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?
override fun asValidObject(): ValidVerificationInfoAccept? {
if (transactionID.isNullOrBlank()
|| keyAgreementProtocol.isNullOrBlank()
|| hash.isNullOrBlank()
|| commitment.isNullOrBlank()
|| messageAuthenticationCode.isNullOrBlank()
|| shortAuthenticationStrings.isNullOrEmpty()) {
Timber.e("## received invalid verification request")
return null
}
val validTransactionId = transactionID?.takeIf { it.isNotEmpty() } ?: return null
val validKeyAgreementProtocol = keyAgreementProtocol?.takeIf { it.isNotEmpty() } ?: return null
val validHash = hash?.takeIf { it.isNotEmpty() } ?: return null
val validMessageAuthenticationCode = messageAuthenticationCode?.takeIf { it.isNotEmpty() } ?: return null
val validShortAuthenticationStrings = shortAuthenticationStrings?.takeIf { it.isNotEmpty() } ?: return null
val validCommitment = commitment?.takeIf { it.isNotEmpty() } ?: return null
return ValidVerificationInfoAccept(
transactionID!!,
keyAgreementProtocol!!,
hash!!,
messageAuthenticationCode!!,
shortAuthenticationStrings!!,
commitment
validTransactionId,
validKeyAgreementProtocol,
validHash,
validMessageAuthenticationCode,
validShortAuthenticationStrings,
validCommitment
)
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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