diff options
Diffstat (limited to 'internal')
-rw-r--r-- | internal/fusefrontend_reverse/reverse_longnames.go | 10 | ||||
-rw-r--r-- | internal/fusefrontend_reverse/virtualfile.go | 4 |
2 files changed, 10 insertions, 4 deletions
diff --git a/internal/fusefrontend_reverse/reverse_longnames.go b/internal/fusefrontend_reverse/reverse_longnames.go index f1c45ca..0830298 100644 --- a/internal/fusefrontend_reverse/reverse_longnames.go +++ b/internal/fusefrontend_reverse/reverse_longnames.go @@ -84,18 +84,20 @@ func (rfs *ReverseFS) findLongnameParent(dir string, dirIV []byte, longname stri func (rfs *ReverseFS) newNameFile(relPath string) (nodefs.File, fuse.Status) { dotName := filepath.Base(relPath) // gocryptfs.longname.XYZ.name longname := dotName[:len(dotName)-len(nametransform.LongNameSuffix)] // gocryptfs.longname.XYZ - + // cipher directory cDir := saneDir(relPath) + // plain directory pDir, err := rfs.decryptPath(cDir) if err != nil { return nil, fuse.ToStatus(err) } dirIV := derivePathIV(cDir, ivPurposeDirIV) - e, err := rfs.findLongnameParent(pDir, dirIV, longname) + // plain name + pName, err := rfs.findLongnameParent(pDir, dirIV, longname) if err != nil { return nil, fuse.ToStatus(err) } - content := []byte(rfs.nameTransform.EncryptName(e, dirIV)) - parentFile := filepath.Join(rfs.args.Cipherdir, pDir, e) + content := []byte(rfs.nameTransform.EncryptName(pName, dirIV)) + parentFile := filepath.Join(rfs.args.Cipherdir, pDir, pName) return rfs.newVirtualFile(content, parentFile) } diff --git a/internal/fusefrontend_reverse/virtualfile.go b/internal/fusefrontend_reverse/virtualfile.go index 04de634..d5c4491 100644 --- a/internal/fusefrontend_reverse/virtualfile.go +++ b/internal/fusefrontend_reverse/virtualfile.go @@ -28,6 +28,10 @@ type virtualFile struct { ino uint64 } +// newVirtualFile creates a new in-memory file that does not have a representation +// on disk. "content" is the file content. Timestamps and file owner are copied +// from "parentFile" (absolute plaintext path). For a "gocryptfs.diriv" file, you +// would use the parent directory as "parentFile". func (rfs *ReverseFS) newVirtualFile(content []byte, parentFile string) (nodefs.File, fuse.Status) { return &virtualFile{ File: nodefs.NewDefaultFile(), |