nametransform: delete NameTransformer interface

Useless layer of indirection.
master
Jakob Unterwurzacher 1 year ago
parent e244b51491
commit 2efef1e270
  1. 4
      internal/fusefrontend/root_node.go
  2. 9
      internal/fusefrontend_reverse/excluder_test.go
  3. 32
      internal/fusefrontend_reverse/mocks_test.go
  4. 4
      internal/fusefrontend_reverse/root_node.go
  5. 17
      internal/nametransform/names.go
  6. 3
      tests/defaults/main_test.go
  7. 2
      tests/test_helpers/helpers.go

@ -27,7 +27,7 @@ type RootNode struct {
// states
dirIVLock sync.RWMutex
// Filename encryption helper
nameTransform nametransform.NameTransformer
nameTransform *nametransform.NameTransform
// Content encryption helper
contentEnc *contentenc.ContentEnc
// This lock is used by openWriteOnlyFile() to block concurrent opens while
@ -54,7 +54,7 @@ type RootNode struct {
inoMap inomap.TranslateStater
}
func NewRootNode(args Args, c *contentenc.ContentEnc, n nametransform.NameTransformer) *RootNode {
func NewRootNode(args Args, c *contentenc.ContentEnc, n *nametransform.NameTransform) *RootNode {
if args.SerializeReads {
serialize_reads.InitSerializer()
}

@ -64,12 +64,3 @@ func TestShouldReturnFalseIfThereAreNoExclusions(t *testing.T) {
t.Error("Should not exclude any path if no exclusions were specified")
}
}
func TestShouldCallIgnoreParserToCheckExclusion(t *testing.T) {
rfs, ignorerMock := createRFSWithMocks()
rfs.isExcludedPlain("some/path")
if ignorerMock.calledWith != "some/path" {
t.Error("Failed to call IgnoreParser")
}
}

@ -1,32 +0,0 @@
package fusefrontend_reverse
import (
"github.com/rfjakob/gocryptfs/internal/nametransform"
)
type IgnoreParserMock struct {
toExclude string
calledWith string
}
func (parser *IgnoreParserMock) MatchesPath(f string) bool {
parser.calledWith = f
return f == parser.toExclude
}
type NameTransformMock struct {
nametransform.NameTransform
}
func (n *NameTransformMock) DecryptName(cipherName string, iv []byte) (string, error) {
return "mockdecrypt_" + cipherName, nil
}
func createRFSWithMocks() (*RootNode, *IgnoreParserMock) {
ignorerMock := &IgnoreParserMock{}
nameTransformMock := &NameTransformMock{}
var rfs RootNode
rfs.excluder = ignorerMock
rfs.nameTransform = nameTransformMock
return &rfs, ignorerMock
}

@ -28,7 +28,7 @@ type RootNode struct {
// Stores configuration arguments
args fusefrontend.Args
// Filename encryption helper
nameTransform nametransform.NameTransformer
nameTransform *nametransform.NameTransform
// Content encryption helper
contentEnc *contentenc.ContentEnc
// Tests whether a path is excluded (hidden) from the user. Used by -exclude.
@ -41,7 +41,7 @@ type RootNode struct {
// NewRootNode returns an encrypted FUSE overlay filesystem.
// In this case (reverse mode) the backing directory is plain-text and
// ReverseFS provides an encrypted view.
func NewRootNode(args fusefrontend.Args, c *contentenc.ContentEnc, n nametransform.NameTransformer) *RootNode {
func NewRootNode(args fusefrontend.Args, c *contentenc.ContentEnc, n *nametransform.NameTransform) *RootNode {
rn := &RootNode{
args: args,
nameTransform: n,

@ -19,23 +19,6 @@ const (
BadNameFlag = " GOCRYPTFS_BAD_NAME"
)
// NameTransformer is an interface used to transform filenames.
type NameTransformer interface {
DecryptName(cipherName string, iv []byte) (string, error)
EncryptName(plainName string, iv []byte) (string, error)
EncryptAndHashName(name string, iv []byte) (string, error)
EncryptAndHashBadName(name string, iv []byte, dirfd int) (string, error)
// HashLongName - take the hash of a long string "name" and return
// "gocryptfs.longname.[sha256]"
//
// This function does not do any I/O.
HashLongName(name string) string
HaveBadnamePatterns() bool
WriteLongNameAt(dirfd int, hashName string, plainName string) error
B64EncodeToString(src []byte) string
B64DecodeString(s string) ([]byte, error)
}
// NameTransform is used to transform filenames.
type NameTransform struct {
emeCipher *eme.EMECipher

@ -18,6 +18,9 @@ import (
func TestMain(m *testing.M) {
test_helpers.ResetTmpDir(true)
// TestZerokey() in tests/cli verifies that mounting with `-zerokey` is equivalent
// to mounting with a config file with all-default options (just the masterkey
// set to all-zero).
test_helpers.MountOrExit(test_helpers.DefaultCipherDir, test_helpers.DefaultPlainDir, "-zerokey")
r := m.Run()
test_helpers.UnmountPanic(test_helpers.DefaultPlainDir)

@ -141,6 +141,8 @@ func isExt4(path string) bool {
// gocryptfs -q -init -extpass "echo test" -scryptn=10 $extraArgs $cipherdir
//
// It returns cipherdir without a trailing slash.
//
// If t is set, t.Fatal() is called on error, log.Panic() otherwise.
func InitFS(t *testing.T, extraArgs ...string) string {
prefix := "x."
if t != nil {

Loading…
Cancel
Save