mirror of https://github.com/schollz/croc.git
fix pake on js
This commit is contained in:
parent
6af5f7f39b
commit
e2038a7d69
|
@ -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
|
||||
|
|
|
@ -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),
|
||||
})
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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.
Loading…
Reference in New Issue