diff --git a/internal/fusefrontend_reverse/reverse_diriv.go b/internal/fusefrontend_reverse/reverse_diriv.go deleted file mode 100644 index 88d0680..0000000 --- a/internal/fusefrontend_reverse/reverse_diriv.go +++ /dev/null @@ -1,25 +0,0 @@ -package fusefrontend_reverse - -import ( - "crypto/sha256" - - "github.com/hanwen/go-fuse/fuse" - "github.com/hanwen/go-fuse/fuse/nodefs" - - "github.com/rfjakob/gocryptfs/internal/nametransform" -) - -// derivePathIV derives an IV from an encrypted path by hashing it -func derivePathIV(path string) []byte { - hash := sha256.Sum256([]byte(path)) - return hash[:nametransform.DirIVLen] -} - -func (rfs *reverseFS) newDirIVFile(cRelPath string) (nodefs.File, fuse.Status) { - cDir := saneDir(cRelPath) - absDir, err := rfs.abs(rfs.decryptPath(cDir)) - if err != nil { - return nil, fuse.ToStatus(err) - } - return rfs.NewVirtualFile(derivePathIV(cDir), absDir) -} diff --git a/internal/fusefrontend_reverse/rpath.go b/internal/fusefrontend_reverse/rpath.go index 6d418e0..55fb481 100644 --- a/internal/fusefrontend_reverse/rpath.go +++ b/internal/fusefrontend_reverse/rpath.go @@ -1,6 +1,7 @@ package fusefrontend_reverse import ( + "crypto/sha256" "encoding/base64" "path/filepath" "strings" @@ -18,6 +19,12 @@ func saneDir(path string) string { return d } +// derivePathIV derives an IV from an encrypted path by hashing it +func derivePathIV(path string) []byte { + hash := sha256.Sum256([]byte(path)) + return hash[:nametransform.DirIVLen] +} + func (rfs *reverseFS) abs(relPath string, err error) (string, error) { if err != nil { return "", err diff --git a/internal/fusefrontend_reverse/virtualfile.go b/internal/fusefrontend_reverse/virtualfile.go index 5373b48..351cbdc 100644 --- a/internal/fusefrontend_reverse/virtualfile.go +++ b/internal/fusefrontend_reverse/virtualfile.go @@ -8,6 +8,15 @@ import ( "github.com/hanwen/go-fuse/fuse/nodefs" ) +func (rfs *reverseFS) newDirIVFile(cRelPath string) (nodefs.File, fuse.Status) { + cDir := saneDir(cRelPath) + absDir, err := rfs.abs(rfs.decryptPath(cDir)) + if err != nil { + return nil, fuse.ToStatus(err) + } + return rfs.NewVirtualFile(derivePathIV(cDir), absDir) +} + type virtualFile struct { // Embed nodefs.defaultFile for a ENOSYS implementation of all methods nodefs.File