aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-01-15 01:12:18 +0800
committerobscuren <geffobscura@gmail.com>2015-01-15 01:12:18 +0800
commit62e0e18030c84fa19f54373ebdf25f7adbc64793 (patch)
tree6113a4b0ad6c4bd1e847c4a8a5dabf4a11dbe28d /ui
parentbb55307a9d8fa73b0fbc0727f8b80925a87627b7 (diff)
downloaddexon-62e0e18030c84fa19f54373ebdf25f7adbc64793.tar.gz
dexon-62e0e18030c84fa19f54373ebdf25f7adbc64793.tar.zst
dexon-62e0e18030c84fa19f54373ebdf25f7adbc64793.zip
Changed public whisper api not to reveal temporary private keys
Diffstat (limited to 'ui')
-rw-r--r--ui/qt/qwhisper/message.go4
-rw-r--r--ui/qt/qwhisper/whisper.go45
2 files changed, 29 insertions, 20 deletions
diff --git a/ui/qt/qwhisper/message.go b/ui/qt/qwhisper/message.go
index 3a80381ff..26e72ac93 100644
--- a/ui/qt/qwhisper/message.go
+++ b/ui/qt/qwhisper/message.go
@@ -17,7 +17,7 @@ func ToQMessage(msg *whisper.Message) *Message {
return &Message{
ref: msg,
Flags: int32(msg.Flags),
- Payload: ethutil.Bytes2Hex(msg.Payload),
- From: ethutil.Bytes2Hex(crypto.FromECDSAPub(msg.Recover())),
+ Payload: "0x" + ethutil.Bytes2Hex(msg.Payload),
+ From: "0x" + ethutil.Bytes2Hex(crypto.FromECDSAPub(msg.Recover())),
}
}
diff --git a/ui/qt/qwhisper/whisper.go b/ui/qt/qwhisper/whisper.go
index b904678f4..644c147b7 100644
--- a/ui/qt/qwhisper/whisper.go
+++ b/ui/qt/qwhisper/whisper.go
@@ -41,32 +41,41 @@ func (self *Whisper) Post(payload []string, to, from string, topics []string, pr
data = append(data, fromHex(d)...)
}
- msg := whisper.NewMessage(data)
- envelope, err := msg.Seal(time.Duration(priority*100000), whisper.Opts{
- Ttl: time.Duration(ttl) * time.Second,
- To: crypto.ToECDSAPub(fromHex(to)),
- From: crypto.ToECDSA(fromHex(from)),
- Topics: whisper.TopicsFromString(topics...),
- })
- if err != nil {
- qlogger.Infoln(err)
- // handle error
- return
- }
+ pk := crypto.ToECDSAPub(fromHex(from))
+ if key := self.Whisper.GetIdentity(pk); key != nil {
+ msg := whisper.NewMessage(data)
+ envelope, err := msg.Seal(time.Duration(priority*100000), whisper.Opts{
+ Ttl: time.Duration(ttl) * time.Second,
+ To: crypto.ToECDSAPub(fromHex(to)),
+ From: key,
+ Topics: whisper.TopicsFromString(topics...),
+ })
+
+ if err != nil {
+ qlogger.Infoln(err)
+ // handle error
+ return
+ }
- if err := self.Whisper.Send(envelope); err != nil {
- qlogger.Infoln(err)
- // handle error
- return
+ if err := self.Whisper.Send(envelope); err != nil {
+ qlogger.Infoln(err)
+ // handle error
+ return
+ }
+ } else {
+ qlogger.Infoln("unmatched pub / priv for seal")
}
+
}
func (self *Whisper) NewIdentity() string {
- return toHex(self.Whisper.NewIdentity().D.Bytes())
+ key := self.Whisper.NewIdentity()
+
+ return toHex(crypto.FromECDSAPub(&key.PublicKey))
}
func (self *Whisper) HasIdentity(key string) bool {
- return self.Whisper.HasIdentity(crypto.ToECDSA(fromHex(key)))
+ return self.Whisper.HasIdentity(crypto.ToECDSAPub(fromHex(key)))
}
func (self *Whisper) Watch(opts map[string]interface{}, view *qml.Common) int {