fix pake on js

This commit is contained in:
Zack Scholl 2019-11-12 08:28:29 -08:00
parent 6af5f7f39b
commit e2038a7d69
4 changed files with 48 additions and 16 deletions

View File

@ -63,7 +63,7 @@ type TransferOptions struct {
type WebsocketMessage struct { type WebsocketMessage struct {
Message string Message string
Payload []byte Payload string
} }
func (c *Client) Bundle(payload interface{}) (p []byte, err error) { func (c *Client) Bundle(payload interface{}) (p []byte, err error) {
@ -156,7 +156,7 @@ func New(ops Options) (c *Client, err error) {
// offerer sends the first pake // offerer sends the first pake
c.SendWebsocketMessage(WebsocketMessage{ c.SendWebsocketMessage(WebsocketMessage{
Message: "pake", Message: "pake",
Payload: c.Pake.Bytes(), Payload: base64.StdEncoding.EncodeToString(c.Pake.Bytes()),
}, false) }, false)
} else { } else {
// answerer receives the first pake // answerer receives the first pake
@ -214,7 +214,10 @@ func New(ops Options) (c *Client, err error) {
log.Error(err) log.Error(err)
} }
err = c.SendWebsocketMessage( err = c.SendWebsocketMessage(
WebsocketMessage{Message: "offer", Payload: offerJSON}, WebsocketMessage{
Message: "offer",
Payload: base64.StdEncoding.EncodeToString(offerJSON),
},
true, true,
) )
if err != nil { if err != nil {
@ -226,7 +229,9 @@ func New(ops Options) (c *Client, err error) {
var wsmsg WebsocketMessage var wsmsg WebsocketMessage
wsmsg, err = c.ReceiveWebsocketMessage(true) wsmsg, err = c.ReceiveWebsocketMessage(true)
err = setRemoteDescription(c.rtc, wsmsg.Payload) var payload []byte
payload, err = base64.StdEncoding.DecodeString(wsmsg.Payload)
err = setRemoteDescription(c.rtc, payload)
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return return
@ -236,7 +241,9 @@ func New(ops Options) (c *Client, err error) {
var wsmsg WebsocketMessage var wsmsg WebsocketMessage
wsmsg, err = c.ReceiveWebsocketMessage(true) wsmsg, err = c.ReceiveWebsocketMessage(true)
err = setRemoteDescription(c.rtc, wsmsg.Payload) var payload []byte
payload, err = base64.StdEncoding.DecodeString(wsmsg.Payload)
err = setRemoteDescription(c.rtc, payload)
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return return
@ -261,7 +268,10 @@ func New(ops Options) (c *Client, err error) {
log.Error(err) log.Error(err)
} }
err = c.SendWebsocketMessage( err = c.SendWebsocketMessage(
WebsocketMessage{Message: "answer", Payload: answerJSON}, WebsocketMessage{
Message: "answer",
Payload: base64.StdEncoding.EncodeToString(answerJSON),
},
true, true,
) )
if err != nil { if err != nil {
@ -282,8 +292,13 @@ func (c *Client) getPAKE(keepSending bool) (err error) {
log.Error(err) log.Error(err)
return return
} }
log.Debugf("getPake got: %+v", p) payload, err := base64.StdEncoding.DecodeString(p.Payload)
err = c.Pake.Update(p.Payload) if err != nil {
log.Error(err)
return
}
err = c.Pake.Update(payload)
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return return
@ -292,7 +307,7 @@ func (c *Client) getPAKE(keepSending bool) (err error) {
// sends back PAKE bytes // sends back PAKE bytes
err = c.SendWebsocketMessage(WebsocketMessage{ err = c.SendWebsocketMessage(WebsocketMessage{
Message: "pake", Message: "pake",
Payload: c.Pake.Bytes(), Payload: base64.StdEncoding.EncodeToString(c.Pake.Bytes()),
}, false) }, false)
} }
return return

View File

@ -134,13 +134,22 @@
console.log(data); console.log(data);
if (data.Message == "pake") { if (data.Message == "pake") {
log("processing pake data"); log("processing pake data");
} else if (data.Message == "offerer") { // console.log(pakeData);
log("offering the first pake"); pakeData = pakeUpdate(pakeData, data.Payload);
pakeData = pakeInit("test1", 0); console.log(pakeSessionKey(pakeData));
console.log(pakeData);
sendMessage({ sendMessage({
"Message": "pake", "Message": "pake",
"Payload": pakeData, "Payload": pakePublic(pakeData),
})
} else if (data.Message == "offerer") {
log("offering the first pake");
sendMessage({
"Message": "answerer",
})
pakeData = pakeInit("test1", 0);
sendMessage({
"Message": "pake",
"Payload": pakePublic(pakeData),
}) })
} }
}; };

View File

@ -236,7 +236,11 @@ func pakeUpdate(this js.Value, inputs []js.Value) interface{} {
// pakePublic(pakeBytes) // pakePublic(pakeBytes)
func pakePublic(this js.Value, inputs []js.Value) interface{} { func pakePublic(this js.Value, inputs []js.Value) interface{} {
var P *pake.Pake var P *pake.Pake
err := json.Unmarshal([]byte(inputs[0].String()), &P) b, err := base64.StdEncoding.DecodeString(inputs[0].String())
if err != nil {
return js.Global().Get("Error").New(err.Error())
}
err = json.Unmarshal(b, &P)
P.SetCurve(elliptic.P521()) P.SetCurve(elliptic.P521())
if err != nil { if err != nil {
return js.Global().Get("Error").New(err.Error()) return js.Global().Get("Error").New(err.Error())
@ -247,7 +251,11 @@ func pakePublic(this js.Value, inputs []js.Value) interface{} {
// pakeSessionKey(pakeBytes) // pakeSessionKey(pakeBytes)
func pakeSessionKey(this js.Value, inputs []js.Value) interface{} { func pakeSessionKey(this js.Value, inputs []js.Value) interface{} {
var P *pake.Pake var P *pake.Pake
err := json.Unmarshal([]byte(inputs[0].String()), &P) b, err := base64.StdEncoding.DecodeString(inputs[0].String())
if err != nil {
return js.Global().Get("Error").New(err.Error())
}
err = json.Unmarshal(b, &P)
P.SetCurve(elliptic.P521()) P.SetCurve(elliptic.P521())
if err != nil { if err != nil {
return js.Global().Get("Error").New(err.Error()) return js.Global().Get("Error").New(err.Error())

Binary file not shown.