From 1dd0089e5f689eef3464452fbc70f0adf11d8ebc Mon Sep 17 00:00:00 2001 From: Özgür Kesim Date: Wed, 13 Nov 2024 18:06:47 +0100 Subject: WiP: stage2 refactor started, no functioning test --- nizk/stage2.go | 21 ++++++++++++--------- 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 Pji(X_j) - } + + // TODO: Calculate Y based on the Xs and our own X_i + // as Π_(ik) 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) { -- cgit v1.2.3