summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorNeil Horman <nhorman@openssl.org>2023-10-10 11:06:44 -0400
committerTomas Mraz <tomas@openssl.org>2023-10-18 18:08:02 +0200
commit2647726bd3ca63dc5f07ae3f10e16dff35d95626 (patch)
tree850191d1cb7493e3af10bf6575ec3eb36504d4bf /crypto
parent4ad3a44ba45a4026170336161228d435f6784564 (diff)
Dont require CRT params on ossl_rsa_set0_all_params
Its not required that crt params be available in an RSA key, so don't perform an error check on them Fixes #29135 Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22334)
Diffstat (limited to 'crypto')
-rw-r--r--crypto/rsa/rsa_lib.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/crypto/rsa/rsa_lib.c b/crypto/rsa/rsa_lib.c
index db77a6fd49..9548054da7 100644
--- a/crypto/rsa/rsa_lib.c
+++ b/crypto/rsa/rsa_lib.c
@@ -757,18 +757,22 @@ int ossl_rsa_set0_all_params(RSA *r, const STACK_OF(BIGNUM) *primes,
return 0;
pnum = sk_BIGNUM_num(primes);
- if (pnum < 2
- || pnum != sk_BIGNUM_num(exps)
- || pnum != sk_BIGNUM_num(coeffs) + 1)
+ if (pnum < 2)
return 0;
if (!RSA_set0_factors(r, sk_BIGNUM_value(primes, 0),
- sk_BIGNUM_value(primes, 1))
- || !RSA_set0_crt_params(r, sk_BIGNUM_value(exps, 0),
- sk_BIGNUM_value(exps, 1),
- sk_BIGNUM_value(coeffs, 0)))
+ sk_BIGNUM_value(primes, 1)))
return 0;
+ if (pnum == sk_BIGNUM_num(exps)
+ && pnum == sk_BIGNUM_num(coeffs) + 1) {
+
+ if (!RSA_set0_crt_params(r, sk_BIGNUM_value(exps, 0),
+ sk_BIGNUM_value(exps, 1),
+ sk_BIGNUM_value(coeffs, 0)))
+ return 0;
+ }
+
#ifndef FIPS_MODULE
old_infos = r->prime_infos;
#endif