From 03ef1219198020034c825e35b2124dff27aa5d69 Mon Sep 17 00:00:00 2001 From: Vlad Date: Wed, 11 Jan 2017 12:36:37 +0100 Subject: [PATCH] whisper: new test added (rlp encode/decode) --- whisper/whisperv5/envelope.go | 4 ++++ whisper/whisperv5/message_test.go | 33 +++++++++++++++++++++++++++++++ whisper/whisperv5/peer.go | 5 +++++ 3 files changed, 42 insertions(+) diff --git a/whisper/whisperv5/envelope.go b/whisper/whisperv5/envelope.go index 1b976705d4..3c94ffbdaa 100644 --- a/whisper/whisperv5/envelope.go +++ b/whisper/whisperv5/envelope.go @@ -172,6 +172,10 @@ func (e *Envelope) DecodeRLP(s *rlp.Stream) error { if err != nil { return err } + return e.DecodeBytes(raw) +} + +func (e *Envelope) DecodeBytes(raw []byte) error { // The decoding of Envelope uses the struct fields but also needs // to compute the hash of the whole RLP-encoded envelope. This // type has the same structure as Envelope but is not an diff --git a/whisper/whisperv5/message_test.go b/whisper/whisperv5/message_test.go index 5cbc9182f2..280670880e 100644 --- a/whisper/whisperv5/message_test.go +++ b/whisper/whisperv5/message_test.go @@ -22,6 +22,7 @@ import ( "testing" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/rlp" ) func copyFromBuf(dst []byte, src []byte, beg int) int { @@ -315,3 +316,35 @@ func TestEncryptWithZeroKey(t *testing.T) { t.Fatalf("wrapped with nil key, seed: %d.", seed) } } + +func TestRlpEncode(t *testing.T) { + InitSingleTest() + + params, err := generateMessageParams() + if err != nil { + t.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err) + } + msg := NewSentMessage(params) + env, err := msg.Wrap(params) + if err != nil { + t.Fatalf("wrapped with zero key, seed: %d.", seed) + } + + rlpEncoded, err := rlp.EncodeToBytes(env) + if err != nil { + t.Fatalf("RLP encode failed: %s.", err) + } + + var decoded Envelope + err = decoded.DecodeBytes(rlpEncoded) + if err != nil { + t.Fatalf("RLP decode failed: %s.", err) + } + + he := env.Hash() + hd := decoded.Hash() + + if he != hd { + t.Fatalf("Hashes are not equal: %x vs. %x", he, hd) + } +} diff --git a/whisper/whisperv5/peer.go b/whisper/whisperv5/peer.go index 4273cfce1f..f0bda0a638 100644 --- a/whisper/whisperv5/peer.go +++ b/whisper/whisperv5/peer.go @@ -175,3 +175,8 @@ func (p *Peer) broadcast() error { glog.V(logger.Detail).Infoln(p.peer, "broadcasted", len(transmit), "message(s)") return nil } + +func (p *Peer) ID() []byte { + id := p.peer.ID() + return id[:] +}