Am Freitag, 3. Mai 2019, 03:42:41 CEST schrieb Herbert Xu:
Hi Herbert,
> On Thu, May 02, 2019 at 06:38:12PM +0200, Stephan Müller wrote:
> > +static int drbg_fips_continuous_test(struct drbg_state *drbg,
> > + const unsigned char *entropy)
> > +{
> > +#if IS_ENABLED(CONFIG_CRYPTO_FIPS)
>
> This should look like
>
> if (IS_ENABLED(CONFIG_CRYPTO_FIPS)) {
> ...
> } else {
> ...
> }
>
> This way the compiler will see everything regardless of whether
> FIPS is enabled or not.
>
> > diff --git a/include/crypto/drbg.h b/include/crypto/drbg.h
> > index 3fb581bf3b87..939051480c83 100644
> > --- a/include/crypto/drbg.h
> > +++ b/include/crypto/drbg.h
> > @@ -129,6 +129,10 @@ struct drbg_state {
> >
> > bool seeded; /* DRBG fully seeded? */
> > bool pr; /* Prediction resistance enabled? */
> >
> > +#if IS_ENABLED(CONFIG_CRYPTO_FIPS)
> > + bool fips_primed; /* Continuous test primed? */
> > + unsigned char *prev; /* FIPS 140-2 continuous test value */
> > +#endif
>
> You can still use #ifdef here.
The variables would need to be defined unconditionally if we use a runtime
check in the C code. Is that what you want me to do?
Ciao
Stephan