*/
#include <openssl/opensslconf.h> /* for OPENSSL_NO_DSA */
-/* 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
#ifndef OPENSSL_NO_DSA
#include <assert.h>
#undef PROG
#define PROG dsaparam_main
-/* -inform arg - input format - default PEM (DER or PEM)
+/*-
+ * -inform arg - input format - default PEM (DER or PEM)
* -outform arg - output format - default PEM
* -in arg - input file - default stdin
* -out arg - output file - default stdout
int numbits= -1,num,genkey=0;
int need_rand=0;
int non_fips_allow = 0;
+ BN_GENCB *cb = NULL;
#ifndef OPENSSL_NO_ENGINE
char *engine=NULL;
#endif
if (numbits > 0)
{
- BN_GENCB cb;
- BN_GENCB_set(&cb, dsa_cb, bio_err);
+ cb = BN_GENCB_new();
+ if(!cb)
+ {
+ BIO_printf(bio_err,"Error allocating BN_GENCB object\n");
+ goto end;
+ }
+ BN_GENCB_set(cb, dsa_cb, bio_err);
assert(need_rand);
dsa = DSA_new();
if(!dsa)
alarm(timebomb);
}
#endif
- if(!DSA_generate_parameters_ex(dsa,num,NULL,0,NULL,NULL, &cb))
+ if(!DSA_generate_parameters_ex(dsa,num,NULL,0,NULL,NULL, cb))
{
#ifdef GENCB_TEST
if(stop_keygen_flag)
app_RAND_write_file(NULL, bio_err);
ret=0;
end:
+ if (cb != NULL) BN_GENCB_free(cb);
if (in != NULL) BIO_free(in);
if (out != NULL) BIO_free_all(out);
if (dsa != NULL) DSA_free(dsa);
if (p == 1) c='+';
if (p == 2) c='*';
if (p == 3) c='\n';
- BIO_write(cb->arg,&c,1);
- (void)BIO_flush(cb->arg);
-#ifdef LINT
- p=n;
-#endif
+ BIO_write(BN_GENCB_get_arg(cb),&c,1);
+ (void)BIO_flush(BN_GENCB_get_arg(cb));
#ifdef GENCB_TEST
if(stop_keygen_flag)
return 0;