refactor keccak functions
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user