From 65b0b02a4f8be3aad4ab73e730e5eee4cd590153 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 26 Apr 2017 11:53:23 +0200 Subject: ... --- ask.go | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) (limited to 'ask.go') diff --git a/ask.go b/ask.go index ce0bf91..7051d34 100644 --- a/ask.go +++ b/ask.go @@ -12,21 +12,34 @@ var ( ErrNoMatch = errors.New("passwords don't match") ) -func AskConfirmed() (string, error) { return askPassword(true) } -func AskPassword() (string, error) { return askPassword(false) } +func AskConfirmed() (string, error) { + pass, err := askPassword(os.Stdin, "passphrase: ", true) + if err != nil { + return "", err + } + pass2, err := askPassword(os.Stdin, "confirm passphrase: ", false) + if err != nil { + return "", err + } + if pass != pass2 { + return "", ErrNoMatch + } + return pass, nil +} -func askPassword(confirm bool) (string, error) { - f := os.Stdin +func AskPassword() (string, error) { + return askPassword(os.Stdin, "passphrase: ") +} - fd := f.Fd() - oldState, err := terminal.MakeRaw(int(fd)) +func askPassword(f *os.File, q string) (string, error) { + oldState, err := terminal.MakeRaw(int(f.Fd())) if err != nil { return "", err } - defer terminal.Restore(int(fd), oldState) + defer terminal.Restore(int(f.Fd()), oldState) term := terminal.NewTerminal(f, "") - pass, err := term.ReadPassword("passphrase: ") + pass, err := term.ReadPassword(q) if err != nil { return "", err } @@ -34,15 +47,5 @@ func askPassword(confirm bool) (string, error) { return "", ErrNoPassword } - if confirm { - pass2, err := term.ReadPassword("confirm passphrase: ") - if err != nil { - return "", err - } - if pass != pass2 { - return "", ErrNoMatch - } - } - return pass, nil } -- cgit v1.2.3