summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/dsa/dsa_gen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_gen.c')
-rw-r--r--src/lib/libcrypto/dsa/dsa_gen.c35
1 files changed, 4 insertions, 31 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_gen.c b/src/lib/libcrypto/dsa/dsa_gen.c
index c398761d0d..cb0b4538a4 100644
--- a/src/lib/libcrypto/dsa/dsa_gen.c
+++ b/src/lib/libcrypto/dsa/dsa_gen.c
@@ -81,33 +81,13 @@
81#include <openssl/sha.h> 81#include <openssl/sha.h>
82#include "dsa_locl.h" 82#include "dsa_locl.h"
83 83
84#ifdef OPENSSL_FIPS
85#include <openssl/fips.h>
86#endif
87
88int DSA_generate_parameters_ex(DSA *ret, int bits, 84int DSA_generate_parameters_ex(DSA *ret, int bits,
89 const unsigned char *seed_in, int seed_len, 85 const unsigned char *seed_in, int seed_len,
90 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb) 86 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)
91 { 87 {
92#ifdef OPENSSL_FIPS
93 if (FIPS_mode() && !(ret->meth->flags & DSA_FLAG_FIPS_METHOD)
94 && !(ret->flags & DSA_FLAG_NON_FIPS_ALLOW))
95 {
96 DSAerr(DSA_F_DSA_GENERATE_PARAMETERS_EX, DSA_R_NON_FIPS_DSA_METHOD);
97 return 0;
98 }
99#endif
100 if(ret->meth->dsa_paramgen) 88 if(ret->meth->dsa_paramgen)
101 return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len, 89 return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len,
102 counter_ret, h_ret, cb); 90 counter_ret, h_ret, cb);
103#ifdef OPENSSL_FIPS
104 else if (FIPS_mode())
105 {
106 return FIPS_dsa_generate_parameters_ex(ret, bits,
107 seed_in, seed_len,
108 counter_ret, h_ret, cb);
109 }
110#endif
111 else 91 else
112 { 92 {
113 const EVP_MD *evpmd; 93 const EVP_MD *evpmd;
@@ -125,13 +105,12 @@ int DSA_generate_parameters_ex(DSA *ret, int bits,
125 } 105 }
126 106
127 return dsa_builtin_paramgen(ret, bits, qbits, evpmd, 107 return dsa_builtin_paramgen(ret, bits, qbits, evpmd,
128 seed_in, seed_len, NULL, counter_ret, h_ret, cb); 108 seed_in, seed_len, counter_ret, h_ret, cb);
129 } 109 }
130 } 110 }
131 111
132int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits, 112int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits,
133 const EVP_MD *evpmd, const unsigned char *seed_in, size_t seed_len, 113 const EVP_MD *evpmd, const unsigned char *seed_in, size_t seed_len,
134 unsigned char *seed_out,
135 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb) 114 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)
136 { 115 {
137 int ok=0; 116 int ok=0;
@@ -222,10 +201,8 @@ int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits,
222 } 201 }
223 202
224 /* step 2 */ 203 /* step 2 */
225 if (!EVP_Digest(seed, qsize, md, NULL, evpmd, NULL)) 204 EVP_Digest(seed, qsize, md, NULL, evpmd, NULL);
226 goto err; 205 EVP_Digest(buf, qsize, buf2, NULL, evpmd, NULL);
227 if (!EVP_Digest(buf, qsize, buf2, NULL, evpmd, NULL))
228 goto err;
229 for (i = 0; i < qsize; i++) 206 for (i = 0; i < qsize; i++)
230 md[i]^=buf2[i]; 207 md[i]^=buf2[i];
231 208
@@ -274,9 +251,7 @@ int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits,
274 break; 251 break;
275 } 252 }
276 253
277 if (!EVP_Digest(buf, qsize, md ,NULL, evpmd, 254 EVP_Digest(buf, qsize, md ,NULL, evpmd, NULL);
278 NULL))
279 goto err;
280 255
281 /* step 8 */ 256 /* step 8 */
282 if (!BN_bin2bn(md, qsize, r0)) 257 if (!BN_bin2bn(md, qsize, r0))
@@ -357,8 +332,6 @@ err:
357 } 332 }
358 if (counter_ret != NULL) *counter_ret=counter; 333 if (counter_ret != NULL) *counter_ret=counter;
359 if (h_ret != NULL) *h_ret=h; 334 if (h_ret != NULL) *h_ret=h;
360 if (seed_out)
361 memcpy(seed_out, seed, qsize);
362 } 335 }
363 if(ctx) 336 if(ctx)
364 { 337 {