diff options
Diffstat (limited to 'internal')
-rw-r--r-- | internal/nametransform/diriv.go | 6 | ||||
-rw-r--r-- | internal/nametransform/dirivcache/dirivcache.go (renamed from internal/nametransform/diriv_cache.go) | 10 | ||||
-rw-r--r-- | internal/nametransform/names.go | 3 |
3 files changed, 10 insertions, 9 deletions
diff --git a/internal/nametransform/diriv.go b/internal/nametransform/diriv.go index 5fca1ef..6746f04 100644 --- a/internal/nametransform/diriv.go +++ b/internal/nametransform/diriv.go @@ -125,7 +125,7 @@ func (be *NameTransform) EncryptPathDirIV(plainPath string, rootDir string) (cip // Check if the DirIV is cached. This catches the case of the user iterating // over files in a directory pretty well. parentDir := filepath.Dir(plainPath) - iv, cParentDir := be.DirIVCache.lookup(parentDir) + iv, cParentDir := be.DirIVCache.Lookup(parentDir) if iv != nil { cBaseName := be.encryptAndHashName(baseName, iv) return filepath.Join(cParentDir, cBaseName), nil @@ -138,7 +138,7 @@ func (be *NameTransform) EncryptPathDirIV(plainPath string, rootDir string) (cip // cached. Then we can skip a few items in the directory walk. // This catches the case of walking directories recursively. parentDir2 := filepath.Dir(parentDir) - iv, cParentDir = be.DirIVCache.lookup(parentDir2) + iv, cParentDir = be.DirIVCache.Lookup(parentDir2) if iv != nil { parentDirBase := filepath.Base(parentDir) cBaseName := be.encryptAndHashName(parentDirBase, iv) @@ -159,6 +159,6 @@ func (be *NameTransform) EncryptPathDirIV(plainPath string, rootDir string) (cip } // Cache the final DirIV cParentDir = filepath.Dir(cipherPath) - be.DirIVCache.store(parentDir, iv, cParentDir) + be.DirIVCache.Store(parentDir, iv, cParentDir) return cipherPath, nil } diff --git a/internal/nametransform/diriv_cache.go b/internal/nametransform/dirivcache/dirivcache.go index 82c5bd3..890ebac 100644 --- a/internal/nametransform/diriv_cache.go +++ b/internal/nametransform/dirivcache/dirivcache.go @@ -1,4 +1,4 @@ -package nametransform +package dirivcache import ( "sync" @@ -7,7 +7,7 @@ import ( // Single-entry DirIV cache. Stores the directory IV and the encrypted // path. -type dirIVCache struct { +type DirIVCache struct { // Directory the DirIV belongs to dir string // Time the entry expires. @@ -28,7 +28,7 @@ type dirIVCache struct { } // lookup - fetch entry for "dir" from the cache -func (c *dirIVCache) lookup(dir string) ([]byte, string) { +func (c *DirIVCache) Lookup(dir string) ([]byte, string) { c.RLock() defer c.RUnlock() if c.cleared || c.dir != dir { @@ -42,7 +42,7 @@ func (c *dirIVCache) lookup(dir string) ([]byte, string) { } // store - write entry for "dir" into the cache -func (c *dirIVCache) store(dir string, iv []byte, cDir string) { +func (c *DirIVCache) Store(dir string, iv []byte, cDir string) { c.Lock() defer c.Unlock() c.cleared = false @@ -56,7 +56,7 @@ func (c *dirIVCache) store(dir string, iv []byte, cDir string) { // Clear ... clear the cache. // Exported because it is called from fusefrontend when directories are // renamed or deleted. -func (c *dirIVCache) Clear() { +func (c *DirIVCache) Clear() { c.Lock() defer c.Unlock() c.cleared = true diff --git a/internal/nametransform/names.go b/internal/nametransform/names.go index 3447583..94fa453 100644 --- a/internal/nametransform/names.go +++ b/internal/nametransform/names.go @@ -9,6 +9,7 @@ import ( "github.com/rfjakob/eme" + "github.com/rfjakob/gocryptfs/internal/nametransform/dirivcache" "github.com/rfjakob/gocryptfs/internal/tlog" ) @@ -16,7 +17,7 @@ import ( type NameTransform struct { emeCipher *eme.EMECipher longNames bool - DirIVCache dirIVCache + DirIVCache dirivcache.DirIVCache // B64 = either base64.URLEncoding or base64.RawURLEncoding, depeding // on the Raw64 feature flag B64 *base64.Encoding |