X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=apps%2Fgendh.c;h=f2542960bf28be2bb311a750fba474bd2490eb7d;hb=b7910992d83bffebbc68ac7c1406e2fbf91e2304;hp=5ad55dae5998142655db91476cf54f552c3981af;hpb=20d242b0dee75830b104109c6fd5955a4ce35840;p=oweals%2Fopenssl.git diff --git a/apps/gendh.c b/apps/gendh.c index 5ad55dae59..f2542960bf 100644 --- a/apps/gendh.c +++ b/apps/gendh.c @@ -57,7 +57,7 @@ * [including the GNU Public Licence.] */ -#ifndef NO_DH +#ifndef OPENSSL_NO_DH #include #include #include @@ -81,11 +81,13 @@ int MAIN(int, char **); int MAIN(int argc, char **argv) { + ENGINE *e = NULL; DH *dh=NULL; int ret=1,num=DEFBITS; int g=2; char *outfile=NULL; - char *inrand=NULL,*inegd=NULL; + char *inrand=NULL; + char *engine=NULL; BIO *out=NULL; apps_startup(); @@ -94,6 +96,9 @@ int MAIN(int argc, char **argv) if ((bio_err=BIO_new(BIO_s_file())) != NULL) BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT); + if (!load_config(bio_err, NULL)) + goto end; + argv++; argc--; for (;;) @@ -110,15 +115,15 @@ int MAIN(int argc, char **argv) g=3; */ else if (strcmp(*argv,"-5") == 0) g=5; - else if (strcmp(*argv,"-rand") == 0) + else if (strcmp(*argv,"-engine") == 0) { if (--argc < 1) goto bad; - inrand= *(++argv); + engine= *(++argv); } - else if (strcmp(*argv,"-egd") == 0) + else if (strcmp(*argv,"-rand") == 0) { if (--argc < 1) goto bad; - inegd= *(++argv); + inrand= *(++argv); } else break; @@ -133,13 +138,15 @@ bad: BIO_printf(bio_err," -2 - use 2 as the generator value\n"); /* BIO_printf(bio_err," -3 - use 3 as the generator value\n"); */ BIO_printf(bio_err," -5 - use 5 as the generator value\n"); + BIO_printf(bio_err," -engine e - use engine e, possibly a hardware device.\n"); BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR); BIO_printf(bio_err," - load the file (or the files in the directory) into\n"); BIO_printf(bio_err," the random number generator\n"); - BIO_printf(bio_err," -egd file - load random seed from EGD socket\n"); goto end; } + e = setup_engine(bio_err, engine, 0); + out=BIO_new(BIO_s_file()); if (out == NULL) { @@ -148,7 +155,15 @@ bad: } if (outfile == NULL) + { BIO_set_fp(out,stdout,BIO_NOCLOSE); +#ifdef OPENSSL_SYS_VMS + { + BIO *tmpbio = BIO_new(BIO_f_linebuffer()); + out = BIO_push(tmpbio, out); + } +#endif + } else { if (BIO_write_filename(out,outfile) <= 0) @@ -158,16 +173,13 @@ bad: } } - if (!app_RAND_load_file(NULL, bio_err, 1) && inrand == NULL && inegd == NULL) + if (!app_RAND_load_file(NULL, bio_err, 1) && inrand == NULL) { BIO_printf(bio_err,"warning, not much extra random data, consider using the -rand option\n"); } if (inrand != NULL) BIO_printf(bio_err,"%ld semi-random bytes loaded\n", app_RAND_load_files(inrand)); - if (inegd != NULL) - BIO_printf(bio_err,"%ld egd bytes loaded\n", - RAND_egd(inegd)); BIO_printf(bio_err,"Generating DH parameters, %d bit long safe prime, generator %d\n",num,g); BIO_printf(bio_err,"This is going to take a long time\n"); @@ -183,8 +195,9 @@ bad: end: if (ret != 0) ERR_print_errors(bio_err); - if (out != NULL) BIO_free(out); + if (out != NULL) BIO_free_all(out); if (dh != NULL) DH_free(dh); + apps_shutdown(); EXIT(ret); }