Make return value from EVP_PKEY_cmp() and EVP_PKEY_cmp_parameters() consistent.
authorDr. Stephen Henson <steve@openssl.org>
Sun, 2 Jul 2006 21:12:40 +0000 (21:12 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Sun, 2 Jul 2006 21:12:40 +0000 (21:12 +0000)
crypto/evp/p_lib.c

index 939857f..6715c15 100644 (file)
@@ -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;
        }