Move dirIVCache to its own file
This commit is contained in:
parent
9b6894bdbf
commit
6b27b6a1e7
43
internal/nametransform/diriv_cache.go
Normal file
43
internal/nametransform/diriv_cache.go
Normal file
@ -0,0 +1,43 @@
|
||||
package nametransform
|
||||
|
||||
import "sync"
|
||||
|
||||
// A simple one-entry DirIV cache
|
||||
type dirIVCache struct {
|
||||
// Invalidated?
|
||||
cleared bool
|
||||
// The DirIV
|
||||
iv []byte
|
||||
// Directory the DirIV belongs to
|
||||
dir string
|
||||
// Ecrypted version of "dir"
|
||||
translatedDir string
|
||||
// Synchronisation
|
||||
lock sync.RWMutex
|
||||
}
|
||||
|
||||
// lookup - fetch entry for "dir" from the cache
|
||||
func (c *dirIVCache) lookup(dir string) (bool, []byte, string) {
|
||||
c.lock.RLock()
|
||||
defer c.lock.RUnlock()
|
||||
if !c.cleared && c.dir == dir {
|
||||
return true, c.iv, c.translatedDir
|
||||
}
|
||||
return false, nil, ""
|
||||
}
|
||||
|
||||
// store - write entry for "dir" into the caches
|
||||
func (c *dirIVCache) store(dir string, iv []byte, translatedDir string) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
c.cleared = false
|
||||
c.iv = iv
|
||||
c.dir = dir
|
||||
c.translatedDir = translatedDir
|
||||
}
|
||||
|
||||
func (c *dirIVCache) Clear() {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
c.cleared = true
|
||||
}
|
@ -6,7 +6,6 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/rfjakob/gocryptfs/internal/cryptocore"
|
||||
"github.com/rfjakob/gocryptfs/internal/toggledlog"
|
||||
@ -20,46 +19,6 @@ const (
|
||||
DirIVFilename = "gocryptfs.diriv"
|
||||
)
|
||||
|
||||
// A simple one-entry DirIV cache
|
||||
type dirIVCache struct {
|
||||
// Invalidated?
|
||||
cleared bool
|
||||
// The DirIV
|
||||
iv []byte
|
||||
// Directory the DirIV belongs to
|
||||
dir string
|
||||
// Ecrypted version of "dir"
|
||||
translatedDir string
|
||||
// Synchronisation
|
||||
lock sync.RWMutex
|
||||
}
|
||||
|
||||
// lookup - fetch entry for "dir" from the cache
|
||||
func (c *dirIVCache) lookup(dir string) (bool, []byte, string) {
|
||||
c.lock.RLock()
|
||||
defer c.lock.RUnlock()
|
||||
if !c.cleared && c.dir == dir {
|
||||
return true, c.iv, c.translatedDir
|
||||
}
|
||||
return false, nil, ""
|
||||
}
|
||||
|
||||
// store - write entry for "dir" into the caches
|
||||
func (c *dirIVCache) store(dir string, iv []byte, translatedDir string) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
c.cleared = false
|
||||
c.iv = iv
|
||||
c.dir = dir
|
||||
c.translatedDir = translatedDir
|
||||
}
|
||||
|
||||
func (c *dirIVCache) Clear() {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
c.cleared = true
|
||||
}
|
||||
|
||||
// readDirIV - read the "gocryptfs.diriv" file from "dir" (absolute ciphertext path)
|
||||
func (be *NameTransform) ReadDirIV(dir string) (iv []byte, readErr error) {
|
||||
ivfile := filepath.Join(dir, DirIVFilename)
|
||||
|
Loading…
Reference in New Issue
Block a user