45 lines
1.3 KiB
Kotlin
45 lines
1.3 KiB
Kotlin
import kotlinx.coroutines.test.runTest
|
|
import net.sergeych.crypto2.*
|
|
import net.sergeych.kiloparsec.encodeToUByteArray
|
|
import net.sergeych.utools.pack
|
|
import net.sergeych.utools.unpack
|
|
import kotlin.test.*
|
|
|
|
class KeysTest {
|
|
@Test
|
|
fun testCreationAndMap() = runTest {
|
|
initCrypto()
|
|
val (stk,pbk) = SigningKey.pair()
|
|
|
|
val x = mapOf( stk to "STK!", pbk to "PBK!")
|
|
assertEquals("STK!", x[stk])
|
|
val s1 = SigningKey.Secret(stk.packed)
|
|
assertEquals(stk, s1)
|
|
assertEquals("STK!", x[s1])
|
|
assertEquals("PBK!", x[pbk])
|
|
|
|
val data = "8 rays dev!".encodeToUByteArray()
|
|
val data1 = "8 rays dev!".encodeToUByteArray()
|
|
val s = stk.seal(data)
|
|
assertTrue(s.isValid(data))
|
|
|
|
data1[0] = 0x01u
|
|
assertFalse(s.isValid(data1))
|
|
val p2 = SigningKey.pair()
|
|
val p3 = SigningKey.pair()
|
|
|
|
val ms = SealedBox(data, s1) + p2.secretKey
|
|
|
|
// non tampered:
|
|
val ms1 = unpack<SealedBox>(pack(ms))
|
|
assertContentEquals(data, ms1.message)
|
|
assertTrue(pbk in ms1)
|
|
assertTrue(p2.publicKey in ms1)
|
|
assertTrue(p3.publicKey !in ms1)
|
|
|
|
assertThrows<IllegalSignatureException> {
|
|
unpack<SealedBox>(pack(ms).also { it[3] = 1u })
|
|
}
|
|
}
|
|
|
|
} |