From 4690a4a3a1407e6355e375a96aa174a77ef36d24 Mon Sep 17 00:00:00 2001 From: Arya Tabaie <15056835+Tabaie@users.noreply.github.com> Date: Wed, 29 Jan 2025 13:03:30 -0600 Subject: [PATCH] fix: missing Poseidon2 round keys --- ecc/bls12-377/fr/poseidon2/poseidon2.go | 4 ++-- ecc/bls12-381/fr/poseidon2/poseidon2.go | 4 ++-- ecc/bls24-315/fr/poseidon2/poseidon2.go | 4 ++-- ecc/bls24-317/fr/poseidon2/poseidon2.go | 4 ++-- ecc/bn254/fr/poseidon2/poseidon2.go | 4 ++-- ecc/bw6-633/fr/poseidon2/poseidon2.go | 4 ++-- ecc/bw6-761/fr/poseidon2/poseidon2.go | 4 ++-- .../crypto/hash/poseidon2/template/poseidon2.go.tmpl | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/ecc/bls12-377/fr/poseidon2/poseidon2.go b/ecc/bls12-377/fr/poseidon2/poseidon2.go index a180904e0..e5d7599e5 100644 --- a/ecc/bls12-377/fr/poseidon2/poseidon2.go +++ b/ecc/bls12-377/fr/poseidon2/poseidon2.go @@ -74,14 +74,14 @@ func InitRC(seed string, rf, rp, t int) [][]fr.Element { _, _ = hash.Write(rnd) } } - for i := 0; i < rp; i++ { + for i := rf / 2; i < rp+rf/2; i++ { roundKeys[i] = make([]fr.Element, 1) rnd = hash.Sum(nil) roundKeys[i][0].SetBytes(rnd) hash.Reset() _, _ = hash.Write(rnd) } - for i := 0; i < rf/2; i++ { + for i := rp + rf/2; i < rp+rf; i++ { roundKeys[i] = make([]fr.Element, t) for j := 0; j < t; j++ { rnd = hash.Sum(nil) diff --git a/ecc/bls12-381/fr/poseidon2/poseidon2.go b/ecc/bls12-381/fr/poseidon2/poseidon2.go index 481c81ba7..68678b763 100644 --- a/ecc/bls12-381/fr/poseidon2/poseidon2.go +++ b/ecc/bls12-381/fr/poseidon2/poseidon2.go @@ -74,14 +74,14 @@ func InitRC(seed string, rf, rp, t int) [][]fr.Element { _, _ = hash.Write(rnd) } } - for i := 0; i < rp; i++ { + for i := rf / 2; i < rp+rf/2; i++ { roundKeys[i] = make([]fr.Element, 1) rnd = hash.Sum(nil) roundKeys[i][0].SetBytes(rnd) hash.Reset() _, _ = hash.Write(rnd) } - for i := 0; i < rf/2; i++ { + for i := rp + rf/2; i < rp+rf; i++ { roundKeys[i] = make([]fr.Element, t) for j := 0; j < t; j++ { rnd = hash.Sum(nil) diff --git a/ecc/bls24-315/fr/poseidon2/poseidon2.go b/ecc/bls24-315/fr/poseidon2/poseidon2.go index 824dcead7..9428276aa 100644 --- a/ecc/bls24-315/fr/poseidon2/poseidon2.go +++ b/ecc/bls24-315/fr/poseidon2/poseidon2.go @@ -74,14 +74,14 @@ func InitRC(seed string, rf, rp, t int) [][]fr.Element { _, _ = hash.Write(rnd) } } - for i := 0; i < rp; i++ { + for i := rf / 2; i < rp+rf/2; i++ { roundKeys[i] = make([]fr.Element, 1) rnd = hash.Sum(nil) roundKeys[i][0].SetBytes(rnd) hash.Reset() _, _ = hash.Write(rnd) } - for i := 0; i < rf/2; i++ { + for i := rp + rf/2; i < rp+rf; i++ { roundKeys[i] = make([]fr.Element, t) for j := 0; j < t; j++ { rnd = hash.Sum(nil) diff --git a/ecc/bls24-317/fr/poseidon2/poseidon2.go b/ecc/bls24-317/fr/poseidon2/poseidon2.go index 74bec677a..2cb42d683 100644 --- a/ecc/bls24-317/fr/poseidon2/poseidon2.go +++ b/ecc/bls24-317/fr/poseidon2/poseidon2.go @@ -74,14 +74,14 @@ func InitRC(seed string, rf, rp, t int) [][]fr.Element { _, _ = hash.Write(rnd) } } - for i := 0; i < rp; i++ { + for i := rf / 2; i < rp+rf/2; i++ { roundKeys[i] = make([]fr.Element, 1) rnd = hash.Sum(nil) roundKeys[i][0].SetBytes(rnd) hash.Reset() _, _ = hash.Write(rnd) } - for i := 0; i < rf/2; i++ { + for i := rp + rf/2; i < rp+rf; i++ { roundKeys[i] = make([]fr.Element, t) for j := 0; j < t; j++ { rnd = hash.Sum(nil) diff --git a/ecc/bn254/fr/poseidon2/poseidon2.go b/ecc/bn254/fr/poseidon2/poseidon2.go index bf5384f4c..a4a3ffd4b 100644 --- a/ecc/bn254/fr/poseidon2/poseidon2.go +++ b/ecc/bn254/fr/poseidon2/poseidon2.go @@ -74,14 +74,14 @@ func InitRC(seed string, rf, rp, t int) [][]fr.Element { _, _ = hash.Write(rnd) } } - for i := 0; i < rp; i++ { + for i := rf / 2; i < rp+rf/2; i++ { roundKeys[i] = make([]fr.Element, 1) rnd = hash.Sum(nil) roundKeys[i][0].SetBytes(rnd) hash.Reset() _, _ = hash.Write(rnd) } - for i := 0; i < rf/2; i++ { + for i := rp + rf/2; i < rp+rf; i++ { roundKeys[i] = make([]fr.Element, t) for j := 0; j < t; j++ { rnd = hash.Sum(nil) diff --git a/ecc/bw6-633/fr/poseidon2/poseidon2.go b/ecc/bw6-633/fr/poseidon2/poseidon2.go index 0a3c894a7..840233326 100644 --- a/ecc/bw6-633/fr/poseidon2/poseidon2.go +++ b/ecc/bw6-633/fr/poseidon2/poseidon2.go @@ -74,14 +74,14 @@ func InitRC(seed string, rf, rp, t int) [][]fr.Element { _, _ = hash.Write(rnd) } } - for i := 0; i < rp; i++ { + for i := rf / 2; i < rp+rf/2; i++ { roundKeys[i] = make([]fr.Element, 1) rnd = hash.Sum(nil) roundKeys[i][0].SetBytes(rnd) hash.Reset() _, _ = hash.Write(rnd) } - for i := 0; i < rf/2; i++ { + for i := rp + rf/2; i < rp+rf; i++ { roundKeys[i] = make([]fr.Element, t) for j := 0; j < t; j++ { rnd = hash.Sum(nil) diff --git a/ecc/bw6-761/fr/poseidon2/poseidon2.go b/ecc/bw6-761/fr/poseidon2/poseidon2.go index ee8d45dd4..6e2021471 100644 --- a/ecc/bw6-761/fr/poseidon2/poseidon2.go +++ b/ecc/bw6-761/fr/poseidon2/poseidon2.go @@ -74,14 +74,14 @@ func InitRC(seed string, rf, rp, t int) [][]fr.Element { _, _ = hash.Write(rnd) } } - for i := 0; i < rp; i++ { + for i := rf / 2; i < rp+rf/2; i++ { roundKeys[i] = make([]fr.Element, 1) rnd = hash.Sum(nil) roundKeys[i][0].SetBytes(rnd) hash.Reset() _, _ = hash.Write(rnd) } - for i := 0; i < rf/2; i++ { + for i := rp + rf/2; i < rp+rf; i++ { roundKeys[i] = make([]fr.Element, t) for j := 0; j < t; j++ { rnd = hash.Sum(nil) diff --git a/internal/generator/crypto/hash/poseidon2/template/poseidon2.go.tmpl b/internal/generator/crypto/hash/poseidon2/template/poseidon2.go.tmpl index 346db8772..013c8a8e4 100644 --- a/internal/generator/crypto/hash/poseidon2/template/poseidon2.go.tmpl +++ b/internal/generator/crypto/hash/poseidon2/template/poseidon2.go.tmpl @@ -67,14 +67,14 @@ func InitRC(seed string, rf, rp, t int) [][]fr.Element { _, _ = hash.Write(rnd) } } - for i := 0; i < rp; i++ { + for i := rf/2; i < rp+rf/2; i++ { roundKeys[i] = make([]fr.Element, 1) rnd = hash.Sum(nil) roundKeys[i][0].SetBytes(rnd) hash.Reset() _, _ = hash.Write(rnd) } - for i := 0; i < rf/2; i++ { + for i := rp+rf/2; i < rp+rf; i++ { roundKeys[i] = make([]fr.Element, t) for j := 0; j < t; j++ { rnd = hash.Sum(nil)