diff --git a/crypto/evp/p_lib.c b/crypto/evp/p_lib.c index 939857fdb000b2b07694b1ddde47e3638a3d516d..6715c154b29c99252e2fddae350e4ad7d39576b5 100644 --- a/crypto/evp/p_lib.c +++ b/crypto/evp/p_lib.c @@ -161,11 +161,20 @@ int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b) if (a->type != b->type) return -1; - if (EVP_PKEY_cmp_parameters(a, b) == 0) - return 0; - - if (a->ameth && a->ameth->pub_cmp) - return a->ameth->pub_cmp(a, b); + if (a->meth) + { + int ret; + /* Compare parameters if the algorithm has them */ + if (a->meth->param_cmp) + { + ret = a->meth->param_cmp(a, b); + if (ret <= 0) + return ret; + } + + if (a->ameth->pub_cmp) + return a->ameth->pub_cmp(a, b); + } return -2; }