From 4ec2d4d2b3a8cba1fdc656acd6b19d003191d779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulf=20M=C3=B6ller?= Date: Thu, 24 Feb 2000 02:51:47 +0000 Subject: Support EGD. --- apps/app_rand.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'apps/app_rand.c') diff --git a/apps/app_rand.c b/apps/app_rand.c index b94c853..ea35bf9 100644 --- a/apps/app_rand.c +++ b/apps/app_rand.c @@ -115,6 +115,7 @@ static int seeded = 0; +static int egdsocket = 0; int app_RAND_load_file(const char *file, BIO *bio_e, int dont_warn) { @@ -130,12 +131,19 @@ int app_RAND_load_file(const char *file, BIO *bio_e, int dont_warn) if (file == NULL) file = RAND_file_name(buffer, sizeof buffer); + else if (RAND_egd(file) > 0) + { + /* we try if the given filename is an EGD socket. + if it is, we don't write anything back to the file. */ + egdsocket = 1; + return 1; + } if (file == NULL || !RAND_load_file(file, -1)) { - if (!dont_warn) + if (RAND_status() == 0 && !dont_warn) { BIO_printf(bio_e,"unable to load 'random state'\n"); - BIO_printf(bio_e,"What this means is that the random number generator has not been seeded\n"); + BIO_printf(bio_e,"This means that the random number generator has not been seeded\n"); BIO_printf(bio_e,"with much random data.\n"); if (consider_randfile) /* explanation does not apply when a file is explicitly named */ { @@ -165,6 +173,7 @@ long app_RAND_load_files(char *name) name=p+1; if (*n == '\0') break; + tot+=RAND_egd(n); tot+=RAND_load_file(n,1024L*1024L); if (last) break; } @@ -177,7 +186,7 @@ int app_RAND_write_file(const char *file, BIO *bio_e) { char buffer[200]; - if (!seeded) + if (egdsocket || !seeded) /* If we did not manage to read the seed file, * we should not write a low-entropy seed file back -- * it would suppress a crucial warning the next time -- cgit v1.1