aboutsummaryrefslogtreecommitdiff
path: root/ask.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-04-26 11:53:23 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-04-26 11:53:23 +0200
commit65b0b02a4f8be3aad4ab73e730e5eee4cd590153 (patch)
tree5062fb8b6f50316c1968579052111a872778be3a /ask.go
parent8f66dc007a12ebbdd31ecbdbf3f6f952c0c88586 (diff)
...
Diffstat (limited to 'ask.go')
-rw-r--r--ask.go39
1 files changed, 21 insertions, 18 deletions
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
}