#include <stdio.h>
#include <time.h>
#include <openssl/rand.h>
-#include <openssl/engine.h>
-static ENGINE *rand_engine=NULL;
+#ifdef NO_RAND
+static RAND_METHOD *rand_meth=NULL;
+#else
+extern RAND_METHOD rand_ssleay_meth;
+static RAND_METHOD *rand_meth= &rand_ssleay_meth;
+#endif
-#if 0
void RAND_set_rand_method(RAND_METHOD *meth)
{
rand_meth=meth;
}
-#else
-int RAND_set_rand_method(ENGINE *engine)
- {
- ENGINE *mtmp;
- mtmp = rand_engine;
- if (!ENGINE_init(engine))
- return 0;
- rand_engine = engine;
- /* SHOULD ERROR CHECK THIS!!! */
- ENGINE_finish(mtmp);
- return 1;
- }
-#endif
RAND_METHOD *RAND_get_rand_method(void)
{
- if (rand_engine == NULL
- && (rand_engine = ENGINE_get_default_RAND()) == NULL)
- return NULL;
- return ENGINE_get_RAND(rand_engine);
+ return(rand_meth);
}
void RAND_cleanup(void)
{
- RAND_METHOD *meth = RAND_get_rand_method();
- if (meth && meth->cleanup)
- meth->cleanup();
+ if (rand_meth != NULL)
+ rand_meth->cleanup();
}
void RAND_seed(const void *buf, int num)
{
- RAND_METHOD *meth = RAND_get_rand_method();
- if (meth && meth->seed)
- meth->seed(buf,num);
+ if (rand_meth != NULL)
+ rand_meth->seed(buf,num);
}
void RAND_add(const void *buf, int num, double entropy)
{
- RAND_METHOD *meth = RAND_get_rand_method();
- if (meth && meth->add)
- meth->add(buf,num,entropy);
+ if (rand_meth != NULL)
+ rand_meth->add(buf,num,entropy);
}
int RAND_bytes(unsigned char *buf, int num)
{
- RAND_METHOD *meth = RAND_get_rand_method();
- if (meth && meth->bytes)
- return meth->bytes(buf,num);
+ if (rand_meth != NULL)
+ return rand_meth->bytes(buf,num);
return(-1);
}
int RAND_pseudo_bytes(unsigned char *buf, int num)
{
- RAND_METHOD *meth = RAND_get_rand_method();
- if (meth && meth->pseudorand)
- return meth->pseudorand(buf,num);
+ if (rand_meth != NULL)
+ return rand_meth->pseudorand(buf,num);
return(-1);
}
int RAND_status(void)
{
- RAND_METHOD *meth = RAND_get_rand_method();
- if (meth && meth->status)
- return meth->status();
+ if (rand_meth != NULL)
+ return rand_meth->status();
return 0;
}