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

View File

@ -134,13 +134,22 @@
console.log(data);
if (data.Message == "pake") {
log("processing pake data");
} else if (data.Message == "offerer") {
log("offering the first pake");
pakeData = pakeInit("test1", 0);
console.log(pakeData);
// console.log(pakeData);
pakeData = pakeUpdate(pakeData, data.Payload);
console.log(pakeSessionKey(pakeData));
sendMessage({
"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)
func pakePublic(this js.Value, inputs []js.Value) interface{} {
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())
if err != nil {
return js.Global().Get("Error").New(err.Error())
@ -247,7 +251,11 @@ func pakePublic(this js.Value, inputs []js.Value) interface{} {
// pakeSessionKey(pakeBytes)
func pakeSessionKey(this js.Value, inputs []js.Value) interface{} {
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())
if err != nil {
return js.Global().Get("Error").New(err.Error())

Binary file not shown.