mirror of
https://github.com/schollz/croc.git
synced 2025-10-11 13:21:00 +02:00
tell user codephrase is wrong if PAKE fails
This commit is contained in:
parent
a56334fc60
commit
e0081ea8a8
3 changed files with 20 additions and 11 deletions
|
@ -98,7 +98,7 @@ func Run() {
|
||||||
// if trying to send but forgot send, let the user know
|
// if trying to send but forgot send, let the user know
|
||||||
if c.Args().First() != "" && utils.Exists(c.Args().First()) {
|
if c.Args().First() != "" && utils.Exists(c.Args().First()) {
|
||||||
_, fname := filepath.Split(c.Args().First())
|
_, fname := filepath.Split(c.Args().First())
|
||||||
yn := utils.GetInput(fmt.Sprintf("Did you mean to send '%s'? (y/n)", fname))
|
yn := utils.GetInput(fmt.Sprintf("Did you mean to send '%s'? (y/n) ", fname))
|
||||||
if strings.ToLower(yn) == "y" {
|
if strings.ToLower(yn) == "y" {
|
||||||
return send(c)
|
return send(c)
|
||||||
}
|
}
|
||||||
|
@ -204,6 +204,9 @@ func send(c *cli.Context) error {
|
||||||
cr.Codephrase,
|
cr.Codephrase,
|
||||||
cr.Codephrase,
|
cr.Codephrase,
|
||||||
)
|
)
|
||||||
|
if cr.Debug {
|
||||||
|
croc.SetDebugLevel("debug")
|
||||||
|
}
|
||||||
return cr.Send(fname, cr.Codephrase)
|
return cr.Send(fname, cr.Codephrase)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,6 +229,9 @@ func receive(c *cli.Context) error {
|
||||||
if cr.Codephrase == "" {
|
if cr.Codephrase == "" {
|
||||||
cr.Codephrase = utils.GetInput("Enter receive code: ")
|
cr.Codephrase = utils.GetInput("Enter receive code: ")
|
||||||
}
|
}
|
||||||
|
if cr.Debug {
|
||||||
|
croc.SetDebugLevel("debug")
|
||||||
|
}
|
||||||
err := cr.Receive(cr.Codephrase)
|
err := cr.Receive(cr.Codephrase)
|
||||||
if err == nil && openFolder {
|
if err == nil && openFolder {
|
||||||
cwd, _ := os.Getwd()
|
cwd, _ := os.Getwd()
|
||||||
|
|
|
@ -178,13 +178,13 @@ func (cr *Croc) receive(forceSend int, serverAddress string, tcpPorts []string,
|
||||||
// Q receives u
|
// Q receives u
|
||||||
log.Debugf("[%d] Q computes k, sends H(k), v back to P", step)
|
log.Debugf("[%d] Q computes k, sends H(k), v back to P", step)
|
||||||
if err := Q.Update(message); err != nil {
|
if err := Q.Update(message); err != nil {
|
||||||
return err
|
return fmt.Errorf("Recipient is using wrong code phrase.")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Q has the session key now, but we will still check if its valid
|
// Q has the session key now, but we will still check if its valid
|
||||||
sessionKey, err = Q.SessionKey()
|
sessionKey, err = Q.SessionKey()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return fmt.Errorf("Recipient is using wrong code phrase.")
|
||||||
}
|
}
|
||||||
log.Debugf("%x\n", sessionKey)
|
log.Debugf("%x\n", sessionKey)
|
||||||
|
|
||||||
|
@ -221,7 +221,8 @@ func (cr *Croc) receive(forceSend int, serverAddress string, tcpPorts []string,
|
||||||
log.Debugf("[%d] Q recieves H(k) from P", step)
|
log.Debugf("[%d] Q recieves H(k) from P", step)
|
||||||
// check if everything is still kosher with our computed session key
|
// check if everything is still kosher with our computed session key
|
||||||
if err := Q.Update(message); err != nil {
|
if err := Q.Update(message); err != nil {
|
||||||
return err
|
log.Debug(err)
|
||||||
|
return fmt.Errorf("Recipient is using wrong code phrase.")
|
||||||
}
|
}
|
||||||
c.WriteMessage(websocket.BinaryMessage, []byte("ready"))
|
c.WriteMessage(websocket.BinaryMessage, []byte("ready"))
|
||||||
case 3:
|
case 3:
|
||||||
|
@ -289,7 +290,7 @@ func (cr *Croc) receive(forceSend int, serverAddress string, tcpPorts []string,
|
||||||
)
|
)
|
||||||
if !noPrompt {
|
if !noPrompt {
|
||||||
if "y" != utils.GetInput("ok? (y/N): ") {
|
if "y" != utils.GetInput("ok? (y/N): ") {
|
||||||
fmt.Fprintf(os.Stderr, "cancelling request")
|
fmt.Fprintf(os.Stderr, "Cancelling request")
|
||||||
c.WriteMessage(websocket.BinaryMessage, []byte("no"))
|
c.WriteMessage(websocket.BinaryMessage, []byte("no"))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -302,7 +303,7 @@ func (cr *Croc) receive(forceSend int, serverAddress string, tcpPorts []string,
|
||||||
if cr.WindowRecipientAccept {
|
if cr.WindowRecipientAccept {
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
fmt.Fprintf(os.Stderr, "cancelling request")
|
fmt.Fprintf(os.Stderr, "Cancelling request")
|
||||||
c.WriteMessage(websocket.BinaryMessage, []byte("no"))
|
c.WriteMessage(websocket.BinaryMessage, []byte("no"))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -219,10 +219,12 @@ func (cr *Croc) send(forceSend int, serverAddress string, tcpPorts []string, isL
|
||||||
case 2:
|
case 2:
|
||||||
// P recieves H(k),v from Q
|
// P recieves H(k),v from Q
|
||||||
log.Debugf("[%d] P computes k, H(k), sends H(k) to Q", step)
|
log.Debugf("[%d] P computes k, H(k), sends H(k) to Q", step)
|
||||||
if err := P.Update(message); err != nil {
|
err := P.Update(message)
|
||||||
return err
|
|
||||||
}
|
|
||||||
c.WriteMessage(websocket.BinaryMessage, P.Bytes())
|
c.WriteMessage(websocket.BinaryMessage, P.Bytes())
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Recipient is using wrong code phrase.")
|
||||||
|
}
|
||||||
|
|
||||||
sessionKey, _ = P.SessionKey()
|
sessionKey, _ = P.SessionKey()
|
||||||
// check(err)
|
// check(err)
|
||||||
log.Debugf("%x\n", sessionKey)
|
log.Debugf("%x\n", sessionKey)
|
||||||
|
@ -235,7 +237,7 @@ func (cr *Croc) send(forceSend int, serverAddress string, tcpPorts []string, isL
|
||||||
case 3:
|
case 3:
|
||||||
log.Debugf("[%d] recipient declares readiness for file info", step)
|
log.Debugf("[%d] recipient declares readiness for file info", step)
|
||||||
if !bytes.HasPrefix(message, []byte("ready")) {
|
if !bytes.HasPrefix(message, []byte("ready")) {
|
||||||
return errors.New("recipient refused file")
|
return errors.New("Recipient refused file")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = <-fileReady // block until file is ready
|
err = <-fileReady // block until file is ready
|
||||||
|
@ -393,7 +395,7 @@ func (cr *Croc) send(forceSend int, serverAddress string, tcpPorts []string, isL
|
||||||
|
|
||||||
log.Debugf("[%d] recipient declares readiness for file data", step)
|
log.Debugf("[%d] recipient declares readiness for file data", step)
|
||||||
if !bytes.HasPrefix(message, []byte("ready")) {
|
if !bytes.HasPrefix(message, []byte("ready")) {
|
||||||
return errors.New("recipient refused file")
|
return errors.New("Recipient refused file")
|
||||||
}
|
}
|
||||||
cr.StateString = "Transfer in progress..."
|
cr.StateString = "Transfer in progress..."
|
||||||
fmt.Fprintf(os.Stderr, "\rSending (->%s)...\n", cr.OtherIP)
|
fmt.Fprintf(os.Stderr, "\rSending (->%s)...\n", cr.OtherIP)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue