diff options
author | tb <> | 2018-11-05 23:50:05 +0000 |
---|---|---|
committer | tb <> | 2018-11-05 23:50:05 +0000 |
commit | bcef8f9f7589db87fc5979bf8a77f81275c574a2 (patch) | |
tree | 1e04cc34be4d65b95be7fd1dc42660ff4e7b6580 | |
parent | b7d5fcfa073d6408fd2af787acdc717bb412fd8f (diff) | |
download | openbsd-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.c | 28 | ||||
-rw-r--r-- | src/lib/libcrypto/dsa/dsa_key.c | 20 | ||||
-rw-r--r-- | src/lib/libcrypto/ec/ec_key.c | 28 |
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; |
163 | err: | 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); |
223 | err: | 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 | ||
114 | err: | 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 | ||
209 | int | 209 | int |
210 | EC_KEY_generate_key(EC_KEY * eckey) | 210 | EC_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); |