access private functions though the RAND_METHOD switch, move global
egd function to rand-egd.c git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20030 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -151,7 +151,7 @@ egd_seed(const void *indata, int size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
_hc_rand_egd_bytes(const char *path, unsigned char *outdata, int size)
|
get_bytes(const char *path, unsigned char *outdata, int size)
|
||||||
{
|
{
|
||||||
size_t len;
|
size_t len;
|
||||||
int fd, ret = 1;
|
int fd, ret = 1;
|
||||||
@@ -181,7 +181,7 @@ _hc_rand_egd_bytes(const char *path, unsigned char *outdata, int size)
|
|||||||
static int
|
static int
|
||||||
egd_bytes(unsigned char *outdata, int size)
|
egd_bytes(unsigned char *outdata, int size)
|
||||||
{
|
{
|
||||||
return _hc_rand_egd_bytes(NULL, outdata, size);
|
return get_bytes(NULL, outdata, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -198,7 +198,7 @@ egd_add(const void *indata, int size, double entropi)
|
|||||||
static int
|
static int
|
||||||
egd_pseudorand(unsigned char *outdata, int size)
|
egd_pseudorand(unsigned char *outdata, int size)
|
||||||
{
|
{
|
||||||
return _hc_rand_egd_bytes(NULL, outdata, size);
|
return get_bytes(NULL, outdata, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@@ -226,3 +226,37 @@ RAND_egd_method(void)
|
|||||||
{
|
{
|
||||||
return &hc_rand_egd_method;
|
return &hc_rand_egd_method;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
RAND_egd(const char *filename)
|
||||||
|
{
|
||||||
|
return RAND_egd_bytes(filename, 128);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
RAND_egd_bytes(const char *filename, int size)
|
||||||
|
{
|
||||||
|
void *data;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (size <= 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
data = malloc(size);
|
||||||
|
if (data == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
ret = get_bytes(filename, data, size);
|
||||||
|
if (ret != 1) {
|
||||||
|
free(data);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
RAND_seed(data, size);
|
||||||
|
|
||||||
|
memset(data, 0, sizeof(data));
|
||||||
|
free(data);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user