aboutsummaryrefslogtreecommitdiff
path: root/internal/fusefrontend_reverse/diriv.go
diff options
context:
space:
mode:
authorJakob Unterwurzacher2016-09-22 23:28:11 +0200
committerJakob Unterwurzacher2016-09-25 16:43:17 +0200
commita6a7b424f8e8a0f8ddd1c94b7463250ef1337811 (patch)
tree2281d7062d893d70209ecb7a82589e49decac164 /internal/fusefrontend_reverse/diriv.go
parent35bcc2dca2dc928e3b7c31e34d785b7a42c06722 (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.go42
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
-}