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;
}