diff options
Diffstat (limited to 'internal/fusefrontend/xattr_unit_test.go')
-rw-r--r-- | internal/fusefrontend/xattr_unit_test.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/fusefrontend/xattr_unit_test.go b/internal/fusefrontend/xattr_unit_test.go new file mode 100644 index 0000000..ea5d3bb --- /dev/null +++ b/internal/fusefrontend/xattr_unit_test.go @@ -0,0 +1,41 @@ +package fusefrontend + +// This file is named "xattr_unit_test.go" because there is also a +// "xattr_integration_test.go" in the test/xattr package. + +import ( + "syscall" + "testing" + + "github.com/rfjakob/gocryptfs/internal/contentenc" + "github.com/rfjakob/gocryptfs/internal/cryptocore" + "github.com/rfjakob/gocryptfs/internal/nametransform" +) + +func newTestFS() *FS { + // Init crypto backend + key := make([]byte, cryptocore.KeyLen) + cCore := cryptocore.New(key, cryptocore.BackendGoGCM, contentenc.DefaultIVBits, true, false) + cEnc := contentenc.New(cCore, contentenc.DefaultBS, false) + nameTransform := nametransform.New(cCore.EMECipher, true, true) + args := Args{} + return NewFS(args, cEnc, nameTransform) +} + +func TestEncryptDecryptXattrName(t *testing.T) { + fs := newTestFS() + _, err := fs.encryptXattrName("xxxx") + if err != syscall.EPERM { + t.Fatalf("Names that don't start with 'user.' should fail") + } + attr1 := "user.foo123456789" + cAttr, err := fs.encryptXattrName(attr1) + if err != nil { + t.Fatal(err) + } + t.Logf("cAttr=%v", cAttr) + attr2, err := fs.decryptXattrName(cAttr) + if attr1 != attr2 { + t.Fatalf("Decrypt mismatch: %v != %v", attr1, attr2) + } +} |