From b97268c94824b8047c8d4f97a68549260e4f6835 Mon Sep 17 00:00:00 2001
From: Jakob Unterwurzacher
Date: Sun, 5 Jun 2016 11:33:54 +0200
Subject: 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).
---
 internal/configfile/config_file.go | 11 ++++++++---
 internal/configfile/config_test.go |  2 +-
 2 files changed, 9 insertions(+), 4 deletions(-)

(limited to 'internal/configfile')

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)
 	}
-- 
cgit v1.2.3