mirror of https://github.com/schollz/croc.git
communication seems to work
This commit is contained in:
parent
0b302b3f7c
commit
0f72e35268
|
@ -26,6 +26,7 @@
|
|||
}
|
||||
|
||||
var croc = {
|
||||
"key": "",
|
||||
"pake": "",
|
||||
};
|
||||
var sharedPassphrase = "pass123"
|
||||
|
@ -36,8 +37,13 @@
|
|||
if (event.data == "initiated") {
|
||||
socket.send(JSON.stringify({ "m": "room", "ps": sharedPassphrase }))
|
||||
} else if (event.data == "initpake") {
|
||||
croc.pake = pakeInit(sharedPassphrase, "1");
|
||||
socket.send(JSON.stringify({ "m": "initpake", "ps": croc.pake }))
|
||||
croc.pake = pakeInit(sharedPassphrase, "0");
|
||||
socket.send(
|
||||
messageEncode(croc.key, JSON.stringify({ "t": "pake", "b": croc.pake }))
|
||||
)
|
||||
} else {
|
||||
msgJSON = messageDecode(croc.key, event.data);
|
||||
console.log(msgJSON);
|
||||
}
|
||||
};
|
||||
const socketOpenListener = (event) => {
|
||||
|
|
81
html/main.go
81
html/main.go
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package main
|
||||
|
||||
//go:generate cp /usr/local/go/misc/wasm/wasm_exec.js .
|
||||
|
||||
|
@ -24,11 +24,86 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/schollz/croc/v6/src/compress"
|
||||
"github.com/schollz/croc/v6/src/crypt"
|
||||
"github.com/schollz/croc/v6/src/message"
|
||||
log "github.com/schollz/logger"
|
||||
"github.com/schollz/pake/v2"
|
||||
)
|
||||
|
||||
// messageEncode(key, Message)
|
||||
// returns base64 encoded, encrypts if key != nil
|
||||
func messageEncode(this js.Value, inputs []js.Value) interface{} {
|
||||
// initialize sender P ("1" indicates sender)
|
||||
if len(inputs) != 2 {
|
||||
return js.Global().Get("Error").New("need weakPassphrase, role")
|
||||
}
|
||||
var m message.Message
|
||||
err := json.Unmarshal([]byte(inputs[1].String()), &m)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return js.Global().Get("Error").New(err.Error())
|
||||
}
|
||||
b, err := json.Marshal(m)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return js.Global().Get("Error").New(err.Error())
|
||||
}
|
||||
b = compress.Compress(b)
|
||||
if inputs[0].String() != "" {
|
||||
var key []byte
|
||||
key, err = base64.StdEncoding.DecodeString(inputs[0].String())
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return js.Global().Get("Error").New(err.Error())
|
||||
}
|
||||
|
||||
b, err = crypt.Encrypt(b, key)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return js.Global().Get("Error").New(err.Error())
|
||||
}
|
||||
}
|
||||
return base64.StdEncoding.EncodeToString(b)
|
||||
}
|
||||
|
||||
// messageDecode(key, encodedMessage)
|
||||
// returns base64 encoded, encrypts if key != nil
|
||||
func messageDecode(this js.Value, inputs []js.Value) interface{} {
|
||||
// initialize sender P ("1" indicates sender)
|
||||
if len(inputs) != 2 {
|
||||
return js.Global().Get("Error").New("need key, encodedmessage")
|
||||
}
|
||||
var key []byte
|
||||
key = nil
|
||||
var err error
|
||||
if inputs[0].String() != "" {
|
||||
key, err = base64.StdEncoding.DecodeString(inputs[0].String())
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return js.Global().Get("Error").New(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
b, err := base64.StdEncoding.DecodeString(inputs[1].String())
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return js.Global().Get("Error").New(err.Error())
|
||||
}
|
||||
m, err := message.Decode(key, b)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return js.Global().Get("Error").New(err.Error())
|
||||
}
|
||||
|
||||
bJSON, err := json.Marshal(m)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return js.Global().Get("Error").New(err.Error())
|
||||
}
|
||||
return string(bJSON)
|
||||
}
|
||||
|
||||
// pakeInit(weakPassphrase, role)
|
||||
// returns: pakeBytes
|
||||
func pakeInit(this js.Value, inputs []js.Value) interface{} {
|
||||
|
@ -162,6 +237,8 @@ func main() {
|
|||
js.Global().Set("pakePublic", js.FuncOf(pakePublic))
|
||||
js.Global().Set("pakeUpdate", js.FuncOf(pakeUpdate))
|
||||
js.Global().Set("pakeSessionKey", js.FuncOf(pakeSessionKey))
|
||||
js.Global().Set("messageEncode", js.FuncOf(messageEncode))
|
||||
js.Global().Set("messageDecode", js.FuncOf(messageDecode))
|
||||
fmt.Println("Initiated")
|
||||
<-c
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package webrelay
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
@ -105,9 +106,25 @@ func receive(conn *websocket.Conn) (err error) {
|
|||
log.Error(err)
|
||||
return
|
||||
}
|
||||
} else if bu.Message == "initpake" {
|
||||
log.Debug("got init pake data")
|
||||
|
||||
}
|
||||
}
|
||||
b, errBase64 := base64.StdEncoding.DecodeString(string(message))
|
||||
if errBase64 == nil {
|
||||
log.Debug("parsing base64 bytes")
|
||||
err = com.Send(b)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
b, err = com.Receive()
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
err = conn.WriteMessage(websocket.TextMessage, []byte(base64.StdEncoding.EncodeToString(b)))
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue