From bad3f49d248fecec0696b663a3e2b4927d4497cb Mon Sep 17 00:00:00 2001 From: Daniel Whitenack Date: Fri, 10 Jun 2016 12:44:53 -0500 Subject: [PATCH 1/3] fixed whisper bug for unencrypted messages --- whisper/whisper.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/whisper/whisper.go b/whisper/whisper.go index 0a49c1000b..e94607efe2 100644 --- a/whisper/whisper.go +++ b/whisper/whisper.go @@ -23,7 +23,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/crypto/ecies" "github.com/ethereum/go-ethereum/event/filter" "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/logger/glog" @@ -305,8 +304,12 @@ func (self *Whisper) open(envelope *Envelope) *Message { if err == nil { message.To = &key.PublicKey return message - } else if err == ecies.ErrInvalidPublicKey { - return message + } else { + origMessage, err := envelope.Open(nil) + if err != nil { + return nil + } + return origMessage } } // Failed to decrypt, don't return anything From 78e6c38a586420b3a8e7e714cd3d68cfd1a9ab1c Mon Sep 17 00:00:00 2001 From: Daniel Whitenack Date: Fri, 10 Jun 2016 18:14:17 -0500 Subject: [PATCH 2/3] whisper bug fix for encrypted messages --- whisper/api.go | 3 +++ whisper/whisper.go | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/whisper/api.go b/whisper/api.go index d1f454a1fa..bf94aff4b1 100644 --- a/whisper/api.go +++ b/whisper/api.go @@ -178,6 +178,9 @@ func (s *PublicWhisperAPI) Post(args PostArgs) (bool, error) { // construct whisper message with transmission options message := NewMessage(common.FromHex(args.Payload)) + if len(message.Payload) == 0 && len(args.Payload) > 0 { + message.Payload = []byte(args.Payload) + } options := Options{ To: crypto.ToECDSAPub(common.FromHex(args.To)), TTL: time.Duration(args.TTL) * time.Second, diff --git a/whisper/whisper.go b/whisper/whisper.go index e94607efe2..678a7fae2f 100644 --- a/whisper/whisper.go +++ b/whisper/whisper.go @@ -23,6 +23,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/crypto/ecies" "github.com/ethereum/go-ethereum/event/filter" "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/logger/glog" @@ -301,10 +302,11 @@ func (self *Whisper) open(envelope *Envelope) *Message { // Iterate over the keys and try to decrypt the message for _, key := range self.keys { message, err := envelope.Open(key) - if err == nil { + switch err { + case nil: message.To = &key.PublicKey return message - } else { + case ecies.ErrInvalidPublicKey: origMessage, err := envelope.Open(nil) if err != nil { return nil From 45ef4745c155ac11e5ffe9f6f67fb252744d9cf5 Mon Sep 17 00:00:00 2001 From: Daniel Whitenack Date: Mon, 13 Jun 2016 07:17:50 -0500 Subject: [PATCH 3/3] simplify the whisper fix --- whisper/whisper.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/whisper/whisper.go b/whisper/whisper.go index 678a7fae2f..e9386c1017 100644 --- a/whisper/whisper.go +++ b/whisper/whisper.go @@ -307,11 +307,7 @@ func (self *Whisper) open(envelope *Envelope) *Message { message.To = &key.PublicKey return message case ecies.ErrInvalidPublicKey: - origMessage, err := envelope.Open(nil) - if err != nil { - return nil - } - return origMessage + return message } } // Failed to decrypt, don't return anything