aboutsummaryrefslogtreecommitdiffstats
path: root/whisper
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-12-16 04:54:34 +0800
committerobscuren <geffobscura@gmail.com>2014-12-16 04:55:00 +0800
commit54605d8c8e2c6c4b2619cf392ac430fecd7a4282 (patch)
tree7132aeddef96acf16b4e55be7514f45cbcc71139 /whisper
parent52ca80bdd22004525dd1decbf7f9698380bff2be (diff)
downloadgo-tangerine-54605d8c8e2c6c4b2619cf392ac430fecd7a4282.tar.gz
go-tangerine-54605d8c8e2c6c4b2619cf392ac430fecd7a4282.tar.zst
go-tangerine-54605d8c8e2c6c4b2619cf392ac430fecd7a4282.zip
During env open check for pub error which indicated unencrypted payload.
Diffstat (limited to 'whisper')
-rw-r--r--whisper/envelope.go6
-rw-r--r--whisper/whisper.go3
2 files changed, 7 insertions, 2 deletions
diff --git a/whisper/envelope.go b/whisper/envelope.go
index 683e88128..dc8d3cda4 100644
--- a/whisper/envelope.go
+++ b/whisper/envelope.go
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/rlp"
+ "github.com/obscuren/ecies"
)
const (
@@ -76,7 +77,10 @@ func (self *Envelope) Open(prv *ecdsa.PrivateKey) (msg *Message, err error) {
message.Payload = data[dataStart:]
if prv != nil {
message.Payload, err = crypto.Decrypt(prv, message.Payload)
- if err != nil {
+ switch err {
+ case ecies.ErrInvalidPublicKey: // Payload isn't encrypted
+ return &message, err
+ default:
return nil, fmt.Errorf("unable to open envelope. Decrypt failed: %v", err)
}
}
diff --git a/whisper/whisper.go b/whisper/whisper.go
index f91b61d9a..b16ccd1e9 100644
--- a/whisper/whisper.go
+++ b/whisper/whisper.go
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/event/filter"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/p2p"
+ "github.com/obscuren/ecies"
"gopkg.in/fatih/set.v0"
)
@@ -229,7 +230,7 @@ func (self *Whisper) envelopes() (envelopes []*Envelope) {
func (self *Whisper) postEvent(envelope *Envelope) {
for _, key := range self.keys {
- if message, err := envelope.Open(key); err == nil {
+ if message, err := envelope.Open(key); err == nil || (err != nil && err == ecies.ErrInvalidPublicKey) {
// Create a custom filter?
self.filters.Notify(filter.Generic{
Str1: string(crypto.FromECDSA(key)), Str2: string(crypto.FromECDSAPub(message.Recover())),