diff options
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_ossl.c')
-rw-r--r-- | src/lib/libcrypto/dsa/dsa_ossl.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_ossl.c b/src/lib/libcrypto/dsa/dsa_ossl.c index b9e7f3ea5c..37dd5fc994 100644 --- a/src/lib/libcrypto/dsa/dsa_ossl.c +++ b/src/lib/libcrypto/dsa/dsa_ossl.c | |||
@@ -64,6 +64,7 @@ | |||
64 | #include <openssl/dsa.h> | 64 | #include <openssl/dsa.h> |
65 | #include <openssl/rand.h> | 65 | #include <openssl/rand.h> |
66 | #include <openssl/asn1.h> | 66 | #include <openssl/asn1.h> |
67 | #include <openssl/engine.h> | ||
67 | 68 | ||
68 | static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); | 69 | static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); |
69 | static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp); | 70 | static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp); |
@@ -105,15 +106,13 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) | |||
105 | int i,reason=ERR_R_BN_LIB; | 106 | int i,reason=ERR_R_BN_LIB; |
106 | DSA_SIG *ret=NULL; | 107 | DSA_SIG *ret=NULL; |
107 | 108 | ||
108 | BN_init(&m); | ||
109 | BN_init(&xr); | ||
110 | |||
111 | if (!dsa->p || !dsa->q || !dsa->g) | 109 | if (!dsa->p || !dsa->q || !dsa->g) |
112 | { | 110 | { |
113 | reason=DSA_R_MISSING_PARAMETERS; | 111 | reason=DSA_R_MISSING_PARAMETERS; |
114 | goto err; | 112 | goto err; |
115 | } | 113 | } |
116 | 114 | BN_init(&m); | |
115 | BN_init(&xr); | ||
117 | s=BN_new(); | 116 | s=BN_new(); |
118 | if (s == NULL) goto err; | 117 | if (s == NULL) goto err; |
119 | 118 | ||
@@ -179,9 +178,6 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | |||
179 | DSAerr(DSA_F_DSA_SIGN_SETUP,DSA_R_MISSING_PARAMETERS); | 178 | DSAerr(DSA_F_DSA_SIGN_SETUP,DSA_R_MISSING_PARAMETERS); |
180 | return 0; | 179 | return 0; |
181 | } | 180 | } |
182 | |||
183 | BN_init(&k); | ||
184 | |||
185 | if (ctx_in == NULL) | 181 | if (ctx_in == NULL) |
186 | { | 182 | { |
187 | if ((ctx=BN_CTX_new()) == NULL) goto err; | 183 | if ((ctx=BN_CTX_new()) == NULL) goto err; |
@@ -189,6 +185,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | |||
189 | else | 185 | else |
190 | ctx=ctx_in; | 186 | ctx=ctx_in; |
191 | 187 | ||
188 | BN_init(&k); | ||
192 | if ((r=BN_new()) == NULL) goto err; | 189 | if ((r=BN_new()) == NULL) goto err; |
193 | kinv=NULL; | 190 | kinv=NULL; |
194 | 191 | ||
@@ -244,12 +241,11 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig, | |||
244 | return -1; | 241 | return -1; |
245 | } | 242 | } |
246 | 243 | ||
244 | if ((ctx=BN_CTX_new()) == NULL) goto err; | ||
247 | BN_init(&u1); | 245 | BN_init(&u1); |
248 | BN_init(&u2); | 246 | BN_init(&u2); |
249 | BN_init(&t1); | 247 | BN_init(&t1); |
250 | 248 | ||
251 | if ((ctx=BN_CTX_new()) == NULL) goto err; | ||
252 | |||
253 | if (BN_is_zero(sig->r) || sig->r->neg || BN_ucmp(sig->r, dsa->q) >= 0) | 249 | if (BN_is_zero(sig->r) || sig->r->neg || BN_ucmp(sig->r, dsa->q) >= 0) |
254 | { | 250 | { |
255 | ret = 0; | 251 | ret = 0; |