diff options
-rw-r--r-- | main.go | 43 | ||||
-rw-r--r-- | main_test.go | 2 |
2 files changed, 26 insertions, 19 deletions
@@ -66,8 +66,10 @@ func main() { // Parse command line arguments var debug bool var init bool + var zerokey bool flag.BoolVar(&debug, "debug", false, "Enable debug output") flag.BoolVar(&init, "init", false, "Initialize encrypted directory") + flag.BoolVar(&zerokey, "zerokey", false, "Use all-zero dummy master key") flag.Parse() if debug { cryptfs.Debug.Enable() @@ -81,7 +83,7 @@ func main() { initDir(flag.Arg(0)) } if flag.NArg() < 2 { - fmt.Printf("usage: %s CIPHERDIR MOUNTPOINT\n", PROGRAM_NAME) + fmt.Printf("usage: %s [OPTIONS] CIPHERDIR MOUNTPOINT\n", PROGRAM_NAME) os.Exit(ERREXIT_USAGE) } cipherdir, _ := filepath.Abs(flag.Arg(0)) @@ -94,24 +96,29 @@ func main() { os.Exit(ERREXIT_CIPHERDIR) } - cfname := filepath.Join(cipherdir, cryptfs.ConfDefaultName) - _, err = os.Stat(cfname) - if err != nil { - fmt.Printf("Error: %s not found in CIPHERDIR\n", cryptfs.ConfDefaultName) - fmt.Printf("Please run \"%s --init %s\" first\n", PROGRAM_NAME, flag.Arg(0)) - os.Exit(ERREXIT_LOADCONF) - } - - fmt.Printf("Password: ") - password := readPassword() - fmt.Printf("\nDecrypting master key... ") - key, err := cryptfs.LoadConfFile(cfname, password) - if err != nil { - fmt.Println(err) - os.Exit(ERREXIT_LOADCONF) + key := make([]byte, cryptfs.KEY_LEN) + if zerokey { + fmt.Printf("Zerokey mode active: using all-zero dummy master key.\n") + fmt.Printf("ZEROKEY MODE PROVIDES NO SECURITY AT ALL.\n") + } else { + cfname := filepath.Join(cipherdir, cryptfs.ConfDefaultName) + _, err = os.Stat(cfname) + if err != nil { + fmt.Printf("Error: %s not found in CIPHERDIR\n", cryptfs.ConfDefaultName) + fmt.Printf("Please run \"%s --init %s\" first\n", PROGRAM_NAME, flag.Arg(0)) + os.Exit(ERREXIT_LOADCONF) + } + fmt.Printf("Password: ") + password := readPassword() + fmt.Printf("\nDecrypting master key... ") + key, err = cryptfs.LoadConfFile(cfname, password) + if err != nil { + fmt.Println(err) + os.Exit(ERREXIT_LOADCONF) + } + fmt.Printf("Success\n") + printMasterKey(key) } - fmt.Printf("Success\n") - printMasterKey(key) if USE_CLUEFS { cluefsFrontend(key, cipherdir, mountpoint) diff --git a/main_test.go b/main_test.go index 9e4ca73..6157e5a 100644 --- a/main_test.go +++ b/main_test.go @@ -34,7 +34,7 @@ func TestMain(m *testing.M) { panic("Could not create cipherDir") } - c := exec.Command("./gocryptfs", cipherDir, plainDir) + c := exec.Command("./gocryptfs", "--zerokey", cipherDir, plainDir) c.Stdout = os.Stdout c.Stderr = os.Stderr go c.Run() |