aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cryptfs/config_test.go71
-rw-r--r--cryptfs/config_test/.gitignore1
-rw-r--r--cryptfs/config_test/PlaintextNames.conf14
-rw-r--r--cryptfs/config_test/StrangeFeature.conf14
-rw-r--r--cryptfs/config_test/v1.conf11
-rw-r--r--cryptfs/config_test/v2.conf11
6 files changed, 122 insertions, 0 deletions
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
+}