mirror of
https://github.com/logos-storage/nim-poseidon2.git
synced 2026-01-02 13:43:08 +00:00
Allow for keyed compression
This commit is contained in:
parent
6fddd3e39e
commit
8b7a4a3151
@ -2,9 +2,9 @@ import ./types
|
||||
import ./permutation
|
||||
|
||||
# 2-to-1 compression
|
||||
func compress*(a, b : F) : F =
|
||||
func compress*(a, b : F, key = zero) : F =
|
||||
var x = a
|
||||
var y = b
|
||||
var z : F = zero
|
||||
var z = key
|
||||
permInplace(x, y, z)
|
||||
return x
|
||||
|
||||
15
tests/poseidon2/testCompress.nim
Normal file
15
tests/poseidon2/testCompress.nim
Normal file
@ -0,0 +1,15 @@
|
||||
import std/unittest
|
||||
import constantine/math/arithmetic
|
||||
import poseidon2/types
|
||||
import poseidon2/permutation
|
||||
import poseidon2/compress
|
||||
|
||||
suite "compress":
|
||||
|
||||
test "uses permutation to compress two elements":
|
||||
check bool(compress(1.toF, 2.toF) == (1.toF, 2.toF, 0.toF).perm[0])
|
||||
check bool(compress(3.toF, 4.toF) == (3.toF, 4.toF, 0.toF).perm[0])
|
||||
|
||||
test "allows for keyed compression":
|
||||
check bool(compress(1.toF, 2.toF, key=3.toF) == (1.toF, 2.toF, 3.toF).perm[0])
|
||||
check bool(compress(4.toF, 5.toF, key=6.toF) == (4.toF, 5.toF, 6.toF).perm[0])
|
||||
@ -1,5 +1,6 @@
|
||||
import ./poseidon2/testPermutation
|
||||
import ./poseidon2/testSponge
|
||||
import ./poseidon2/testCompress
|
||||
import ./poseidon2/testPoseidon2
|
||||
import ./poseidon2/testIo
|
||||
import ./poseidon2/testReadme
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user