diff options
author | Özgür Kesim <oec@kesim.org> | 2024-11-10 16:27:10 +0100 |
---|---|---|
committer | Özgür Kesim <oec@kesim.org> | 2024-11-10 16:27:10 +0100 |
commit | 9f43ed15415f5063f2d7b2e14f407875ac7bc660 (patch) | |
tree | 0c94dc1bbafb45167f79c95617dc263ba4c1e561 /nizk/stage1/stage1.go | |
parent | 6c572f6037137c677c2c8c5143723a777a8747c5 (diff) |
add simpler API to nizk stages
Diffstat (limited to 'nizk/stage1/stage1.go')
-rw-r--r-- | nizk/stage1/stage1.go | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/nizk/stage1/stage1.go b/nizk/stage1/stage1.go index 0bd3e29..5c729c8 100644 --- a/nizk/stage1/stage1.go +++ b/nizk/stage1/stage1.go @@ -10,12 +10,12 @@ import ( // for given Z, X, Y, R, C, A and B type Statement struct { - x *Scalar - y *Scalar - r *Scalar - α *Scalar - β *Scalar - plus bool + x *Scalar + y *Scalar + r *Scalar + α *Scalar + β *Scalar + bitSet bool *Commitment } @@ -29,22 +29,30 @@ type Commitment struct { Z *Point } -func NewStatement(x, y, r, α, β *Scalar, plus bool) *Statement { +func NewStatement(bitSet bool) *Statement { + var x [5]*Scalar + for i := range x { + x[i] = Curve.RandomScalar() + } + return NewStatementFromScalars(bitSet, x[0], x[1], x[2], x[3], x[4]) +} + +func NewStatementFromScalars(bitSet bool, x, y, r, α, β *Scalar) *Statement { return &Statement{ x: x, y: y, r: r, α: α, β: β, - plus: plus, - Commitment: commitment(x, y, r, α, β, plus), + bitSet: bitSet, + Commitment: commitment(x, y, r, α, β, bitSet), } } -func commitment(x, y, r, α, β *Scalar, plus bool) *Commitment { +func commitment(x, y, r, α, β *Scalar, bitSet bool) *Commitment { var Z *Point φ := α.Mul(β) - if plus { + if bitSet { Z = G.Exp(x.Mul(r)) φ = φ.Add(One) } else { @@ -78,7 +86,7 @@ func (s *Statement) Proof() *Proof { *s = Curve.RandomScalar() } - if s.plus { + if s.bitSet { ε[0][0] = G.Exp(r1).Mul(s.X.Exp(ω)) ε[0][1] = G.Exp(r2).Mul(s.A.Exp(ω)) ε[0][2] = s.Y.Exp(r1).Mul(s.Z.Exp(ω)) @@ -109,7 +117,7 @@ func (s *Statement) Proof() *Proof { ch := Challenge(p...) pr := &Proof{} - if s.plus { + if s.bitSet { pr.Ch[0] = ω pr.Ch[1] = ch.Sub(ω) pr.Rho[0][0] = r1 |