From bf566a657c2de2ab7818ec14003a33d84302aef3 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Fri, 12 Dec 2014 22:24:41 +0100
Subject: Implemented Qt whisper interface

---
 ui/qt/qwhisper/whisper.go | 70 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)
 create mode 100644 ui/qt/qwhisper/whisper.go

(limited to 'ui')

diff --git a/ui/qt/qwhisper/whisper.go b/ui/qt/qwhisper/whisper.go
new file mode 100644
index 000000000..fd2b62ac2
--- /dev/null
+++ b/ui/qt/qwhisper/whisper.go
@@ -0,0 +1,70 @@
+package qwhisper
+
+import (
+	"time"
+
+	"github.com/ethereum/eth-go/ethutil"
+	"github.com/ethereum/go-ethereum/whisper"
+)
+
+func fromHex(s string) []byte {
+	if len(s) > 1 {
+		return ethutil.Hex2Bytes(s[2:])
+	}
+	return nil
+}
+func toHex(b []byte) string { return "0x" + ethutil.Bytes2Hex(b) }
+
+type Whisper struct {
+	*whisper.Whisper
+}
+
+func New(w *whisper.Whisper) *Whisper {
+	return &Whisper{w}
+}
+
+func (self *Whisper) Post(data string, pow, ttl uint32, to, from string) {
+	msg := whisper.NewMessage(fromHex(data))
+	envelope, err := msg.Seal(time.Duration(pow), whisper.Opts{
+		Ttl:  time.Duration(ttl),
+		To:   crypto.PubTECDSA(fromHex(to)),
+		From: crypto.ToECDSA(fromHex(from)),
+	})
+	if err != nil {
+		// handle error
+		return
+	}
+
+	if err := self.Whisper.Send(envolpe); err != nil {
+		// handle error
+		return
+	}
+}
+
+func (self *Whisper) NewIdentity() string {
+	return toHex(self.Whisper.NewIdentity().D.Bytes())
+}
+
+func (self *Whisper) HasIdentify(key string) bool {
+	return self.Whisper.HasIdentity(crypto.ToECDSA(fromHex(key)))
+}
+
+func (self *Whisper) Watch(opts map[string]interface{}) {
+	filter := filterFromMap(opts)
+	filter.Fn = func(msg *Message) {
+		// TODO POST TO QT WINDOW
+	}
+	self.Watch(filter)
+}
+
+func filterFromMap(opts map[string]interface{}) whisper.Filter {
+	var f Filter
+	if to, ok := opts["to"].(string); ok {
+		f.To = ToECDSA(fromHex(to))
+	}
+	if from, ok := opts["from"].(string); ok {
+		f.From = ToECDSAPub(fromHex(from))
+	}
+
+	return f
+}
-- 
cgit v1.2.3


From 4c84db85c52b586d8c30f270b03671f77c9c2534 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Fri, 12 Dec 2014 22:29:29 +0100
Subject: eth-go packages ended up in whisper

---
 ui/qt/qwhisper/whisper.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'ui')

diff --git a/ui/qt/qwhisper/whisper.go b/ui/qt/qwhisper/whisper.go
index fd2b62ac2..d307366c8 100644
--- a/ui/qt/qwhisper/whisper.go
+++ b/ui/qt/qwhisper/whisper.go
@@ -3,7 +3,7 @@ package qwhisper
 import (
 	"time"
 
-	"github.com/ethereum/eth-go/ethutil"
+	"github.com/ethereum/go-ethereum/ethutil"
 	"github.com/ethereum/go-ethereum/whisper"
 )
 
-- 
cgit v1.2.3


From f8061fcba8648593e03ce3d847613d8c8e0f4797 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Fri, 12 Dec 2014 22:38:54 +0100
Subject: fixed tests

---
 ui/qt/qwhisper/whisper.go | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

(limited to 'ui')

diff --git a/ui/qt/qwhisper/whisper.go b/ui/qt/qwhisper/whisper.go
index d307366c8..bed23c8a7 100644
--- a/ui/qt/qwhisper/whisper.go
+++ b/ui/qt/qwhisper/whisper.go
@@ -3,6 +3,7 @@ package qwhisper
 import (
 	"time"
 
+	"github.com/ethereum/go-ethereum/crypto"
 	"github.com/ethereum/go-ethereum/ethutil"
 	"github.com/ethereum/go-ethereum/whisper"
 )
@@ -27,7 +28,7 @@ func (self *Whisper) Post(data string, pow, ttl uint32, to, from string) {
 	msg := whisper.NewMessage(fromHex(data))
 	envelope, err := msg.Seal(time.Duration(pow), whisper.Opts{
 		Ttl:  time.Duration(ttl),
-		To:   crypto.PubTECDSA(fromHex(to)),
+		To:   crypto.ToECDSAPub(fromHex(to)),
 		From: crypto.ToECDSA(fromHex(from)),
 	})
 	if err != nil {
@@ -35,7 +36,7 @@ func (self *Whisper) Post(data string, pow, ttl uint32, to, from string) {
 		return
 	}
 
-	if err := self.Whisper.Send(envolpe); err != nil {
+	if err := self.Whisper.Send(envelope); err != nil {
 		// handle error
 		return
 	}
@@ -51,20 +52,19 @@ func (self *Whisper) HasIdentify(key string) bool {
 
 func (self *Whisper) Watch(opts map[string]interface{}) {
 	filter := filterFromMap(opts)
-	filter.Fn = func(msg *Message) {
+	filter.Fn = func(msg *whisper.Message) {
 		// TODO POST TO QT WINDOW
 	}
-	self.Watch(filter)
+	self.Whisper.Watch(filter)
 }
 
-func filterFromMap(opts map[string]interface{}) whisper.Filter {
-	var f Filter
+func filterFromMap(opts map[string]interface{}) (f whisper.Filter) {
 	if to, ok := opts["to"].(string); ok {
-		f.To = ToECDSA(fromHex(to))
+		f.To = crypto.ToECDSA(fromHex(to))
 	}
 	if from, ok := opts["from"].(string); ok {
-		f.From = ToECDSAPub(fromHex(from))
+		f.From = crypto.ToECDSAPub(fromHex(from))
 	}
 
-	return f
+	return
 }
-- 
cgit v1.2.3