diff options
author | Jakob Unterwurzacher | 2020-05-17 19:31:04 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2020-05-17 19:31:04 +0200 |
commit | 416080203b4dd79de857eaf7c7cc97d050e00a9f (patch) | |
tree | ed729c4cd365acc803a3d1e339eae8f1e8112f4c /internal/readpassword/passfile.go | |
parent | ded4bbe6456dcfaa770f2c06df46d578fcbaa97e (diff) |
main: accept multiple -passfile options
Each file will be read and then concatenated
for the effictive password. This can be used as a
kind of multi-factor authenticiton.
Fixes https://github.com/rfjakob/gocryptfs/issues/288
Diffstat (limited to 'internal/readpassword/passfile.go')
-rw-r--r-- | internal/readpassword/passfile.go | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/internal/readpassword/passfile.go b/internal/readpassword/passfile.go index 73af279..df6cd4d 100644 --- a/internal/readpassword/passfile.go +++ b/internal/readpassword/passfile.go @@ -8,6 +8,16 @@ import ( "github.com/rfjakob/gocryptfs/internal/tlog" ) +// readPassFileConcatenate reads the first line from each file name and +// concatenates the results. The result does not contain any newlines. +func readPassFileConcatenate(passfileSlice []string) (result []byte) { + for _, e := range passfileSlice { + result = append(result, readPassFile(e)...) + } + return result +} + +// readPassFile reads the first line from the passed file name. func readPassFile(passfile string) []byte { tlog.Info.Printf("passfile: reading from file %q", passfile) f, err := os.Open(passfile) @@ -36,7 +46,7 @@ func readPassFile(passfile string) []byte { os.Exit(exitcodes.ReadPassword) } if len(lines) > 1 && len(lines[1]) > 0 { - tlog.Warn.Printf("passfile: ignoring trailing garbage (%d bytes) after first line", + tlog.Warn.Printf("warning: passfile: ignoring trailing garbage (%d bytes) after first line", len(lines[1])) } return lines[0] |