aboutsummaryrefslogtreecommitdiffstats
path: root/core/crypto/dkg
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2018-09-26 17:13:37 +0800
committerGitHub <noreply@github.com>2018-09-26 17:13:37 +0800
commit7450e6ba7f7299d03b04a7e2a9b3bc5911b94cfe (patch)
tree41b823a05f81615558a37567dab85e2958b59329 /core/crypto/dkg
parent663817d3e0d5a3c28cb0c5e378a533e242af5fdf (diff)
downloadtangerine-consensus-7450e6ba7f7299d03b04a7e2a9b3bc5911b94cfe.tar.gz
tangerine-consensus-7450e6ba7f7299d03b04a7e2a9b3bc5911b94cfe.tar.zst
tangerine-consensus-7450e6ba7f7299d03b04a7e2a9b3bc5911b94cfe.zip
crypto: sigtopub to crypto package. remove SigToPubFn (#141)
Diffstat (limited to 'core/crypto/dkg')
-rw-r--r--core/crypto/dkg/dkg.go11
-rw-r--r--core/crypto/dkg/dkg_test.go2
-rw-r--r--core/crypto/dkg/utils.go14
3 files changed, 17 insertions, 10 deletions
diff --git a/core/crypto/dkg/dkg.go b/core/crypto/dkg/dkg.go
index fe05e96..55199a9 100644
--- a/core/crypto/dkg/dkg.go
+++ b/core/crypto/dkg/dkg.go
@@ -38,6 +38,8 @@ var (
ErrShareNotFound = fmt.Errorf("share not found")
)
+const cryptoType = "bls"
+
var publicKeyLength int
func init() {
@@ -334,7 +336,10 @@ func (prv *PrivateKey) PublicKey() crypto.PublicKey {
func (prv *PrivateKey) Sign(hash common.Hash) (crypto.Signature, error) {
msg := string(hash[:])
sign := prv.privateKey.Sign(msg)
- return crypto.Signature(sign.Serialize()), nil
+ return crypto.Signature{
+ Type: cryptoType,
+ Signature: sign.Serialize(),
+ }, nil
}
// Bytes returns []byte representation of private key.
@@ -361,11 +366,11 @@ func (prv *PrivateKey) String() string {
// VerifySignature checks that the given public key created signature over hash.
func (pub PublicKey) VerifySignature(
hash common.Hash, signature crypto.Signature) bool {
- if len(signature) == 0 {
+ if len(signature.Signature) == 0 {
return false
}
var sig bls.Sign
- if err := sig.Deserialize(signature[:]); err != nil {
+ if err := sig.Deserialize(signature.Signature[:]); err != nil {
fmt.Println(err)
return false
}
diff --git a/core/crypto/dkg/dkg_test.go b/core/crypto/dkg/dkg_test.go
index 9488dcc..84a78f4 100644
--- a/core/crypto/dkg/dkg_test.go
+++ b/core/crypto/dkg/dkg_test.go
@@ -284,7 +284,7 @@ func (s *DKGTestSuite) TestSignature() {
sig, err := prvKey.Sign(hash)
s.Require().NoError(err)
s.True(pubKey.VerifySignature(hash, sig))
- sig[0]++
+ sig.Signature[0]++
s.False(pubKey.VerifySignature(hash, sig))
sig = crypto.Signature{}
s.False(pubKey.VerifySignature(hash, sig))
diff --git a/core/crypto/dkg/utils.go b/core/crypto/dkg/utils.go
index 967973d..45c4a27 100644
--- a/core/crypto/dkg/utils.go
+++ b/core/crypto/dkg/utils.go
@@ -38,18 +38,20 @@ func RecoverSignature(sigs []PartialSignature, signerIDs IDs) (
crypto.Signature, error) {
blsSigs := make([]bls.Sign, len(sigs))
for i, sig := range sigs {
- if len(sig) == 0 {
- return nil, ErrEmptySignature
+ if len(sig.Signature) == 0 {
+ return crypto.Signature{}, ErrEmptySignature
}
- if err := blsSigs[i].Deserialize([]byte(sig)); err != nil {
- return nil, err
+ if err := blsSigs[i].Deserialize([]byte(sig.Signature)); err != nil {
+ return crypto.Signature{}, err
}
}
var recoverSig bls.Sign
if err := recoverSig.Recover(blsSigs, []bls.ID(signerIDs)); err != nil {
- return nil, err
+ return crypto.Signature{}, err
}
- return crypto.Signature(recoverSig.Serialize()), nil
+ return crypto.Signature{
+ Type: cryptoType,
+ Signature: recoverSig.Serialize()}, nil
}
// RecoverGroupPublicKey recovers group public key.