summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorStephan Mueller <smueller@chronox.de>2019-05-08 17:19:24 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-06-25 12:49:12 +0300
commit667b23513ecdd811db8837c406e6292e6f9487ac (patch)
treee33ba7122b8e4b6a1547e11ef4c5f999ec51fff1 /include
parent66f1abda14a6789348cb9f5f676ae59e2de78ebd (diff)
downloadlinux-667b23513ecdd811db8837c406e6292e6f9487ac.tar.xz
crypto: drbg - add FIPS 140-2 CTRNG for noise source
commit db07cd26ac6a418dc2823187958edcfdb415fa83 upstream. FIPS 140-2 section 4.9.2 requires a continuous self test of the noise source. Up to kernel 4.8 drivers/char/random.c provided this continuous self test. Afterwards it was moved to a location that is inconsistent with the FIPS 140-2 requirements. The relevant patch was e192be9d9a30555aae2ca1dc3aad37cba484cd4a . Thus, the FIPS 140-2 CTRNG is added to the DRBG when it obtains the seed. This patch resurrects the function drbg_fips_continous_test that existed some time ago and applies it to the noise sources. The patch that removed the drbg_fips_continous_test was b3614763059b82c26bdd02ffcb1c016c1132aad0 . The Jitter RNG implements its own FIPS 140-2 self test and thus does not need to be subjected to the test in the DRBG. The patch contains a tiny fix to ensure proper zeroization in case of an error during the Jitter RNG data gathering. Signed-off-by: Stephan Mueller <smueller@chronox.de> Reviewed-by: Yann Droneaud <ydroneaud@opteya.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/crypto/drbg.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/crypto/drbg.h b/include/crypto/drbg.h
index c027a1f7d013..97b386c1fcc9 100644
--- a/include/crypto/drbg.h
+++ b/include/crypto/drbg.h
@@ -129,6 +129,8 @@ struct drbg_state {
bool seeded; /* DRBG fully seeded? */
bool pr; /* Prediction resistance enabled? */
+ bool fips_primed; /* Continuous test primed? */
+ unsigned char *prev; /* FIPS 140-2 continuous test value */
struct work_struct seed_work; /* asynchronous seeding support */
struct crypto_rng *jent;
const struct drbg_state_ops *d_ops;