diff options
| -rw-r--r-- | nizk/stage2.go | 21 | ||||
| -rw-r--r-- | nizk/stage2_test.go | 14 | 
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) {  | 
