)]}'
{
  "commit": "0b8dc3093276336273cd521de36d9f444be6479f",
  "tree": "bd1b475cfbeb79edb37f9946dfa3d351ece5fbaf",
  "parents": [
    "053fee9f79a51d37f4b6d73be2aed0a5e97922b0"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Sat Dec 17 14:27:16 2016 -0500"
  },
  "committer": {
    "name": "CQ bot account: commit-bot@chromium.org",
    "email": "commit-bot@chromium.org",
    "time": "Wed Jan 04 13:56:11 2017 +0000"
  },
  "message": "Don\u0027t use BN_mod_inverse for inverses mod p in RSA keygen.\n\nInstead, use BN_mod_exp_mont_consttime of p - 2. This removes two more\ncall sites sensitive to BN_FLG_CONSTTIME. We\u0027re down to just that last\nBN_mod_inverse modulo φ(n). (Sort of. It\u0027s actually not sensitive\nbecause even mod inverses always hit the other codepath. Perhaps we\nshould just leave it alone.)\n\nNote this comes with a slight behavior change. The BN_MONT_CTXs are\ninitialized a little earlier. If a caller calls RSA_generate_* and then\nreaches into the struct to scrap all the fields on it, they\u0027ll get\nconfused. Before, they had to perform an operation on it to get\nconfused. This is a completely ridiculous thing to do.\n\nSince we do this a lot, this introduces some convenience functions for\ndoing the Fermat\u0027s Little Theorem mod inverse and fixes a leak in the\nDSA code should computing kinv hit a malloc error.\n\nBUG\u003d125\n\nChange-Id: Iafcae2fc6fd379d161f015c90ff7050e2282e905\nReviewed-on: https://boringssl-review.googlesource.com/12925\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\nCommit-Queue: Adam Langley \u003cagl@google.com\u003e\nCQ-Verified: CQ bot account: commit-bot@chromium.org \u003ccommit-bot@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "728096341bb01e7f1a7dcbf8f2d9278c287dda67",
      "old_mode": 33188,
      "old_path": "crypto/bn/gcd.c",
      "new_id": "9e62da00dc9a7ba3b60cba1ba0c218b44ee6b94d",
      "new_mode": 33188,
      "new_path": "crypto/bn/gcd.c"
    },
    {
      "type": "modify",
      "old_id": "f2141d76c44acc0ab847c0c48b68f02b9c771c6f",
      "old_mode": 33188,
      "old_path": "crypto/bn/internal.h",
      "new_id": "1ee29fd4992bed81f46b0537618f0bedae4bf110",
      "new_mode": 33188,
      "new_path": "crypto/bn/internal.h"
    },
    {
      "type": "modify",
      "old_id": "65e4091f4c6fd3ef003034f1bb617e86de6717e5",
      "old_mode": 33188,
      "old_path": "crypto/dsa/dsa.c",
      "new_id": "15583be056b1c804e14a88c46dc09887a0a0c3d5",
      "new_mode": 33188,
      "new_path": "crypto/dsa/dsa.c"
    },
    {
      "type": "modify",
      "old_id": "1253a73dba54c9dc0c1f987a640a94a24fafaebe",
      "old_mode": 33188,
      "old_path": "crypto/ec/ec_montgomery.c",
      "new_id": "4643fd2c4c06f4706e039a0d3c70ff91e6422a41",
      "new_mode": 33188,
      "new_path": "crypto/ec/ec_montgomery.c"
    },
    {
      "type": "modify",
      "old_id": "b4e6d0d2eb85cf4379a47d0cd01a24fd6296fb2c",
      "old_mode": 33188,
      "old_path": "crypto/ecdsa/ecdsa.c",
      "new_id": "34320819efd29931c061c287490f3deed7ac625c",
      "new_mode": 33188,
      "new_path": "crypto/ecdsa/ecdsa.c"
    },
    {
      "type": "modify",
      "old_id": "2cae4ca889d4ec1b5460b4c60422816e7005e9d6",
      "old_mode": 33188,
      "old_path": "crypto/rsa/rsa_impl.c",
      "new_id": "3834be5af51f846a8881154ba3325a31b0e2fc0b",
      "new_mode": 33188,
      "new_path": "crypto/rsa/rsa_impl.c"
    }
  ]
}
