TKN/src/main/kotlin/it/unisannio/assd/tkn/key/ReportVerificationKey.kt

37 lines
1.2 KiB
Kotlin

package it.unisannio.assd.tkn.key
import cafe.cryptography.ed25519.Ed25519PrivateKey
import cafe.cryptography.ed25519.Ed25519PublicKey
import cafe.cryptography.ed25519.Ed25519Signature
import it.unisannio.assd.tkn.toHexString
class ReportVerificationKey private constructor(private val key: Ed25519PublicKey) {
fun contactNumbersBetween(
tck: TemporaryContactKey,
from: Short,
until: Short
) = tck.contactNumbersBetween(this, from, until)
fun verify(message: ByteArray, sign: ByteArray): Boolean = key.verify(
message,
Ed25519Signature.fromByteArray(sign)
)
fun toByteArray(): ByteArray = key.toByteArray()
fun toHexString() = toByteArray().toHexString()
companion object {
fun createFromAuthorizationKey(authorizationKey: ReportAuthorizationKey) =
ReportVerificationKey(
Ed25519PrivateKey.fromByteArray(authorizationKey.toByteArray())
.derivePublic()
)
fun createFromByteArray(bytes: ByteArray): ReportVerificationKey =
ReportVerificationKey(
Ed25519PublicKey.fromByteArray(bytes)
)
}
}