Skip to content

Commit 159b9e4

Browse files
authored
Merge pull request #3 from corestario/feat/random-seeds
feat: added configurable random seeds
2 parents dd00a03 + d43ec56 commit 159b9e4

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

share/dkg/pedersen/dkg.go

+9-7
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ func NewDistKeyHandler(c *Config) (*DistKeyGenerator, error) {
173173
if c.Share != nil {
174174
// resharing case
175175
secretCoeff := c.Share.Share.V
176-
dealer, err = vss.NewDealer(c.Suite, c.Longterm, secretCoeff, c.NewNodes, newThreshold)
176+
dealer, err = vss.NewDealer(c.Suite, c.Longterm, secretCoeff, c.NewNodes, newThreshold, random.New(c.Reader))
177177
canIssue = true
178178
} else if !isResharing && newPresent {
179179
// fresh DKG case
@@ -185,7 +185,7 @@ func NewDistKeyHandler(c *Config) (*DistKeyGenerator, error) {
185185
randomStream = random.New(c.Reader)
186186
}
187187
secretCoeff := c.Suite.Scalar().Pick(randomStream)
188-
dealer, err = vss.NewDealer(c.Suite, c.Longterm, secretCoeff, c.NewNodes, newThreshold)
188+
dealer, err = vss.NewDealer(c.Suite, c.Longterm, secretCoeff, c.NewNodes, newThreshold, randomStream)
189189
canIssue = true
190190
c.OldNodes = c.NewNodes
191191
oidx, oldPresent = findPub(c.OldNodes, pub)
@@ -242,12 +242,14 @@ func NewDistKeyHandler(c *Config) (*DistKeyGenerator, error) {
242242

243243
// NewDistKeyGenerator returns a dist key generator ready to create a fresh
244244
// distributed key with the regular DKG protocol.
245-
func NewDistKeyGenerator(suite Suite, longterm kyber.Scalar, participants []kyber.Point, t int) (*DistKeyGenerator, error) {
245+
func NewDistKeyGenerator(suite Suite, longterm kyber.Scalar, participants []kyber.Point, t int, reader io.Reader) (*DistKeyGenerator, error) {
246246
c := &Config{
247-
Suite: suite,
248-
Longterm: longterm,
249-
NewNodes: participants,
250-
Threshold: t,
247+
Suite: suite,
248+
Longterm: longterm,
249+
NewNodes: participants,
250+
Threshold: t,
251+
Reader: reader,
252+
UserReaderOnly: true,
251253
}
252254
return NewDistKeyHandler(c)
253255
}

share/vss/pedersen/vss.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -117,19 +117,20 @@ type Justification struct {
117117
// RECOMMENDED to use a threshold higher or equal than what the method
118118
// MinimumT() returns, otherwise it breaks the security assumptions of the whole
119119
// scheme. It returns an error if the t is less than or equal to 2.
120-
func NewDealer(suite Suite, longterm, secret kyber.Scalar, verifiers []kyber.Point, t int) (*Dealer, error) {
120+
func NewDealer(suite Suite, longterm, secret kyber.Scalar, verifiers []kyber.Point, t int, reader cipher.Stream) (*Dealer, error) {
121121
d := &Dealer{
122122
suite: suite,
123123
long: longterm,
124124
secret: secret,
125125
verifiers: verifiers,
126+
reader: reader,
126127
}
127128
if !validT(t, verifiers) {
128129
return nil, fmt.Errorf("dealer: t %d invalid", t)
129130
}
130131
d.t = t
131132

132-
f := share.NewPriPoly(d.suite, d.t, d.secret, suite.RandomStream())
133+
f := share.NewPriPoly(d.suite, d.t, d.secret, reader)
133134
d.pub = d.suite.Point().Mul(d.long, nil)
134135

135136
// Compute public polynomial coefficients
@@ -181,7 +182,7 @@ func (d *Dealer) EncryptedDeal(i int) (*EncryptedDeal, error) {
181182
return nil, errors.New("dealer: wrong index to generate encrypted deal")
182183
}
183184
// gen ephemeral key
184-
dhSecret := d.suite.Scalar().Pick(d.suite.RandomStream())
185+
dhSecret := d.suite.Scalar().Pick(d.reader)
185186
dhPublic := d.suite.Point().Mul(dhSecret, nil)
186187
// signs the public key
187188
dhPublicBuff, _ := dhPublic.MarshalBinary()

0 commit comments

Comments
 (0)