mirror-linux/include/crypto
Eric Biggers ac90aad0e9 crypto: testmgr - reinstate kconfig control over full self-tests
Commit 698de82278 ("crypto: testmgr - make it easier to enable the
full set of tests") removed support for building kernels that run only
the "fast" set of crypto self-tests by default.  This assumed that
nearly everyone actually wanted the full set of tests, *if* they had
already chosen to enable the tests at all.

Unfortunately, it turns out that both Debian and Fedora intentionally
have the crypto self-tests enabled in their production kernels.  And for
production kernels we do need to keep the testing time down, which
implies just running the "fast" tests, not the full set of tests.

For Fedora, a reason for enabling the tests in production is that they
are being (mis)used to meet the FIPS 140-3 pre-operational testing
requirement.

However, the other reason for enabling the tests in production, which
applies to both distros, is that they provide some value in protecting
users from buggy drivers.  Unfortunately, the crypto/ subsystem has many
buggy and untested drivers for off-CPU hardware accelerators on rare
platforms.  These broken drivers get shipped to users, and there have
been multiple examples of the tests preventing these buggy drivers from
being used.  So effectively, the tests are being relied on in production
kernels.  I think this is kind of crazy (untested drivers should just
not be enabled at all), but that seems to be how things work currently.

Thus, reintroduce a kconfig option that controls the level of testing.
Call it CRYPTO_SELFTESTS_FULL instead of the original name
CRYPTO_MANAGER_EXTRA_TESTS, which was slightly misleading.

Moreover, given the "production kernel" use case, make CRYPTO_SELFTESTS
depend on EXPERT instead of DEBUG_KERNEL.

I also haven't reinstated all the #ifdefs in crypto/testmgr.c.  Instead,
just rely on the compiler to optimize out unused code.

Fixes: 40b9969796 ("crypto: testmgr - replace CRYPTO_MANAGER_DISABLE_TESTS with CRYPTO_SELFTESTS")
Fixes: 698de82278 ("crypto: testmgr - make it easier to enable the full set of tests")
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2025-06-13 17:24:21 +08:00
..
internal crypto: testmgr - reinstate kconfig control over full self-tests 2025-06-13 17:24:21 +08:00
acompress.h crypto: acomp - Clone folios properly 2025-05-05 18:20:45 +08:00
aead.h crypto: remove CONFIG_CRYPTO_STATS 2024-04-02 10:49:38 +08:00
aes.h crypto: lib - implement library version of AES in CFB mode 2024-05-09 22:30:51 +03:00
akcipher.h crypto: akcipher - Drop sign/verify operations 2024-10-05 13:22:04 +08:00
algapi.h crypto: algapi - Add driver template support to crypto_inst_setname 2025-05-19 13:48:20 +08:00
arc4.h
aria.h crypto: Prepare to move crypto_tfm_ctx 2022-12-02 18:12:40 +08:00
authenc.h crypto: Add 'krb5enc' hash and cipher AEAD algorithm 2025-03-02 21:39:34 +00:00
b128ops.h cyrpto/b128ops: Remove struct u128 2023-06-05 09:36:35 +02:00
blake2b.h crypto: arm/blake2b - Use API partial block handling 2025-04-23 11:33:46 +08:00
blake2s.h lib/crypto: blake2s: move hmac construction into wireguard 2022-01-18 13:03:55 +01:00
blowfish.h
cast5.h
cast6.h crypto: remove CRYPTO_TFM_RES_BAD_KEY_LEN 2020-01-09 11:30:53 +08:00
cast_common.h
chacha.h crypto: lib/chacha - add array bounds to function prototypes 2025-05-12 13:32:53 +08:00
chacha20poly1305.h crypto: lib/chacha20poly1305 - Add missing function declaration 2020-07-16 21:49:04 +10:00
cryptd.h crypto: api - Replace kernel.h with the necessary inclusions 2021-12-17 16:59:48 +11:00
ctr.h crypto: ctr - Remove unnecessary header inclusions 2025-04-16 15:16:21 +08:00
curve25519.h crypto: lib/curve25519 - Move selftest prototype into header file 2020-11-20 14:45:33 +11:00
des.h
dh.h crypto: dh - split out deserialization code from crypto_dh_decode() 2022-03-03 10:47:50 +12:00
drbg.h crypto: drbg - reseed 'nopr' drbgs periodically from get_random_bytes() 2021-11-26 16:16:50 +11:00
ecc_curve.h crypto: ecc - Add nbits field to ecc_curve structure 2024-04-12 15:07:52 +08:00
ecdh.h crypto: ecc - Add NIST P521 curve parameters 2024-04-12 15:07:52 +08:00
engine.h crypto: engine - Make crypto_engine_exit() return void 2023-10-01 16:28:15 +08:00
gcm.h crypto: lib/aesgcm - Provide minimal library implementation 2022-11-11 18:14:59 +08:00
gf128mul.h crypto: lib/gf128mul - Remove some bbe deadcode 2024-12-21 22:46:24 +08:00
ghash.h crypto: riscv/ghash - Use API partial block handling 2025-04-23 11:33:47 +08:00
hash.h crypto: hmac - Add ahash support 2025-05-19 13:48:20 +08:00
hash_info.h crypto: FIPS 202 SHA-3 register in hash info for IMA 2023-10-27 18:04:30 +08:00
hkdf.h crypto,fs: Separate out hkdf_extract() and hkdf_expand() 2025-03-20 16:53:53 -07:00
hmac.h
if_alg.h net: change proto and proto_ops accept type 2024-05-13 18:19:09 -06:00
kdf_sp800108.h crypto: kdf - add SP800-108 counter key derivation function 2021-11-26 16:25:17 +11:00
kpp.h crypto: remove CONFIG_CRYPTO_STATS 2024-04-02 10:49:38 +08:00
krb5.h rxrpc: Add the security index for yfs-rxgk 2025-04-14 17:36:41 -07:00
md5.h crypto: md5-generic - Use API partial block handling 2025-04-23 11:33:47 +08:00
nhpoly1305.h crypto: poly1305 - add new 32 and 64-bit generic versions 2020-01-16 15:18:12 +08:00
null.h crypto: null - remove the default null skcipher 2025-05-12 13:32:53 +08:00
padlock.h
pcrypt.h crypto: api - Replace kernel.h with the necessary inclusions 2021-12-17 16:59:48 +11:00
pkcs7.h
poly1305.h crypto: lib/poly1305 - Use block-only interface 2025-05-05 13:33:02 +08:00
polyval.h crypto: polyval-generic - Use API partial block handling 2025-04-28 19:40:54 +08:00
public_key.h crypto: asymmetric_keys - Remove unused functions 2024-11-02 18:23:24 +08:00
rng.h crypto: rng - fix documentation for crypto_rng_alg() 2025-05-05 18:20:45 +08:00
scatterwalk.h crypto: scatterwalk - Move skcipher walk and use it for memcpy_sglist 2025-04-28 19:45:26 +08:00
serpent.h
sha1.h crypto: sha1-generic - Use API partial block handling 2025-04-23 11:33:47 +08:00
sha1_base.h crypto: sha1_base - Remove partial block helpers 2025-04-23 11:33:48 +08:00
sha2.h crypto: sha256 - Use the partial block API for generic 2025-05-05 18:20:45 +08:00
sha3.h crypto: zynqmp-sha - Fix partial block implementation 2025-05-05 18:20:46 +08:00
sha512_base.h crypto: sha512_base - Remove partial block helpers 2025-04-23 15:52:47 +08:00
sig.h crypto: ecdsa - Fix NIST P521 key size reported by KEYCTL_PKEY_QUERY 2025-04-16 15:16:21 +08:00
skcipher.h crypto: skcipher - Set tfm in SYNC_SKCIPHER_REQUEST_ON_STACK 2025-02-22 15:56:03 +08:00
sm3.h crypto: lib/sm3 - Remove partial block helpers 2025-04-23 15:52:47 +08:00
sm3_base.h crypto: lib/sm3 - Remove partial block helpers 2025-04-23 15:52:47 +08:00
sm4.h crypto: sm4 - export sm4 constant arrays 2022-04-08 16:12:46 +08:00
streebog.h crypto: streebog - Use API partial block handling 2025-05-05 18:20:44 +08:00
twofish.h crypto: remove CRYPTO_TFM_RES_BAD_KEY_LEN 2020-01-09 11:30:53 +08:00
utils.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
xts.h crypto: xts - drop xts_check_key() 2023-01-06 17:15:47 +08:00