aboutsummaryrefslogtreecommitdiff
path: root/nizk/stage1/stage1.go
diff options
context:
space:
mode:
Diffstat (limited to 'nizk/stage1/stage1.go')
-rw-r--r--nizk/stage1/stage1.go34
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