arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
Compiles
puma314 uma.roy.us@gmail.com
Mon, 03 Oct 2022 21:56:27 -0700
commit

f7d1968b22ebd6565f8970b99e26640a72343c50

parent

543e78c31f973613b8ebc9dabfa3508580247d38

3 files changed, 46 insertions(+), 4 deletions(-)

jump to
M sha512/sha512compression.go → sha512/sha512compression.go

@@ -88,8 +88,8 @@ // t2[t].b[k] <== b[t][k];

// t2[t].c[k] <== c[t][k]; // } - sume := BinSum(d[t], t1) - suma := BinSum(t1, t2) + sume := BinSum(api, d[t][:], t1) + suma := BinSum(api, t1, t2) // for (k=0; k<64; k++) { // sume[t].in[0][k] <== d[t][k]; // sume[t].in[1][k] <== t1[t].out[k];

@@ -161,7 +161,7 @@ // }

var fsum [8][]frontend.Variable for i := 0; i < 8; i++ { - fsum[i] = BinSum(fsum_in[i][0], fsum_in[i][1]) + fsum[i] = BinSum(api, fsum_in[i][0][:], fsum_in[i][1][:]) } var out [512]frontend.Variable
A sha512/sha_test.go

@@ -0,0 +1,37 @@

+package sha512 + +import ( + "math/big" + "testing" + + "github.com/consensys/gnark/frontend" + "github.com/consensys/gnark/test" +) + +type Sha512Circuit struct { + in []frontend.Variable `gnark:"in"` + out []frontend.Variable `gnark:"out"` +} + +func (circuit *Sha512Circuit) Define(api frontend.API) error { + res := Sha512(api, circuit.in) + for i := 0; i < 512; i++ { + api.AssertIsEqual(res[i], circuit.out[i]) + } + return nil +} + +func TestSha512(t *testing.T) { + assert := test.NewAssert(t) + circuit := OnCurveTest[Ed25519, Ed25519Scalars]{} + witness := OnCurveTest[Ed25519, Ed25519Scalars]{ + P: AffinePoint[Ed25519]{ + X: emulated.NewElement[Ed25519](newBigInt("216936D3CD6E53FEC0A4E231FDD6DC5C692CC7609525A7B2C9562D608F25D51A")), + Y: emulated.NewElement[Ed25519](newBigInt("6666666666666666666666666666666666666666666666666666666666666658")), + }, + } + err := test.IsSolved(&circuit, &witness, testCurve.ScalarField()) + assert.NoError(err) +} + +var testCurve = ecc.BN254
M sha512/sigmaplus.go → sha512/sigmaplus.go

@@ -11,7 +11,12 @@

sigma1 := SmallSigma512(api, in2, 19, 61, 6) sigma0 := SmallSigma512(api, in15, 1, 8, 7) - return BinSum(api, sigma1, in7, sigma0, in16) + inter := BinSum(api, sigma1, in7, sigma0, in16) + var out [64]frontend.Variable + for k := 0; k < 64; k++ { + out[k] = inter[k] + } + return out }