)]}'
{
  "commit": "cfd50c63a14a256a56498b05b527bea203957fb9",
  "tree": "1f2d4f58a06d2277b1cea72555dfc39da0ece448",
  "parents": [
    "3d450d2844db825a906fc19f7bb1e6ce765047db"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Mon Nov 05 17:30:28 2018 -0600"
  },
  "committer": {
    "name": "CQ bot account: commit-bot@chromium.org",
    "email": "commit-bot@chromium.org",
    "time": "Tue Nov 06 00:17:19 2018 +0000"
  },
  "message": "Route the tuned add/dbl implementations out of EC_METHOD.\n\nSome consumer stumbled upon EC_POINT_{add,dbl} being faster with a\n\"custom\" P-224 curve than the built-in one and made \"custom\" clones to\nwork around this. Before the EC_FELEM refactor, EC_GFp_nistp224_method\nused BN_mod_mul for all reductions in fallback point arithmetic (we\nprimarily support the multiplication functions and keep the low-level\npoint arithmetic for legacy reasons) which took quite a performance hit.\n\nEC_FELEM fixed this, but standalone felem_{mul,sqr} calls out of\nnistp224 perform a lot of reductions, rather than batching them up as\nthat implementation is intended. So it is still slightly faster to use a\n\"custom\" curve.\n\nCustom curves are the last thing we want to encourage, so just route the\ntuned implementations out of EC_METHOD to close this gap. Now the\nbuilt-in implementation is always solidly faster than (or identical to)\nthe custom clone.  This also reduces the number of places where we mix\nup tuned vs. generic implementation, which gets us closer to making\nEC_POINT\u0027s representation EC_METHOD-specific.\n\nChange-Id: I843e1101a6208eaabb56d29d342e886e523c78b4\nReviewed-on: https://boringssl-review.googlesource.com/c/32848\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nCQ-Verified: CQ bot account: commit-bot@chromium.org \u003ccommit-bot@chromium.org\u003e\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e9b1e978e264dfa005915ccc6a866d4c2056497c",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/ec/ec.c",
      "new_id": "4c557a10969ff7e5689a47550da3321602f16f03",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/ec/ec.c"
    },
    {
      "type": "modify",
      "old_id": "cd6bbfd7aa0c07482385375a119a451eb21ab555",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/ec/ec_montgomery.c",
      "new_id": "db2d657df506f3dd391e84d98980ffdcfff29d2d",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/ec/ec_montgomery.c"
    },
    {
      "type": "modify",
      "old_id": "02cd04ac325ea3bd4db66c27bfc0ea01b42cfca2",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/ec/internal.h",
      "new_id": "4f58cb9f45b27cd0f06c7e6dfd7af01eb903b4d2",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/ec/internal.h"
    },
    {
      "type": "modify",
      "old_id": "8c7a812f0f3d2bc9910cf46f3b109ea08e3d4fad",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/ec/p224-64.c",
      "new_id": "27bfc3681c269ffaaf52009b1c026d26c513e232",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/ec/p224-64.c"
    },
    {
      "type": "modify",
      "old_id": "e630cb7769c323af733f4dc0942915c4b38a717c",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/ec/p256-x86_64.c",
      "new_id": "0ff5455b0ed9b875c0fcddf232bee2d18e9d51c5",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/ec/p256-x86_64.c"
    },
    {
      "type": "modify",
      "old_id": "e962d5600689ddd145b7bc9ce0e35c9900fa5834",
      "old_mode": 33188,
      "old_path": "third_party/fiat/p256.c",
      "new_id": "b6f3f496d6c6cda5606f2f8c1dc585b9f030ff1f",
      "new_mode": 33188,
      "new_path": "third_party/fiat/p256.c"
    }
  ]
}
