Add README.md

Also, run go fmt
This commit is contained in:
Jakob Unterwurzacher 2015-09-06 12:12:14 +02:00
parent 0a35d0970e
commit f2e2b81361
3 changed files with 56 additions and 20 deletions

38
README.md Normal file
View File

@ -0,0 +1,38 @@
GoCryptFS
=========
A minimal encrypted overlay filesystem written in Go.
Built on top of the
native Go FUSE library [bazil.org/fuse](https://github.com/bazil/fuse)
and the [ClueFS](https://github.com/airnandez/cluefs) loopback file system.
Inspired by [EncFS](https://github.com/vgough/encfs).
Design
------
* Authenticated encryption of file contents using AES-GCM-128
* 96 bit nonce that starts from a random value and counts up
* uses openssl through [spacemonkeygo/openssl](https://github.com/spacemonkeygo/openssl)
for a 3x speedup compared to `crypto/cipher`
* AES-CBC filename encryption
Current Status
--------------
* Work in progress
* Key is set to static all-zero
* Not ready for anything but testing and debugging
Testing
-------
Run `./main_benchmark.bash` to run the test suite and the streaming read/write
benchmark.
The output should look like this:
$ ./main_benchmark.bash
+ go build
+ go test -bench=.
PASS
BenchmarkStreamWrite 100 14062281 ns/op 74.57 MB/s
BenchmarkStreamRead 100 11267741 ns/op 93.06 MB/s
ok github.com/rfjakob/gocryptfs 7.569s

23
main.go
View File

@ -1,24 +1,23 @@
package main
import (
"path/filepath"
"flag"
"os"
"fmt"
"github.com/rfjakob/gocryptfs/frontend"
"bazil.org/fuse"
fusefs "bazil.org/fuse/fs"
"flag"
"fmt"
"github.com/rfjakob/gocryptfs/frontend"
"os"
"path/filepath"
)
const (
PROGRAM_NAME = "gocryptfs"
USE_OPENSSL = true
USE_OPENSSL = true
ERREXIT_USAGE = 1
ERREXIT_NEWFS = 2
ERREXIT_MOUNT = 3
ERREXIT_SERVE = 4
ERREXIT_USAGE = 1
ERREXIT_NEWFS = 2
ERREXIT_MOUNT = 3
ERREXIT_SERVE = 4
ERREXIT_MOUNT2 = 5
)
@ -48,7 +47,7 @@ func main() {
fuse.Subtype(PROGRAM_NAME),
fuse.VolumeName(PROGRAM_NAME),
fuse.LocalVolume(),
fuse.MaxReadahead(1024*1024),
fuse.MaxReadahead(1024 * 1024),
}
conn, err := fuse.Mount(mountpoint, mountOpts...)
if err != nil {

View File

@ -1,15 +1,15 @@
package main
import (
"io"
"fmt"
"time"
"testing"
"os"
"os/exec"
"io/ioutil"
"crypto/md5"
"encoding/hex"
"fmt"
"io"
"io/ioutil"
"os"
"os/exec"
"testing"
"time"
)
const tmpDir = "test_tmp_dir/"
@ -43,7 +43,6 @@ func TestMain(m *testing.M) {
r := m.Run()
fu.Run()
os.Exit(r)
}