aboutsummaryrefslogtreecommitdiff
path: root/nizk
diff options
context:
space:
mode:
Diffstat (limited to 'nizk')
-rw-r--r--nizk/stage2.go21
-rw-r--r--nizk/stage2_test.go14
2 files changed, 25 insertions, 10 deletions
diff --git a/nizk/stage2.go b/nizk/stage2.go
index efdda9c..8747ebf 100644
--- a/nizk/stage2.go
+++ b/nizk/stage2.go
@@ -4,16 +4,15 @@ import (
. "kesim.org/seal/common"
)
-func (b *Bit) CommitStage2(lost bool, prev *Stage) (s *Stage, c *StageCommitment, p *Stage2Proof) {
+func (b *Bit) CommitStage2(lost bool, prev *Stage) (s *Stage, c *StageCommitment) {
x := Curve.RandomScalar()
r := Curve.RandomScalar()
return b.CommitStage2FromScalars(lost, prev, x, r)
}
-func (b *Bit) CommitStage2FromScalars(lost bool, prev *Stage, x, r *Scalar) (s *Stage, c *StageCommitment, p *Stage2Proof) {
+func (b *Bit) CommitStage2FromScalars(lost bool, prev *Stage, x, r *Scalar) (s *Stage, c *StageCommitment) {
s = b.stage(x, r)
c = s.commit(lost)
- p = s.proof2(lost, prev)
return
}
@@ -32,7 +31,7 @@ type Stage2Proof struct {
R3 [2]*Scalar
}
-func (s *Stage) proof2(lost bool, prev *Stage) *Stage2Proof {
+func (s *Stage) proof2(lost bool, prev *Stage) (rev *StageReveal, pr *Stage2Proof, e error) {
var (
e1, e1_ [3]Bytes
e2, e2_ [3]Bytes
@@ -53,9 +52,13 @@ func (s *Stage) proof2(lost bool, prev *Stage) *Stage2Proof {
bc := prev.bit.com
pc := prev.com
rvp := prev.rev
- rev := &StageReveal{
- Y: G.Exp(Curve.RandomScalar()), // TODO! BUG! THIS HAS TO BE Pj<i(X_j)/Pj>i(X_j)
- }
+
+ // TODO: Calculate Y based on the Xs and our own X_i
+ // as Π_(i<k) X_k / Π_(i>k) X_k
+ // For now:
+ Y := G.Exp(Curve.RandomScalar())
+
+ rev = &StageReveal{Y: Y}
if s.bit.IsSet() {
rev.Z = c.R.Exp(s.x)
} else {
@@ -141,7 +144,7 @@ func (s *Stage) proof2(lost bool, prev *Stage) *Stage2Proof {
points = append(points, e3_[:]...)
ch := Challenge(points...)
- pr := &Stage2Proof{}
+ pr = &Stage2Proof{}
if lost {
pr.Ch[0] = w[0]
@@ -193,7 +196,7 @@ func (s *Stage) proof2(lost bool, prev *Stage) *Stage2Proof {
}
s.prf2 = pr
- return pr
+ return rev, pr, e
}
func (c *Commitment) VerifyStage2(pcom, ccom *StageCommitment, prev, crev *StageReveal, p *Stage2Proof) bool {
diff --git a/nizk/stage2_test.go b/nizk/stage2_test.go
index 75c99ef..4d507d7 100644
--- a/nizk/stage2_test.go
+++ b/nizk/stage2_test.go
@@ -3,11 +3,23 @@ package nizk
import (
"testing"
-// . "kesim.org/seal/common"
+ // . "kesim.org/seal/common"
)
func TestStage2Simple(t *testing.T) {
+/*
+ id := Curve.RandomScalar()
+ b1 := NewBit(id, true)
+ b2 := NewBit(id, true)
+ _, _ = b1.Commit()
+ s1, c1 := b1.CommitStage1()
+ curr, _ := b2.Commit()
+ _, c2, p2 := b2.CommitStage2(true, s1)
+
+ if !curr.VerifyStage2(c1, c2, r1, r2, p2) {
+ }
+ */
}
func TestStage2FromScalar(t *testing.T) {