diff --git a/packages/binary/drng/drng_test.go b/packages/binary/drng/drng_test.go index 4c267ce0e5e1fb97101ba5e21308369a5b097087..c3ffafccb1888844573a8f8e73298237ce901c4b 100644 --- a/packages/binary/drng/drng_test.go +++ b/packages/binary/drng/drng_test.go @@ -1,90 +1,101 @@ package drng import ( + "encoding/hex" "testing" - "github.com/drand/drand/beacon" - "github.com/drand/drand/key" - "github.com/drand/kyber/share" - "github.com/drand/kyber/util/random" "github.com/iotaledger/goshimmer/packages/binary/drng/payload/collectiveBeacon" "github.com/stretchr/testify/require" ) +var ( + payloadTest *collectiveBeacon.Payload + prevSignatureTest []byte + signatureTest []byte + dpkTest []byte +) + +func init() { + prevSignatureTest, _ = hex.DecodeString("ae9ba6d1445bffea8e66cb7d28fe5924e0a8d31b11b62a8710204e56e1ba84bc3694a3033e5793fcee6e75e956e5da3016cd0e22aa46fa419cd06343a7ff9d1e9c5c08f660f0bdec099e97ef99f470bb8c607ce9667a165e9caa474710f62ffd") + signatureTest, _ = hex.DecodeString("8dee56fae60dcad960f7176d0813d5415b930cf6e20c299ec2c2dfc5f2ad4903916fd462ba1abf5c32a5bfd94dcc8eba062d011a548d99df7fa1e3bbbc9a0455663d60f6ccc736c1d5b6de727dbe4427e21fb660925518be386265913f447c94") + dpkTest, _ = hex.DecodeString("a02fcd15edd52c8e134027491a43b597505b466d1679e88f70f927e57c45a93ae0765ff02fc2d015e3a02fd8748e2103") + payloadTest = collectiveBeacon.New(1, 1, prevSignatureTest, signatureTest, dpkTest) +} + func TestVerifyCollectiveBeacon(t *testing.T) { - payload := dkgShares(t, 5, 3) - err := VerifyCollectiveBeacon(payload) + //payload := dkgShares(t, 5, 3) + err := VerifyCollectiveBeacon(payloadTest) require.NoError(t, err) } func TestGetRandomness(t *testing.T) { - payload := dkgShares(t, 5, 3) - _, err := GetRandomness(payload.Signature()) + //payload := dkgShares(t, 5, 3) + _, err := GetRandomness(payloadTest.Signature()) require.NoError(t, err) } -func dkgShares(t *testing.T, n, threshold int) *collectiveBeacon.Payload { - var priPoly *share.PriPoly - var pubPoly *share.PubPoly - var err error - // create shares and committments - 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, n) - _, commits := pubPoly.Info() - dkgShares := make([]*key.Share, n, 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) +// func dkgShares(t *testing.T, n, threshold int) *collectiveBeacon.Payload { +// var priPoly *share.PriPoly +// var pubPoly *share.PubPoly +// var err error +// // create shares and committments +// 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) - // verify signature against distributed public key - err = key.Scheme.VerifyRecovered(pubPoly.Commit(), msg, sig) - 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 = beacon.Message(sig, 1) - sigs = make([][]byte, n, n) - // partial signatures - for i := 0; i < n; i++ { - sigs[i], err = key.Scheme.Sign(shares[i], msg) - require.NoError(t, err) - } +// msg := []byte("first message") +// sigs := make([][]byte, n, n) +// _, commits := pubPoly.Info() +// dkgShares := make([]*key.Share, n, n) - // reconstruct collective signature - newSig, err := key.Scheme.Recover(pubPoly, msg, sigs, threshold, n) - require.NoError(t, err) +// // partial signatures +// for i := 0; i < n; i++ { +// sigs[i], err = key.Scheme.Sign(shares[i], msg) +// require.NoError(t, err) - dpk, err := pubPoly.Commit().MarshalBinary() - require.NoError(t, err) +// dkgShares[i] = &key.Share{ +// Share: shares[i], +// Commits: commits, +// } +// } - return collectiveBeacon.New(1, 1, sig, newSig, dpk) -} +// // 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) + +// msg = beacon.Message(sig, 1) +// sigs = make([][]byte, n, 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) + +// return collectiveBeacon.New(1, 1, sig, newSig, dpk) +// } diff --git a/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go b/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go index 8682758ab476d513d5bc333b082c0d2109a0bfd1..40f2d75d40a9aed162e522794c3476952196a7c8 100644 --- a/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go +++ b/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go @@ -166,8 +166,8 @@ func (payload *Payload) Bytes() (bytes []byte) { func (payload *Payload) String() string { return stringify.Struct("Payload", - stringify.StructField("type", payload.SubType()), - stringify.StructField("instance", payload.Instance()), + stringify.StructField("type", uint64(payload.SubType())), + stringify.StructField("instance", uint64(payload.Instance())), stringify.StructField("round", payload.Round()), stringify.StructField("prevSignature", payload.PrevSignature()), stringify.StructField("signature", payload.Signature()), diff --git a/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go b/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go index 76511672dba3a504911852b5fb07c3f4e4bac8e7..ecc49d99b562ac5f55a723657de1e1f60ff9cf04 100644 --- a/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go +++ b/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go @@ -8,13 +8,17 @@ import ( "github.com/stretchr/testify/require" ) -func TestParse(t *testing.T) { +func dummyPayload() *Payload { header := header.New(header.CollectiveBeaconType(), 0) - payload := New(header.Instance(), + return New(header.Instance(), 0, []byte("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), // prevSignature []byte("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"), // signature []byte("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC")) // distributed PK +} + +func TestParse(t *testing.T) { + payload := dummyPayload() bytes := payload.Bytes() marshalUtil := marshalutil.New(bytes) @@ -28,3 +32,8 @@ func TestParse(t *testing.T) { require.Equal(t, payload.Signature(), parsedPayload.Signature()) require.Equal(t, payload.DistributedPK(), parsedPayload.DistributedPK()) } + +func TestString(t *testing.T) { + payload := dummyPayload() + _ = payload.String() +} diff --git a/packages/binary/drng/payload/payload.go b/packages/binary/drng/payload/payload.go index aaf75527b7e618587d84e756baaaa5851bfd6434..26e36989419897b54e882d8f31a7b35a39b4e727 100644 --- a/packages/binary/drng/payload/payload.go +++ b/packages/binary/drng/payload/payload.go @@ -122,8 +122,8 @@ func (payload *Payload) Bytes() (bytes []byte) { func (payload *Payload) String() string { return stringify.Struct("Payload", - stringify.StructField("type", payload.SubType()), - stringify.StructField("instance", payload.Instance()), + stringify.StructField("type", uint64(payload.SubType())), + stringify.StructField("instance", uint64(payload.Instance())), stringify.StructField("data", payload.Data()), ) } diff --git a/packages/binary/drng/payload/payload_test.go b/packages/binary/drng/payload/payload_test.go index ad811340cc599fad00094e4e8bcd103cd23bc610..6eb1e844b77f8c4325679c343daad01894d65a57 100644 --- a/packages/binary/drng/payload/payload_test.go +++ b/packages/binary/drng/payload/payload_test.go @@ -8,10 +8,14 @@ import ( "github.com/stretchr/testify/require" ) -func TestParse(t *testing.T) { +func dummyPayload() *Payload { header := header.New(header.CollectiveBeaconType(), 0) data := []byte("test") - payload := New(header, data) + return New(header, data) +} + +func TestParse(t *testing.T) { + payload := dummyPayload() bytes := payload.Bytes() marshalUtil := marshalutil.New(bytes) @@ -22,3 +26,8 @@ func TestParse(t *testing.T) { require.Equal(t, payload.Instance(), parsedPayload.Instance()) require.Equal(t, payload.Data(), parsedPayload.Data()) } + +func TestString(t *testing.T) { + payload := dummyPayload() + _ = payload.String() +}