diff --git a/verifier/verifier.go b/verifier/verifier.go index 75aea9b..64c6da6 100644 --- a/verifier/verifier.go +++ b/verifier/verifier.go @@ -32,7 +32,7 @@ func Verify(vk *types.Vk, proof *types.Proof, inputs []*big.Int) bool { } 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) } diff --git a/verifier/verifier_test.go b/verifier/verifier_test.go index 6e922eb..b67524d 100644 --- a/verifier/verifier_test.go +++ b/verifier/verifier_test.go @@ -27,6 +27,10 @@ func TestVerify1(t *testing.T) { 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) {