Switch callers within the library to EVP_PKEY_eq

Bug: 497675628
Change-Id: I35137b7598199e79740002f45b3eb8597327ea17
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/91910
Auto-Submit: David Benjamin <davidben@google.com>
Reviewed-by: Lily Chen <chlily@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/crypto/evp/evp.cc b/crypto/evp/evp.cc
index fafe0cc..2936e68 100644
--- a/crypto/evp/evp.cc
+++ b/crypto/evp/evp.cc
@@ -106,7 +106,7 @@
 
   // Once set, parameters may not change.
   if (!EVP_PKEY_missing_parameters(to_impl)) {
-    if (EVP_PKEY_cmp_parameters(to_impl, from_impl) == 1) {
+    if (EVP_PKEY_parameters_eq(to_impl, from_impl) == 1) {
       return 1;
     }
     OPENSSL_PUT_ERROR(EVP, EVP_R_DIFFERENT_PARAMETERS);
diff --git a/crypto/evp/evp_ctx.cc b/crypto/evp/evp_ctx.cc
index bcb9c59..adac362 100644
--- a/crypto/evp/evp_ctx.cc
+++ b/crypto/evp/evp_ctx.cc
@@ -351,13 +351,8 @@
     return 0;
   }
 
-  // ran@cryptocom.ru: For clarity.  The error is if parameters in peer are
-  // present (!missing) but don't match.  EVP_PKEY_cmp_parameters may return
-  // 1 (match), 0 (don't match) and -2 (comparison is not defined).  -1
-  // (different key types) is impossible here because it is checked earlier.
-  // -2 is OK for us here, as well as 1, so we can check for 0 only.
   if (!EVP_PKEY_missing_parameters(peer) &&
-      !EVP_PKEY_cmp_parameters(impl->pkey.get(), peer)) {
+      !EVP_PKEY_parameters_eq(impl->pkey.get(), peer)) {
     OPENSSL_PUT_ERROR(EVP, EVP_R_DIFFERENT_PARAMETERS);
     return 0;
   }
diff --git a/crypto/evp/evp_extra_test.cc b/crypto/evp/evp_extra_test.cc
index 675718b..afb2cdc 100644
--- a/crypto/evp/evp_extra_test.cc
+++ b/crypto/evp/evp_extra_test.cc
@@ -790,15 +790,15 @@
   free_der.reset(der);
   EXPECT_EQ(Bytes(kPrivateKeyPKCS8), Bytes(der, der_len));
 
-  // Test EVP_PKEY_cmp.
-  EXPECT_EQ(1, EVP_PKEY_cmp(pubkey.get(), privkey.get()));
+  // Test EVP_PKEY_eq.
+  EXPECT_EQ(1, EVP_PKEY_eq(pubkey.get(), privkey.get()));
 
   static const uint8_t kZeros[32] = {0};
   UniquePtr<EVP_PKEY> pubkey2(
       EVP_PKEY_from_raw_public_key(EVP_pkey_ed25519(), kZeros, sizeof(kZeros)));
   ASSERT_TRUE(pubkey2);
-  EXPECT_EQ(0, EVP_PKEY_cmp(pubkey.get(), pubkey2.get()));
-  EXPECT_EQ(0, EVP_PKEY_cmp(privkey.get(), pubkey2.get()));
+  EXPECT_EQ(0, EVP_PKEY_eq(pubkey.get(), pubkey2.get()));
+  EXPECT_EQ(0, EVP_PKEY_eq(privkey.get(), pubkey2.get()));
 
   // Ed25519 may not be used streaming.
   ScopedEVP_MD_CTX ctx;
@@ -957,7 +957,7 @@
     ExpectECGroupAndKey(pkey2.get(), NID_X9_62_prime256v1);
 
     // The two keys should compare as different.
-    EXPECT_EQ(EVP_PKEY_cmp(pkey.get(), pkey2.get()), 0);
+    EXPECT_EQ(EVP_PKEY_eq(pkey.get(), pkey2.get()), 0);
 
     // Keys of different groups should also compare as different.
     ctx.reset(EVP_PKEY_CTX_new_id(EVP_PKEY_EC, nullptr));
@@ -972,7 +972,7 @@
     ASSERT_TRUE(EVP_PKEY_keygen(ctx.get(), &raw));
     UniquePtr<EVP_PKEY> pkey3(raw);
     ExpectECGroupAndKey(pkey3.get(), NID_secp384r1);
-    EXPECT_EQ(EVP_PKEY_cmp(pkey.get(), pkey3.get()), 0);
+    EXPECT_EQ(EVP_PKEY_eq(pkey.get(), pkey3.get()), 0);
 
     // The algorithm-based API provides a much, much easier keygen API.
     pkey.reset(EVP_PKEY_generate_from_alg(EVP_pkey_ec_p256()));
@@ -1028,8 +1028,8 @@
     EXPECT_FALSE(DH_get0_q(dh));
     EXPECT_TRUE(DH_get0_pub_key(dh));
     EXPECT_TRUE(DH_get0_priv_key(dh));
-    EXPECT_EQ(1, EVP_PKEY_cmp_parameters(params.get(), pkey.get()));
-    EXPECT_EQ(0, EVP_PKEY_cmp(params.get(), pkey.get()));
+    EXPECT_EQ(1, EVP_PKEY_parameters_eq(params.get(), pkey.get()));
+    EXPECT_EQ(0, EVP_PKEY_eq(params.get(), pkey.get()));
 
     // Generate a second key.
     ctx.reset(EVP_PKEY_CTX_new(params.get(), nullptr));
@@ -1041,9 +1041,9 @@
     ASSERT_TRUE(EVP_PKEY_keygen(ctx.get(), &raw));
     UniquePtr<EVP_PKEY> pkey2(raw);
 
-    EXPECT_EQ(1, EVP_PKEY_cmp_parameters(params.get(), pkey2.get()));
-    EXPECT_EQ(1, EVP_PKEY_cmp_parameters(pkey.get(), pkey2.get()));
-    EXPECT_EQ(0, EVP_PKEY_cmp(pkey.get(), pkey2.get()));
+    EXPECT_EQ(1, EVP_PKEY_parameters_eq(params.get(), pkey2.get()));
+    EXPECT_EQ(1, EVP_PKEY_parameters_eq(pkey.get(), pkey2.get()));
+    EXPECT_EQ(0, EVP_PKEY_eq(pkey.get(), pkey2.get()));
   }
 }
 
@@ -1111,14 +1111,14 @@
 
     EXPECT_EQ(EVP_PKEY_id(pkey2.get()), alg.type);
     CheckSignAndVerify(pkey2.get());
-    EXPECT_EQ(EVP_PKEY_cmp(pkey.get(), pkey2.get()), 0);
+    EXPECT_EQ(EVP_PKEY_eq(pkey.get(), pkey2.get()), 0);
 
     // The less messy API should also work.
     UniquePtr<EVP_PKEY> pkey3(EVP_PKEY_generate_from_alg(alg.alg));
     ASSERT_TRUE(pkey3);
     EXPECT_EQ(EVP_PKEY_id(pkey3.get()), alg.type);
     CheckSignAndVerify(pkey3.get());
-    EXPECT_EQ(EVP_PKEY_cmp(pkey.get(), pkey3.get()), 0);
+    EXPECT_EQ(EVP_PKEY_eq(pkey.get(), pkey3.get()), 0);
   }
 }
 
@@ -1209,7 +1209,7 @@
   UniquePtr<EVP_PKEY> rsa2 = LoadExampleRSAKey();
   ASSERT_TRUE(rsa2);
   // Two null parameters should compare as equal.
-  EXPECT_EQ(1, EVP_PKEY_cmp_parameters(rsa.get(), rsa2.get()));
+  EXPECT_EQ(1, EVP_PKEY_parameters_eq(rsa.get(), rsa2.get()));
 
   // EC keys have parameters, but it is possible to initialize an |EVP_PKEY|
   // with a completely empty |EC_KEY|.
@@ -1230,23 +1230,23 @@
   ASSERT_TRUE(p384);
   EXPECT_FALSE(EVP_PKEY_missing_parameters(p384.get()));
 
-  EXPECT_EQ(1, EVP_PKEY_cmp_parameters(p256.get(), p256_2.get()));
-  EXPECT_EQ(0, EVP_PKEY_cmp_parameters(p256.get(), p384.get()));
+  EXPECT_EQ(1, EVP_PKEY_parameters_eq(p256.get(), p256_2.get()));
+  EXPECT_EQ(0, EVP_PKEY_parameters_eq(p256.get(), p384.get()));
 
   // Copying parameters onto a curve-less EC key works.
   ASSERT_TRUE(EVP_PKEY_copy_parameters(ec_no_params.get(), p256.get()));
-  EXPECT_EQ(1, EVP_PKEY_cmp_parameters(p256.get(), ec_no_params.get()));
+  EXPECT_EQ(1, EVP_PKEY_parameters_eq(p256.get(), ec_no_params.get()));
 
   // No-op copies silently succeed.
   ASSERT_TRUE(EVP_PKEY_copy_parameters(ec_no_params.get(), p256.get()));
-  EXPECT_EQ(1, EVP_PKEY_cmp_parameters(p256.get(), ec_no_params.get()));
+  EXPECT_EQ(1, EVP_PKEY_parameters_eq(p256.get(), ec_no_params.get()));
 
   // Copying parameters onto a type-less key works.
   UniquePtr<EVP_PKEY> pkey(EVP_PKEY_new());
   ASSERT_TRUE(pkey);
   ASSERT_TRUE(EVP_PKEY_copy_parameters(pkey.get(), p256.get()));
   EXPECT_EQ(EVP_PKEY_EC, EVP_PKEY_id(pkey.get()));
-  EXPECT_EQ(1, EVP_PKEY_cmp_parameters(p256.get(), pkey.get()));
+  EXPECT_EQ(1, EVP_PKEY_parameters_eq(p256.get(), pkey.get()));
 
   // |EVP_PKEY_copy_parameters| cannot change a key's type or curve.
   EXPECT_FALSE(EVP_PKEY_copy_parameters(rsa.get(), p256.get()));
@@ -1259,12 +1259,12 @@
   UniquePtr<EVP_PKEY> rsa = ParsePrivateKey(EVP_PKEY_RSA, kExampleRSAKeyDER);
   UniquePtr<EVP_PKEY> dsa = ParsePrivateKey(EVP_PKEY_DSA, kExampleDSAKeyDER);
   UniquePtr<EVP_PKEY> ec = ParsePrivateKey(EVP_PKEY_EC, kExampleECKeyDER);
-  EXPECT_EQ(EVP_PKEY_cmp(rsa.get(), dsa.get()), 0);
-  EXPECT_EQ(EVP_PKEY_cmp(rsa.get(), ec.get()), 0);
-  EXPECT_EQ(EVP_PKEY_cmp(dsa.get(), ec.get()), 0);
-  EXPECT_EQ(EVP_PKEY_cmp_parameters(rsa.get(), dsa.get()), 0);
-  EXPECT_EQ(EVP_PKEY_cmp_parameters(rsa.get(), ec.get()), 0);
-  EXPECT_EQ(EVP_PKEY_cmp_parameters(dsa.get(), ec.get()), 0);
+  EXPECT_EQ(EVP_PKEY_eq(rsa.get(), dsa.get()), 0);
+  EXPECT_EQ(EVP_PKEY_eq(rsa.get(), ec.get()), 0);
+  EXPECT_EQ(EVP_PKEY_eq(dsa.get(), ec.get()), 0);
+  EXPECT_EQ(EVP_PKEY_parameters_eq(rsa.get(), dsa.get()), 0);
+  EXPECT_EQ(EVP_PKEY_parameters_eq(rsa.get(), ec.get()), 0);
+  EXPECT_EQ(EVP_PKEY_parameters_eq(dsa.get(), ec.get()), 0);
 }
 
 TEST(EVPExtraTest, RawKeyUnsupported) {
@@ -1449,9 +1449,9 @@
   ASSERT_TRUE(real_key);
 
   // A half-empty key cannot be compared.
-  EXPECT_FALSE(EVP_PKEY_cmp(half_empty.get(), half_empty.get()));
-  EXPECT_FALSE(EVP_PKEY_cmp(half_empty.get(), real_key.get()));
-  EXPECT_FALSE(EVP_PKEY_cmp(real_key.get(), half_empty.get()));
+  EXPECT_FALSE(EVP_PKEY_eq(half_empty.get(), half_empty.get()));
+  EXPECT_FALSE(EVP_PKEY_eq(half_empty.get(), real_key.get()));
+  EXPECT_FALSE(EVP_PKEY_eq(real_key.get(), half_empty.get()));
 
   // A half-empty cannot be the peer in a Diffie-Hellman operation.
   ctx.reset(EVP_PKEY_CTX_new(real_key.get(), nullptr));
diff --git a/crypto/evp/evp_test.cc b/crypto/evp/evp_test.cc
index 7c4546a..2d4cc0b 100644
--- a/crypto/evp/evp_test.cc
+++ b/crypto/evp/evp_test.cc
@@ -455,7 +455,7 @@
     CheckRSAParam(t, "RSAParamIQMP", pkey.get(), RSA_get0_iqmp);
 
     // All keys must compare equal.
-    EXPECT_EQ(EVP_PKEY_cmp(pkey.get(), keys.front().second.get()), 1);
+    EXPECT_EQ(EVP_PKEY_eq(pkey.get(), keys.front().second.get()), 1);
 
     // The key must re-encode correctly.
     bssl::ScopedCBB cbb;
@@ -481,8 +481,8 @@
     EXPECT_TRUE(public_copy);
     EXPECT_TRUE(EVP_PKEY_has_public(public_copy.get()));
     EXPECT_FALSE(EVP_PKEY_has_private(public_copy.get()));
-    EXPECT_EQ(EVP_PKEY_cmp(public_copy.get(), pkey.get()), 1);
-    EXPECT_EQ(EVP_PKEY_cmp_parameters(public_copy.get(), pkey.get()), 1);
+    EXPECT_EQ(EVP_PKEY_eq(public_copy.get(), pkey.get()), 1);
+    EXPECT_EQ(EVP_PKEY_parameters_eq(public_copy.get(), pkey.get()), 1);
     // Check that the copied public key serializes the same.
     bssl::ScopedCBB cbb_public, cbb_public_copy;
     if (!CBB_init(cbb_public.get(), 0) ||
diff --git a/crypto/pkcs8/pkcs12_test.cc b/crypto/pkcs8/pkcs12_test.cc
index 05fa6ca..5fa6ce9 100644
--- a/crypto/pkcs8/pkcs12_test.cc
+++ b/crypto/pkcs8/pkcs12_test.cc
@@ -350,9 +350,8 @@
   ASSERT_TRUE(certs2);
   ASSERT_TRUE(PKCS12_get_key_and_certs(&key2, certs2.get(), &cbs, password));
   bssl::UniquePtr<EVP_PKEY> free_key2(key2);
-  // Note |EVP_PKEY_cmp| returns one for equality while |X509_cmp| returns zero.
   if (key) {
-    EXPECT_EQ(1, EVP_PKEY_cmp(key2, key.get()));
+    EXPECT_EQ(1, EVP_PKEY_eq(key2, key.get()));
   } else {
     EXPECT_FALSE(key2);
   }
@@ -539,7 +538,7 @@
     EXPECT_FALSE(key);
   } else {
     ASSERT_TRUE(key);
-    EXPECT_EQ(1, EVP_PKEY_cmp(key, expect_key));
+    EXPECT_EQ(1, EVP_PKEY_eq(key, expect_key));
   }
 
   if (expect_cert == nullptr) {
diff --git a/crypto/x509/x509_cmp.cc b/crypto/x509/x509_cmp.cc
index 79a359a..bfa8c56 100644
--- a/crypto/x509/x509_cmp.cc
+++ b/crypto/x509/x509_cmp.cc
@@ -225,7 +225,7 @@
     return 0;
   }
 
-  if (EVP_PKEY_cmp(xk, k) == 1) {
+  if (EVP_PKEY_eq(xk, k) == 1) {
     return 1;
   }
 
diff --git a/crypto/x509/x509_req.cc b/crypto/x509/x509_req.cc
index 65fdef0..ee7203b 100644
--- a/crypto/x509/x509_req.cc
+++ b/crypto/x509/x509_req.cc
@@ -56,7 +56,7 @@
     return 0;
   }
 
-  if (EVP_PKEY_cmp(xk, k) == 1) {
+  if (EVP_PKEY_eq(xk, k) == 1) {
     return 1;
   }
 
diff --git a/crypto/x509/x509_test.cc b/crypto/x509/x509_test.cc
index 538300c..123c7af 100644
--- a/crypto/x509/x509_test.cc
+++ b/crypto/x509/x509_test.cc
@@ -2957,7 +2957,7 @@
       // Check the signature was over the new public key.
       UniquePtr<EVP_PKEY> copy_pubkey(X509_REQ_get_pubkey(copy.get()));
       ASSERT_TRUE(copy_pubkey);
-      EXPECT_EQ(1, EVP_PKEY_cmp(pkey.get(), copy_pubkey.get()));
+      EXPECT_EQ(1, EVP_PKEY_eq(pkey.get(), copy_pubkey.get()));
     }
   }
 }
@@ -3610,9 +3610,8 @@
         // Expect a placeholder key.
         EXPECT_FALSE(info->x_pkey->dec_pkey);
       } else {
-        // EVP_PKEY_cmp returns one if the keys are equal.
         ASSERT_TRUE(info->x_pkey->dec_pkey);
-        EXPECT_EQ(1, EVP_PKEY_cmp(expected->key, info->x_pkey->dec_pkey));
+        EXPECT_EQ(1, EVP_PKEY_eq(expected->key, info->x_pkey->dec_pkey));
       }
     } else {
       EXPECT_EQ(nullptr, info->x_pkey);
@@ -8237,7 +8236,7 @@
 
   UniquePtr<EVP_PKEY> key2(X509_PUBKEY_get(pub));
   ASSERT_TRUE(key2);
-  EXPECT_EQ(1, EVP_PKEY_cmp(key.get(), key2.get()));
+  EXPECT_EQ(1, EVP_PKEY_eq(key.get(), key2.get()));
 
   // Replace |pub| with different (garbage) values.
   ASSERT_TRUE(X509_PUBKEY_set0_param(pub, OBJ_nid2obj(NID_subject_alt_name),
@@ -9617,7 +9616,7 @@
   // The public key can be extracted from |cert|.
   const EVP_PKEY *cert_pkey = X509_get0_pubkey(cert.get());
   ASSERT_TRUE(cert_pkey);
-  EXPECT_EQ(EVP_PKEY_cmp(pkey.get(), cert_pkey), 1);
+  EXPECT_EQ(EVP_PKEY_eq(pkey.get(), cert_pkey), 1);
   // |X509_check_private_key| should work.
   EXPECT_EQ(X509_check_private_key(cert.get(), pkey.get()), 1);
 #endif
@@ -9638,7 +9637,7 @@
   // The public key can be extracted from |cert|.
   const EVP_PKEY *cert_pkey = X509_get0_pubkey(cert_with_key.get());
   ASSERT_TRUE(cert_pkey);
-  EXPECT_EQ(EVP_PKEY_cmp(pkey.get(), cert_pkey), 1);
+  EXPECT_EQ(EVP_PKEY_eq(pkey.get(), cert_pkey), 1);
   // |X509_check_private_key| should work.
   EXPECT_EQ(X509_check_private_key(cert_with_key.get(), pkey.get()), 1);
 
diff --git a/ssl/ssl_cert.cc b/ssl/ssl_cert.cc
index b6ba875..0cece5d 100644
--- a/ssl/ssl_cert.cc
+++ b/ssl/ssl_cert.cc
@@ -280,7 +280,7 @@
     return true;
   }
 
-  if (EVP_PKEY_cmp(pubkey, privkey) != 1) {
+  if (EVP_PKEY_eq(pubkey, privkey) != 1) {
     if (EVP_PKEY_id(pubkey) != EVP_PKEY_id(privkey)) {
       OPENSSL_PUT_ERROR(X509, X509_R_KEY_TYPE_MISMATCH);
     } else {
diff --git a/ssl/ssl_test.cc b/ssl/ssl_test.cc
index e47a92e..dd7d2c7 100644
--- a/ssl/ssl_test.cc
+++ b/ssl/ssl_test.cc
@@ -10218,7 +10218,7 @@
     ASSERT_TRUE(ctx.get());
     ASSERT_TRUE(SSL_CTX_use_PrivateKey_file(ctx.get(), file.path().c_str(),
                                             SSL_FILETYPE_PEM));
-    EXPECT_EQ(EVP_PKEY_cmp(SSL_CTX_get0_privatekey(ctx.get()), key.get()), 1);
+    EXPECT_EQ(EVP_PKEY_eq(SSL_CTX_get0_privatekey(ctx.get()), key.get()), 1);
   }
   {
     TemporaryFile file;
@@ -10227,7 +10227,7 @@
     ASSERT_TRUE(ctx.get());
     ASSERT_TRUE(SSL_CTX_use_RSAPrivateKey_file(ctx.get(), file.path().c_str(),
                                                SSL_FILETYPE_PEM));
-    EXPECT_EQ(EVP_PKEY_cmp(SSL_CTX_get0_privatekey(ctx.get()), key.get()), 1);
+    EXPECT_EQ(EVP_PKEY_eq(SSL_CTX_get0_privatekey(ctx.get()), key.get()), 1);
   }
 
   // Empty files are errors.