| Age | Commit message (Collapse) | Author | 
|---|
|  | Go versions 1.4 and lower lack NewGCMWithNonceSize(), which causes
a panic in the test. | 
|  | The [Stat_t.Dev](https://golang.org/pkg/syscall/#Stat_t) docs say `Dev` is a `unit64`, but on [macOS amd64](https://golang.org/src/syscall/ztypes_darwin_amd64.go) it's an `int32`. | 
|  | Build helper script: build-without-openssl.bash | 
|  | As we now also support AES-SIV the old name is no longer
correct. | 
|  | AES-SIV uses 1/2 of the key for authentication, 1/2 for
encryption, so we need a 64-byte key for AES-256. Derive
it from the master key by hashing it with SHA-512. | 
|  | Add a test for that.
Also test operations using a 64-byte key. | 
|  | Also pull all the deterministic nonce code into fusefrontend_reverse
to greatly simplify the normal code path. | 
|  | After all, is's a virtual file. | 
|  | GCM-SIV is not yet finalized, and the reference implemenation is
painfully slow at about 2 MB/s. Switch to AES-SIV. | 
|  |  | 
|  | On a CPU without AES-NI:
$ go test -bench .
Benchmark4kEncStupidGCM-2   	   50000	     24155 ns/op	 169.57 MB/s
Benchmark4kEncGoGCM-2       	   20000	     93965 ns/op	  43.59 MB/s
Benchmark4kEncGCMSIV-2      	     500	   2576193 ns/op	   1.59 MB/s | 
|  | This happens all the time in reverse mode when somebody stats
an encrypted symlink target. | 
|  | Also delete the unused "dirIVNameStruct", found by deadcode. | 
|  | ...and fix reported errors:
internal/fusefrontend_reverse/rfile.go:40: github.com/rfjakob/gocryptfs/internal/contentenc.FileHeader composite literal uses unkeyed fields
internal/fusefrontend_reverse/rfs.go:249: github.com/hanwen/go-fuse/fuse.DirEntry composite literal uses unkeyed fields
internal/fusefrontend_reverse/rfs.go:264: github.com/hanwen/go-fuse/fuse.DirEntry composite literal uses unkeyed fields | 
|  |  | 
|  | 128-bit IVs are NOT used everywhere. | 
|  |  | 
|  | This will be used for strong symlink encryption in reverse mode. | 
|  | Calling into go-fuse's loopbackFileSystem does not add
any value here. | 
|  |  | 
|  |  | 
|  | findLongnameParent has to read the whole directory to find the
right file; add a simple cache to avoid most directory scans. | 
|  | 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. | 
|  |  | 
|  | 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 | 
|  | 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 | 
|  | ...with stable mappings for hard-linked files. | 
|  | Also add ReverseDummyNonce nonce generation. | 
|  |  | 
|  | And also don't return the encrypted version of
.gocryptfs.reverse.conf in readdir. | 
|  |  | 
|  |  | 
|  | Should be derived from the directory name only. | 
|  | Also refactor the header generation for nicer code. | 
|  | Introduce a unique per-directory diriv that is generated
by hashing the encrypted directory path. | 
|  | Also create virtual gocryptfs.diriv entries (no content yet). | 
|  | Will be needed by reverse mode. | 
|  |  | 
|  | ...to prevent confusion with the forward variants.
FS   -> reverseFS
file -> reverseFile
Also add an incomplete read implementation. | 
|  | Add the reverse variant of DecryptBlocks etc:
* EncryptBlocks
* JointPlaintextRange
* ExplodeCipherRange | 
|  |  | 
|  | Previously caused an integer underflow. | 
|  | Compiles but does not do much else. | 
|  | 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 | 
|  | 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. | 
|  |  | 
|  |  | 
|  | OSX does not have /proc/cpuinfo, but let's not warn
the user about it. | 
|  | [...]/stupidgcm/locking.go:16:2:
  warning: indirection of non-volatile null pointer will
  be deleted, not trap [-Wnull-dereference]
  [...]/stupidgcm/locking.go:16:2:
  note: consider using __builtin_trap() or qualifying
  pointer with 'volatile'
https://github.com/rfjakob/gocryptfs/issues/15 | 
|  | Protip: find naked *at syscalls using:
   git grep "syscall." | grep "at(" | grep -v syscallcompat |