- 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->ameth)
+ {
+ int ret;
+ /* Compare parameters if the algorithm has them */
+ if (a->ameth->param_cmp)
+ {
+ ret = a->ameth->param_cmp(a, b);
+ if (ret <= 0)
+ return ret;
+ }
+
+ if (a->ameth->pub_cmp)
+ return a->ameth->pub_cmp(a, b);
+ }