From 719693ec5dd1153318606f151915231d71ddfe0b Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sat, 17 Feb 2018 16:26:35 +0100 Subject: fusefrontend[_reverse]: move crypto init up to caller Both fusefrontend and fusefrontend_reverse were doing essentially the same thing, move it into main's initFuseFrontend. A side-effect is that we have a reference to cryptocore in main, which will help with wiping the keys on exit (https://github.com/rfjakob/gocryptfs/issues/211). --- internal/fusefrontend_reverse/rfs.go | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'internal/fusefrontend_reverse/rfs.go') diff --git a/internal/fusefrontend_reverse/rfs.go b/internal/fusefrontend_reverse/rfs.go index 1523c18..b281c76 100644 --- a/internal/fusefrontend_reverse/rfs.go +++ b/internal/fusefrontend_reverse/rfs.go @@ -2,7 +2,6 @@ package fusefrontend_reverse import ( "fmt" - "log" "path/filepath" "syscall" @@ -42,22 +41,15 @@ var _ pathfs.FileSystem = &ReverseFS{} // NewFS returns an encrypted FUSE overlay filesystem. // In this case (reverse mode) the backing directory is plain-text and // ReverseFS provides an encrypted view. -func NewFS(masterkey []byte, args fusefrontend.Args) *ReverseFS { - if args.CryptoBackend != cryptocore.BackendAESSIV { - log.Panic("reverse mode must use AES-SIV, everything else is insecure") - } +func NewFS(args fusefrontend.Args, c *contentenc.ContentEnc, n *nametransform.NameTransform) *ReverseFS { initLongnameCache() - cryptoCore := cryptocore.New(masterkey, args.CryptoBackend, contentenc.DefaultIVBits, args.HKDF, false) - contentEnc := contentenc.New(cryptoCore, contentenc.DefaultBS, false) - nameTransform := nametransform.New(cryptoCore.EMECipher, args.LongNames, args.Raw64) - return &ReverseFS{ // pathfs.defaultFileSystem returns ENOSYS for all operations FileSystem: pathfs.NewDefaultFileSystem(), loopbackfs: pathfs.NewLoopbackFileSystem(args.Cipherdir), args: args, - nameTransform: nameTransform, - contentEnc: contentEnc, + nameTransform: n, + contentEnc: c, } } -- cgit v1.2.3