48 lines
1.4 KiB
Kotlin
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)
|
|
}
|
|
|
|
} |