Add Sponge.digest() call that takes bytes

This commit is contained in:
Mark Spanbroek 2023-11-09 14:26:54 +01:00 committed by markspanbroek
parent d8a176930d
commit 70c03b834f
2 changed files with 14 additions and 0 deletions

View File

@ -65,3 +65,9 @@ func digest*(_: type Sponge, elements: openArray[F], rate: static int): F =
for element in elements:
sponge.update(element)
return sponge.finish()
func digest*(_: type Sponge, bytes: openArray[byte], rate: static int): F =
var sponge = Sponge.init(rate)
for element in bytes.elements(F):
sponge.update(element)
return sponge.finish()

View File

@ -1,6 +1,8 @@
import std/unittest
import std/sequtils
import constantine/math/io/io_fields
import constantine/math/arithmetic
import poseidon2/types
import poseidon2
@ -48,3 +50,9 @@ suite "sponge":
xs.add( toF(i) )
let h = Sponge.digest(xs, rate = 2)
check toDecimal(h) == expectedSpongeResultsRate2[n]
test "sponge with byte array as input":
let bytes = toSeq 1'u8..80'u8
let elements = toSeq bytes.elements(F)
let expected = Sponge.digest(elements, rate = 2)
check bool(Sponge.digest(bytes, rate = 2) == expected)