X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=apps%2Fgendh.c;h=ec6842528a5517c6d8b9538bb3a862aaf69dfaa7;hp=b90087493a53b765c5818926ef5b3c8989e74a84;hb=6d23cf97443bfedf755341b4f2d0d7fce254e020;hpb=0b13e9f055d3f7be066dc2e89fc9f9822b12eca7 diff --git a/apps/gendh.c b/apps/gendh.c index b90087493a..ec6842528a 100644 --- a/apps/gendh.c +++ b/apps/gendh.c @@ -57,11 +57,7 @@ * [including the GNU Public Licence.] */ -/* Until the key-gen callbacks are modified to use newer prototypes, we allow - * deprecated functions for openssl-internal code */ -#ifdef OPENSSL_NO_DEPRECATED -#undef OPENSSL_NO_DEPRECATED -#endif +#include #ifndef OPENSSL_NO_DH #include @@ -77,19 +73,17 @@ #include #include -#define DEFBITS 512 +#define DEFBITS 2048 #undef PROG #define PROG gendh_main -static void MS_CALLBACK dh_cb(int p, int n, void *arg); +static int dh_cb(int p, int n, BN_GENCB *cb); int MAIN(int, char **); int MAIN(int argc, char **argv) { -#ifndef OPENSSL_NO_ENGINE - ENGINE *e = NULL; -#endif + BN_GENCB *cb=NULL; DH *dh=NULL; int ret=1,num=DEFBITS; int g=2; @@ -106,6 +100,12 @@ 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); + cb = BN_GENCB_new(); + if(!cb) + goto end; + + BN_GENCB_set(cb, dh_cb, bio_err); + if (!load_config(bio_err, NULL)) goto end; @@ -160,7 +160,7 @@ bad: } #ifndef OPENSSL_NO_ENGINE - e = setup_engine(bio_err, engine, 0); + setup_engine(bio_err, engine, 0); #endif out=BIO_new(BIO_s_file()); @@ -199,10 +199,10 @@ bad: 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"); - dh=DH_generate_parameters(num,g,dh_cb,bio_err); - - if (dh == NULL) goto end; + if(((dh = DH_new()) == NULL) || !DH_generate_parameters_ex(dh, num, g, cb)) + goto end; + app_RAND_write_file(NULL, bio_err); if (!PEM_write_bio_DHparams(out,dh)) @@ -213,11 +213,12 @@ end: ERR_print_errors(bio_err); if (out != NULL) BIO_free_all(out); if (dh != NULL) DH_free(dh); + if (cb != NULL) BN_GENCB_free(cb); apps_shutdown(); OPENSSL_EXIT(ret); } -static void MS_CALLBACK dh_cb(int p, int n, void *arg) +static int dh_cb(int p, int n, BN_GENCB *cb) { char c='*'; @@ -225,10 +226,14 @@ static void MS_CALLBACK dh_cb(int p, int n, void *arg) if (p == 1) c='+'; if (p == 2) c='*'; if (p == 3) c='\n'; - BIO_write((BIO *)arg,&c,1); - (void)BIO_flush((BIO *)arg); -#ifdef LINT - p=n; -#endif + BIO_write(BN_GENCB_get_arg(cb),&c,1); + (void)BIO_flush(BN_GENCB_get_arg(cb)); + return 1; } +#else /* !OPENSSL_NO_DH */ + +# if PEDANTIC +static void *dummy=&dummy; +# endif + #endif