|
@@ -435,13 +435,21 @@ bad:
|
|
|
|
|
|
assert(need_rand);
|
|
|
if ((dsakey=DSAparams_dup(dsa)) == NULL) goto end;
|
|
|
- if (!DSA_generate_key(dsakey)) goto end;
|
|
|
+ if (non_fips_allow)
|
|
|
+ dsakey->flags |= DSA_FLAG_NON_FIPS_ALLOW;
|
|
|
+ if (!DSA_generate_key(dsakey))
|
|
|
+ {
|
|
|
+ ERR_print_errors(bio_err);
|
|
|
+ DSA_free(dsakey);
|
|
|
+ goto end;
|
|
|
+ }
|
|
|
if (outformat == FORMAT_ASN1)
|
|
|
i=i2d_DSAPrivateKey_bio(out,dsakey);
|
|
|
else if (outformat == FORMAT_PEM)
|
|
|
i=PEM_write_bio_DSAPrivateKey(out,dsakey,NULL,NULL,0,NULL,NULL);
|
|
|
else {
|
|
|
BIO_printf(bio_err,"bad output format specified for outfile\n");
|
|
|
+ DSA_free(dsakey);
|
|
|
goto end;
|
|
|
}
|
|
|
DSA_free(dsakey);
|