aboutsummaryrefslogtreecommitdiffstats
path: root/core/dkg-tsig-protocol_test.go
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2018-12-19 17:16:40 +0800
committerGitHub <noreply@github.com>2018-12-19 17:16:40 +0800
commitc7b4045802450df361216d9e7da3ec318e67cc34 (patch)
treec4060817a54e5cf455e830b21e6a91b9fc11004f /core/dkg-tsig-protocol_test.go
parent7bafefa5c70a26a28636123cb2b6598eea3ed380 (diff)
downloaddexon-consensus-c7b4045802450df361216d9e7da3ec318e67cc34.tar
dexon-consensus-c7b4045802450df361216d9e7da3ec318e67cc34.tar.gz
dexon-consensus-c7b4045802450df361216d9e7da3ec318e67cc34.tar.bz2
dexon-consensus-c7b4045802450df361216d9e7da3ec318e67cc34.tar.lz
dexon-consensus-c7b4045802450df361216d9e7da3ec318e67cc34.tar.xz
dexon-consensus-c7b4045802450df361216d9e7da3ec318e67cc34.tar.zst
dexon-consensus-c7b4045802450df361216d9e7da3ec318e67cc34.zip
core: Add a `MPKReady` so `MasterPublicKey` cannot be added afterwards (#375)
* Add type DKGReady * Add DKGReady to interface and state * DKG will wait for MPK to be ready before running * Modify test * Check if self's MPK is registered * Add test for delay add MPK * Rename Ready to MPKReady
Diffstat (limited to 'core/dkg-tsig-protocol_test.go')
-rw-r--r--core/dkg-tsig-protocol_test.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/core/dkg-tsig-protocol_test.go b/core/dkg-tsig-protocol_test.go
index 2dad0e8..1f0ddca 100644
--- a/core/dkg-tsig-protocol_test.go
+++ b/core/dkg-tsig-protocol_test.go
@@ -47,6 +47,7 @@ type testDKGReceiver struct {
mpk *typesDKG.MasterPublicKey
prvShare map[types.NodeID]*typesDKG.PrivateShare
antiComplaints map[types.NodeID]*typesDKG.PrivateShare
+ ready []*typesDKG.MPKReady
final []*typesDKG.Finalize
}
@@ -92,6 +93,10 @@ func (r *testDKGReceiver) ProposeDKGAntiNackComplaint(
r.antiComplaints[prv.ReceiverID] = prv
}
+func (r *testDKGReceiver) ProposeDKGMPKReady(ready *typesDKG.MPKReady) {
+ r.ready = append(r.ready, ready)
+}
+
func (r *testDKGReceiver) ProposeDKGFinalize(final *typesDKG.Finalize) {
r.final = append(r.final, final)
}
@@ -685,6 +690,21 @@ func (s *DKGTSIGProtocolTestSuite) TestPartialSignature() {
s.True(gpk.VerifySignature(msgHash, sig))
}
+func (s *DKGTSIGProtocolTestSuite) TestProposeReady() {
+ prvKey, err := ecdsa.NewPrivateKey()
+ s.Require().NoError(err)
+ recv := newTestDKGReceiver(s, prvKey)
+ nID := types.NewNodeID(prvKey.PublicKey())
+ protocol := newDKGProtocol(nID, recv, 1, 2)
+ protocol.proposeMPKReady()
+ s.Require().Len(recv.ready, 1)
+ ready := recv.ready[0]
+ s.Equal(&typesDKG.MPKReady{
+ ProposerID: nID,
+ Round: 1,
+ }, ready)
+}
+
func (s *DKGTSIGProtocolTestSuite) TestProposeFinalize() {
prvKey, err := ecdsa.NewPrivateKey()
s.Require().NoError(err)
@@ -718,6 +738,15 @@ func (s *DKGTSIGProtocolTestSuite) TestTSigVerifierCache() {
}
for _, protocol := range protocols {
+ protocol.proposeMPKReady()
+ }
+ for _, recv := range receivers {
+ s.Require().Len(recv.ready, 1)
+ gov.AddDKGMPKReady(recv.ready[0].Round, recv.ready[0])
+ }
+ s.Require().True(gov.IsDKGMPKReady(round))
+
+ for _, protocol := range protocols {
protocol.proposeFinalize()
}