EVP_PKEY_eq: regain compatibility with the 3.0.0 FIPS provider

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19201)
This commit is contained in:
Tomáš Mráz 2022-09-13 14:37:05 +10:00 committed by Pauli
parent 9684335839
commit c342004e07
1 changed files with 10 additions and 3 deletions

View File

@ -339,9 +339,16 @@ int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b)
if (a == NULL || b == NULL)
return 0;
if (a->keymgmt != NULL || b->keymgmt != NULL)
return evp_pkey_cmp_any(a, b, (SELECT_PARAMETERS
| OSSL_KEYMGMT_SELECT_KEYPAIR));
if (a->keymgmt != NULL || b->keymgmt != NULL) {
int selection = SELECT_PARAMETERS;
if (evp_keymgmt_util_has((EVP_PKEY *)a, OSSL_KEYMGMT_SELECT_PUBLIC_KEY)
&& evp_keymgmt_util_has((EVP_PKEY *)b, OSSL_KEYMGMT_SELECT_PUBLIC_KEY))
selection |= OSSL_KEYMGMT_SELECT_PUBLIC_KEY;
else
selection |= OSSL_KEYMGMT_SELECT_KEYPAIR;
return evp_pkey_cmp_any(a, b, selection);
}
/* All legacy keys */
if (a->type != b->type)