arnaucube
arnaucube/go-circom-prover-verifierPublic Self-hosted repository
Fix mutation of inputs in Verify
Eduard S eduard@iden3.io
Thu, 23 Apr 2020 16:02:00 +0200
commit

40b280fc96c2af6c925c6f069248685f3b6f2d10

parent

bbcbba31134ea7cfec0a5c08acf0c0cbe1037ef2

2 files changed, 5 insertions(+), 1 deletions(-)

jump to
M verifier/verifier.go → verifier/verifier.go

@@ -32,7 +32,7 @@ vkX = new(bn256.G1).Add(vkX, new(bn256.G1).ScalarMult(vk.IC[i+1], inputs[i]))

} vkX = new(bn256.G1).Add(vkX, vk.IC[0]) - g1 := []*bn256.G1{proof.A, vk.Alpha.Neg(vk.Alpha), vkX.Neg(vkX), proof.C.Neg(proof.C)} + g1 := []*bn256.G1{proof.A, new(bn256.G1).Neg(vk.Alpha), vkX.Neg(vkX), new(bn256.G1).Neg(proof.C)} g2 := []*bn256.G2{proof.B, vk.Beta, vk.Gamma, vk.Delta} return bn256.PairingCheck(g1, g2) }
M verifier/verifier_test.go → verifier/verifier_test.go

@@ -27,6 +27,10 @@ require.Nil(t, err)

v := Verify(vk, proof, public) assert.True(t, v) + + // Verify again to check that `Verify` hasn't mutated the inputs + v = Verify(vk, proof, public) + assert.True(t, v) } func BenchmarkVerify(b *testing.B) {