aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2021-03-21 13:48:21 +0100
committerDmitry Vyukov <dvyukov@google.com>2021-03-21 14:40:30 +0100
commit4c9a64da22a10e84efd2aa1da9f2f76d97c0ae79 (patch)
treefe7cfdd2a62a47bed51f7b4cd5c12e96ceff2275 /sys
parent17810eaefa3a6802fa401bda89898b763680d1e4 (diff)
sys/linux: update crypto algorithms list
Add some arm/arm64 algs + some missing x86 algs.
Diffstat (limited to 'sys')
-rw-r--r--sys/linux/init_alg.go79
-rw-r--r--sys/linux/init_alg_test.go13
2 files changed, 76 insertions, 16 deletions
diff --git a/sys/linux/init_alg.go b/sys/linux/init_alg.go
index dc2906ef7..d0f0c4528 100644
--- a/sys/linux/init_alg.go
+++ b/sys/linux/init_alg.go
@@ -122,6 +122,10 @@ var allTypes = []algType{
{"rng", ALG_RNG},
}
+// Algorithms can be extracted with something along the following lines:
+// cat /proc/crypto | grep -B 8 ": skcipher" | grep -B 7 "internal : no" | egrep "name |driver " | \
+// cut -b 16- | sort | uniq | awk '{printf("{\"%s\", nil},\n", $1)}'
+// Note: the kernel needs to include all crypto configs and CPU needs to support AVX/NEON/etc.
var allAlgs = map[int][]algDesc{
ALG_AEAD: {
// templates:
@@ -190,26 +194,28 @@ var allAlgs = map[int][]algDesc{
// algorithms:
{"cbc(aes)", nil},
{"cbc(aes-aesni)", nil},
- {"cbc(blowfish)", nil},
- {"cbc(camellia)", nil},
- {"cbc(cast5)", nil},
- {"cbc(cast6)", nil},
- {"cbc(des3_ede)", nil},
- {"cbc(serpent)", nil},
- {"cbc(twofish)", nil},
{"cbc-aes-aesni", nil},
+ {"cbc(aes-arm)", nil},
+ {"cbc(aes-ce)", nil},
{"cbc-aes-ce", nil},
- {"cbc-aes-neon", nil},
+ {"cbc-aes-neonbs", nil},
+ {"cbc(blowfish)", nil},
{"cbc-blowfish-asm", nil},
+ {"cbc(camellia)", nil},
{"cbc-camellia-aesni", nil},
{"cbc-camellia-aesni-avx2", nil},
{"cbc-camellia-asm", nil},
+ {"cbc(cast5)", nil},
{"cbc-cast5-avx", nil},
+ {"cbc(cast6)", nil},
{"cbc-cast6-avx", nil},
+ {"cbc(des3_ede)", nil},
{"cbc-des3_ede-asm", nil},
+ {"cbc(serpent)", nil},
{"cbc-serpent-avx", nil},
{"cbc-serpent-avx2", nil},
{"cbc-serpent-sse2", nil},
+ {"cbc(twofish)", nil},
{"cbc-twofish-3way", nil},
{"cbc-twofish-avx", nil},
{"chacha20", nil},
@@ -230,6 +236,7 @@ var allAlgs = map[int][]algDesc{
{"ctr-aes-ce", nil},
{"ctr-aes-neon", nil},
{"ctr-aes-neonbs", nil},
+ {"ctr-aes-neonbs-sync", nil},
{"ctr-blowfish-asm", nil},
{"ctr-camellia-aesni", nil},
{"ctr-camellia-aesni-avx2", nil},
@@ -242,7 +249,14 @@ var allAlgs = map[int][]algDesc{
{"ctr-serpent-sse2", nil},
{"ctr-twofish-3way", nil},
{"ctr-twofish-avx", nil},
+ {"cts(cbc(aes))", nil},
+ {"cts-cbc-aes-aesni", nil},
+ {"cts-cbc-aes-ce", nil},
+ {"cts-cbc-aes-neon", nil},
{"ecb(aes)", nil},
+ {"ecb-aes-aesni", nil},
+ {"ecb-aes-ce", nil},
+ {"ecb-aes-neonbs", nil},
{"ecb(arc4)", nil},
{"ecb(arc4)-generic", nil},
{"ecb(blowfish)", nil},
@@ -253,8 +267,6 @@ var allAlgs = map[int][]algDesc{
{"ecb(des3_ede)", nil},
{"ecb(serpent)", nil},
{"ecb(twofish)", nil},
- {"ecb-aes-aesni", nil},
- {"ecb-aes-ce", nil},
{"ecb-aes-neon", nil},
{"ecb-blowfish-asm", nil},
{"ecb-camellia-aesni", nil},
@@ -290,6 +302,11 @@ var allAlgs = map[int][]algDesc{
{"salsa20", nil},
{"salsa20-asm", nil},
{"salsa20-generic", nil},
+ {"essiv(cbc(aes),sha256)", nil},
+ {"essiv-cbc-aes-sha256-ce", nil},
+ {"essiv-cbc-aes-sha256-neon", nil},
+ {"pcbc(fcrypt)", nil},
+ {"pcbc(fcrypt-generic)", nil},
{"xchacha12", nil},
{"xchacha12-arm", nil},
{"xchacha12-generic", nil},
@@ -307,6 +324,7 @@ var allAlgs = map[int][]algDesc{
{"xts(twofish)", nil},
{"xts-aes-aesni", nil},
{"xts-aes-ce", nil},
+ {"xts-aes-neonbs", nil},
{"xts-aes-neon", nil},
{"xts-camellia-aesni", nil},
{"xts-camellia-aesni-avx2", nil},
@@ -321,6 +339,7 @@ var allAlgs = map[int][]algDesc{
ALG_CIPHER: {
{"aes", nil},
{"aes-aesni", nil},
+ {"aes-arm", nil},
{"aes-arm64", nil},
{"aes-asm", nil},
{"aes-ce", nil},
@@ -342,11 +361,12 @@ var allAlgs = map[int][]algDesc{
{"cast6-generic", nil},
{"cipher_null", nil},
{"cipher_null-generic", nil},
+ {"compress_null-generic", nil},
{"des", nil},
- {"des-generic", nil},
{"des3_ede", nil},
{"des3_ede-asm", nil},
{"des3_ede-generic", nil},
+ {"des-generic", nil},
{"fcrypt", nil},
{"fcrypt-generic", nil},
{"khazad", nil},
@@ -391,37 +411,53 @@ var allAlgs = map[int][]algDesc{
{"blake2b-512", nil},
{"blake2b-512-generic", nil},
{"blake2s-128", nil},
+ {"blake2s-128-arm", nil},
{"blake2s-128-generic", nil},
{"blake2s-128-x86", nil},
{"blake2s-160", nil},
+ {"blake2s-160-arm", nil},
{"blake2s-160-generic", nil},
{"blake2s-160-x86", nil},
{"blake2s-224", nil},
+ {"blake2s-224-arm", nil},
{"blake2s-224-generic", nil},
{"blake2s-224-x86", nil},
{"blake2s-256", nil},
+ {"blake2s-256-arm", nil},
{"blake2s-256-generic", nil},
{"blake2s-256-x86", nil},
+ {"cbcmac(aes)", nil},
{"cbcmac-aes-ce", nil},
{"cbcmac-aes-neon", nil},
+ {"cmac(aes)", nil},
{"cmac-aes-ce", nil},
{"cmac-aes-neon", nil},
{"crc32", nil},
- {"crc32-generic", nil},
- {"crc32-pclmul", nil},
{"crc32c", nil},
{"crc32c-generic", nil},
{"crc32c-intel", nil},
+ {"crc32-generic", nil},
+ {"crc32-pclmul", nil},
{"crct10dif", nil},
{"crct10dif-arm64-ce", nil},
+ {"crct10dif-arm64-neon", nil},
{"crct10dif-generic", nil},
{"crct10dif-pclmul", nil},
{"digest_null", nil},
{"digest_null-generic", nil},
{"ghash", nil},
{"ghash-ce", nil},
+ {"ghash-ce-sync", nil},
{"ghash-clmulni", nil},
{"ghash-generic", nil},
+ {"hmac(sha1)", nil},
+ {"hmac(sha1-avx2)", nil},
+ {"hmac(sha1-ce)", nil},
+ {"hmac(sha1-neon)", nil},
+ {"hmac(sha256)", nil},
+ {"hmac(sha256-avx2)", nil},
+ {"hmac(sha256-ce)", nil},
+ {"hmac(sha256-neon)", nil},
{"md4", nil},
{"md4-generic", nil},
{"md5", nil},
@@ -447,32 +483,38 @@ var allAlgs = map[int][]algDesc{
{"rmd320", nil},
{"rmd320-generic", nil},
{"sha1", nil},
+ {"sha1-asm", nil},
{"sha1-avx", nil},
{"sha1-avx2", nil},
{"sha1-ce", nil},
{"sha1-generic", nil},
+ {"sha1_mb", nil},
+ {"sha1-neon", nil},
{"sha1-ni", nil},
{"sha1-ssse3", nil},
- {"sha1_mb", nil},
{"sha224", nil},
{"sha224-arm64", nil},
{"sha224-arm64-neon", nil},
+ {"sha224-asm", nil},
{"sha224-avx", nil},
{"sha224-avx2", nil},
{"sha224-ce", nil},
{"sha224-generic", nil},
+ {"sha224-neon", nil},
{"sha224-ni", nil},
{"sha224-ssse3", nil},
{"sha256", nil},
{"sha256-arm64", nil},
{"sha256-arm64-neon", nil},
+ {"sha256-asm", nil},
{"sha256-avx", nil},
{"sha256-avx2", nil},
{"sha256-ce", nil},
{"sha256-generic", nil},
+ {"sha256-mb", nil},
+ {"sha256-neon", nil},
{"sha256-ni", nil},
{"sha256-ssse3", nil},
- {"sha256_mb", nil},
{"sha3-224", nil},
{"sha3-224-ce", nil},
{"sha3-224-generic", nil},
@@ -486,20 +528,24 @@ var allAlgs = map[int][]algDesc{
{"sha3-512-ce", nil},
{"sha3-512-generic", nil},
{"sha384", nil},
+ {"sha384-arm", nil},
{"sha384-arm64", nil},
{"sha384-avx", nil},
{"sha384-avx2", nil},
{"sha384-ce", nil},
{"sha384-generic", nil},
+ {"sha384-neon", nil},
{"sha384-ssse3", nil},
{"sha512", nil},
+ {"sha512-arm", nil},
{"sha512-arm64", nil},
{"sha512-avx", nil},
{"sha512-avx2", nil},
{"sha512-ce", nil},
{"sha512-generic", nil},
- {"sha512-ssse3", nil},
{"sha512_mb", nil},
+ {"sha512-neon", nil},
+ {"sha512-ssse3", nil},
{"sm3", nil},
{"sm3-ce", nil},
{"sm3-generic", nil},
@@ -519,6 +565,7 @@ var allAlgs = map[int][]algDesc{
{"wp384-generic", nil},
{"wp512", nil},
{"wp512-generic", nil},
+ {"xcbc(aes)", nil},
{"xcbc-aes-ce", nil},
{"xcbc-aes-neon", nil},
{"xxhash64", nil},
diff --git a/sys/linux/init_alg_test.go b/sys/linux/init_alg_test.go
index 30dfaf7bd..c9ca5f40a 100644
--- a/sys/linux/init_alg_test.go
+++ b/sys/linux/init_alg_test.go
@@ -215,3 +215,16 @@ func testAlg(t *testing.T, typ, name string) (ok, skip bool) {
}
return true, false
}
+
+func TestAlgDups(t *testing.T) {
+ dups := make(map[string]bool)
+ for _, algs := range allAlgs {
+ for _, alg := range algs {
+ key := fmt.Sprintf("%v(%v)", alg.name, alg.args)
+ if dups[key] {
+ t.Errorf("duplicate alg: %+v", alg)
+ }
+ dups[key] = true
+ }
+ }
+}