48 lines
1.4 KiB
Kotlin

import kotlinx.coroutines.test.runTest
import net.sergeych.crypto2.KDF
import net.sergeych.crypto2.initCrypto
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertFalse
class KDFTest {
@Test
fun testCacheKey() = runTest{
initCrypto()
val k1 = KDF.Argon.create(KDF.Complexity.Interactive, KDF.Argon.randomSalt(), 128)
val k2 = KDF.Argon.create(KDF.Complexity.Interactive, k1.salt, 128)
assertEquals(k1, k2)
assertEquals(k1.hashCode(), k2.hashCode())
val key1 = KDF.Instance(k1, "foo")
val key2 = KDF.Instance(k2, "foo")
val key3 = KDF.Instance(k2, "bar")
assertEquals(key1, key2)
assertEquals(key1.hashCode(), key2.hashCode())
assertFalse { key3 == key2 }
assertFalse { key3.hashCode() == key2.hashCode() }
val m = mutableMapOf<KDF.Instance, String>()
m[key1] = "foo"
m[key2] = "bar"
m[key3] = "foobar"
assertEquals("bar", m[key1])
assertEquals("bar", m[key2])
assertEquals("foobar", m[key3])
val set1 = setOf(key1, key2, key3)
val set2 = setOf(key3, key2, key1)
assertEquals(set2, set1)
}
@Test
fun complexityTest() = runTest{
initCrypto()
val kk = KDF.Complexity.Interactive.kdfForSize(3).deriveMultipleKeys("lala", 3)
assertEquals(3, kk.size)
}
}