<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gocryptfs/internal, branch v1.4.1</title>
<subtitle>Mirror of gocryptfs source code on Github</subtitle>
<id>http://nuetzlich.net/cgit/gocryptfs/atom?h=v1.4.1</id>
<link rel='self' href='http://nuetzlich.net/cgit/gocryptfs/atom?h=v1.4.1'/>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/'/>
<updated>2017-08-16T16:33:00+00:00</updated>
<entry>
<title>cryptocore: add urandom + randprefetch benchmarks</title>
<updated>2017-08-16T16:33:00+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-08-16T16:33:00+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=312ea32bb70abb93be315d0b7c442d5c4ae571d9'/>
<id>urn:sha1:312ea32bb70abb93be315d0b7c442d5c4ae571d9</id>
<content type='text'>
The benchmark that supported the decision for 512-byte
prefetching previously lived outside the repo.

Let's add it where it belongs so it cannot get lost.
</content>
</entry>
<entry>
<title>fusefrontend: use Getdents if available</title>
<updated>2017-08-15T17:04:02+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-08-15T16:35:30+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=989b88098951e5ad68b66049e59fd2ca475c4711'/>
<id>urn:sha1:989b88098951e5ad68b66049e59fd2ca475c4711</id>
<content type='text'>
Getdents avoids calling Lstat on each file.
</content>
</entry>
<entry>
<title>syscallcompat: implement Getdents()</title>
<updated>2017-08-15T17:03:57+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-08-13T19:13:44+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=e50a6a57e57bc3cc925ba9a6e7f4dc1da4da3c84'/>
<id>urn:sha1:e50a6a57e57bc3cc925ba9a6e7f4dc1da4da3c84</id>
<content type='text'>
The Readdir function provided by os is inherently slow because
it calls Lstat on all files.

Getdents gives us all the information we need, but does not have
a proper wrapper in the stdlib.

Implement the "Getdents()" wrapper function that calls
syscall.Getdents() and parses the returned byte blob to a
fuse.DirEntry slice.
</content>
</entry>
<entry>
<title>main: purge masterkey from memory as soon as possible</title>
<updated>2017-08-11T17:02:26+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-08-11T16:42:30+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=0c520845f3623eff28f0277a52e3ccffd928f5c2'/>
<id>urn:sha1:0c520845f3623eff28f0277a52e3ccffd928f5c2</id>
<content type='text'>
Remove the "Masterkey" field from fusefrontend.Args because it
should not be stored longer than neccessary. Instead pass the
masterkey as a separate argument to the filesystem initializers.

Then overwrite it with zeros immediately so we don't have
to wait for garbage collection.

Note that the crypto implementation still stores at least a
masterkey-derived value, so this change makes it harder, but not
impossible, to extract the encryption keys from memory.

Suggested at https://github.com/rfjakob/gocryptfs/issues/137
</content>
</entry>
<entry>
<title>nametransform: extend diriv cache to 100 entries</title>
<updated>2017-08-09T20:00:53+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-08-09T19:44:15+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=e80b5f2049edb794e340da629bce9e44485a4dbb'/>
<id>urn:sha1:e80b5f2049edb794e340da629bce9e44485a4dbb</id>
<content type='text'>
* extend the diriv cache to 100 entries
* add special handling for the immutable root diriv

The better cache allows to shed some complexity from the path
encryption logic (parent-of-parent check).

Mitigates https://github.com/rfjakob/gocryptfs/issues/127
</content>
</entry>
<entry>
<title>nametransform: add Dir() function</title>
<updated>2017-08-06T21:14:39+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-08-06T21:12:27+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=75ec94a87a52a7230c9b7d9b3e150a0da2725e58'/>
<id>urn:sha1:75ec94a87a52a7230c9b7d9b3e150a0da2725e58</id>
<content type='text'>
Dir is like filepath.Dir but returns "" instead of ".".
This was already implemented in fusefrontend_reverse as saneDir().

We will need it in nametransform for the improved diriv caching.
</content>
</entry>
<entry>
<title>nametransform: move diriv cache into it's own package</title>
<updated>2017-08-06T19:59:15+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-08-06T19:59:15+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=5190cc09bbc8afca75986dbb14f09e62eda33b61'/>
<id>urn:sha1:5190cc09bbc8afca75986dbb14f09e62eda33b61</id>
<content type='text'>
Needs some space to grow.

renamed:    internal/nametransform/diriv_cache.go -&gt; internal/nametransform/dirivcache/dirivcache.go
</content>
</entry>
<entry>
<title>nametransform: deduplicate code to encryptAndHashName()</title>
<updated>2017-08-06T19:23:42+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-08-06T19:23:42+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=32611ff97afacb6525015ed322645e12bd296380'/>
<id>urn:sha1:32611ff97afacb6525015ed322645e12bd296380</id>
<content type='text'>
This operation has been done three time by identical
sections of code. Create a function for it.
</content>
</entry>
<entry>
<title>fusefronted_reverse: fix ino collision between .name and .diriv files</title>
<updated>2017-07-29T14:15:49+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-07-29T14:13:38+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=d12aa577156101a1c6a05765de751f0a54b58aa8'/>
<id>urn:sha1:d12aa577156101a1c6a05765de751f0a54b58aa8</id>
<content type='text'>
A directory with a long name has two associated virtual files:
the .name file and the .diriv files.

These used to get the same inode number:

  $ ls -di1  * */*
             33313535 gocryptfs.longname.2togDFouca9mrTwtfF1RNW5DZRAQY8alaR7wO_Xd5Zw
  1000000000033313535 gocryptfs.longname.2togDFouca9mrTwtfF1RNW5DZRAQY8alaR7wO_Xd5Zw/gocryptfs.diriv
  1000000000033313535 gocryptfs.longname.2togDFouca9mrTwtfF1RNW5DZRAQY8alaR7wO_Xd5Zw.name

With this change we use another prefix (2 instead of 1) for .name files.

  $ ls -di1 * */*
             33313535 gocryptfs.longname.2togDFouca9mrTwtfF1RNW5DZRAQY8alaR7wO_Xd5Zw
  1000000000033313535 gocryptfs.longname.2togDFouca9mrTwtfF1RNW5DZRAQY8alaR7wO_Xd5Zw/gocryptfs.diriv
  2000000000033313535 gocryptfs.longname.2togDFouca9mrTwtfF1RNW5DZRAQY8alaR7wO_Xd5Zw.name
</content>
</entry>
<entry>
<title>fusefrontend_reverse: return ENOENT for undecryptable names</title>
<updated>2017-07-27T18:31:22+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-07-27T18:31:22+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=d5133ca5ac4f241ff22ef145a3605a9fdb341bb6'/>
<id>urn:sha1:d5133ca5ac4f241ff22ef145a3605a9fdb341bb6</id>
<content type='text'>
This was working until DecryptName switched to returning
EBADMSG instead of EINVAL.

Add a test to catch the regression next time.
</content>
</entry>
</feed>
