What was I smoking? EVP_PKEY_cmp() should return with 0 if
[openssl.git] / crypto / evp / p_lib.c
index 8d23c0bd7200fa574c7ce4045549bc0b42839f01..730ef4d0a90470a33b525cfe5b76c3d0ec544ab3 100644 (file)
@@ -150,7 +150,7 @@ int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode)
        return(0);
        }
 
-int EVP_PKEY_copy_parameters(EVP_PKEY *to, EVP_PKEY *from)
+int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)
        {
        if (to->type != from->type)
                {
@@ -198,7 +198,7 @@ err:
        return(0);
        }
 
-int EVP_PKEY_missing_parameters(EVP_PKEY *pkey)
+int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey)
        {
 #ifndef OPENSSL_NO_DSA
        if (pkey->type == EVP_PKEY_DSA)
@@ -221,7 +221,7 @@ int EVP_PKEY_missing_parameters(EVP_PKEY *pkey)
        return(0);
        }
 
-int EVP_PKEY_cmp_parameters(EVP_PKEY *a, EVP_PKEY *b)
+int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b)
        {
 #ifndef OPENSSL_NO_DSA
        if ((a->type == EVP_PKEY_DSA) && (b->type == EVP_PKEY_DSA))
@@ -237,11 +237,14 @@ int EVP_PKEY_cmp_parameters(EVP_PKEY *a, EVP_PKEY *b)
        return(-1);
        }
 
-int EVP_PKEY_cmp(EVP_PKEY *a, EVP_PKEY *b)
+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;
+
        switch (a->type)
                {
 #ifndef OPENSSL_NO_RSA