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