summaryrefslogtreecommitdiffstats
path: root/crypto/drbg.c
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
commit8f7977284331d0b0f210efa98a5d3fdcb2a65dd3 (patch)
treedd5846abbb8c8aab2834c91604e2c75d329bed0f /crypto/drbg.c
parent95fe2253cc1ad65d7f140d1944fa1b5d3c67abc0 (diff)
downloadlinux-stable-8f7977284331d0b0f210efa98a5d3fdcb2a65dd3.tar.gz
linux-stable-8f7977284331d0b0f210efa98a5d3fdcb2a65dd3.tar.bz2
linux-stable-8f7977284331d0b0f210efa98a5d3fdcb2a65dd3.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>
Diffstat (limited to 'crypto/drbg.c')
-rw-r--r--crypto/drbg.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/crypto/drbg.c b/crypto/drbg.c
index 5977a72afb03..177983b6ae38 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);
/*