diff options
Diffstat (limited to 'whisper/message_test.go')
-rw-r--r-- | whisper/message_test.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/whisper/message_test.go b/whisper/message_test.go new file mode 100644 index 000000000..93caa31b3 --- /dev/null +++ b/whisper/message_test.go @@ -0,0 +1,50 @@ +package whisper + +import ( + "bytes" + "crypto/elliptic" + "fmt" + "testing" + + "github.com/ethereum/go-ethereum/crypto" +) + +func TestSign(t *testing.T) { + prv, _ := crypto.GenerateKey() + msg := NewMessage([]byte("hello world")) + msg.sign(prv) + + pubKey := msg.Recover() + p1 := elliptic.Marshal(crypto.S256(), prv.PublicKey.X, prv.PublicKey.Y) + p2 := elliptic.Marshal(crypto.S256(), pubKey.X, pubKey.Y) + + if !bytes.Equal(p1, p2) { + t.Error("recovered pub key did not match") + } +} + +func TestMessageEncryptDecrypt(t *testing.T) { + prv1, _ := crypto.GenerateKey() + prv2, _ := crypto.GenerateKey() + + data := []byte("hello world") + msg := NewMessage(data) + envelope, err := msg.Seal(DefaultPow, Opts{ + From: prv1, + To: &prv2.PublicKey, + }) + if err != nil { + fmt.Println(err) + t.FailNow() + } + + msg1, err := envelope.Open(prv2) + if err != nil { + t.Error(err) + t.FailNow() + } + + if !bytes.Equal(msg1.Payload, data) { + t.Error("encryption error. data did not match") + } +} |