Less "!!"
This commit is contained in:
parent
23c20acff1
commit
4504308f25
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 Bob’s device has selected to use, out of the list proposed by Alice’s device
|
* The key agreement protocol that Bob’s device has selected to use, out of the list proposed by Alice’s 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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue