summaryrefslogtreecommitdiff
path: root/internal/stupidgcm/prefer.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/stupidgcm/prefer.go')
-rw-r--r--internal/stupidgcm/prefer.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/internal/stupidgcm/prefer.go b/internal/stupidgcm/prefer.go
new file mode 100644
index 0000000..a08d154
--- /dev/null
+++ b/internal/stupidgcm/prefer.go
@@ -0,0 +1,26 @@
+package stupidgcm
+
+import (
+ "golang.org/x/sys/cpu"
+)
+
+// PreferOpenSSL tells us if OpenSSL is faster than Go GCM on this machine.
+//
+// Go GCM is only faster if the CPU:
+//
+// 1) Is X86
+// 2) Has AES instructions
+// 3) Go is v1.6 or higher
+//
+// See https://github.com/rfjakob/gocryptfs/wiki/CPU-Benchmarks
+// for benchmarks.
+func PreferOpenSSL() bool {
+ if BuiltWithoutOpenssl {
+ return false
+ }
+ // Safe to call on other architectures - will just read false.
+ if cpu.X86.HasAES {
+ return false
+ }
+ return true
+}