Skip to content
Snippets Groups Projects
Commit c1260322 authored by capossele's avatar capossele
Browse files

Merge branch 'develop' into feat/drng-integration-test

parents 07ab865b 79185faa
No related branches found
No related tags found
No related merge requests found
...@@ -139,85 +139,3 @@ func dkgShares(t *testing.T, n, threshold int) *payload.Payload { ...@@ -139,85 +139,3 @@ func dkgShares(t *testing.T, n, threshold int) *payload.Payload {
return payload.New(1, 1, sig, newSig, dpk) return payload.New(1, 1, sig, newSig, dpk)
} }
func TestCBSequence(t *testing.T) {
cbSequence(t, 5, 5, 3)
}
func cbSequence(t *testing.T, l, n, threshold int) []*payload.Payload {
var priPoly *share.PriPoly
var pubPoly *share.PubPoly
var err error
// create shares and commitments
for i := 0; i < n; i++ {
pri := share.NewPriPoly(key.KeyGroup, threshold, key.KeyGroup.Scalar().Pick(random.New()), random.New())
pub := pri.Commit(key.KeyGroup.Point().Base())
if priPoly == nil {
priPoly = pri
pubPoly = pub
continue
}
priPoly, err = priPoly.Add(pri)
require.NoError(t, err)
pubPoly, err = pubPoly.Add(pub)
require.NoError(t, err)
}
shares := priPoly.Shares(n)
secret, err := share.RecoverSecret(key.KeyGroup, shares, threshold, n)
require.NoError(t, err)
require.True(t, secret.Equal(priPoly.Secret()))
msg := []byte("first message")
sigs := make([][]byte, n)
_, commits := pubPoly.Info()
dkgShares := make([]*key.Share, n)
// partial signatures
for i := 0; i < n; i++ {
sigs[i], err = key.Scheme.Sign(shares[i], msg)
require.NoError(t, err)
dkgShares[i] = &key.Share{
Share: shares[i],
Commits: commits,
}
}
// reconstruct collective signature
sig, err := key.Scheme.Recover(pubPoly, msg, sigs, threshold, n)
require.NoError(t, err)
// verify signature against distributed public key
err = key.Scheme.VerifyRecovered(pubPoly.Commit(), msg, sig)
require.NoError(t, err)
result := make([]*payload.Payload, l)
for i := 0; i < l; i++ {
msg = beacon.Message(uint64(i+1), sig)
sigs = make([][]byte, n)
// partial signatures
for i := 0; i < n; i++ {
sigs[i], err = key.Scheme.Sign(shares[i], msg)
require.NoError(t, err)
}
// reconstruct collective signature
newSig, err := key.Scheme.Recover(pubPoly, msg, sigs, threshold, n)
require.NoError(t, err)
dpk, err := pubPoly.Commit().MarshalBinary()
require.NoError(t, err)
log.Println(hex.EncodeToString(sig))
log.Println(hex.EncodeToString(newSig))
log.Println(hex.EncodeToString(dpk))
result[i] = payload.New(1, uint64(i+1), sig, newSig, dpk)
sig = newSig
}
return result
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment