summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/dsa/dsa_ossl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_ossl.c')
-rw-r--r--src/lib/libcrypto/dsa/dsa_ossl.c14
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
68static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); 69static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa);
69static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp); 70static 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;