Commit 68ea88b8 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

New function to return security strength of PRNG.

parent 31360957
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -114,6 +114,8 @@ const RAND_METHOD *FIPS_drbg_method(void);

int FIPS_rand_set_method(const RAND_METHOD *meth);

int FIPS_rand_strength(void);

#ifdef  __cplusplus
}
#endif
+22 −0
Original line number Diff line number Diff line
@@ -138,3 +138,25 @@ int FIPS_rand_status(void)
		return fips_rand_meth->status();
	return 0;
	}

/* Return instantiated strength of PRNG. For DRBG this is an internal
 * parameter. For X9.31 PRNG it is 80 bits (from SP800-131). Any other
 * type of PRNG is not approved and returns 0 in FIPS mode and maximum
 * 256 outside FIPS mode.
 */

int FIPS_rand_strength(void)
	{
	if (fips_approved_rand_meth == 1)
		return FIPS_drbg_get_strength(FIPS_get_default_drbg());
	else if (fips_approved_rand_meth == 2)
		return 80;
	else if (fips_approved_rand_meth == 0)
		{
		if (FIPS_mode())
			return 0;
		else
			return 256;
		}
	return 0;
	}