summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorJakob Unterwurzacher2021-09-28 17:45:26 +0200
committerJakob Unterwurzacher2021-09-28 18:09:31 +0200
commitdb1824a23ac8e47cda714796e55cf6927b0cbecc (patch)
tree3dbcc824133c49351a14368aaaf030e1b987b4a9 /internal
parent5e67e183c08a19652480dce375f3178f0b9e16c9 (diff)
cryptocore: disentangle algorithm / library implementation name
Used in gocryptfs-xray, and will also be used in -info.
Diffstat (limited to 'internal')
-rw-r--r--internal/cryptocore/cryptocore.go24
-rw-r--r--internal/speed/speed.go10
2 files changed, 21 insertions, 13 deletions
diff --git a/internal/cryptocore/cryptocore.go b/internal/cryptocore/cryptocore.go
index 48386f8..36c9d93 100644
--- a/internal/cryptocore/cryptocore.go
+++ b/internal/cryptocore/cryptocore.go
@@ -28,28 +28,36 @@ const (
// AEADTypeEnum indicates the type of AEAD backend in use.
type AEADTypeEnum struct {
- Name string
+ // Algo is the encryption algorithm. Example: "AES-GCM-256"
+ Algo string
+ // Lib is the library where Algo is implemented. Either "Go" or "OpenSSL".
+ Lib string
NonceSize int
}
+// String returns something like "AES-GCM-256-OpenSSL"
+func (a AEADTypeEnum) String() string {
+ return a.Algo + "-" + a.Lib
+}
+
// BackendOpenSSL specifies the OpenSSL AES-256-GCM backend.
// "AES-GCM-256-OpenSSL" in gocryptfs -speed.
-var BackendOpenSSL AEADTypeEnum = AEADTypeEnum{"AES-GCM-256-OpenSSL", 16}
+var BackendOpenSSL AEADTypeEnum = AEADTypeEnum{"AES-GCM-256", "OpenSSL", 16}
// BackendGoGCM specifies the Go based AES-256-GCM backend.
// "AES-GCM-256-Go" in gocryptfs -speed.
-var BackendGoGCM AEADTypeEnum = AEADTypeEnum{"AES-GCM-256-Go", 16}
+var BackendGoGCM AEADTypeEnum = AEADTypeEnum{"AES-GCM-256", "Go", 16}
// BackendAESSIV specifies an AESSIV backend.
// "AES-SIV-512-Go" in gocryptfs -speed.
-var BackendAESSIV AEADTypeEnum = AEADTypeEnum{"AES-SIV-512-Go", siv_aead.NonceSize}
+var BackendAESSIV AEADTypeEnum = AEADTypeEnum{"AES-SIV-512", "Go", siv_aead.NonceSize}
// BackendXChaCha20Poly1305 specifies XChaCha20-Poly1305-Go.
// "XChaCha20-Poly1305-Go" in gocryptfs -speed.
-var BackendXChaCha20Poly1305 AEADTypeEnum = AEADTypeEnum{"XChaCha20-Poly1305-Go", chacha20poly1305.NonceSizeX}
+var BackendXChaCha20Poly1305 AEADTypeEnum = AEADTypeEnum{"XChaCha20-Poly1305", "Go", chacha20poly1305.NonceSizeX}
// BackendXChaCha20Poly1305OpenSSL specifies XChaCha20-Poly1305-OpenSSL.
-var BackendXChaCha20Poly1305OpenSSL AEADTypeEnum = AEADTypeEnum{"XChaCha20-Poly1305-OpenSSL", chacha20poly1305.NonceSizeX}
+var BackendXChaCha20Poly1305OpenSSL AEADTypeEnum = AEADTypeEnum{"XChaCha20-Poly1305", "OpenSSL", chacha20poly1305.NonceSizeX}
// CryptoCore is the low level crypto implementation.
type CryptoCore struct {
@@ -176,7 +184,7 @@ func New(key []byte, aeadType AEADTypeEnum, IVBitLen int, useHKDF bool) *CryptoC
log.Panic(err)
}
} else {
- log.Panicf("unknown cipher backend %q", aeadType.Name)
+ log.Panicf("unknown cipher backend %q", aeadType)
}
if aeadCipher.NonceSize()*8 != IVBitLen {
@@ -205,7 +213,7 @@ type wiper interface {
func (c *CryptoCore) Wipe() {
be := c.AEADBackend
if be == BackendOpenSSL || be == BackendAESSIV {
- tlog.Debug.Printf("CryptoCore.Wipe: Wiping AEADBackend %s key", be.Name)
+ tlog.Debug.Printf("CryptoCore.Wipe: Wiping AEADBackend %q key", be)
// We don't use "x, ok :=" because we *want* to crash loudly if the
// type assertion fails.
w := c.AEADCipher.(wiper)
diff --git a/internal/speed/speed.go b/internal/speed/speed.go
index 0b1a51a..aef3ad6 100644
--- a/internal/speed/speed.go
+++ b/internal/speed/speed.go
@@ -42,11 +42,11 @@ func Run() {
f func(*testing.B)
preferred bool
}{
- {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.BackendXChaCha20Poly1305OpenSSL.Name, f: bStupidXchacha, preferred: stupidgcm.PreferOpenSSLXchacha20poly1305()},
- {name: cryptocore.BackendXChaCha20Poly1305.Name, f: bXchacha20poly1305, preferred: !stupidgcm.PreferOpenSSLXchacha20poly1305()},
+ {name: cryptocore.BackendOpenSSL.String(), f: bStupidGCM, preferred: stupidgcm.PreferOpenSSLAES256GCM()},
+ {name: cryptocore.BackendGoGCM.String(), f: bGoGCM, preferred: !stupidgcm.PreferOpenSSLAES256GCM()},
+ {name: cryptocore.BackendAESSIV.String(), f: bAESSIV, preferred: false},
+ {name: cryptocore.BackendXChaCha20Poly1305OpenSSL.String(), f: bStupidXchacha, preferred: stupidgcm.PreferOpenSSLXchacha20poly1305()},
+ {name: cryptocore.BackendXChaCha20Poly1305.String(), f: bXchacha20poly1305, preferred: !stupidgcm.PreferOpenSSLXchacha20poly1305()},
}
for _, b := range bTable {
fmt.Printf("%-26s\t", b.name)