crypto: s390 - add crypto library interface for ChaCha20
authorVladis Dronov <vdronov@redhat.com>
Sun, 8 May 2022 13:09:44 +0000 (15:09 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 13 May 2022 09:24:49 +0000 (17:24 +0800)
commit349d03ffd5f62c298fd667ffa397c3fdc5c6194b
treefe1872ab1aa78cdcb013cbd5ea97331a89a1f5c4
parent6ae7a8b193d353fe3a2a371b61ec4c8ecfcbb0a1
crypto: s390 - add crypto library interface for ChaCha20

Implement a crypto library interface for the s390-native ChaCha20 cipher
algorithm. This allows us to stop to select CRYPTO_CHACHA20 and instead
select CRYPTO_ARCH_HAVE_LIB_CHACHA. This allows BIG_KEYS=y not to build
a whole ChaCha20 crypto infrastructure as a built-in, but build a smaller
CRYPTO_LIB_CHACHA instead.

Make CRYPTO_CHACHA_S390 config entry to look like similar ones on other
architectures. Remove CRYPTO_ALGAPI select as anyway it is selected by
CRYPTO_SKCIPHER.

Add a new test module and a test script for ChaCha20 cipher and its
interfaces. Here are test results on an idle z15 machine:

Data | Generic crypto TFM |  s390 crypto TFM |    s390 lib
size |      enc      dec  |     enc     dec  |     enc     dec
-----+--------------------+------------------+----------------
512b |   1545ns   1295ns  |   604ns   446ns  |   430ns  407ns
4k   |   9536ns   9463ns  |  2329ns  2174ns  |  2170ns  2154ns
64k  |  149.6us  149.3us  |  34.4us  34.5us  |  33.9us  33.1us
6M   |  23.61ms  23.11ms  |  4223us  4160us  |  3951us  4008us
60M  |  143.9ms  143.9ms  |  33.5ms  33.2ms  |  32.2ms  32.1ms

Signed-off-by: Vladis Dronov <vdronov@redhat.com>
Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/s390/crypto/chacha-glue.c
drivers/crypto/Kconfig
tools/testing/crypto/chacha20-s390/Makefile [new file with mode: 0644]
tools/testing/crypto/chacha20-s390/run-tests.sh [new file with mode: 0644]
tools/testing/crypto/chacha20-s390/test-cipher.c [new file with mode: 0644]