From 7424279fd2a904fc944edde67494be0584f204f5 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 18 Apr 2017 00:25:15 +0200 Subject: ... --- ask.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 ask.go (limited to 'ask.go') 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 +} -- cgit v1.2.3