aboutsummaryrefslogtreecommitdiff
path: root/ask.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-04-18 00:25:15 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-04-18 00:25:15 +0200
commit7424279fd2a904fc944edde67494be0584f204f5 (patch)
treeb547f6b3488cf278ee76a1deeb42e1b0095534db /ask.go
parente51b73902a75cca2c5e042cea9b4807e037c02a5 (diff)
...
Diffstat (limited to 'ask.go')
-rw-r--r--ask.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/ask.go b/ask.go
new file mode 100644
index 0000000..96123e0
--- /dev/null
+++ b/ask.go
@@ -0,0 +1,40 @@
+// +build ignore
+
+package main
+
+import (
+ "errors"
+ "log"
+ "os"
+
+ "golang.org/x/crypto/ssh/terminal"
+)
+
+func AskPassword(confirm bool) error {
+ fd := os.Stdin.Fd()
+ state, err := terminal.MakeRaw(int(fd))
+ if err != nil {
+ return err
+ }
+ defer terminal.Restore(int(fd), state)
+
+ term := terminal.NewTerminal(os.Stdin, "")
+ pass, err := term.ReadPassword("passphrase: ")
+ if err != nil {
+ return err
+ }
+ if len(pass) == 0 {
+ return errors.New("please provide a password")
+ }
+ if confirm {
+ pass2, err := term.ReadPassword("confirm passphrase: ")
+ if err != nil {
+ return err
+ }
+ if pass != pass2 {
+ return errors.New("passwords don't match")
+ }
+ }
+ log.Println(pass)
+ return nil
+}