aboutsummaryrefslogtreecommitdiffstats
path: root/core/crypto_test.go
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2018-09-19 15:00:11 +0800
committerGitHub <noreply@github.com>2018-09-19 15:00:11 +0800
commit54fa224dbbf1b1c0f8d54a3f10a81adb321ce1e4 (patch)
treeb0e503e08cc52dae2536ebef3dcd0110edd1b333 /core/crypto_test.go
parent8c33027b943e08de21b7bddb82fecc2b2a5664a2 (diff)
downloaddexon-consensus-54fa224dbbf1b1c0f8d54a3f10a81adb321ce1e4.tar
dexon-consensus-54fa224dbbf1b1c0f8d54a3f10a81adb321ce1e4.tar.gz
dexon-consensus-54fa224dbbf1b1c0f8d54a3f10a81adb321ce1e4.tar.bz2
dexon-consensus-54fa224dbbf1b1c0f8d54a3f10a81adb321ce1e4.tar.lz
dexon-consensus-54fa224dbbf1b1c0f8d54a3f10a81adb321ce1e4.tar.xz
dexon-consensus-54fa224dbbf1b1c0f8d54a3f10a81adb321ce1e4.tar.zst
dexon-consensus-54fa224dbbf1b1c0f8d54a3f10a81adb321ce1e4.zip
core:DKG and TSIG protocol (#115)
Diffstat (limited to 'core/crypto_test.go')
-rw-r--r--core/crypto_test.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/core/crypto_test.go b/core/crypto_test.go
index b96b0bd..7f3c3f3 100644
--- a/core/crypto_test.go
+++ b/core/crypto_test.go
@@ -24,6 +24,7 @@ import (
"github.com/dexon-foundation/dexon-consensus-core/common"
"github.com/dexon-foundation/dexon-consensus-core/core/types"
"github.com/dexon-foundation/dexon-consensus-core/crypto"
+ "github.com/dexon-foundation/dexon-consensus-core/crypto/dkg"
"github.com/dexon-foundation/dexon-consensus-core/crypto/eth"
"github.com/stretchr/testify/suite"
)
@@ -210,6 +211,58 @@ func (s *CryptoTestSuite) TestCRSSignature() {
s.False(verifyCRSSignature(block, crs, eth.SigToPub))
}
+func (s *CryptoTestSuite) TestDKGSignature() {
+ prv, err := eth.NewPrivateKey()
+ s.Require().Nil(err)
+ vID := types.NewValidatorID(prv.PublicKey())
+ prvShare := &types.DKGPrivateShare{
+ ProposerID: vID,
+ Round: 5,
+ PrivateShare: *dkg.NewPrivateKey(),
+ }
+ prvShare.Signature, err = prv.Sign(hashDKGPrivateShare(prvShare))
+ s.Require().Nil(err)
+ s.True(verifyDKGPrivateShareSignature(prvShare, eth.SigToPub))
+ prvShare.Round++
+ s.False(verifyDKGPrivateShareSignature(prvShare, eth.SigToPub))
+
+ id := dkg.NewID([]byte{13})
+ _, pkShare := dkg.NewPrivateKeyShares(1)
+ mpk := &types.DKGMasterPublicKey{
+ ProposerID: vID,
+ Round: 5,
+ DKGID: id,
+ PublicKeyShares: *pkShare,
+ }
+ mpk.Signature, err = prv.Sign(hashDKGMasterPublicKey(mpk))
+ s.Require().Nil(err)
+ s.True(verifyDKGMasterPublicKeySignature(mpk, eth.SigToPub))
+ mpk.Round++
+ s.False(verifyDKGMasterPublicKeySignature(mpk, eth.SigToPub))
+
+ complaint := &types.DKGComplaint{
+ ProposerID: vID,
+ Round: 5,
+ PrivateShare: *prvShare,
+ }
+ complaint.Signature, err = prv.Sign(hashDKGComplaint(complaint))
+ s.Require().Nil(err)
+ s.True(verifyDKGComplaintSignature(complaint, eth.SigToPub))
+ complaint.Round++
+ s.False(verifyDKGComplaintSignature(complaint, eth.SigToPub))
+
+ sig := &types.DKGPartialSignature{
+ ProposerID: vID,
+ Round: 5,
+ PartialSignature: dkg.PartialSignature{},
+ }
+ sig.Signature, err = prv.Sign(hashDKGPartialSignature(sig))
+ s.Require().Nil(err)
+ s.True(verifyDKGPartialSignatureSignature(sig, eth.SigToPub))
+ sig.Round++
+ s.False(verifyDKGPartialSignatureSignature(sig, eth.SigToPub))
+}
+
func TestCrypto(t *testing.T) {
suite.Run(t, new(CryptoTestSuite))
}