summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ecdsa/ecs_ossl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/ecdsa/ecs_ossl.c')
-rw-r--r--src/lib/libcrypto/ecdsa/ecs_ossl.c42
1 files changed, 15 insertions, 27 deletions
diff --git a/src/lib/libcrypto/ecdsa/ecs_ossl.c b/src/lib/libcrypto/ecdsa/ecs_ossl.c
index e2c4b1d6d1..0dde5386ff 100644
--- a/src/lib/libcrypto/ecdsa/ecs_ossl.c
+++ b/src/lib/libcrypto/ecdsa/ecs_ossl.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecs_ossl.c,v 1.4 2014/07/10 22:45:57 jsing Exp $ */ 1/* $OpenBSD: ecs_ossl.c,v 1.5 2014/07/12 16:03:37 miod Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project 3 * Written by Nils Larsch for the OpenSSL project
4 */ 4 */
@@ -189,28 +189,22 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
189 goto err; 189 goto err;
190 } 190 }
191 /* clear old values if necessary */ 191 /* clear old values if necessary */
192 if (*rp != NULL) 192 BN_clear_free(*rp);
193 BN_clear_free(*rp); 193 BN_clear_free(*kinvp);
194 if (*kinvp != NULL)
195 BN_clear_free(*kinvp);
196 /* save the pre-computed values */ 194 /* save the pre-computed values */
197 *rp = r; 195 *rp = r;
198 *kinvp = k; 196 *kinvp = k;
199 ret = 1; 197 ret = 1;
200err: 198err:
201 if (!ret) 199 if (!ret) {
202 { 200 BN_clear_free(k);
203 if (k != NULL) BN_clear_free(k); 201 BN_clear_free(r);
204 if (r != NULL) BN_clear_free(r);
205 } 202 }
206 if (ctx_in == NULL) 203 if (ctx_in == NULL)
207 BN_CTX_free(ctx); 204 BN_CTX_free(ctx);
208 if (order != NULL) 205 BN_free(order);
209 BN_free(order); 206 EC_POINT_free(tmp_point);
210 if (tmp_point != NULL) 207 BN_clear_free(X);
211 EC_POINT_free(tmp_point);
212 if (X)
213 BN_clear_free(X);
214 return(ret); 208 return(ret);
215} 209}
216 210
@@ -333,16 +327,11 @@ err:
333 ECDSA_SIG_free(ret); 327 ECDSA_SIG_free(ret);
334 ret = NULL; 328 ret = NULL;
335 } 329 }
336 if (ctx) 330 BN_CTX_free(ctx);
337 BN_CTX_free(ctx); 331 BN_clear_free(m);
338 if (m) 332 BN_clear_free(tmp);
339 BN_clear_free(m); 333 BN_free(order);
340 if (tmp) 334 BN_clear_free(kinv);
341 BN_clear_free(tmp);
342 if (order)
343 BN_free(order);
344 if (kinv)
345 BN_clear_free(kinv);
346 return ret; 335 return ret;
347} 336}
348 337
@@ -473,7 +462,6 @@ static int ecdsa_do_verify(const unsigned char *dgst, int dgst_len,
473err: 462err:
474 BN_CTX_end(ctx); 463 BN_CTX_end(ctx);
475 BN_CTX_free(ctx); 464 BN_CTX_free(ctx);
476 if (point) 465 EC_POINT_free(point);
477 EC_POINT_free(point);
478 return ret; 466 return ret;
479} 467}