Skip to content

Commit

Permalink
feat: fix #479 adds byteorder option in mimc
Browse files Browse the repository at this point in the history
  • Loading branch information
gbotrel committed Jan 24, 2024
1 parent eb75782 commit 74ac408
Show file tree
Hide file tree
Showing 12 changed files with 124 additions and 40 deletions.
11 changes: 7 additions & 4 deletions ecc/bls12-377/fr/mimc/mimc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 7 additions & 4 deletions ecc/bls12-378/fr/mimc/mimc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 7 additions & 4 deletions ecc/bls12-381/fr/mimc/mimc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 7 additions & 4 deletions ecc/bls24-315/fr/mimc/mimc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 7 additions & 4 deletions ecc/bls24-317/fr/mimc/mimc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 7 additions & 4 deletions ecc/bn254/fr/mimc/mimc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

55 changes: 55 additions & 0 deletions ecc/bn254/fr/mimc/mimc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ package mimc_test
import (
"testing"

"github.com/consensys/gnark-crypto/ecc/bn254/fr"
"github.com/consensys/gnark-crypto/ecc/bn254/fr/mimc"
fiatshamir "github.com/consensys/gnark-crypto/fiat-shamir"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestMiMCFiatShamir(t *testing.T) {
Expand All @@ -16,3 +18,56 @@ func TestMiMCFiatShamir(t *testing.T) {
_, err = fs.ComputeChallenge("c0")
assert.NoError(t, err)
}

func TestByteOrder(t *testing.T) {
assert := require.New(t)

var buf [fr.Bytes]byte
// if the 31 first bytes are FF, it's a valid FF in little endian, but not in big endian
for i := 0; i < fr.Bytes-1; i++ {
buf[i] = 0xFF
}
_, err := fr.BigEndian.Element(&buf)
assert.Error(err)
_, err = fr.LittleEndian.Element(&buf)
assert.NoError(err)

{
// hashing buf with big endian should fail
mimcHash := mimc.NewMiMC(mimc.WithByteOrder(fr.BigEndian))
_, err := mimcHash.Write(buf[:])
assert.Error(err)
}

{
// hashing buf with little endian should succeed
mimcHash := mimc.NewMiMC(mimc.WithByteOrder(fr.LittleEndian))
_, err := mimcHash.Write(buf[:])
assert.NoError(err)
}

buf = [fr.Bytes]byte{}
// if the 31 bytes are FF, it's a valid FF in big endian, but not in little endian
for i := 1; i < fr.Bytes; i++ {
buf[i] = 0xFF
}
_, err = fr.BigEndian.Element(&buf)
assert.NoError(err)
_, err = fr.LittleEndian.Element(&buf)
assert.Error(err)

{
// hashing buf with big endian should succeed
mimcHash := mimc.NewMiMC(mimc.WithByteOrder(fr.BigEndian))
_, err := mimcHash.Write(buf[:])
assert.NoError(err)
}

{
// hashing buf with little endian should fail
mimcHash := mimc.NewMiMC(mimc.WithByteOrder(fr.LittleEndian))
_, err := mimcHash.Write(buf[:])
assert.Error(err)
}

}
11 changes: 7 additions & 4 deletions ecc/bw6-633/fr/mimc/mimc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 7 additions & 4 deletions ecc/bw6-756/fr/mimc/mimc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 7 additions & 4 deletions ecc/bw6-761/fr/mimc/mimc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/generator/crypto/hash/mimc/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ func Generate(conf config.Curve, baseDir string, bgen *bavard.BatchGenerator) er
entries := []bavard.Entry{
{File: filepath.Join(baseDir, "doc.go"), Templates: []string{"doc.go.tmpl"}},
{File: filepath.Join(baseDir, "mimc.go"), Templates: []string{"mimc.go.tmpl"}},
{File: filepath.Join(baseDir, "options.go"), Templates: []string{"options.go.tmpl"}},
}
os.Remove(filepath.Join(baseDir, "utils.go"))
os.Remove(filepath.Join(baseDir, "utils_test.go"))
Expand Down
Loading

0 comments on commit 74ac408

Please sign in to comment.