diff options
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_gen.c')
-rw-r--r-- | src/lib/libcrypto/dsa/dsa_gen.c | 35 |
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 | |||
88 | int DSA_generate_parameters_ex(DSA *ret, int bits, | 84 | int 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 | ||
132 | int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits, | 112 | int 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 | { |