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 {
|
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
|
||||||
|
|
|
@ -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),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -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.
Loading…
Reference in New Issue