added fs encryption overlay

This commit is contained in:
ston1th 2022-04-06 01:08:19 +02:00
commit fd1e8118a4
28 changed files with 3994 additions and 30 deletions

View file

@ -6,6 +6,7 @@ import (
"cachefs/pkg/provider"
"cachefs/pkg/provider/parse"
"context"
"encoding/hex"
"errors"
"fmt"
stdfs "io/fs"
@ -31,15 +32,28 @@ type FS struct {
ph *PreloadHandler
}
func NewFS(quota int64, max int, src, dst, metadata string, log logr.Logger) (fs *FS, err error) {
func NewFS(quota int64, max int, src, srckey, dst, dstkey, metadata string, log logr.Logger) (fs *FS, err error) {
if src == dst {
return nil, errors.New("src and dst path can not be equal")
}
srcfs, err := parse.FS(src)
var srck, dstk []byte
if srckey != "" {
srck, err = hex.DecodeString(srckey)
if err != nil {
return nil, fmt.Errorf("srckey: %w", err)
}
}
if dstkey != "" {
dstk, err = hex.DecodeString(dstkey)
if err != nil {
return nil, fmt.Errorf("dstkey: %w", err)
}
}
srcfs, err := parse.FS(src, srck)
if err != nil {
return nil, fmt.Errorf("srcfs: %w", err)
}
dstfs, err := parse.FS(dst)
dstfs, err := parse.FS(dst, dstk)
if err != nil {
return nil, fmt.Errorf("dstfs: %w", err)
}