)]}'
{
  "commit": "29564f2b633b1275e3e97703d86b41296211fb79",
  "tree": "7a235b25a9964bda0c420b2220b7db92d251a488",
  "parents": [
    "582904fdde86be25dfc5ee1a4f5385444c214678"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Fri Feb 03 18:15:09 2023 -0500"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Feb 06 20:14:15 2023 +0000"
  },
  "message": "Reject even moduli in RSA_check_key.\n\nRSA state management is generally a mess right now, which causes thread\ncontention issues in highly threaded servers. We need to do a lot\nof work within the library to fix it, but in the end state,\nRSA_check_key (called by the parser), BN_MONT_CTX_set_locked, and\nfreeze_private_key should all be unified.\n\nThis means that anything which can causes the latter two steps to fail\nwill be lifted up into the parser, currently RSA_check_key. We\u0027ve\nbroadly done that, but odd moduli (n, p, and q) are currently not\ncovered by RSA_check_key. Fix that. We only need to check for odd n,\nbecause odd p and q are then implied by p * q \u003d\u003d n.\n\nUpdate-Note: RSA keys with even moduli already do not work. (In addition\nto being nonsensical, all operations will fail with them because we\ncannot do Montgomery reduction on even moduli.) This CL shifts the error\nfrom when you use the key, to when you parse the key, like our other\nvalidation steps. Also after this lands, the check for odd modulus in\ncl/447099278 can be removed.\n\nBug: 316\nChange-Id: Ifa4af610316a8f717a026128078a5d38d046bff9\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/56885\nReviewed-by: Bob Beck \u003cbbe@google.com\u003e\nCommit-Queue: Bob Beck \u003cbbe@google.com\u003e\nAuto-Submit: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0c890fd63c1157e17976911d25ead91fff60e025",
      "old_mode": 33188,
      "old_path": "crypto/evp/evp_tests.txt",
      "new_id": "7fe2bced70e22c64708050b294c1993bff0352a7",
      "new_mode": 33188,
      "new_path": "crypto/evp/evp_tests.txt"
    },
    {
      "type": "modify",
      "old_id": "6b3e228146f6a275ef04ae34d88c58f50db5248f",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/rsa/rsa.c",
      "new_id": "bbac05f51e3b5a6cf5aaaac95c9e273828f5ec51",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/rsa/rsa.c"
    },
    {
      "type": "modify",
      "old_id": "b9c47cd0c41e0fc4139a79b41d27ea00ad344536",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/rsa/rsa_impl.c",
      "new_id": "df465f242d08f494485c49876a46e2712b627148",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/rsa/rsa_impl.c"
    }
  ]
}
