From 6b149480d493a5fb46c25493e02baf021ade50f5 Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Mon, 29 Apr 2019 18:03:19 -0600 Subject: [PATCH] add messaging --- src/message/message.go | 40 +++++++++++++++++++++++++++++++++++++ src/message/message_test.go | 23 +++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/message/message.go create mode 100644 src/message/message_test.go diff --git a/src/message/message.go b/src/message/message.go new file mode 100644 index 0000000..049a53f --- /dev/null +++ b/src/message/message.go @@ -0,0 +1,40 @@ +package message + +import ( + "encoding/json" + + "github.com/schollz/croc/v6/src/compress" + "github.com/schollz/croc/v6/src/crypt" +) + +type Message struct { + Type string `json:"t,omitempty"` + Message string `json:"m,omitempty"` + Bytes []byte `json:"b,omitempty"` + Num int `json:"n,omitempty"` +} + +func Encode(m Message, e ...crypt.Encryption) (b []byte, err error) { + b, err = json.Marshal(m) + if err != nil { + return + } + + b = compress.Compress(b) + if len(e) > 0 { + b, err = e[0].Encrypt(b) + } + return +} + +func Decode(b []byte, e ...crypt.Encryption) (m Message, err error) { + if len(e) > 0 { + b, err = e[0].Decrypt(b) + if err != nil { + return + } + } + b = compress.Decompress(b) + err = json.Unmarshal(b, &m) + return +} diff --git a/src/message/message_test.go b/src/message/message_test.go new file mode 100644 index 0000000..5de3471 --- /dev/null +++ b/src/message/message_test.go @@ -0,0 +1,23 @@ +package message + +import ( + "fmt" + "testing" + + "github.com/schollz/croc/v6/src/crypt" + "github.com/stretchr/testify/assert" +) + +func TestMessage(t *testing.T) { + m := Message{Type: "message", Message: "hello, world"} + e, err := crypt.New([]byte("passphrase"), nil) + assert.Nil(t, err) + fmt.Println(e.Salt()) + b, err := Encode(m, e) + assert.Nil(t, err) + fmt.Printf("%x\n", b) + + m2, err := Decode(b, e) + assert.Nil(t, err) + assert.Equal(t, m, m2) +}