Fix Equality Check in XChaCha20EncryptionResult
The `XChaCha20EncryptionResult` data class currently implements its own equality check due to the class's byte array members. However, this is using a standard equality check, `==`, rather than checking the array's contents. This will cause two results with the same contained values to return `false` on an equals check. Confirmed this issue with a unit test, and fixed by changing the implemented method to use `contentEquals` instead.
This commit is contained in:
parent
509d22ed05
commit
77445bb5cf
@ -25,8 +25,8 @@ data class XChaCha20EncryptionResult(val nonce: UByteArray, val encryptionData:
|
|||||||
|
|
||||||
other as XChaCha20EncryptionResult
|
other as XChaCha20EncryptionResult
|
||||||
|
|
||||||
if (nonce != other.nonce) return false
|
if (!nonce.contentEquals(other.nonce)) return false
|
||||||
if (encryptionData != other.encryptionData) return false
|
if (!encryptionData.contentEquals(other.encryptionData)) return false
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.iospin.kotlin.crypto.symmetric
|
||||||
|
|
||||||
|
import com.ionspin.kotlin.crypto.symmetric.XChaCha20EncryptionResult
|
||||||
|
import kotlin.test.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
import kotlin.test.assertNotEquals
|
||||||
|
|
||||||
|
class XChaCha20EncryptionResultTest {
|
||||||
|
@Test
|
||||||
|
fun testEquality() {
|
||||||
|
val firstResult = XChaCha20EncryptionResult(
|
||||||
|
nonce = ubyteArrayOf(0x12u, 0x34u, 0x56u),
|
||||||
|
encryptionData = ubyteArrayOf(0x78u, 0x9Au),
|
||||||
|
)
|
||||||
|
val secondResult = XChaCha20EncryptionResult(
|
||||||
|
nonce = ubyteArrayOf(0x12u, 0x34u, 0x56u),
|
||||||
|
encryptionData = ubyteArrayOf(0x78u, 0x9Au),
|
||||||
|
)
|
||||||
|
val differingResult = XChaCha20EncryptionResult(
|
||||||
|
nonce = ubyteArrayOf(0u),
|
||||||
|
encryptionData = ubyteArrayOf(0u),
|
||||||
|
)
|
||||||
|
|
||||||
|
assertEquals(firstResult, secondResult)
|
||||||
|
assertNotEquals(firstResult, differingResult)
|
||||||
|
assertNotEquals(secondResult, differingResult)
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user