aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2019-01-04 17:39:21 +0800
committerGitHub <noreply@github.com>2019-01-04 17:39:21 +0800
commit8bbf4bc3face4e040e52afd392b70def7b3aaf58 (patch)
tree21135ba0d1250bc7a12bf514839a200973e82e3e
parent17b96ca95ffd4cbf8af762a974fc8b18f2c1b993 (diff)
downloaddexon-consensus-8bbf4bc3face4e040e52afd392b70def7b3aaf58.tar
dexon-consensus-8bbf4bc3face4e040e52afd392b70def7b3aaf58.tar.gz
dexon-consensus-8bbf4bc3face4e040e52afd392b70def7b3aaf58.tar.bz2
dexon-consensus-8bbf4bc3face4e040e52afd392b70def7b3aaf58.tar.lz
dexon-consensus-8bbf4bc3face4e040e52afd392b70def7b3aaf58.tar.xz
dexon-consensus-8bbf4bc3face4e040e52afd392b70def7b3aaf58.tar.zst
dexon-consensus-8bbf4bc3face4e040e52afd392b70def7b3aaf58.zip
core: expose HashVote function for test (#400)
-rw-r--r--core/utils/crypto.go5
-rw-r--r--core/utils/crypto_test.go2
-rw-r--r--core/utils/penalty-helper_test.go8
-rw-r--r--core/utils/signer.go2
4 files changed, 9 insertions, 8 deletions
diff --git a/core/utils/crypto.go b/core/utils/crypto.go
index 6042411..43bbde1 100644
--- a/core/utils/crypto.go
+++ b/core/utils/crypto.go
@@ -90,7 +90,8 @@ func VerifyBlockSignature(b *types.Block) (err error) {
}
-func hashVote(vote *types.Vote) common.Hash {
+// HashVote generates hash of a types.Vote.
+func HashVote(vote *types.Vote) common.Hash {
binaryPeriod := make([]byte, 8)
binary.LittleEndian.PutUint64(binaryPeriod, vote.Period)
@@ -108,7 +109,7 @@ func hashVote(vote *types.Vote) common.Hash {
// VerifyVoteSignature verifies the signature of types.Vote.
func VerifyVoteSignature(vote *types.Vote) (bool, error) {
- hash := hashVote(vote)
+ hash := HashVote(vote)
pubKey, err := crypto.SigToPub(hash, vote.Signature)
if err != nil {
return false, err
diff --git a/core/utils/crypto_test.go b/core/utils/crypto_test.go
index f4280c2..f1fa9b6 100644
--- a/core/utils/crypto_test.go
+++ b/core/utils/crypto_test.go
@@ -130,7 +130,7 @@ func (s *CryptoTestSuite) TestVoteSignature() {
nID := types.NewNodeID(pub)
vote := types.NewVote(types.VoteInit, common.NewRandomHash(), 1)
vote.ProposerID = nID
- vote.Signature, err = prv.Sign(hashVote(vote))
+ vote.Signature, err = prv.Sign(HashVote(vote))
s.Require().NoError(err)
ok, err := VerifyVoteSignature(vote)
s.Require().NoError(err)
diff --git a/core/utils/penalty-helper_test.go b/core/utils/penalty-helper_test.go
index ba51867..7b61781 100644
--- a/core/utils/penalty-helper_test.go
+++ b/core/utils/penalty-helper_test.go
@@ -122,9 +122,9 @@ func (s *PenaltyHelperTestSuite) TestForkVote() {
for vote2.BlockHash == vote1.BlockHash {
vote2.BlockHash = common.NewRandomHash()
}
- vote1.Signature, err = prv1.Sign(hashVote(vote1))
+ vote1.Signature, err = prv1.Sign(HashVote(vote1))
s.Require().NoError(err)
- vote2.Signature, err = prv1.Sign(hashVote(vote2))
+ vote2.Signature, err = prv1.Sign(HashVote(vote2))
s.Require().NoError(err)
ok, err := NeedPenaltyForkVote(vote1, vote2)
@@ -138,7 +138,7 @@ func (s *PenaltyHelperTestSuite) TestForkVote() {
s.False(ok)
// Period not matched.
- vote2.Signature, err = prv1.Sign(hashVote(vote2))
+ vote2.Signature, err = prv1.Sign(HashVote(vote2))
s.Require().NoError(err)
ok, err = NeedPenaltyForkVote(vote1, vote2)
s.Require().NoError(err)
@@ -152,7 +152,7 @@ func (s *PenaltyHelperTestSuite) TestForkVote() {
prv2, err := ecdsa.NewPrivateKey()
s.Require().NoError(err)
vote2.ProposerID = types.NewNodeID(prv2.PublicKey())
- vote2.Signature, err = prv2.Sign(hashVote(vote2))
+ vote2.Signature, err = prv2.Sign(HashVote(vote2))
s.Require().NoError(err)
ok, err = NeedPenaltyForkVote(vote1, vote2)
s.Require().NoError(err)
diff --git a/core/utils/signer.go b/core/utils/signer.go
index 47bea3f..7694dab 100644
--- a/core/utils/signer.go
+++ b/core/utils/signer.go
@@ -66,7 +66,7 @@ func (s *Signer) SignBlock(b *types.Block) (err error) {
// SignVote signs a types.Vote.
func (s *Signer) SignVote(v *types.Vote) (err error) {
v.ProposerID = s.proposerID
- v.Signature, err = s.prvKey.Sign(hashVote(v))
+ v.Signature, err = s.prvKey.Sign(HashVote(v))
return
}