aboutsummaryrefslogtreecommitdiff
path: root/stage1_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'stage1_test.go')
-rw-r--r--stage1_test.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/stage1_test.go b/stage1_test.go
new file mode 100644
index 0000000..0df915a
--- /dev/null
+++ b/stage1_test.go
@@ -0,0 +1,56 @@
+package seal
+
+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")
+ }
+}