aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Unterwurzacher2016-06-05 11:33:54 +0200
committerJakob Unterwurzacher2016-06-05 11:40:13 +0200
commitb97268c94824b8047c8d4f97a68549260e4f6835 (patch)
tree72aa2b1d79ba3b5f7a52439beb605c8e5aa84422
parenta602e798b1a65fdfe5e7f0260a34e17ea7ab0615 (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.go11
-rw-r--r--internal/configfile/config_test.go2
-rw-r--r--main.go3
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)
}
diff --git a/main.go b/main.go
index e365d48..ee3f591 100644
--- a/main.go
+++ b/main.go
@@ -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)