In FIPS mode only use "Generation by Testing Candidates" equivalent.
This commit is contained in:
parent
16a7fcc447
commit
ed12c2f7ca
@ -247,7 +247,15 @@ static int bn_rand_range(int pseudo, BIGNUM *r, const BIGNUM *range)
|
|||||||
|
|
||||||
if (n == 1)
|
if (n == 1)
|
||||||
BN_zero(r);
|
BN_zero(r);
|
||||||
|
#ifdef OPENSSL_FIPS
|
||||||
|
/* FIPS 186-3 is picky about how random numbers for keys etc are
|
||||||
|
* generated. So we just use the second case which is equivalent to
|
||||||
|
* "Generation by Testing Candidates" mentioned in B.1.2 et al.
|
||||||
|
*/
|
||||||
|
else if (!FIPS_mode() && !BN_is_bit_set(range, n - 2) && !BN_is_bit_set(range, n - 3))
|
||||||
|
#else
|
||||||
else if (!BN_is_bit_set(range, n - 2) && !BN_is_bit_set(range, n - 3))
|
else if (!BN_is_bit_set(range, n - 2) && !BN_is_bit_set(range, n - 3))
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
/* range = 100..._2,
|
/* range = 100..._2,
|
||||||
* so 3*range (= 11..._2) is exactly one bit longer than range */
|
* so 3*range (= 11..._2) is exactly one bit longer than range */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user