summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/rsa/rsa_eay.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_eay.c b/src/lib/libcrypto/rsa/rsa_eay.c
index a19201727e..089b8782d5 100644
--- a/src/lib/libcrypto/rsa/rsa_eay.c
+++ b/src/lib/libcrypto/rsa/rsa_eay.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rsa_eay.c,v 1.56 2022/12/26 07:18:52 jmc Exp $ */ 1/* $OpenBSD: rsa_eay.c,v 1.57 2023/04/05 11:30:12 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 *
@@ -403,6 +403,12 @@ RSA_eay_private_encrypt(int flen, const unsigned char *from, unsigned char *to,
403 goto err; 403 goto err;
404 } 404 }
405 405
406 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC) {
407 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_n,
408 CRYPTO_LOCK_RSA, rsa->n, ctx))
409 goto err;
410 }
411
406 if (!(rsa->flags & RSA_FLAG_NO_BLINDING)) { 412 if (!(rsa->flags & RSA_FLAG_NO_BLINDING)) {
407 blinding = rsa_get_blinding(rsa, &local_blinding, ctx); 413 blinding = rsa_get_blinding(rsa, &local_blinding, ctx);
408 if (blinding == NULL) { 414 if (blinding == NULL) {
@@ -431,11 +437,6 @@ RSA_eay_private_encrypt(int flen, const unsigned char *from, unsigned char *to,
431 BN_init(&d); 437 BN_init(&d);
432 BN_with_flags(&d, rsa->d, BN_FLG_CONSTTIME); 438 BN_with_flags(&d, rsa->d, BN_FLG_CONSTTIME);
433 439
434 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC)
435 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_n,
436 CRYPTO_LOCK_RSA, rsa->n, ctx))
437 goto err;
438
439 if (!rsa->meth->bn_mod_exp(ret, f, &d, rsa->n, ctx, 440 if (!rsa->meth->bn_mod_exp(ret, f, &d, rsa->n, ctx,
440 rsa->_method_mod_n)) { 441 rsa->_method_mod_n)) {
441 goto err; 442 goto err;
@@ -521,6 +522,12 @@ RSA_eay_private_decrypt(int flen, const unsigned char *from, unsigned char *to,
521 goto err; 522 goto err;
522 } 523 }
523 524
525 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC) {
526 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_n,
527 CRYPTO_LOCK_RSA, rsa->n, ctx))
528 goto err;
529 }
530
524 if (!(rsa->flags & RSA_FLAG_NO_BLINDING)) { 531 if (!(rsa->flags & RSA_FLAG_NO_BLINDING)) {
525 blinding = rsa_get_blinding(rsa, &local_blinding, ctx); 532 blinding = rsa_get_blinding(rsa, &local_blinding, ctx);
526 if (blinding == NULL) { 533 if (blinding == NULL) {
@@ -550,11 +557,6 @@ RSA_eay_private_decrypt(int flen, const unsigned char *from, unsigned char *to,
550 BN_init(&d); 557 BN_init(&d);
551 BN_with_flags(&d, rsa->d, BN_FLG_CONSTTIME); 558 BN_with_flags(&d, rsa->d, BN_FLG_CONSTTIME);
552 559
553 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC)
554 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_n,
555 CRYPTO_LOCK_RSA, rsa->n, ctx))
556 goto err;
557
558 if (!rsa->meth->bn_mod_exp(ret, f, &d, rsa->n, ctx, 560 if (!rsa->meth->bn_mod_exp(ret, f, &d, rsa->n, ctx,
559 rsa->_method_mod_n)) { 561 rsa->_method_mod_n)) {
560 goto err; 562 goto err;