aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-03-18serialize_reads: add read serialization logicJakob Unterwurzacher
Due to kernel readahead, we usually get multiple read requests at the same time. These get submitted to the backing storage in random order, which is a problem if seeking is very expensive. Details: https://github.com/rfjakob/gocryptfs/issues/92
2017-03-12fusefrontend: readFileID: reject files that consist only of a headerJakob Unterwurzacher
A header-only file will be considered empty (this is not supposed to happen). This makes File ID poisoning more difficult.
2017-03-12fusefrontend: truncateGrowFile: avoid createHeader() callJakob Unterwurzacher
...if doWrite() can do it for us. This avoids the situation that the file only consists of a file header when calling doWrite. A later patch will check for this condition and warn about it, as with this change it should no longer occour in normal operation.
2017-03-07configfile: HKDF feature flag should also be set for "-plaintextnames"Jakob Unterwurzacher
2017-03-07contentenc: catch integer underflow in file size calculationJakob Unterwurzacher
If you truncate a ciphertext file to 19 bytes, you could get the impression that the plaintext is 18446744073709551585 bytes long, as reported by "ls -l". Fix it by clamping the value to zero.
2017-03-07cli: enable "-raw64" by defaultJakob Unterwurzacher
This brings the CLI options back in sync with the default feature flags.
2017-03-07tests: recreate v1.3 example filesystemJakob Unterwurzacher
The filesystem was created with a gocryptfs version that ignored the HKDF flag (hence everything was actually encrypted WITHOUT hkdf). Fix it by recreating it.
2017-03-07cli: add "-hkdf" optionJakob Unterwurzacher
This commit also enables actually passing the HKDF setting to fusefrontend, this was missing till now.
2017-03-07configfile: enable HKDF and Raw64 feature flags by defaultJakob Unterwurzacher
Also adds a test to verify that they are set in new config files.
2017-03-07tests: reverse: don't run tests that ignore "-plaintextnames" twiceJakob Unterwurzacher
TestMain() runs all tests twice, once with plaintextnames=true and once with false. Several tests mount their own filesystem and ignore the plaintextnames variable. It makes no sense to run them twice, so skip execution when plaintextnames is set.
2017-03-07Report correct symbolic link dentry sizesM. Vefa Bicakci
Prior to this commit, gocryptfs's reverse mode did not report correct directory entry sizes for symbolic links, where the dentry size needs to be the same as the length of a string containing the target path. This commit corrects this issue and adds a test case to verify the correctness of the implementation. This issue was discovered during the use of a strict file copying program on a reverse-mounted gocryptfs file system.
2017-03-05tests: configfile: fix spurious test failure IIJakob Unterwurzacher
internal/configfile/config_test.go:67: c declared and not used
2017-03-05tests: configfile: fix spurious test failureJakob Unterwurzacher
This test fails because Raw64 has been disabled for now.
2017-03-05tests: add v1.3 example filesystemJakob Unterwurzacher
This filesystem has both HKDF and Raw64 enabled.
2017-03-05configfile: disable Raw64 for nowJakob Unterwurzacher
Raw64 is supported (but was disabled by default) since gocryptfs v1.2. However, the implementation was buggy because it forgot about long names and symlinks. Disable it for now by default and enable it later, together with HKDF.
2017-03-05nametransform: fix Raw64 not affecting symlink targetsJakob Unterwurzacher
The symlink functions incorrectly hardcoded the padded base64 variant.
2017-03-05nametransform: fix Raw64 not affecting longnamesJakob Unterwurzacher
HashLongName() incorrectly hardcoded the call to base64.URLEncoding.
2017-03-05full stack: implement HKDF supportJakob Unterwurzacher
...but keep it disabled by default for new filesystems. We are still missing an example filesystem and CLI arguments to explicitely enable and disable it.
2017-03-05configfile: reject the "HKDF" flag for nowJakob Unterwurzacher
This will be re-enabled once it is implemented.
2017-03-05configfile: switch on Raw64 by defaultJakob Unterwurzacher
As we have dropped Go 1.4 compatibility already, and will add a new feature flag for gocryptfs v1.3 anyway, this is a good time to enable Raw64 as well.
2017-03-05configfile: switch to 128-bit IVs for master key encryptionJakob Unterwurzacher
There is no security reason for doing this, but it will allow to consolidate the code once we drop compatibility with gocryptfs v1.2 (and earlier) filesystems.
2017-03-05README: fix "compatibility" typoJakob Unterwurzacher
2017-03-05Drop Go 1.4 compatability code everywhereJakob Unterwurzacher
Yields a nice reduction in code size.
2017-03-05README: drop Go 1.4 compatability for gocryptfs v1.3Jakob Unterwurzacher
Also drop Go 1.4 from Travis CI and update other Go versions to latest point release.
2017-03-05cryptocore: rename "BackendTypeEnum" -> "AEADTypeEnum"Jakob Unterwurzacher
There are two independent backends, one for name encryption, the other one, AEAD, for file content. "BackendTypeEnum" only applies to AEAD (file content), so make that clear in the name.
2017-03-05cryptocore: use eme v1.1 interfaceJakob Unterwurzacher
Version 1.1 of the EME package (github.com/rfjakob/eme) added a more convenient interface. Use it. Note that you have to upgrade your EME package (go get -u)!
2017-03-05tests: stop calling t.Fatal from example_test_helpersJakob Unterwurzacher
Calling t.Fatal immeadiately aborts the test, which means the filesystem will not get unmounted, which means test.bash will hang.
2017-03-05test.bash: execute build-without-openssl.bash instead of sourcing itJakob Unterwurzacher
Sourcing the script breaks the "cd $(dirname $0)" logic in build-without-openssl.bash.
2017-03-05configfile: define HKDF flagJakob Unterwurzacher
2017-03-02fusefrontend: when chown'ing a directory, also chown its dirivJakob Unterwurzacher
When filename encryption is active, every directory contains a "gocryptfs.diriv" file. This file should also change the owner. Fixes https://github.com/rfjakob/gocryptfs/issues/86
2017-03-02main: get rid of third open paniclog fdJakob Unterwurzacher
We have it saved in Stderr and Stdout anyway, let's free this fd number.
2017-03-01CLI_ABI: smaller markdown subheadingsrfjakob
The old ones were rendered by github almost as big as the parent headings.
2017-02-28Update README.md (#85)Peter Reschenhofer
Correcting year in changelog (1.2.1)
2017-02-26README: update changelog for 1.2.1 releasev1.2.1Jakob Unterwurzacher
2017-02-26tests: somewhat support testing without opensslJakob Unterwurzacher
You will still get lots of test error, but at least the tests will run.
2017-02-26MANPAGE: document "-speed"Jakob Unterwurzacher
2017-02-26MANPAGE: document error code 12Jakob Unterwurzacher
2017-02-26exitcodes: define code 12 for "password incorrect"Jakob Unterwurzacher
2017-02-25configfile: rename "kdf.go" -> "scrypt.go"Jakob Unterwurzacher
This really only handles scrypt and no other key-derivation functions. Renaming the files prevents confusion once we introduce HKDF. renamed: internal/configfile/kdf.go -> internal/configfile/scrypt.go renamed: internal/configfile/kdf_test.go -> internal/configfile/scrypt_test.go
2017-02-24stupidgcm: drop only external dependecyJakob Unterwurzacher
This makes it easier to use the package in external projects. See https://github.com/rfjakob/gocryptfs/issues/79
2017-02-24speed: add benchmark.bash helperJakob Unterwurzacher
2017-02-23README: fix typo and simplify MANPAGE textJakob Unterwurzacher
2017-02-23speed: fix build for Go 1.4 and lowerJakob Unterwurzacher
Old Go versions miss cipher.NewGCMWithNonceSize, which causes: internal/speed/speed.go:95: undefined: cipher.NewGCMWithNonceSize
2017-02-22Implement "gocryptfs -speed"Jakob Unterwurzacher
A crypto benchmark mode like "openssl speed". Example run: $ ./gocryptfs -speed AES-GCM-256-OpenSSL 180.89 MB/s (selected in auto mode) AES-GCM-256-Go 48.19 MB/s AES-SIV-512-Go 37.40 MB/s
2017-02-20tests: adapt dir overwrite test for Go 1.8Jakob Unterwurzacher
In Go 1.8, os.Rename refuses to overwrite an empty directory. Switch to syscall.Rename, which still does the right thing.
2017-02-20Travis CI: also test with Go 1.8Jakob Unterwurzacher
(Currently failing the tests!)
2017-02-20Get rid of remaining $GOPATH dependenciesJakob Unterwurzacher
2017-02-20build.bash: use $(go env GOPATH)Jakob Unterwurzacher
2017-02-19build.bash: deduplicate build callJakob Unterwurzacher
2017-02-19build.bash: GOPATH may be unset since Go v1.8. Handle it.Jakob Unterwurzacher