TKN/src/test/kotlin/it/unisannio/assd/tkn/key/ReportAuthorizationKeyTest.kt

57 lines
1.8 KiB
Kotlin

package it.unisannio.assd.tkn.key
import cafe.cryptography.ed25519.Ed25519PrivateKey
import it.unisannio.assd.tkn.TestConst.MESSAGE
import it.unisannio.assd.tkn.TestConst.PRIVATE_KEY_STRING_HEX
import it.unisannio.assd.tkn.TestConst.PUBLIC_KEY_STRING_HEX
import it.unisannio.assd.tkn.TestConst.TCK_0
import it.unisannio.assd.tkn.toHexByteArray
import org.amshove.kluent.`should be equal to`
import org.junit.Test
class ReportAuthorizationKeyTest {
@Test
fun createFromByteArray() {
val keyBytes = PRIVATE_KEY_STRING_HEX.toHexByteArray()
val rak = ReportAuthorizationKey.createFromByteArray(keyBytes)
rak.toHexString() `should be equal to` PRIVATE_KEY_STRING_HEX
}
@Test
fun createFromHexString() {
val rak = ReportAuthorizationKey.createFromHexString(PRIVATE_KEY_STRING_HEX)
rak.toHexString() `should be equal to` PRIVATE_KEY_STRING_HEX
}
@Test
fun deriveVerificationKey() {
val rak = ReportAuthorizationKey.createFromHexString(PRIVATE_KEY_STRING_HEX)
rak.deriveVerificationKey()
.toHexString() `should be equal to` PUBLIC_KEY_STRING_HEX
}
@Test
fun deriveTck0() {
val rak = ReportAuthorizationKey.createFromHexString(PRIVATE_KEY_STRING_HEX)
rak.baseTemporaryContactKey()
.toHexString() `should be equal to` TCK_0
}
@Test
fun sign() {
val rak = ReportAuthorizationKey.createFromHexString(PRIVATE_KEY_STRING_HEX)
val rvk = rak.deriveVerificationKey()
val privateKey = Ed25519PrivateKey.fromByteArray(PRIVATE_KEY_STRING_HEX.toHexByteArray())
val publicKey = privateKey.derivePublic()
val message = MESSAGE.toByteArray()
rak.sign(message, rvk) `should be equal to` privateKey.expand().sign(message, publicKey).toByteArray()
}
}