summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2023-08-08 13:49:45 +0000
committertb <>2023-08-08 13:49:45 +0000
commit83b348b817ac67aa3c0b138f7ed9ad3367a997fd (patch)
tree57c8cb478b97ba41f5c5bc3b3997555b1dc7937e
parent63944d78d9b4693d184874011c01ed8c45b91df2 (diff)
downloadopenbsd-83b348b817ac67aa3c0b138f7ed9ad3367a997fd.tar.gz
openbsd-83b348b817ac67aa3c0b138f7ed9ad3367a997fd.tar.bz2
openbsd-83b348b817ac67aa3c0b138f7ed9ad3367a997fd.zip
Simplify RSA_setup_blinding()
Make this look a bit more like other code we cleaned up avoiding nesting and unnecessary else branches. ok jsing
-rw-r--r--src/lib/libcrypto/rsa/rsa_crpt.c37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_crpt.c b/src/lib/libcrypto/rsa/rsa_crpt.c
index 15108e24f0..a53ec54b32 100644
--- a/src/lib/libcrypto/rsa/rsa_crpt.c
+++ b/src/lib/libcrypto/rsa/rsa_crpt.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rsa_crpt.c,v 1.23 2023/07/28 10:05:16 tb Exp $ */ 1/* $OpenBSD: rsa_crpt.c,v 1.24 2023/08/08 13:49:45 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 *
@@ -187,44 +187,39 @@ err:
187BN_BLINDING * 187BN_BLINDING *
188RSA_setup_blinding(RSA *rsa, BN_CTX *in_ctx) 188RSA_setup_blinding(RSA *rsa, BN_CTX *in_ctx)
189{ 189{
190 BIGNUM *e; 190 BIGNUM *e = NULL;
191 BIGNUM n; 191 BIGNUM n;
192 BN_CTX *ctx; 192 BN_CTX *ctx = NULL;
193 BN_BLINDING *ret = NULL; 193 BN_BLINDING *ret = NULL;
194 194
195 if (in_ctx == NULL) { 195 if ((ctx = in_ctx) == NULL)
196 if ((ctx = BN_CTX_new()) == NULL) 196 ctx = BN_CTX_new();
197 return 0; 197 if (ctx == NULL)
198 } else 198 goto err;
199 ctx = in_ctx;
200 199
201 BN_CTX_start(ctx); 200 BN_CTX_start(ctx);
202 201
203 if (rsa->e == NULL) { 202 if ((e = rsa->e) == NULL)
204 e = rsa_get_public_exp(rsa->d, rsa->p, rsa->q, ctx); 203 e = rsa_get_public_exp(rsa->d, rsa->p, rsa->q, ctx);
205 if (e == NULL) { 204 if (e == NULL) {
206 RSAerror(RSA_R_NO_PUBLIC_EXPONENT); 205 RSAerror(RSA_R_NO_PUBLIC_EXPONENT);
207 goto err; 206 goto err;
208 } 207 }
209 } else
210 e = rsa->e;
211 208
212 BN_init(&n); 209 BN_init(&n);
213 BN_with_flags(&n, rsa->n, BN_FLG_CONSTTIME); 210 BN_with_flags(&n, rsa->n, BN_FLG_CONSTTIME);
214 211
215 ret = BN_BLINDING_create_param(NULL, e, &n, ctx, rsa->meth->bn_mod_exp, 212 if ((ret = BN_BLINDING_create_param(NULL, e, &n, ctx,
216 rsa->_method_mod_n); 213 rsa->meth->bn_mod_exp, rsa->_method_mod_n)) == NULL) {
217
218 if (ret == NULL) {
219 RSAerror(ERR_R_BN_LIB); 214 RSAerror(ERR_R_BN_LIB);
220 goto err; 215 goto err;
221 } 216 }
222 CRYPTO_THREADID_current(BN_BLINDING_thread_id(ret)); 217 CRYPTO_THREADID_current(BN_BLINDING_thread_id(ret));
223err: 218err:
224 BN_CTX_end(ctx); 219 BN_CTX_end(ctx);
225 if (in_ctx == NULL) 220 if (ctx != in_ctx)
226 BN_CTX_free(ctx); 221 BN_CTX_free(ctx);
227 if (rsa->e == NULL) 222 if (e != rsa->e)
228 BN_free(e); 223 BN_free(e);
229 224
230 return ret; 225 return ret;