<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gocryptfs/internal/speed, branch aegis</title>
<subtitle>Mirror of gocryptfs source code on Github</subtitle>
<id>http://nuetzlich.net/cgit/gocryptfs/atom?h=aegis</id>
<link rel='self' href='http://nuetzlich.net/cgit/gocryptfs/atom?h=aegis'/>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/'/>
<updated>2025-03-12T19:43:23+00:00</updated>
<entry>
<title>Fix aegis available checks</title>
<updated>2025-03-12T19:43:23+00:00</updated>
<author>
<name>Frank Denis</name>
</author>
<published>2025-03-12T00:05:33+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=48c8538a70e7904df0b17685bb2b277fbd92a7ae'/>
<id>urn:sha1:48c8538a70e7904df0b17685bb2b277fbd92a7ae</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move aegis out of stupidgcm</title>
<updated>2025-03-12T19:43:23+00:00</updated>
<author>
<name>Frank Denis</name>
</author>
<published>2025-03-11T23:54:35+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=d5d26d75247d4fcc269cd0494cb85c7e62618c89'/>
<id>urn:sha1:d5d26d75247d4fcc269cd0494cb85c7e62618c89</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Do what @rfjakob asked me to do</title>
<updated>2025-03-12T19:43:23+00:00</updated>
<author>
<name>Frank Denis</name>
</author>
<published>2025-03-11T23:32:04+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=3e852eb354f99fb95b399c68d950298b33ed88ab'/>
<id>urn:sha1:3e852eb354f99fb95b399c68d950298b33ed88ab</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add optional support for AEGIS encryption</title>
<updated>2025-03-12T19:43:23+00:00</updated>
<author>
<name>Frank Denis</name>
</author>
<published>2025-02-25T14:03:50+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=779a850e0fb967aac79124c7e18b14706d5f2652'/>
<id>urn:sha1:779a850e0fb967aac79124c7e18b14706d5f2652</id>
<content type='text'>
AEGIS is a new family of authenticated encryption algorithms that offers
stronger security, higher usage limits, and better performance than AES-GCM.

This pull request adds support for a new `-aegis` command-line flag, allowing
AEGIS-128X2 to be used as an alternative to AES-GCM on CPUs with AES acceleration.

It also introduces the ability to use ciphers with different key sizes.

More information on AEGIS is available here:
- https://cfrg.github.io/draft-irtf-cfrg-aegis-aead/draft-irtf-cfrg-aegis-aead.html
- https://github.com/cfrg/draft-irtf-cfrg-aegis-aead

gocryptfs -speed speed on Apple M1:

AES-GCM-256-OpenSSL              3718.79 MB/s
AES-GCM-256-Go                   5083.43 MB/s   (selected in auto mode)
AES-SIV-512-Go                    625.20 MB/s
XChaCha20-Poly1305-OpenSSL       1358.63 MB/s   (selected in auto mode)
XChaCha20-Poly1305-Go             832.11 MB/s
Aegis128X2-Go                   11818.73 MB/s

gocryptfs -speed speed on AMD Zen 4:

AES-GCM-256-OpenSSL              5215.86 MB/s
AES-GCM-256-Go                   6918.01 MB/s   (selected in auto mode)
AES-SIV-512-Go                    449.61 MB/s
XChaCha20-Poly1305-OpenSSL       2643.48 MB/s
XChaCha20-Poly1305-Go            3727.46 MB/s   (selected in auto mode)
Aegis128X2-Go                   28109.92 MB/s
</content>
</entry>
<entry>
<title>stupidgcm: detect AES-GCM acceleration like crypto/tls</title>
<updated>2024-06-06T08:07:08+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2024-06-06T08:07:08+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=f06f27e7bc098e334024c365004f9303e79997d9'/>
<id>urn:sha1:f06f27e7bc098e334024c365004f9303e79997d9</id>
<content type='text'>
Instead of just looking for AES, also look for PCLMULQDQ,
like crypto/tls does.

Fixes: https://github.com/rfjakob/gocryptfs/issues/822
</content>
</entry>
<entry>
<title>gocryptfs -speed: call testing.Init() to not panic</title>
<updated>2023-09-15T21:19:02+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2023-09-15T21:11:58+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=3a65627316cb4d1c360ece87ec9a33e4c330d1aa'/>
<id>urn:sha1:3a65627316cb4d1c360ece87ec9a33e4c330d1aa</id>
<content type='text'>
Looks like I should have been calling testing.Init()
all along. From https://pkg.go.dev/testing#Init :

&gt; Init is only needed when calling functions such as
&gt; Benchmark without using "go test".

Panic only affected without_openssl builds and looks
like this:

  $ ./gocryptfs -speed
  gocryptfs v2.4.0-2-g8b1c4b0-dirty without_openssl; go-fuse v2.3.0; 2023-09-15 go1.21.1 linux/amd64
  cpu: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz; with AES acceleration
  AES-GCM-256-OpenSSL             panic: runtime error: invalid memory address or nil pointer dereference
  [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x5a5d20]

  goroutine 7 [running]:
  testing.(*common).decorate(0x40d625?, {0xc00001c150, 0x2a}, 0x830601?)
          testing/testing.go:772 +0xa0
  [...]

Fixes: https://github.com/rfjakob/gocryptfs/issues/789
Relates-to: https://github.com/golang/go/issues/62666
</content>
</entry>
<entry>
<title>speed: GoGCM: start at block size 16</title>
<updated>2023-03-08T16:04:07+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2023-03-08T16:04:07+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=b370325ccf8a15d3b58418d85fd22e32e2aeb2fc'/>
<id>urn:sha1:b370325ccf8a15d3b58418d85fd22e32e2aeb2fc</id>
<content type='text'>
BenchmarkGoGCMBlockSize/16-4      	 5499200	       219.7 ns/op	  72.83 MB/s
BenchmarkGoGCMBlockSize/32-4      	 4497284	       266.2 ns/op	 120.22 MB/s
BenchmarkGoGCMBlockSize/64-4      	 3296336	       363.4 ns/op	 176.10 MB/s
BenchmarkGoGCMBlockSize/128-4     	 4204794	       285.5 ns/op	 448.36 MB/s
BenchmarkGoGCMBlockSize/256-4     	 2928472	       409.7 ns/op	 624.83 MB/s
BenchmarkGoGCMBlockSize/512-4     	 1825164	       658.0 ns/op	 778.09 MB/s
BenchmarkGoGCMBlockSize/1024-4    	 1000000	      1151 ns/op	 889.98 MB/s
BenchmarkGoGCMBlockSize/2048-4    	  560275	      2135 ns/op	 959.47 MB/s
BenchmarkGoGCMBlockSize/4096-4    	  291906	      4099 ns/op	 999.28 MB/s
BenchmarkGoGCMBlockSize/8192-4    	  148916	      8033 ns/op	1019.83 MB/s
BenchmarkGoGCMBlockSize/16384-4   	   75337	     15911 ns/op	1029.75 MB/s
BenchmarkGoGCMBlockSize/32768-4   	   37912	     31651 ns/op	1035.30 MB/s
BenchmarkGoGCMBlockSize/65536-4   	   19000	     64287 ns/op	1019.43 MB/s
BenchmarkGoGCMBlockSize/131072-4  	    9225	    127636 ns/op	1026.92 MB/s
BenchmarkGoGCMBlockSize/262144-4  	    4752	    252300 ns/op	1039.02 MB/s
BenchmarkGoGCMBlockSize/524288-4  	    2377	    504612 ns/op	1038.99 MB/s
BenchmarkGoGCMBlockSize/1048576-4 	    1183	   1011637 ns/op	1036.51 MB/s
</content>
</entry>
<entry>
<title>speed: add per-blocksize GoGCM benchmarks</title>
<updated>2023-03-08T15:54:56+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2023-03-08T15:54:56+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=d74cf7c72337e7b6d4c57d357e855b19fe1f5c9a'/>
<id>urn:sha1:d74cf7c72337e7b6d4c57d357e855b19fe1f5c9a</id>
<content type='text'>
Only visible when you run "go test -bench" like this:

$ cd gocryptfs/internal/speed
$ go test -bench .

goos: linux
goarch: amd64
pkg: github.com/rfjakob/gocryptfs/v2/internal/speed
cpu: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz
BenchmarkStupidGCM-4              	  202352	      5937 ns/op	 689.96 MB/s
BenchmarkStupidGCMDecrypt-4       	  206023	      5782 ns/op	 708.38 MB/s
BenchmarkGoGCM-4                  	  291878	      4098 ns/op	 999.45 MB/s
BenchmarkGoGCMBlockSize/1024-4    	 1000000	      1151 ns/op	 889.88 MB/s
BenchmarkGoGCMBlockSize/2048-4    	  561182	      2134 ns/op	 959.60 MB/s
BenchmarkGoGCMBlockSize/4096-4    	  292057	      4101 ns/op	 998.87 MB/s
BenchmarkGoGCMBlockSize/8192-4    	  149216	      8031 ns/op	1020.09 MB/s
BenchmarkGoGCMBlockSize/16384-4   	   75361	     15917 ns/op	1029.34 MB/s
BenchmarkGoGCMBlockSize/32768-4   	   37916	     31649 ns/op	1035.35 MB/s
BenchmarkGoGCMBlockSize/65536-4   	   19005	     63117 ns/op	1038.33 MB/s
BenchmarkGoGCMBlockSize/131072-4  	    9498	    126166 ns/op	1038.89 MB/s
BenchmarkGoGCMBlockSize/262144-4  	    4755	    252149 ns/op	1039.64 MB/s
BenchmarkGoGCMBlockSize/524288-4  	    2377	    504108 ns/op	1040.03 MB/s
BenchmarkGoGCMBlockSize/1048576-4 	    1188	   1008675 ns/op	1039.56 MB/s
BenchmarkGoGCMDecrypt-4           	  294664	      4059 ns/op	1009.02 MB/s
BenchmarkAESSIV-4                 	   46498	     25432 ns/op	 161.05 MB/s
BenchmarkAESSIVDecrypt-4          	   46908	     25509 ns/op	 160.57 MB/s
BenchmarkXchacha-4                	  244473	      4894 ns/op	 836.97 MB/s
BenchmarkXchachaDecrypt-4         	  249710	      4798 ns/op	 853.75 MB/s
BenchmarkStupidXchacha-4          	  166988	      7101 ns/op	 576.79 MB/s
BenchmarkStupidXchachaDecrypt-4   	  163093	      7240 ns/op	 565.72 MB/s
BenchmarkStupidChacha-4           	  184172	      6527 ns/op	 627.58 MB/s
BenchmarkStupidChachaDecrypt-4    	  179796	      6659 ns/op	 615.11 MB/s
PASS
ok  	github.com/rfjakob/gocryptfs/v2/internal/speed	30.068s
</content>
</entry>
<entry>
<title>make format</title>
<updated>2022-12-29T14:00:37+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2022-12-29T14:00:24+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=856ccaac10579abda5620dfc86ad6031b1076a43'/>
<id>urn:sha1:856ccaac10579abda5620dfc86ad6031b1076a43</id>
<content type='text'>
Run "make format" using
go version go1.19.4 linux/amd64
</content>
</entry>
<entry>
<title>go.mod: fix jacobsa/crypto build on riscv64</title>
<updated>2022-12-21T17:38:11+00:00</updated>
<author>
<name>Christian Stewart</name>
</author>
<published>2022-06-25T21:57:38+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=7ee4c8e9c3b0fb630b48c5940a7faa220ef5e63a'/>
<id>urn:sha1:7ee4c8e9c3b0fb630b48c5940a7faa220ef5e63a</id>
<content type='text'>
Replace dependency jacobsa/crypto with a fork with support for riscv64.

Issue: https://github.com/rfjakob/gocryptfs/issues/666

Upstream PR: https://github.com/jacobsa/crypto/issues/13

Unaddressed on jacobsa/crypto:

https://github.com/jacobsa/crypto/pull/14#issuecomment-1182744229

Signed-off-by: Christian Stewart &lt;christian@paral.in&gt;
</content>
</entry>
</feed>
