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 kotlin.math.min
abstract class Keccak internal constructor(
open class Keccak(
override val bytes: Int,
private val rate: Int,
private val domain: UByte,
) : HashFunction() {
init {
if (bytes < 1) throw IllegalArgumentException()
if (rate !in 8..168) throw IllegalArgumentException()
}
override val block: Int
get() = rate
@@ -67,7 +73,7 @@ abstract class Keccak internal constructor(
addAll(
state[i++].toUByteArray(LITTLE_ENDIAN)
.take(min(bytes - size, 8))
.sliceArray(0..<min(bytes - size, 8))
)
}
}.toUByteArray()

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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