aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-09-25xray: add "gocryptfs-xray", on-disk-format exploration toolJakob Unterwurzacher
Example output for a file encrypted in reverse mode: Header: Version: 2, Id: 0b7f5e2574e4afa859a9bb156a2e7772 Block 0: IV: 0b7f5e2574e4afa859a9bb156a2e7773, Tag: bf39279ac6b1ccd852567aaf26ee386b, Len: 4128 Block 1: IV: 0b7f5e2574e4afa859a9bb156a2e7774, Tag: a4f0f9cde7f70a752254aa8fe7718699, Len: 4128 Block 2: IV: 0b7f5e2574e4afa859a9bb156a2e7775, Tag: b467b153016fc1d531818b65ab9e24f6, Len: 4128 Block 3: IV: 0b7f5e2574e4afa859a9bb156a2e7776, Tag: 1fcb7ffd8f1816fbe807df8148718a5c, Len: 4128 Block 4: IV: 0b7f5e2574e4afa859a9bb156a2e7777, Tag: a217e7933ef434c9f03ad931bb5fde9b, Len: 4128 Block 5: IV: 0b7f5e2574e4afa859a9bb156a2e7778, Tag: f3e6240d75cd66371a0b301111d6f1fc, Len: 4128 Block 6: IV: 0b7f5e2574e4afa859a9bb156a2e7779, Tag: bc85d322ebc7761ae5ef114ea3903a56, Len: 4128 Block 7: IV: 0b7f5e2574e4afa859a9bb156a2e777a, Tag: efda01c6b794690f939a12d6d49ac3af, Len: 4128 Block 8: IV: 0b7f5e2574e4afa859a9bb156a2e777b, Tag: b198329d489d1392080f710206932ff0, Len: 2907
2016-09-25reverse: add longname benchmarkJakob Unterwurzacher
2016-09-25reverse: add longnameParentCacheJakob Unterwurzacher
findLongnameParent has to read the whole directory to find the right file; add a simple cache to avoid most directory scans.
2016-09-25tests: extractloop: use tmp dir based on script nameJakob Unterwurzacher
This is how this should be done as well in future test scripts.
2016-09-25reverse: resolve long names in Open and GetAttrJakob Unterwurzacher
The last patch added functionality for generating gocryptfs.longname.* files, this patch adds support for mapping them back to the full filenames. Note that resolving a long name needs a full readdir. A cache will be implemented later on to improve performance.
2016-09-25reverse: transform long names in OpenDirJakob Unterwurzacher
2016-09-25nametransform: implement ReadDirIV without OpenatJakob Unterwurzacher
As ReadDirIV operates on a path anyway, opening the directory has no clear safety advantage w.r.t. concurrent renames. If the backing directory is a reverse-mounted gocryptfs filesystem, each directory open is an OPENDIR, and this causes a full directory read! This patch improves the "ls -lR" performance of an DIR --> gocryptfs-reverse --> gocryptfs chain by a factor of ~10. OPENDIR counts for ls -lR: Before 15570 After 2745
2016-09-25nametransform: return EINVAL on invalid paddingJakob Unterwurzacher
With the generic fmt.Errorf we trigger a warning from go-fuse: 2016/09/21 21:42:31 can't convert error type: Invalid padding
2016-09-25reverse: use dynamic inode numbersJakob Unterwurzacher
...with stable mappings for hard-linked files.
2016-09-25contentenc: add GCM-SIV supportJakob Unterwurzacher
Also add ReverseDummyNonce nonce generation.
2016-09-25main: init: refuse overwriting .gocryptfs.reverse.confJakob Unterwurzacher
2016-09-25cryptocore: add support for GCM-SIVJakob Unterwurzacher
2016-09-25reverse: fix GetAttr for gocryptfs.confJakob Unterwurzacher
And also don't return the encrypted version of .gocryptfs.reverse.conf in readdir.
2016-09-25reverse: enable init functionalityJakob Unterwurzacher
2016-09-25main: move initDir into its own fileJakob Unterwurzacher
2016-09-25main: add explicit exit after forkChildJakob Unterwurzacher
Trying to make it more obvious what is happening.
2016-09-25main: factor out cli arg parsingJakob Unterwurzacher
The main function has gotten way too big.
2016-09-25reverse: add gocryptfs.conf passthroughJakob Unterwurzacher
2016-09-25reverse: get rid of debug messageJakob Unterwurzacher
2016-09-25reverse: gocryptfs.diriv content was generated from wrong pathJakob Unterwurzacher
Should be derived from the directory name only.
2016-09-25reverse: rename readFile to clearer readBackingFileJakob Unterwurzacher
Also refactor the header generation for nicer code.
2016-09-25reverse: implement dynamic dirivJakob Unterwurzacher
Introduce a unique per-directory diriv that is generated by hashing the encrypted directory path.
2016-09-25reverse: generate file header for Read()Jakob Unterwurzacher
Also create virtual gocryptfs.diriv entries (no content yet).
2016-09-25nametransform: export DirIVLen constantJakob Unterwurzacher
Will be needed by reverse mode.
2016-09-25reverse: print value in file offset panicJakob Unterwurzacher
2016-09-25reverse: let the kernel enforce read-only modeJakob Unterwurzacher
... and print a warning that reverse mode is experimental
2016-09-25reverse: rename types to reverseXYZJakob Unterwurzacher
...to prevent confusion with the forward variants. FS -> reverseFS file -> reverseFile Also add an incomplete read implementation.
2016-09-25contentenc: add helpers for reverse modeJakob Unterwurzacher
Add the reverse variant of DecryptBlocks etc: * EncryptBlocks * JointPlaintextRange * ExplodeCipherRange
2016-09-25main: initial support for reverse modeJakob Unterwurzacher
2016-09-25conentenc: handle zero-sized files in PlainSizeToCipherSizeJakob Unterwurzacher
Previously caused an integer underflow.
2016-09-25reverse: add skeletonJakob Unterwurzacher
Compiles but does not do much else.
2016-09-25tests: skip the nanosecond compare for nowJakob Unterwurzacher
2016-09-25fusefrontend: relay Utimens to go-fuseJakob Unterwurzacher
Commit af5441dcd9033e81da43ab77887a7b5aac693ab6 has caused a regression ( https://github.com/rfjakob/gocryptfs/issues/35 ) that is fixed by this commit. The go-fuse library by now has all the syscall wrappers in place to correctly handle Utimens, also for symlinks. Instead of duplicating the effort here just call into go-fuse. Closes #35
2016-09-25tests: set the times on a symlinkJakob Unterwurzacher
This currently fails as reported in https://github.com/rfjakob/gocryptfs/issues/35 . Also remove the spurious sleep in the test.
2016-08-09fusefrontend: use NsecToTimespec() for UtimensJakob Unterwurzacher
This fixes a build problem on 32-bit hosts: internal/fusefrontend/file.go:400: cannot use a.Unix() (type int64) as type int32 in assignment internal/fusefrontend/file.go:406: cannot use m.Unix() (type int64) as type int32 in assignment It also enables full nanosecond timestamps for dates after 1970.
2016-08-09tests: add TestUtimesNanoJakob Unterwurzacher
Make sure setting nanoseconds works by path and fd.
2016-07-31cryptocore: comment why 96-bit IVs are still supportedJakob Unterwurzacher
2016-07-21Drop obsolete .drone.ymlJakob Unterwurzacher
Drone CI may make sense in the future when I set up a private instance that supports FUSE, but for now it provides no advantages to Travis CI.
2016-07-17Update README for v1.0v1.0Jakob Unterwurzacher
2016-07-16tests: add RSS tracking to extractloopJakob Unterwurzacher
This obsoletes loopback-mem.bash.
2016-07-16tests: factor out fs-agnostic benchmark scriptJakob Unterwurzacher
"canonical-benchmarks.bash TESTDIR" can now be used on any filesystem.
2016-07-16tests: add maxlen.bash helperJakob Unterwurzacher
Simple script that finds out the maximum supported filename length.
2016-07-14tests: add loopback-mem scriptJakob Unterwurzacher
Helps to find memory leaks in go-fuse's loopback, which gocryptfs builds upon.
2016-07-12tests: extractloop: add loopback supportJakob Unterwurzacher
loopback is an example app that comes with the go-fuse lib. It uses all the same APIs as gocryptfs, minus the encryption.
2016-07-11tests: add encfs support to benchmark.bash and extractloop.bashJakob Unterwurzacher
Pass "-encfs" to test encfs instead of gocryptfs.
2016-07-11tests: matrix: print name in verbose outputJakob Unterwurzacher
2016-07-11tests: add verbose output when unmountingJakob Unterwurzacher
2016-07-11tests: use unmount wrapper in ResetTmpDirJakob Unterwurzacher
This should make it work on OSX. Also, split unmount into two functions. Depending on what you want, * UnmountErr returns the resulting error * UnmountPanic panics if the error was not nil
2016-07-10README: Fix ticket #15 copy-paste errorsrfjakob
Thanks to @spaghetti2514 for noticing.
2016-07-06Add godoc comments to all internal packagesJakob Unterwurzacher