mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-14 09:37:46 -04:00
crypto: testmgr - replace CRYPTO_MANAGER_DISABLE_TESTS with CRYPTO_SELFTESTS
The negative-sense of CRYPTO_MANAGER_DISABLE_TESTS is a longstanding mistake that regularly causes confusion. Especially bad is that you can have CRYPTO=n && CRYPTO_MANAGER_DISABLE_TESTS=n, which is ambiguous. Replace CRYPTO_MANAGER_DISABLE_TESTS with CRYPTO_SELFTESTS which has the expected behavior. The tests continue to be disabled by default. Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
@@ -25,7 +25,7 @@ menu "Crypto core or helper"
|
||||
|
||||
config CRYPTO_FIPS
|
||||
bool "FIPS 200 compliance"
|
||||
depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && CRYPTO_SELFTESTS
|
||||
depends on (MODULE_SIG || !MODULES)
|
||||
help
|
||||
This option enables the fips boot option which is
|
||||
@@ -143,8 +143,8 @@ config CRYPTO_ACOMP
|
||||
|
||||
config CRYPTO_HKDF
|
||||
tristate
|
||||
select CRYPTO_SHA256 if !CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
|
||||
select CRYPTO_SHA512 if !CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
|
||||
select CRYPTO_SHA256 if CRYPTO_SELFTESTS
|
||||
select CRYPTO_SHA512 if CRYPTO_SELFTESTS
|
||||
select CRYPTO_HASH2
|
||||
|
||||
config CRYPTO_MANAGER
|
||||
@@ -173,16 +173,22 @@ config CRYPTO_USER
|
||||
Userspace configuration for cryptographic instantiations such as
|
||||
cbc(aes).
|
||||
|
||||
config CRYPTO_MANAGER_DISABLE_TESTS
|
||||
bool "Disable run-time self tests"
|
||||
default y
|
||||
config CRYPTO_SELFTESTS
|
||||
bool "Enable cryptographic self-tests"
|
||||
depends on DEBUG_KERNEL
|
||||
help
|
||||
Disable run-time self tests that normally take place at
|
||||
algorithm registration.
|
||||
Enable the cryptographic self-tests.
|
||||
|
||||
The cryptographic self-tests run at boot time, or at algorithm
|
||||
registration time if algorithms are dynamically loaded later.
|
||||
|
||||
This is primarily intended for developer use. It should not be
|
||||
enabled in production kernels, unless you are trying to use these
|
||||
tests to fulfill a FIPS testing requirement.
|
||||
|
||||
config CRYPTO_MANAGER_EXTRA_TESTS
|
||||
bool "Enable extra run-time crypto self tests"
|
||||
depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
|
||||
depends on DEBUG_KERNEL && CRYPTO_SELFTESTS && CRYPTO_MANAGER
|
||||
help
|
||||
Enable extra run-time self tests of registered crypto algorithms,
|
||||
including randomized fuzz tests.
|
||||
|
||||
@@ -275,7 +275,7 @@ static struct crypto_larval *crypto_alloc_test_larval(struct crypto_alg *alg)
|
||||
struct crypto_larval *larval;
|
||||
|
||||
if (!IS_ENABLED(CONFIG_CRYPTO_MANAGER) ||
|
||||
IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS) ||
|
||||
!IS_ENABLED(CONFIG_CRYPTO_SELFTESTS) ||
|
||||
(alg->cra_flags & CRYPTO_ALG_INTERNAL))
|
||||
return NULL; /* No self-test needed */
|
||||
|
||||
@@ -1059,7 +1059,7 @@ static void __init crypto_start_tests(void)
|
||||
if (!IS_BUILTIN(CONFIG_CRYPTO_ALGAPI))
|
||||
return;
|
||||
|
||||
if (IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS))
|
||||
if (!IS_ENABLED(CONFIG_CRYPTO_SELFTESTS))
|
||||
return;
|
||||
|
||||
set_crypto_boot_test_finished();
|
||||
|
||||
@@ -189,7 +189,7 @@ static int cryptomgr_schedule_test(struct crypto_alg *alg)
|
||||
struct task_struct *thread;
|
||||
struct crypto_test_param *param;
|
||||
|
||||
if (IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS))
|
||||
if (!IS_ENABLED(CONFIG_CRYPTO_SELFTESTS))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
if (!try_module_get(THIS_MODULE))
|
||||
|
||||
@@ -31,8 +31,7 @@ EXPORT_SYMBOL_GPL(crypto_alg_sem);
|
||||
BLOCKING_NOTIFIER_HEAD(crypto_chain);
|
||||
EXPORT_SYMBOL_GPL(crypto_chain);
|
||||
|
||||
#if IS_BUILTIN(CONFIG_CRYPTO_ALGAPI) && \
|
||||
!IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS)
|
||||
#if IS_BUILTIN(CONFIG_CRYPTO_ALGAPI) && IS_ENABLED(CONFIG_CRYPTO_SELFTESTS)
|
||||
DEFINE_STATIC_KEY_FALSE(__crypto_boot_test_finished);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -543,7 +543,7 @@ static int __init crypto_hkdf_module_init(void)
|
||||
{
|
||||
int ret = 0, i;
|
||||
|
||||
if (IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS))
|
||||
if (!IS_ENABLED(CONFIG_CRYPTO_SELFTESTS))
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(hkdf_sha256_tv); i++) {
|
||||
|
||||
@@ -67,8 +67,7 @@ extern struct blocking_notifier_head crypto_chain;
|
||||
|
||||
int alg_test(const char *driver, const char *alg, u32 type, u32 mask);
|
||||
|
||||
#if !IS_BUILTIN(CONFIG_CRYPTO_ALGAPI) || \
|
||||
IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS)
|
||||
#if !IS_BUILTIN(CONFIG_CRYPTO_ALGAPI) || !IS_ENABLED(CONFIG_CRYPTO_SELFTESTS)
|
||||
static inline bool crypto_boot_test_finished(void)
|
||||
{
|
||||
return true;
|
||||
@@ -87,7 +86,7 @@ static inline void set_crypto_boot_test_finished(void)
|
||||
static_branch_enable(&__crypto_boot_test_finished);
|
||||
}
|
||||
#endif /* !IS_BUILTIN(CONFIG_CRYPTO_ALGAPI) ||
|
||||
* IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS)
|
||||
* !IS_ENABLED(CONFIG_CRYPTO_SELFTESTS)
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
|
||||
@@ -127,7 +127,7 @@ static int __init crypto_kdf108_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS))
|
||||
if (!IS_ENABLED(CONFIG_CRYPTO_SELFTESTS))
|
||||
return 0;
|
||||
|
||||
ret = kdf_test(&kdf_ctr_hmac_sha256_tv_template[0], "hmac(sha256)",
|
||||
|
||||
@@ -55,7 +55,7 @@ module_param(fuzz_iterations, uint, 0644);
|
||||
MODULE_PARM_DESC(fuzz_iterations, "number of fuzz test iterations");
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
|
||||
#ifndef CONFIG_CRYPTO_SELFTESTS
|
||||
|
||||
/* a perfect nop */
|
||||
int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
|
||||
@@ -321,10 +321,10 @@ struct testvec_config {
|
||||
|
||||
/*
|
||||
* The following are the lists of testvec_configs to test for each algorithm
|
||||
* type when the basic crypto self-tests are enabled, i.e. when
|
||||
* CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is unset. They aim to provide good test
|
||||
* coverage, while keeping the test time much shorter than the full fuzz tests
|
||||
* so that the basic tests can be enabled in a wider range of circumstances.
|
||||
* type when the basic crypto self-tests are enabled. They aim to provide good
|
||||
* test coverage, while keeping the test time much shorter than the full fuzz
|
||||
* tests so that the basic tests can be enabled in a wider range of
|
||||
* circumstances.
|
||||
*/
|
||||
|
||||
/* Configs for skciphers and aeads */
|
||||
@@ -5899,6 +5899,6 @@ non_fips_alg:
|
||||
return alg_fips_disabled(driver, alg);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_CRYPTO_MANAGER_DISABLE_TESTS */
|
||||
#endif /* CONFIG_CRYPTO_SELFTESTS */
|
||||
|
||||
EXPORT_SYMBOL_GPL(alg_test);
|
||||
|
||||
Reference in New Issue
Block a user