mirror of
https://github.com/openssl/openssl.git
synced 2025-03-31 20:10:45 +08:00
Remove TODO in rsa_ameth.c
Fixes #14390 The only caller of this function tests EVP_KEYMGMT_is_a() beforehand which will fail if the RSA key types do not match. So the test is not necessary. The assert has been removed when it does the test. Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/14524)
This commit is contained in:
parent
8bfb8f3458
commit
0fc39c9030
@ -1714,7 +1714,7 @@ void *evp_pkey_export_to_provider(EVP_PKEY *pk, OSSL_LIB_CTX *libctx,
|
||||
}
|
||||
|
||||
/* Make sure that the keymgmt key type matches the legacy NID */
|
||||
if (!ossl_assert(EVP_KEYMGMT_is_a(tmp_keymgmt, OBJ_nid2sn(pk->type))))
|
||||
if (!EVP_KEYMGMT_is_a(tmp_keymgmt, OBJ_nid2sn(pk->type)))
|
||||
goto end;
|
||||
|
||||
if ((keydata = evp_keymgmt_newdata(tmp_keymgmt)) == NULL)
|
||||
|
@ -856,15 +856,8 @@ static size_t rsa_pkey_dirty_cnt(const EVP_PKEY *pkey)
|
||||
}
|
||||
|
||||
/*
|
||||
* For the moment, we trust the call path, where keys going through
|
||||
* rsa_pkey_export_to() match a KEYMGMT for the "RSA" keytype, while
|
||||
* keys going through rsa_pss_pkey_export_to() match a KEYMGMT for the
|
||||
* "RSA-PSS" keytype.
|
||||
* TODO(3.0) Investigate whether we should simply continue to trust the
|
||||
* call path, or if we should strengthen this function by checking that
|
||||
* |rsa_type| matches the RSA key subtype. The latter requires ensuring
|
||||
* that the type flag for the RSA key is properly set by other functions
|
||||
* in this file.
|
||||
* There is no need to do RSA_test_flags(rsa, RSA_FLAG_TYPE_RSASSAPSS)
|
||||
* checks in this method since the caller tests EVP_KEYMGMT_is_a() first.
|
||||
*/
|
||||
static int rsa_int_export_to(const EVP_PKEY *from, int rsa_type,
|
||||
void *to_keydata, EVP_KEYMGMT *to_keymgmt,
|
||||
|
@ -142,8 +142,8 @@ static int test_pass_rsa(FIXTURE *fixture)
|
||||
RSA *rsa = NULL;
|
||||
BIGNUM *bn1 = NULL, *bn2 = NULL, *bn3 = NULL;
|
||||
EVP_PKEY *pk = NULL;
|
||||
EVP_KEYMGMT *km1 = NULL, *km2 = NULL;
|
||||
void *provkey = NULL;
|
||||
EVP_KEYMGMT *km = NULL, *km1 = NULL, *km2 = NULL, *km3 = NULL;
|
||||
void *provkey = NULL, *provkey2 = NULL;
|
||||
BIGNUM *bn_primes[1] = { NULL };
|
||||
BIGNUM *bn_exps[1] = { NULL };
|
||||
BIGNUM *bn_coeffs[1] = { NULL };
|
||||
@ -216,9 +216,16 @@ static int test_pass_rsa(FIXTURE *fixture)
|
||||
|
||||
if (!TEST_ptr(km1 = EVP_KEYMGMT_fetch(fixture->ctx1, "RSA", NULL))
|
||||
|| !TEST_ptr(km2 = EVP_KEYMGMT_fetch(fixture->ctx2, "RSA", NULL))
|
||||
|| !TEST_ptr(km3 = EVP_KEYMGMT_fetch(fixture->ctx1, "RSA-PSS", NULL))
|
||||
|| !TEST_ptr_ne(km1, km2))
|
||||
goto err;
|
||||
|
||||
km = km3;
|
||||
/* Check that we can't export an RSA key into a RSA-PSS keymanager */
|
||||
if (!TEST_ptr_null(provkey2 = evp_pkey_export_to_provider(pk, NULL, &km,
|
||||
NULL)))
|
||||
goto err;
|
||||
|
||||
if (!TEST_ptr(provkey = evp_pkey_export_to_provider(pk, NULL, &km1, NULL))
|
||||
|| !TEST_true(evp_keymgmt_export(km2, provkey,
|
||||
OSSL_KEYMGMT_SELECT_KEYPAIR,
|
||||
@ -249,6 +256,7 @@ static int test_pass_rsa(FIXTURE *fixture)
|
||||
EVP_PKEY_free(pk);
|
||||
EVP_KEYMGMT_free(km1);
|
||||
EVP_KEYMGMT_free(km2);
|
||||
EVP_KEYMGMT_free(km3);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user