From 6615245b8098daf39be250698e9ff90e0a72936b Mon Sep 17 00:00:00 2001 From: Sonic Date: Sat, 20 Oct 2018 19:12:59 +0800 Subject: crypto: dkg: implement rlp.Encoder, rlp.Decoder for PrivateKey (#235) --- core/crypto/dkg/dkg.go | 14 ++++++++++++++ core/crypto/dkg/dkg_test.go | 12 ++++++++++++ 2 files changed, 26 insertions(+) diff --git a/core/crypto/dkg/dkg.go b/core/crypto/dkg/dkg.go index 8d0e088..8ca511d 100644 --- a/core/crypto/dkg/dkg.go +++ b/core/crypto/dkg/dkg.go @@ -58,6 +58,20 @@ type PrivateKey struct { publicKey PublicKey } +// EncodeRLP implements rlp.Encoder +func (prv *PrivateKey) EncodeRLP(w io.Writer) error { + return rlp.Encode(w, prv.Bytes()) +} + +// DecodeRLP implements rlp.Decoder +func (prv *PrivateKey) DecodeRLP(s *rlp.Stream) error { + var b []byte + if err := s.Decode(&b); err != nil { + return err + } + return prv.SetBytes(b) +} + // MarshalJSON implements json.Marshaller. func (prv *PrivateKey) MarshalJSON() ([]byte, error) { return json.Marshal(&prv.privateKey) diff --git a/core/crypto/dkg/dkg_test.go b/core/crypto/dkg/dkg_test.go index fe7ec73..44e68d8 100644 --- a/core/crypto/dkg/dkg_test.go +++ b/core/crypto/dkg/dkg_test.go @@ -292,6 +292,18 @@ func (s *DKGTestSuite) TestSignature() { s.False(pubKey.VerifySignature(hash, sig)) } +func (s *DKGTestSuite) TestPrivateKeyRLPEncodeDecode() { + k := NewPrivateKey() + b, err := rlp.EncodeToBytes(k) + s.Require().NoError(err) + + var kk PrivateKey + err = rlp.DecodeBytes(b, &kk) + s.Require().NoError(err) + + s.Require().True(reflect.DeepEqual(*k, kk)) +} + func (s *DKGTestSuite) TestPublicKeySharesRLPEncodeDecode() { p := NewEmptyPublicKeyShares() for i, id := range s.genID(1) { -- cgit v1.2.3