// +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 }