From 988e0a047c01b2f59c4e059876bfb2122981d605 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Tue, 3 Nov 2015 21:06:52 +0100 Subject: tests: add config file and feature flags tests --- cryptfs/config_test.go | 71 +++++++++++++++++++++++++++++++++ cryptfs/config_test/.gitignore | 1 + cryptfs/config_test/PlaintextNames.conf | 14 +++++++ cryptfs/config_test/StrangeFeature.conf | 14 +++++++ cryptfs/config_test/v1.conf | 11 +++++ cryptfs/config_test/v2.conf | 11 +++++ 6 files changed, 122 insertions(+) create mode 100644 cryptfs/config_test.go create mode 100644 cryptfs/config_test/.gitignore create mode 100644 cryptfs/config_test/PlaintextNames.conf create mode 100644 cryptfs/config_test/StrangeFeature.conf create mode 100644 cryptfs/config_test/v1.conf create mode 100644 cryptfs/config_test/v2.conf (limited to 'cryptfs') diff --git a/cryptfs/config_test.go b/cryptfs/config_test.go new file mode 100644 index 0000000..2e46a25 --- /dev/null +++ b/cryptfs/config_test.go @@ -0,0 +1,71 @@ +package cryptfs + +import ( + "fmt" + "testing" + "time" +) + +func TestLoadV1(t *testing.T) { + _, _, err := LoadConfFile("config_test/v1.conf", "test") + if err == nil { + t.Errorf("Outdated v1 config file must fail to load but it didn't") + } else if testing.Verbose() { + fmt.Print(err) + } +} + +// Load a known-good config file and verify that it takes at least 100ms +// (brute-force protection) +func TestLoadV2(t *testing.T) { + t1 := time.Now() + + _, _, err := LoadConfFile("config_test/v2.conf", "foo") + if err != nil { + t.Errorf("Could not load v2 config file: %v", err) + } + + elapsed := time.Since(t1) + if elapsed < 100 *time.Millisecond { + t.Errorf("scrypt calculation runs too fast: %d ms", elapsed / time.Millisecond) + } +} + +func TestLoadV2PwdError(t *testing.T) { + if ! testing.Verbose() { + Warn.Disable() + } + _, _, err := LoadConfFile("config_test/v2.conf", "wrongpassword") + Warn.Enable() + if err == nil { + t.Errorf("Loading with wrong password must fail but it didn't") + } +} + +func TestLoadV2Feature(t *testing.T) { + _, _, err := LoadConfFile("config_test/PlaintextNames.conf", "test") + if err != nil { + t.Errorf("Could not load v2 PlaintextNames config file: %v", err) + } +} + +func TestLoadV2StrangeFeature(t *testing.T) { + _, _, err := LoadConfFile("config_test/StrangeFeature.conf", "test") + if err == nil { + t.Errorf("Loading unknown feature must fail but it didn't") + } else if testing.Verbose() { + fmt.Print(err) + } +} + +func TestCreateConfFile(t *testing.T) { + err := CreateConfFile("config_test/tmp.conf", "test", false) + if err != nil { + t.Fatal(err) + } + _, _, err = LoadConfFile("config_test/tmp.conf", "test") + if err != nil { + t.Fatal(err) + } + +} diff --git a/cryptfs/config_test/.gitignore b/cryptfs/config_test/.gitignore new file mode 100644 index 0000000..0720169 --- /dev/null +++ b/cryptfs/config_test/.gitignore @@ -0,0 +1 @@ +tmp.conf diff --git a/cryptfs/config_test/PlaintextNames.conf b/cryptfs/config_test/PlaintextNames.conf new file mode 100644 index 0000000..c1ff8cc --- /dev/null +++ b/cryptfs/config_test/PlaintextNames.conf @@ -0,0 +1,14 @@ +{ + "EncryptedKey": "rG4u0argMq02V5G9Fa+gAaaHtNrj3wn7OZjP44hWOzO4yBFtn+Qn3PW4V6LMuKmGLEhyktCyWOI3K8lj", + "ScryptObject": { + "Salt": "bRjq1V63u5ML3FoTWx/GBXUhUVpTunOX3DPxS+yPjg0=", + "N": 65536, + "R": 8, + "P": 1, + "KeyLen": 32 + }, + "Version": 2, + "FeatureFlags": [ + "PlaintextNames" + ] +} diff --git a/cryptfs/config_test/StrangeFeature.conf b/cryptfs/config_test/StrangeFeature.conf new file mode 100644 index 0000000..6a97781 --- /dev/null +++ b/cryptfs/config_test/StrangeFeature.conf @@ -0,0 +1,14 @@ +{ + "EncryptedKey": "rG4u0argMq02V5G9Fa+gAaaHtNrj3wn7OZjP44hWOzO4yBFtn+Qn3PW4V6LMuKmGLEhyktCyWOI3K8lj", + "ScryptObject": { + "Salt": "bRjq1V63u5ML3FoTWx/GBXUhUVpTunOX3DPxS+yPjg0=", + "N": 65536, + "R": 8, + "P": 1, + "KeyLen": 32 + }, + "Version": 2, + "FeatureFlags": [ + "StrangeFeatureFlag" + ] +} diff --git a/cryptfs/config_test/v1.conf b/cryptfs/config_test/v1.conf new file mode 100644 index 0000000..588a25a --- /dev/null +++ b/cryptfs/config_test/v1.conf @@ -0,0 +1,11 @@ +{ + "EncryptedKey": "t6YAvFQJvbv46c93bHQ5IZnvNz80DA9cohGoSPL/2M257LuIigow6jbr8b9HhnbDqHTCcz7aKkMDzneF", + "ScryptObject": { + "Salt": "yT4yQmmRmVNx2P0tJrUswk5SQzZaL6Z8kUteAoNJkXM=", + "N": 65536, + "R": 8, + "P": 1, + "KeyLen": 32 + }, + "Version": 1 +} diff --git a/cryptfs/config_test/v2.conf b/cryptfs/config_test/v2.conf new file mode 100644 index 0000000..8ef3dcf --- /dev/null +++ b/cryptfs/config_test/v2.conf @@ -0,0 +1,11 @@ +{ + "EncryptedKey": "RvxJnZWKTBSU21+7xbl08xlZyNyUCkpIqlK8Z51TUrRiBhqqNPxbdk1WXMvmOf/YzZ85Xbyz+DGM+SDf", + "ScryptObject": { + "Salt": "2OrFRfdW/5SanbMXM3TMINmfMO6oYU9awG+NZ77V8E8=", + "N": 65536, + "R": 8, + "P": 1, + "KeyLen": 32 + }, + "Version": 2 +} -- cgit v1.2.3