From 02eaa9ec59925510d085b4b31f47ea050e54d259 Mon Sep 17 00:00:00 2001 From: Infendro Date: Mon, 4 Aug 2025 13:28:08 +0200 Subject: [PATCH] implement seed --- .../kotlin/com/infendro/random/HMAC.kt | 22 +++++++++++-------- .../kotlin/com/infendro/random/PRNG.kt | 4 ++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/commonMain/kotlin/com/infendro/random/HMAC.kt b/src/commonMain/kotlin/com/infendro/random/HMAC.kt index d22fbae..c7333af 100644 --- a/src/commonMain/kotlin/com/infendro/random/HMAC.kt +++ b/src/commonMain/kotlin/com/infendro/random/HMAC.kt @@ -4,20 +4,24 @@ import com.infendro.bytearray.addAll import com.infendro.hash.HashFunction class HMAC internal constructor( - function: HashFunction, + private val function: HashFunction, ) : PRNG() { private val random = Default private val hmac = com.infendro.mac.HMAC(function) - private var K: ByteArray - private var V: ByteArray + private lateinit var K: ByteArray + private lateinit var V: ByteArray init { - K = ByteArray(function.bytes).also { - random.nextBytes(it) - } - V = ByteArray(function.bytes).also { - random.nextBytes(it) - } + val bytes = random.nextBytes(function.bytes) + seed(bytes) + } + + override fun seed( + seed: ByteArray, + ) { + K = ByteArray(function.bytes) { 0x00 } + V = ByteArray(function.bytes) { 0x01 } + reseed(seed) } override fun reseed( diff --git a/src/commonMain/kotlin/com/infendro/random/PRNG.kt b/src/commonMain/kotlin/com/infendro/random/PRNG.kt index f176fa1..1198c2c 100644 --- a/src/commonMain/kotlin/com/infendro/random/PRNG.kt +++ b/src/commonMain/kotlin/com/infendro/random/PRNG.kt @@ -5,6 +5,10 @@ import com.infendro.hash.HashFunction import kotlin.random.Random abstract class PRNG : Random() { + abstract fun seed( + seed: ByteArray, + ) + abstract fun reseed( entropy: ByteArray, )