libgocryptfs/frontend/fe_fs.go

47 lines
938 B
Go
Raw Normal View History

2015-09-03 19:09:23 +02:00
package frontend
2015-09-05 20:30:20 +02:00
// frontend sits between FUSE and ClueFS
// and uses cryptfs for all crypto operations
//
// cryptfs
// ^
// |
// v
// FUSE <-> frontend <-> ClueFS
//
// This file handles just the root directory
2015-09-03 19:09:23 +02:00
import (
"github.com/rfjakob/gocryptfs/cryptfs"
"github.com/rfjakob/cluefs/lib/cluefs"
2015-09-05 11:49:05 +02:00
fusefs "bazil.org/fuse/fs"
2015-09-03 19:09:23 +02:00
)
type FS struct {
*cryptfs.CryptFS
*cluefs.ClueFS
2015-09-05 11:49:05 +02:00
backing string
2015-09-03 19:27:07 +02:00
}
type nullTracer struct {}
2015-09-03 19:27:07 +02:00
func (nullTracer) Trace(op cluefs.FsOperTracer) {}
func NewFS(key [16]byte, backing string, useOpenssl bool) (*FS, error) {
var tracer nullTracer
clfs, err := cluefs.NewClueFS(backing, tracer)
if err != nil {
return nil, err
}
return &FS {
CryptFS: cryptfs.NewCryptFS(key, useOpenssl),
ClueFS: clfs,
2015-09-05 11:49:05 +02:00
backing: backing,
}, nil
2015-09-03 19:09:23 +02:00
}
2015-09-05 11:49:05 +02:00
func (fs *FS) Root() (fusefs.Node, error) {
2015-09-05 20:36:26 +02:00
cryptfs.Debug.Printf("Root\n")
2015-09-05 11:49:05 +02:00
return NewDir("", fs.backing, fs), nil
}