42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
|
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)
|
||
|
}
|
||
|
}
|