diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2018-12-19 17:16:40 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-19 17:16:40 +0800 |
commit | c7b4045802450df361216d9e7da3ec318e67cc34 (patch) | |
tree | c4060817a54e5cf455e830b21e6a91b9fc11004f /core/dkg-tsig-protocol_test.go | |
parent | 7bafefa5c70a26a28636123cb2b6598eea3ed380 (diff) | |
download | dexon-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.go | 29 |
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() } |