diff options
author | Jakob Unterwurzacher | 2016-06-05 11:33:54 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2016-06-05 11:40:13 +0200 |
commit | b97268c94824b8047c8d4f97a68549260e4f6835 (patch) | |
tree | 72aa2b1d79ba3b5f7a52439beb605c8e5aa84422 | |
parent | a602e798b1a65fdfe5e7f0260a34e17ea7ab0615 (diff) |
configfile: bake the "Creator" gocryptfs version into the file
This field is added for the convenience of users and
may help them to identify which gocryptfs version
they need to mount a filesystem.
The same information is essentially contained in FeatureFlags,
but this is more difficult to decode for humans.
It is completely ignored programmatically (also by older gocryptfs
versions).
-rw-r--r-- | internal/configfile/config_file.go | 11 | ||||
-rw-r--r-- | internal/configfile/config_test.go | 2 | ||||
-rw-r--r-- | main.go | 3 |
3 files changed, 11 insertions, 5 deletions
diff --git a/internal/configfile/config_file.go b/internal/configfile/config_file.go index e54e84e..d91ce3e 100644 --- a/internal/configfile/config_file.go +++ b/internal/configfile/config_file.go @@ -19,8 +19,10 @@ const ( ) type ConfFile struct { - // File the config is saved to. Not exported to JSON. - filename string + // gocryptfs version string + // This only documents the config file for humans who look at it. The actual + // technical info is contained in FeatureFlags. + Creator string // Encrypted AES key, unlocked using a password hashed with scrypt EncryptedKey []byte // Stores parameters for scrypt hashing (key derivation) @@ -32,14 +34,17 @@ type ConfFile struct { // mounting. This mechanism is analogous to the ext4 feature flags that are // stored in the superblock. FeatureFlags []string + // File the config is saved to. Not exported to JSON. + filename string } // CreateConfFile - create a new config with a random key encrypted with // "password" and write it to "filename". // Uses scrypt with cost parameter logN. -func CreateConfFile(filename string, password string, plaintextNames bool, logN int) error { +func CreateConfFile(filename string, password string, plaintextNames bool, logN int, creator string) error { var cf ConfFile cf.filename = filename + cf.Creator = creator cf.Version = contentenc.CurrentVersion // Generate new random master key diff --git a/internal/configfile/config_test.go b/internal/configfile/config_test.go index 5468b80..c83c4bd 100644 --- a/internal/configfile/config_test.go +++ b/internal/configfile/config_test.go @@ -60,7 +60,7 @@ func TestLoadV2StrangeFeature(t *testing.T) { } func TestCreateConfFile(t *testing.T) { - err := CreateConfFile("config_test/tmp.conf", "test", false, 10) + err := CreateConfFile("config_test/tmp.conf", "test", false, 10, "test") if err != nil { t.Fatal(err) } @@ -72,7 +72,8 @@ func initDir(args *argContainer) { toggledlog.Info.Printf("Using password provided via -extpass.") } password := readPasswordTwice(args.extpass) - err = configfile.CreateConfFile(args.config, password, args.plaintextnames, args.scryptn) + creator := toggledlog.ProgramName + " " + GitVersion + err = configfile.CreateConfFile(args.config, password, args.plaintextnames, args.scryptn, creator) if err != nil { fmt.Println(err) os.Exit(ERREXIT_INIT) |