package nizk import ( "testing" . "kesim.org/seal/common" ) func TestStage1Simple(t *testing.T) { id := Curve.RandomScalar() b1 := NewBit(id, true) b2 := NewBit(id, false) c1 := b1.StageCommit() c2 := b2.StageCommit() r1, pr1 := b1.RevealStage1(c1.X, c2.X) r2, pr2 := b2.RevealStage1(c2.X) if !b1.Commitment.VerifyStage1(c1, r1, pr1) { t.Fatal("Could not verify st1 with c1 and pr1, plus=true case") } if !b2.Commitment.VerifyStage1(c2, r2, pr2) { t.Fatal("Could not verify st2 with c2 and pr2, plus=false case") } // Wrong proof test if b1.Commitment.VerifyStage1(c1, r1, pr2) { t.Fatal("Shouldn't be able to verify c1 with pr2") } } func TestStage1FromScalars(t *testing.T) { var id, α, β, x, r *Scalar for _, s := range []**Scalar{&id, &α, &β, &x, &r} { *s = Curve.RandomScalar() } b1 := NewBitFromScalars(id, true, α, β) b2 := NewBitFromScalars(id, false, α, β) c1 := b1.StageFromScalars(r, x) c2 := b2.StageFromScalars(x, r) r1, pr1 := b1.RevealStage1(c1.X) r2, pr2 := b2.RevealStage1(c2.X) if !b1.Commitment.VerifyStage1(c1, r1, pr1) { t.Fatal("Could not verify st1 with c1 and pr1, plus=true case") } if !b2.Commitment.VerifyStage1(c2, r2, pr2) { t.Fatal("Could not verify st2 with c2 and pr2, plus=false case") } // Wrong proof test if b2.Commitment.VerifyStage1(c1, r1, pr2) || b1.Commitment.VerifyStage1(c2, r2, pr2) || b2.Commitment.VerifyStage1(c1, r1, pr2) || b2.Commitment.VerifyStage1(c2, r2, pr1) { t.Fatal("Shouldn't be able to verify bc_i with c_j or pr_j") } }