refactor keccak functions

This commit is contained in:
2025-12-02 19:13:52 +01:00
parent 324d907d0c
commit 3ff0ad1b91
7 changed files with 16 additions and 22 deletions

View File

@@ -6,10 +6,16 @@ import com.infendro.bytearray.toULongArray
import com.infendro.hash.HashFunction import com.infendro.hash.HashFunction
import kotlin.math.min import kotlin.math.min
abstract class Keccak internal constructor( open class Keccak(
override val bytes: Int,
private val rate: Int, private val rate: Int,
private val domain: UByte, private val domain: UByte,
) : HashFunction() { ) : HashFunction() {
init {
if (bytes < 1) throw IllegalArgumentException()
if (rate !in 8..168) throw IllegalArgumentException()
}
override val block: Int override val block: Int
get() = rate get() = rate
@@ -67,7 +73,7 @@ abstract class Keccak internal constructor(
addAll( addAll(
state[i++].toUByteArray(LITTLE_ENDIAN) state[i++].toUByteArray(LITTLE_ENDIAN)
.take(min(bytes - size, 8)) .sliceArray(0..<min(bytes - size, 8))
) )
} }
}.toUByteArray() }.toUByteArray()

View File

@@ -2,7 +2,4 @@ package com.infendro.hash.keccak.sha3
import com.infendro.hash.keccak.Keccak import com.infendro.hash.keccak.Keccak
object `SHA3-224` : Keccak(144, 0x06U) { object `SHA3-224` : Keccak(28, 144, 0x06U)
override val bytes: Int
get() = 28
}

View File

@@ -2,7 +2,4 @@ package com.infendro.hash.keccak.sha3
import com.infendro.hash.keccak.Keccak import com.infendro.hash.keccak.Keccak
object `SHA3-256` : Keccak(136, 0x06U) { object `SHA3-256` : Keccak(32, 136, 0x06U)
override val bytes: Int
get() = 32
}

View File

@@ -2,7 +2,4 @@ package com.infendro.hash.keccak.sha3
import com.infendro.hash.keccak.Keccak import com.infendro.hash.keccak.Keccak
object `SHA3-384` : Keccak(104, 0x06U) { object `SHA3-384` : Keccak(48, 104, 0x06U)
override val bytes: Int
get() = 48
}

View File

@@ -2,7 +2,4 @@ package com.infendro.hash.keccak.sha3
import com.infendro.hash.keccak.Keccak import com.infendro.hash.keccak.Keccak
object `SHA3-512` : Keccak(72, 0x06U) { object `SHA3-512` : Keccak(64, 72, 0x06U)
override val bytes: Int
get() = 64
}

View File

@@ -3,5 +3,5 @@ package com.infendro.hash.keccak.shake
import com.infendro.hash.keccak.Keccak import com.infendro.hash.keccak.Keccak
class SHAKE128( class SHAKE128(
override val bytes: Int, bytes: Int,
) : Keccak(168, 0x1FU) ) : Keccak(bytes, 168, 0x1FU)

View File

@@ -3,5 +3,5 @@ package com.infendro.hash.keccak.shake
import com.infendro.hash.keccak.Keccak import com.infendro.hash.keccak.Keccak
class SHAKE256( class SHAKE256(
override val bytes: Int, bytes: Int,
) : Keccak(136, 0x1FU) ) : Keccak(bytes, 136, 0x1FU)