)]}'
{
  "commit": "3975388935512ea017024973924cfaf06f5b7822",
  "tree": "e7943f5e5eff29331f9d54a6d851a45f200699ed",
  "parents": [
    "bca12c4aa69ed8e4dafb889e39d56b72dedc5eec"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Fri Jan 09 17:23:47 2026 -0500"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jan 14 11:00:24 2026 -0800"
  },
  "message": "Narrow EVP_PKEY_cmp and EVP_PKEY_cmp_parameters return values\n\nThe documentation claimed negative numbers were an error, but this was\nwrong. In reality, the return values were:\n\n- 1 if the EVP_PKEYs had equal keys/parameters\n- 0 if the EVP_PKEYs were of the same type but unequal keys/parameters\n- -1 if the EVP_PKEYs were of different types\n- -2 on error\n\nMatching how we\u0027ve made other functions less error-prone, narrow their\nreturn values to just 1 and 0. The -1 and -2 cases are mapped to zero.\nThe implications are:\n\n- The return value no longer distinguishes keys that differ by type or\n  value. Callers that wish to distinguish that can instead check\n  EVP_PKEY_id. (Two places that use different errors within the library\n  were updated to check this, though I doubt anything actually needs\n  those X509-level errors separate.)\n\n- The error conditions are folded into unequal. Error conditions only\n  happened for empty keys anyway and weren\u0027t reachable from the parser.\n  They were a consequence of the EVP_PKEY type not being strong enough:\n\n  - Comparing two EVP_PKEY_NONE keys\n  - Comparing two EVP_PKEY_DH keys that were missing parameters.\n  - Comparing two EVP_PKEY_EC when EC_POINT_cmp failed, but this was\n    unreachable. That only failed for group mismatch and we check that\n    the parameters match first.\n\nBecause, in the course of this, I got very confused with all the \"cmp\"\nfunctions with different conventions, let\u0027s at least rename the internal\nhooks to say \"equal\". OpenSSL 3.0 added EVP_PKEY_eq and\nEVP_PKEY_parameters_eq aliases for these functions. We\u0027ll likely\nneed/want to adopt those later, but I\u0027ve left them alone for now.\n\nUpdate-Note: See above. TGP says no tests notice.\nChange-Id: I925ad0eb9a7737e09a44ed427c50995dc9158fb1\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/87008\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nReviewed-by: Lily Chen \u003cchlily@google.com\u003e\nAuto-Submit: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "52e4c5fe414906cc6fc0d11661c7037f8e7fb199",
      "old_mode": 33188,
      "old_path": "crypto/evp/evp.cc",
      "new_id": "d04ac9b62441c62e538e82254114a572f5245d8b",
      "new_mode": 33188,
      "new_path": "crypto/evp/evp.cc"
    },
    {
      "type": "modify",
      "old_id": "12382b19dc8ef803345a74299959c0cbd1772050",
      "old_mode": 33188,
      "old_path": "crypto/evp/evp_extra_test.cc",
      "new_id": "f4a93f19653b27b369435f54ce91349e15d8cb5a",
      "new_mode": 33188,
      "new_path": "crypto/evp/evp_extra_test.cc"
    },
    {
      "type": "modify",
      "old_id": "aa7e3e6a7359f71da904bbd0536e3265328cfb8d",
      "old_mode": 33188,
      "old_path": "crypto/evp/internal.h",
      "new_id": "bce96b885dcc349c8a5694557031c7c25c94a44a",
      "new_mode": 33188,
      "new_path": "crypto/evp/internal.h"
    },
    {
      "type": "modify",
      "old_id": "846a515f0cb040bab3cd4055a8ab3cf2d2344fc8",
      "old_mode": 33188,
      "old_path": "crypto/evp/p_dh.cc",
      "new_id": "0714212d7e16f5d99fe9459f8ddbcec479fcb689",
      "new_mode": 33188,
      "new_path": "crypto/evp/p_dh.cc"
    },
    {
      "type": "modify",
      "old_id": "d5ae45bff9edd43ed55dd48f42aae117c1801ca2",
      "old_mode": 33188,
      "old_path": "crypto/evp/p_dsa.cc",
      "new_id": "c8a8261d00bf2b8b1744baf5d56ddc9d024b1911",
      "new_mode": 33188,
      "new_path": "crypto/evp/p_dsa.cc"
    },
    {
      "type": "modify",
      "old_id": "c160f2b165145fe9d67ea870c7bf5dc1e0ca3515",
      "old_mode": 33188,
      "old_path": "crypto/evp/p_ec.cc",
      "new_id": "45245bba924d7cef9ad05cb562f4ea2f2582439c",
      "new_mode": 33188,
      "new_path": "crypto/evp/p_ec.cc"
    },
    {
      "type": "modify",
      "old_id": "70558adcf22f6d7757c49d4d0494122a3739ea28",
      "old_mode": 33188,
      "old_path": "crypto/evp/p_ed25519.cc",
      "new_id": "4ecf86e2d15542a641fa06a48dcc10b980659649",
      "new_mode": 33188,
      "new_path": "crypto/evp/p_ed25519.cc"
    },
    {
      "type": "modify",
      "old_id": "b67e661dc394db314e7d7865cb1e3b8750c8cfc0",
      "old_mode": 33188,
      "old_path": "crypto/evp/p_mldsa.cc",
      "new_id": "57d25f6b6135a50d07a550896222420629a714e0",
      "new_mode": 33188,
      "new_path": "crypto/evp/p_mldsa.cc"
    },
    {
      "type": "modify",
      "old_id": "68d8d073fe6b594615338a2a936b4cb3002f5019",
      "old_mode": 33188,
      "old_path": "crypto/evp/p_rsa.cc",
      "new_id": "e2772e48466934620c9a49b4fd93f86b69ba2a58",
      "new_mode": 33188,
      "new_path": "crypto/evp/p_rsa.cc"
    },
    {
      "type": "modify",
      "old_id": "468609aa33650ff6305e745c62488d7b9eb80be9",
      "old_mode": 33188,
      "old_path": "crypto/evp/p_x25519.cc",
      "new_id": "60e8a0f166f992849502225ac782404eeb4b7f11",
      "new_mode": 33188,
      "new_path": "crypto/evp/p_x25519.cc"
    },
    {
      "type": "modify",
      "old_id": "31c97242c30cc3f074854bcd60a4973cd21578f6",
      "old_mode": 33188,
      "old_path": "crypto/x509/x509_req.cc",
      "new_id": "f7a3417106d86ef3dc5f0df0061ec82e53e7e727",
      "new_mode": 33188,
      "new_path": "crypto/x509/x509_req.cc"
    },
    {
      "type": "modify",
      "old_id": "5c3126811f0e6d1aecfffb1dec645c0cb60304dc",
      "old_mode": 33188,
      "old_path": "include/openssl/evp.h",
      "new_id": "ec9c9fbec9d3c79da2ccbe29e1061e46bd01fcf1",
      "new_mode": 33188,
      "new_path": "include/openssl/evp.h"
    },
    {
      "type": "modify",
      "old_id": "72218aeead5f534d59e4333468edd5868fa4a114",
      "old_mode": 33188,
      "old_path": "ssl/ssl_cert.cc",
      "new_id": "b6ba875e54d40d1ae2a959196b52315079652427",
      "new_mode": 33188,
      "new_path": "ssl/ssl_cert.cc"
    }
  ]
}
