summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2018-11-05 23:50:05 +0000
committertb <>2018-11-05 23:50:05 +0000
commitbcef8f9f7589db87fc5979bf8a77f81275c574a2 (patch)
tree1e04cc34be4d65b95be7fd1dc42660ff4e7b6580
parentb7d5fcfa073d6408fd2af787acdc717bb412fd8f (diff)
downloadopenbsd-bcef8f9f7589db87fc5979bf8a77f81275c574a2.tar.gz
openbsd-bcef8f9f7589db87fc5979bf8a77f81275c574a2.tar.bz2
openbsd-bcef8f9f7589db87fc5979bf8a77f81275c574a2.zip
Eliminate a few "} else" branches, a few unneeded NULL checks before
freeing and indent nearby labels. ok beck jsing
-rw-r--r--src/lib/libcrypto/dh/dh_key.c28
-rw-r--r--src/lib/libcrypto/dsa/dsa_key.c20
-rw-r--r--src/lib/libcrypto/ec/ec_key.c28
3 files changed, 33 insertions, 43 deletions
diff --git a/src/lib/libcrypto/dh/dh_key.c b/src/lib/libcrypto/dh/dh_key.c
index dd3a3af3ab..2cbf128d80 100644
--- a/src/lib/libcrypto/dh/dh_key.c
+++ b/src/lib/libcrypto/dh/dh_key.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: dh_key.c,v 1.30 2018/11/05 23:46:16 tb Exp $ */ 1/* $OpenBSD: dh_key.c,v 1.31 2018/11/05 23:50:05 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -106,7 +106,7 @@ generate_key(DH *dh)
106 unsigned l; 106 unsigned l;
107 BN_CTX *ctx; 107 BN_CTX *ctx;
108 BN_MONT_CTX *mont = NULL; 108 BN_MONT_CTX *mont = NULL;
109 BIGNUM *pub_key = NULL, *priv_key = NULL; 109 BIGNUM *pub_key = dh->pub_key, *priv_key = dh->priv_key;
110 110
111 if (BN_num_bits(dh->p) > OPENSSL_DH_MAX_MODULUS_BITS) { 111 if (BN_num_bits(dh->p) > OPENSSL_DH_MAX_MODULUS_BITS) {
112 DHerror(DH_R_MODULUS_TOO_LARGE); 112 DHerror(DH_R_MODULUS_TOO_LARGE);
@@ -117,20 +117,16 @@ generate_key(DH *dh)
117 if (ctx == NULL) 117 if (ctx == NULL)
118 goto err; 118 goto err;
119 119
120 if (dh->priv_key == NULL) { 120 if (priv_key == NULL) {
121 priv_key = BN_new(); 121 if ((priv_key = BN_new()) == NULL)
122 if (priv_key == NULL)
123 goto err; 122 goto err;
124 generate_new_key = 1; 123 generate_new_key = 1;
125 } else 124 }
126 priv_key = dh->priv_key;
127 125
128 if (dh->pub_key == NULL) { 126 if (pub_key == NULL) {
129 pub_key = BN_new(); 127 if ((pub_key = BN_new()) == NULL)
130 if (pub_key == NULL)
131 goto err; 128 goto err;
132 } else 129 }
133 pub_key = dh->pub_key;
134 130
135 if (dh->flags & DH_FLAG_CACHE_MONT_P) { 131 if (dh->flags & DH_FLAG_CACHE_MONT_P) {
136 mont = BN_MONT_CTX_set_locked(&dh->method_mont_p, 132 mont = BN_MONT_CTX_set_locked(&dh->method_mont_p,
@@ -160,13 +156,13 @@ generate_key(DH *dh)
160 dh->pub_key = pub_key; 156 dh->pub_key = pub_key;
161 dh->priv_key = priv_key; 157 dh->priv_key = priv_key;
162 ok = 1; 158 ok = 1;
163err: 159 err:
164 if (ok != 1) 160 if (ok != 1)
165 DHerror(ERR_R_BN_LIB); 161 DHerror(ERR_R_BN_LIB);
166 162
167 if (pub_key != NULL && dh->pub_key == NULL) 163 if (dh->pub_key == NULL)
168 BN_free(pub_key); 164 BN_free(pub_key);
169 if (priv_key != NULL && dh->priv_key == NULL) 165 if (dh->priv_key == NULL)
170 BN_free(priv_key); 166 BN_free(priv_key);
171 BN_CTX_free(ctx); 167 BN_CTX_free(ctx);
172 return ok; 168 return ok;
@@ -220,7 +216,7 @@ compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
220 } 216 }
221 217
222 ret = BN_bn2bin(tmp, key); 218 ret = BN_bn2bin(tmp, key);
223err: 219 err:
224 if (ctx != NULL) { 220 if (ctx != NULL) {
225 BN_CTX_end(ctx); 221 BN_CTX_end(ctx);
226 BN_CTX_free(ctx); 222 BN_CTX_free(ctx);
diff --git a/src/lib/libcrypto/dsa/dsa_key.c b/src/lib/libcrypto/dsa/dsa_key.c
index b2d08e5e0c..520b980983 100644
--- a/src/lib/libcrypto/dsa/dsa_key.c
+++ b/src/lib/libcrypto/dsa/dsa_key.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: dsa_key.c,v 1.24 2018/11/05 23:46:16 tb Exp $ */ 1/* $OpenBSD: dsa_key.c,v 1.25 2018/11/05 23:50:05 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -82,27 +82,25 @@ dsa_builtin_keygen(DSA *dsa)
82{ 82{
83 int ok = 0; 83 int ok = 0;
84 BN_CTX *ctx = NULL; 84 BN_CTX *ctx = NULL;
85 BIGNUM *pub_key = NULL, *priv_key = NULL; 85 BIGNUM *pub_key = dsa->pub_key, *priv_key = dsa->priv_key;
86 86
87 if ((ctx = BN_CTX_new()) == NULL) 87 if ((ctx = BN_CTX_new()) == NULL)
88 goto err; 88 goto err;
89 89
90 if (dsa->priv_key == NULL) { 90 if (priv_key == NULL) {
91 if ((priv_key = BN_new()) == NULL) 91 if ((priv_key = BN_new()) == NULL)
92 goto err; 92 goto err;
93 } else 93 }
94 priv_key=dsa->priv_key;
95 94
96 do { 95 do {
97 if (!BN_rand_range(priv_key, dsa->q)) 96 if (!BN_rand_range(priv_key, dsa->q))
98 goto err; 97 goto err;
99 } while (BN_is_zero(priv_key)); 98 } while (BN_is_zero(priv_key));
100 99
101 if (dsa->pub_key == NULL) { 100 if (pub_key == NULL) {
102 if ((pub_key = BN_new()) == NULL) 101 if ((pub_key = BN_new()) == NULL)
103 goto err; 102 goto err;
104 } else 103 }
105 pub_key=dsa->pub_key;
106 104
107 if (!BN_mod_exp_ct(pub_key, dsa->g, priv_key, dsa->p, ctx)) 105 if (!BN_mod_exp_ct(pub_key, dsa->g, priv_key, dsa->p, ctx))
108 goto err; 106 goto err;
@@ -111,10 +109,10 @@ dsa_builtin_keygen(DSA *dsa)
111 dsa->pub_key = pub_key; 109 dsa->pub_key = pub_key;
112 ok = 1; 110 ok = 1;
113 111
114err: 112 err:
115 if (pub_key != NULL && dsa->pub_key == NULL) 113 if (dsa->pub_key == NULL)
116 BN_free(pub_key); 114 BN_free(pub_key);
117 if (priv_key != NULL && dsa->priv_key == NULL) 115 if (dsa->priv_key == NULL)
118 BN_free(priv_key); 116 BN_free(priv_key);
119 BN_CTX_free(ctx); 117 BN_CTX_free(ctx);
120 return ok; 118 return ok;
diff --git a/src/lib/libcrypto/ec/ec_key.c b/src/lib/libcrypto/ec/ec_key.c
index d1b8e8fcc1..966ebab4a5 100644
--- a/src/lib/libcrypto/ec/ec_key.c
+++ b/src/lib/libcrypto/ec/ec_key.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_key.c,v 1.17 2018/07/15 16:27:39 tb Exp $ */ 1/* $OpenBSD: ec_key.c,v 1.18 2018/11/05 23:50:05 tb Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project. 3 * Written by Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -207,12 +207,12 @@ EC_KEY_up_ref(EC_KEY * r)
207} 207}
208 208
209int 209int
210EC_KEY_generate_key(EC_KEY * eckey) 210EC_KEY_generate_key(EC_KEY *eckey)
211{ 211{
212 int ok = 0; 212 int ok = 0;
213 BN_CTX *ctx = NULL; 213 BN_CTX *ctx = NULL;
214 BIGNUM *priv_key = NULL, *order = NULL; 214 BIGNUM *priv_key = eckey->priv_key, *order = NULL;
215 EC_POINT *pub_key = NULL; 215 EC_POINT *pub_key = eckey->pub_key;
216 216
217 if (!eckey || !eckey->group) { 217 if (!eckey || !eckey->group) {
218 ECerror(ERR_R_PASSED_NULL_PARAMETER); 218 ECerror(ERR_R_PASSED_NULL_PARAMETER);
@@ -223,12 +223,10 @@ EC_KEY_generate_key(EC_KEY * eckey)
223 if ((ctx = BN_CTX_new()) == NULL) 223 if ((ctx = BN_CTX_new()) == NULL)
224 goto err; 224 goto err;
225 225
226 if (eckey->priv_key == NULL) { 226 if (priv_key == NULL) {
227 priv_key = BN_new(); 227 if ((priv_key = BN_new()) == NULL)
228 if (priv_key == NULL)
229 goto err; 228 goto err;
230 } else 229 }
231 priv_key = eckey->priv_key;
232 230
233 if (!EC_GROUP_get_order(eckey->group, order, ctx)) 231 if (!EC_GROUP_get_order(eckey->group, order, ctx))
234 goto err; 232 goto err;
@@ -238,12 +236,10 @@ EC_KEY_generate_key(EC_KEY * eckey)
238 goto err; 236 goto err;
239 while (BN_is_zero(priv_key)); 237 while (BN_is_zero(priv_key));
240 238
241 if (eckey->pub_key == NULL) { 239 if (pub_key == NULL) {
242 pub_key = EC_POINT_new(eckey->group); 240 if ((pub_key = EC_POINT_new(eckey->group)) == NULL)
243 if (pub_key == NULL)
244 goto err; 241 goto err;
245 } else 242 }
246 pub_key = eckey->pub_key;
247 243
248 if (!EC_POINT_mul(eckey->group, pub_key, priv_key, NULL, NULL, ctx)) 244 if (!EC_POINT_mul(eckey->group, pub_key, priv_key, NULL, NULL, ctx))
249 goto err; 245 goto err;
@@ -255,9 +251,9 @@ EC_KEY_generate_key(EC_KEY * eckey)
255 251
256 err: 252 err:
257 BN_free(order); 253 BN_free(order);
258 if (pub_key != NULL && eckey->pub_key == NULL) 254 if (eckey->pub_key == NULL)
259 EC_POINT_free(pub_key); 255 EC_POINT_free(pub_key);
260 if (priv_key != NULL && eckey->priv_key == NULL) 256 if (eckey->priv_key == NULL)
261 BN_free(priv_key); 257 BN_free(priv_key);
262 BN_CTX_free(ctx); 258 BN_CTX_free(ctx);
263 return (ok); 259 return (ok);