From 1030522fe6b434c95045986ebe3bec4bf2bad492 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sat, 23 Jan 2016 20:18:39 +0100 Subject: Suppress password prompt when using -extpass Also, add color to the error messages. --- main.go | 4 +++- password.go | 27 +++++++++++++++------------ 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/main.go b/main.go index 0992612..02f8eaa 100644 --- a/main.go +++ b/main.go @@ -96,7 +96,9 @@ func loadConfig(args *argContainer) (masterkey []byte, confFile *cryptfs.ConfFil fmt.Println(err) os.Exit(ERREXIT_LOADCONF) } - fmt.Printf("Password: ") + if args.extpass == "" { + fmt.Printf("Password: ") + } pw := readPassword(args.extpass) cryptfs.Info.Printf("Decrypting master key... ") cryptfs.Warn.Enabled = false // Silence DecryptBlock() error messages on incorrect password diff --git a/password.go b/password.go index 45b0296..935ff87 100644 --- a/password.go +++ b/password.go @@ -10,15 +10,19 @@ import ( ) func readPasswordTwice(extpass string) string { - fmt.Printf("Password: ") - p1 := readPassword(extpass) - fmt.Printf("Repeat: ") - p2 := readPassword(extpass) - if p1 != p2 { - fmt.Printf("Passwords do not match\n") - os.Exit(ERREXIT_PASSWORD) + if extpass == "" { + fmt.Printf("Password: ") + p1 := readPassword("") + fmt.Printf("Repeat: ") + p2 := readPassword("") + if p1 != p2 { + fmt.Println(colorRed + "Passwords do not match" + colorReset) + os.Exit(ERREXIT_PASSWORD) + } + return p1 + } else { + return readPassword(extpass) } - return p1 } // readPassword - get password from terminal @@ -33,10 +37,9 @@ func readPassword(extpass string) string { cmd.Stderr = os.Stderr output, err = cmd.Output() if err != nil { - fmt.Printf("extpass program returned error: %v\n", err) + fmt.Printf(colorRed+"extpass program returned error: %v\n"+colorReset, err) os.Exit(ERREXIT_PASSWORD) } - fmt.Printf("(extpass)\n") // Trim trailing newline like terminal.ReadPassword() does if output[len(output)-1] == '\n' { output = output[:len(output)-1] @@ -45,14 +48,14 @@ func readPassword(extpass string) string { fd := int(os.Stdin.Fd()) output, err = terminal.ReadPassword(fd) if err != nil { - fmt.Printf("Error: Could not read password from terminal: %v\n", err) + fmt.Printf(colorRed+"Could not read password from terminal: %v\n"+colorReset, err) os.Exit(ERREXIT_PASSWORD) } fmt.Printf("\n") } password = string(output) if password == "" { - fmt.Printf("Error: password is empty\n") + fmt.Printf(colorRed + "Password is empty\n" + colorReset) os.Exit(ERREXIT_PASSWORD) } return password -- cgit v1.2.3