61
61
#include "cryptlib.h"
62
62
#include <openssl/rand.h>
65
#include <openssl/fips.h>
66
#include <openssl/fips_rand.h>
63
69
#ifndef OPENSSL_NO_ENGINE
64
70
#include <openssl/engine.h>
73
static const RAND_METHOD *default_RAND_meth = NULL;
77
static int fips_RAND_set_rand_method(const RAND_METHOD *meth,
78
const RAND_METHOD **pmeth)
84
static const RAND_METHOD *fips_RAND_get_rand_method(const RAND_METHOD **pmeth)
89
*pmeth=FIPS_rand_method();
91
*pmeth = RAND_SSLeay();
95
&& *pmeth != FIPS_rand_check())
97
RANDerr(RAND_F_FIPS_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD);
104
static int (*RAND_set_rand_method_func)(const RAND_METHOD *meth,
105
const RAND_METHOD **pmeth)
106
= fips_RAND_set_rand_method;
107
static const RAND_METHOD *(*RAND_get_rand_method_func)
108
(const RAND_METHOD **pmeth)
109
= fips_RAND_get_rand_method;
111
#ifndef OPENSSL_NO_ENGINE
112
void int_RAND_set_callbacks(
113
int (*set_rand_func)(const RAND_METHOD *meth,
114
const RAND_METHOD **pmeth),
115
const RAND_METHOD *(*get_rand_func)
116
(const RAND_METHOD **pmeth))
118
RAND_set_rand_method_func = set_rand_func;
119
RAND_get_rand_method_func = get_rand_func;
123
int RAND_set_rand_method(const RAND_METHOD *meth)
125
return RAND_set_rand_method_func(meth, &default_RAND_meth);
128
const RAND_METHOD *RAND_get_rand_method(void)
130
return RAND_get_rand_method_func(&default_RAND_meth);
67
135
#ifndef OPENSSL_NO_ENGINE
68
136
/* non-NULL if default_RAND_meth is ENGINE-provided */
69
137
static ENGINE *funct_ref =NULL;
71
static const RAND_METHOD *default_RAND_meth = NULL;
73
140
int RAND_set_rand_method(const RAND_METHOD *meth)