932efbd459
openBackingDir() used encryptPath(), which is not symlink-safe itself. Drop encryptPath() and implement our own directory walk. Adds three seconds to untar and two seconds to rm: $ ./benchmark.bash Testing gocryptfs at /tmp/benchmark.bash.MzG: gocryptfs v1.6-36-g8fb3c2f-dirty; go-fuse v20170619-66-g6df8ddc; 2018-10-14 go1.11 WRITE: 262144000 bytes (262 MB, 250 MiB) copied, 1.25078 s, 210 MB/s READ: 262144000 bytes (262 MB, 250 MiB) copied, 1.0318 s, 254 MB/s UNTAR: 20.941 MD5: 11.568 LS: 1.638 RM: 5.337
33 lines
995 B
Go
33 lines
995 B
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 (
|
|
"testing"
|
|
|
|
"github.com/rfjakob/gocryptfs/internal/contentenc"
|
|
"github.com/rfjakob/gocryptfs/internal/cryptocore"
|
|
"github.com/rfjakob/gocryptfs/internal/nametransform"
|
|
)
|
|
|
|
func newTestFS(args Args) *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)
|
|
return NewFS(args, cEnc, nameTransform)
|
|
}
|
|
|
|
func TestEncryptDecryptXattrName(t *testing.T) {
|
|
fs := newTestFS(Args{})
|
|
attr1 := "user.foo123456789"
|
|
cAttr := fs.encryptXattrName(attr1)
|
|
t.Logf("cAttr=%v", cAttr)
|
|
attr2, err := fs.decryptXattrName(cAttr)
|
|
if attr1 != attr2 || err != nil {
|
|
t.Fatalf("Decrypt mismatch: %v != %v", attr1, attr2)
|
|
}
|
|
}
|