Set rand method in FIPS_mode_set() not in rand library.
This commit is contained in:
@@ -58,6 +58,8 @@
|
|||||||
#include "cryptlib.h"
|
#include "cryptlib.h"
|
||||||
#ifdef OPENSSL_FIPS
|
#ifdef OPENSSL_FIPS
|
||||||
#include <openssl/fips.h>
|
#include <openssl/fips.h>
|
||||||
|
#include <openssl/fips_rand.h>
|
||||||
|
#include <openssl/rand.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int FIPS_mode(void)
|
int FIPS_mode(void)
|
||||||
@@ -71,8 +73,15 @@ int FIPS_mode(void)
|
|||||||
|
|
||||||
int FIPS_mode_set(int r)
|
int FIPS_mode_set(int r)
|
||||||
{
|
{
|
||||||
|
OPENSSL_init();
|
||||||
#ifdef OPENSSL_FIPS
|
#ifdef OPENSSL_FIPS
|
||||||
return FIPS_module_mode_set(r);
|
if (!FIPS_module_mode_set(r))
|
||||||
|
return 0;
|
||||||
|
if (r)
|
||||||
|
RAND_set_rand_method(FIPS_rand_get_method());
|
||||||
|
else
|
||||||
|
RAND_set_rand_method(NULL);
|
||||||
|
return 1;
|
||||||
#else
|
#else
|
||||||
if (r == 0)
|
if (r == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@@ -111,18 +111,6 @@ const RAND_METHOD *RAND_get_rand_method(void)
|
|||||||
if(e)
|
if(e)
|
||||||
funct_ref = e;
|
funct_ref = e;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
#ifdef OPENSSL_FIPS
|
|
||||||
if (FIPS_mode())
|
|
||||||
{
|
|
||||||
default_RAND_meth = FIPS_rand_get_method();
|
|
||||||
if (default_RAND_meth == NULL)
|
|
||||||
{
|
|
||||||
RANDerr(RAND_F_RAND_GET_RAND_METHOD,
|
|
||||||
RAND_R_NO_FIPS_RANDOM_METHOD_SET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
default_RAND_meth = RAND_SSLeay();
|
default_RAND_meth = RAND_SSLeay();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user