From 1a5866729387c09eca1cdc9737d1b02c74c25901 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Wed, 8 Sep 2021 19:48:13 +0200 Subject: stupidgcm: add PreferOpenSSL{AES256GCM,Xchacha20poly1305} Add PreferOpenSSLXchacha20poly1305, rename PreferOpenSSL -> PreferOpenSSLAES256GCM. --- internal/speed/speed.go | 4 ++-- internal/stupidgcm/prefer.go | 20 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) (limited to 'internal') diff --git a/internal/speed/speed.go b/internal/speed/speed.go index 2f818d0..d5aa696 100644 --- a/internal/speed/speed.go +++ b/internal/speed/speed.go @@ -32,8 +32,8 @@ func Run() { f func(*testing.B) preferred bool }{ - {name: cryptocore.BackendOpenSSL.Name, f: bStupidGCM, preferred: stupidgcm.PreferOpenSSL()}, - {name: cryptocore.BackendGoGCM.Name, f: bGoGCM, preferred: !stupidgcm.PreferOpenSSL()}, + {name: cryptocore.BackendOpenSSL.Name, f: bStupidGCM, preferred: stupidgcm.PreferOpenSSLAES256GCM()}, + {name: cryptocore.BackendGoGCM.Name, f: bGoGCM, preferred: !stupidgcm.PreferOpenSSLAES256GCM()}, {name: cryptocore.BackendAESSIV.Name, f: bAESSIV, preferred: false}, {name: cryptocore.BackendXChaCha20Poly1305.Name, f: bXchacha20poly1305, preferred: false}, {name: cryptocore.BackendXChaCha20Poly1305OpenSSL.Name, f: bStupidXchacha, preferred: false}, diff --git a/internal/stupidgcm/prefer.go b/internal/stupidgcm/prefer.go index bacd56a..ffbaf58 100644 --- a/internal/stupidgcm/prefer.go +++ b/internal/stupidgcm/prefer.go @@ -6,7 +6,8 @@ import ( "golang.org/x/sys/cpu" ) -// PreferOpenSSL tells us if OpenSSL is faster than Go GCM on this machine. +// PreferOpenSSLAES256GCM tells us if OpenSSL AES-256-GCM is faster than Go stdlib +// on this machine. // // Go GCM is only faster if the CPU either: // @@ -16,7 +17,7 @@ import ( // // See https://github.com/rfjakob/gocryptfs/wiki/CPU-Benchmarks // for benchmarks. -func PreferOpenSSL() bool { +func PreferOpenSSLAES256GCM() bool { if BuiltWithoutOpenssl { return false } @@ -33,3 +34,18 @@ func PreferOpenSSL() bool { // OpenSSL is probably faster return true } + +// PreferOpenSSLXchacha20poly1305 returns true if OpenSSL Xchacha20poly1305 is +// faster than Go stdlib on this machine. +func PreferOpenSSLXchacha20poly1305() bool { + if BuiltWithoutOpenssl { + return false + } + // Go x/crypto has optimized assembly for amd64: + // https://github.com/golang/crypto/blob/master/chacha20poly1305/chacha20poly1305_amd64.s + if runtime.GOARCH == "amd64" { + return false + } + // On arm64 and arm, OpenSSL is faster. Probably everwhere else too. + return true +} -- cgit v1.2.3