From 40b280fc96c2af6c925c6f069248685f3b6f2d10 Mon Sep 17 00:00:00 2001 From: Eduard S Date: Thu, 23 Apr 2020 16:02:00 +0200 Subject: [PATCH] Fix mutation of inputs in Verify --- verifier/verifier.go | 2 +- verifier/verifier_test.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) 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) {