Skip to content

Commit

Permalink
Fix up issues found when running evp_extra_test with a non-default li…
Browse files Browse the repository at this point in the history
…brary context

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Paul Dale <[email protected]>
(Merged from openssl#14478)
  • Loading branch information
jon-oracle authored and paulidale committed Mar 17, 2021
1 parent 062490d commit d11f644
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 7 deletions.
8 changes: 4 additions & 4 deletions crypto/rsa/rsa_chk.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ static int rsa_validate_keypair_multiprime(const RSA *key, BN_GENCB *cb)
k = BN_new();
l = BN_new();
m = BN_new();
ctx = BN_CTX_new();
ctx = BN_CTX_new_ex(key->libctx);
if (i == NULL || j == NULL || k == NULL || l == NULL
|| m == NULL || ctx == NULL) {
ret = -1;
Expand All @@ -65,21 +65,21 @@ static int rsa_validate_keypair_multiprime(const RSA *key, BN_GENCB *cb)
}

/* p prime? */
if (BN_check_prime(key->p, NULL, cb) != 1) {
if (BN_check_prime(key->p, ctx, cb) != 1) {
ret = 0;
ERR_raise(ERR_LIB_RSA, RSA_R_P_NOT_PRIME);
}

/* q prime? */
if (BN_check_prime(key->q, NULL, cb) != 1) {
if (BN_check_prime(key->q, ctx, cb) != 1) {
ret = 0;
ERR_raise(ERR_LIB_RSA, RSA_R_Q_NOT_PRIME);
}

/* r_i prime? */
for (idx = 0; idx < ex_primes; idx++) {
pinfo = sk_RSA_PRIME_INFO_value(key->prime_infos, idx);
if (BN_check_prime(pinfo->r, NULL, cb) != 1) {
if (BN_check_prime(pinfo->r, ctx, cb) != 1) {
ret = 0;
ERR_raise(ERR_LIB_RSA, RSA_R_MP_R_NOT_PRIME);
}
Expand Down
5 changes: 3 additions & 2 deletions crypto/rsa/rsa_gen.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ static int rsa_multiprime_keygen(RSA *rsa, int bits, int primes,
goto err;
}

ctx = BN_CTX_new();
ctx = BN_CTX_new_ex(rsa->libctx);
if (ctx == NULL)
goto err;
BN_CTX_start(ctx);
Expand Down Expand Up @@ -187,7 +187,8 @@ static int rsa_multiprime_keygen(RSA *rsa, int bits, int primes,

for (;;) {
redo:
if (!BN_generate_prime_ex(prime, bitsr[i] + adj, 0, NULL, NULL, cb))
if (!BN_generate_prime_ex2(prime, bitsr[i] + adj, 0, NULL, NULL,
cb, ctx))
goto err;
/*
* prime should not be equal to p, q, r_3...
Expand Down
2 changes: 1 addition & 1 deletion crypto/sm2/sm2_crypt.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ int ossl_sm2_encrypt(const EC_KEY *key,

memset(ciphertext_buf, 0, *ciphertext_len);

if (!BN_priv_rand_range(k, order)) {
if (!BN_priv_rand_range_ex(k, order, ctx)) {
ERR_raise(ERR_LIB_SM2, ERR_R_INTERNAL_ERROR);
goto done;
}
Expand Down

0 comments on commit d11f644

Please sign in to comment.