summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolai Stange <nstange@suse.de>2021-11-30 15:10:07 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2021-12-11 16:48:06 +1100
commit32bc8c28369c10ec61e86a025b35aaeebbd7b2b3 (patch)
treec5325739708ed68f22b53d27b34162cb59b4ada9
parent2ee55aa7c24e076d3f086e66ee9b652201786e43 (diff)
downloadlinux-crypto-32bc8c28369c10ec61e86a025b35aaeebbd7b2b3.tar.gz
linux-crypto-32bc8c28369c10ec61e86a025b35aaeebbd7b2b3.zip
crypto: drbg - ignore jitterentropy errors if not in FIPS mode
A subsequent patch will make the jitterentropy RNG to unconditionally report health test errors back to callers, independent of whether fips_enabled is set or not. The DRBG needs access to a functional jitterentropy instance only in FIPS mode (because it's the only SP800-90B compliant entropy source as it currently stands). Thus, it is perfectly fine for the DRBGs to obtain entropy from the jitterentropy source only on a best effort basis if fips_enabled is off. Make the DRBGs to ignore jitterentropy failures if fips_enabled is not set. Signed-off-by: Nicolai Stange <nstange@suse.de> Reviewed-by: Stephan Mueller <smueller@chronox.de> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--crypto/drbg.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/crypto/drbg.c b/crypto/drbg.c
index 5977a72a..177983b6 100644
--- a/crypto/drbg.c
+++ b/crypto/drbg.c
@@ -1193,11 +1193,14 @@ static int drbg_seed(struct drbg_state *drbg, struct drbg_string *pers,
pr_devel("DRBG: (re)seeding with %u bytes of entropy\n",
entropylen);
} else {
- /* Get seed from Jitter RNG */
+ /*
+ * Get seed from Jitter RNG, failures are
+ * fatal only in FIPS mode.
+ */
ret = crypto_rng_get_bytes(drbg->jent,
entropy + entropylen,
entropylen);
- if (ret) {
+ if (fips_enabled && ret) {
pr_devel("DRBG: jent failed with %d\n", ret);
/*