diff options
author | Jakob Unterwurzacher | 2016-09-22 23:28:11 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2016-09-25 16:43:17 +0200 |
commit | a6a7b424f8e8a0f8ddd1c94b7463250ef1337811 (patch) | |
tree | 2281d7062d893d70209ecb7a82589e49decac164 /internal/fusefrontend_reverse/diriv.go | |
parent | 35bcc2dca2dc928e3b7c31e34d785b7a42c06722 (diff) |
reverse: resolve long names in Open and GetAttr
The last patch added functionality for generating gocryptfs.longname.*
files, this patch adds support for mapping them back to the full
filenames.
Note that resolving a long name needs a full readdir. A cache
will be implemented later on to improve performance.
Diffstat (limited to 'internal/fusefrontend_reverse/diriv.go')
-rw-r--r-- | internal/fusefrontend_reverse/diriv.go | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/internal/fusefrontend_reverse/diriv.go b/internal/fusefrontend_reverse/diriv.go deleted file mode 100644 index c4a93e4..0000000 --- a/internal/fusefrontend_reverse/diriv.go +++ /dev/null @@ -1,42 +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" -) - -// deriveDirIV derives the DirIV from the directory path by simply hashing it -func deriveDirIV(dirPath string) []byte { - hash := sha256.Sum256([]byte(dirPath)) - return hash[:nametransform.DirIVLen] -} - -type dirIVFile struct { - // Embed nodefs.defaultFile for a ENOSYS implementation of all methods - nodefs.File - // file content - content []byte -} - -func NewDirIVFile(dirPath string) (nodefs.File, fuse.Status) { - return &dirIVFile{ - File: nodefs.NewDefaultFile(), - content: deriveDirIV(dirPath), - }, fuse.OK -} - -// Read - FUSE call -func (f *dirIVFile) Read(buf []byte, off int64) (resultData fuse.ReadResult, status fuse.Status) { - if off >= int64(len(f.content)) { - return nil, fuse.OK - } - end := int(off) + len(buf) - if end > len(f.content) { - end = len(f.content) - } - return fuse.ReadResultData(f.content[off:end]), fuse.OK -} |