diff options
Diffstat (limited to 'internal/configfile')
-rw-r--r-- | internal/configfile/config_file.go | 5 | ||||
-rw-r--r-- | internal/configfile/config_test.go | 19 | ||||
-rw-r--r-- | internal/configfile/feature_flags.go | 3 |
3 files changed, 23 insertions, 4 deletions
diff --git a/internal/configfile/config_file.go b/internal/configfile/config_file.go index 603f276..0bee16f 100644 --- a/internal/configfile/config_file.go +++ b/internal/configfile/config_file.go @@ -49,7 +49,7 @@ type ConfFile struct { // 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, creator string, aessiv bool) error { +func CreateConfFile(filename string, password string, plaintextNames bool, logN int, creator string, aessiv bool, raw64 bool) error { var cf ConfFile cf.filename = filename cf.Creator = creator @@ -70,6 +70,9 @@ func CreateConfFile(filename string, password string, plaintextNames bool, logN cf.FeatureFlags = append(cf.FeatureFlags, knownFlags[FlagDirIV]) cf.FeatureFlags = append(cf.FeatureFlags, knownFlags[FlagEMENames]) cf.FeatureFlags = append(cf.FeatureFlags, knownFlags[FlagLongNames]) + if raw64 { + cf.FeatureFlags = append(cf.FeatureFlags, knownFlags[FlagRaw64]) + } } if aessiv { cf.FeatureFlags = append(cf.FeatureFlags, knownFlags[FlagAESSIV]) diff --git a/internal/configfile/config_test.go b/internal/configfile/config_test.go index 81984fe..f993803 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, "test", false) + err := CreateConfFile("config_test/tmp.conf", "test", false, 10, "test", false, false) if err != nil { t.Fatal(err) } @@ -68,11 +68,10 @@ func TestCreateConfFile(t *testing.T) { if err != nil { t.Fatal(err) } - } func TestCreateConfFileAESSIV(t *testing.T) { - err := CreateConfFile("config_test/tmp.conf", "test", false, 10, "test", true) + err := CreateConfFile("config_test/tmp.conf", "test", false, 10, "test", true, false) if err != nil { t.Fatal(err) } @@ -85,6 +84,20 @@ func TestCreateConfFileAESSIV(t *testing.T) { } } +func TestCreateConfFileRaw64(t *testing.T) { + err := CreateConfFile("config_test/tmp.conf", "test", false, 10, "test", false, true) + if err != nil { + t.Fatal(err) + } + _, c, err := LoadConfFile("config_test/tmp.conf", "test") + if err != nil { + t.Fatal(err) + } + if !c.IsFeatureFlagSet(FlagRaw64) { + t.Error("FlagRaw64 flag should be set but is not") + } +} + func TestIsFeatureFlagKnown(t *testing.T) { // Test a few hardcoded values testKnownFlags := []string{"DirIV", "PlaintextNames", "EMENames", "GCMIV128", "LongNames", "AESSIV"} diff --git a/internal/configfile/feature_flags.go b/internal/configfile/feature_flags.go index d3601b1..8d4aa6e 100644 --- a/internal/configfile/feature_flags.go +++ b/internal/configfile/feature_flags.go @@ -17,6 +17,8 @@ const ( FlagLongNames // FlagAESSIV selects an AES-SIV based crypto backend. FlagAESSIV + // FlagRaw64 enables raw (unpadded) base64 encoding for file names + FlagRaw64 ) // knownFlags stores the known feature flags and their string representation @@ -27,6 +29,7 @@ var knownFlags = map[flagIota]string{ FlagGCMIV128: "GCMIV128", FlagLongNames: "LongNames", FlagAESSIV: "AESSIV", + FlagRaw64: "Raw64", } // Filesystems that do not have these feature flags set are deprecated. |