)]}'
{
  "commit": "75b833cc819a9d189adb0fdd56327bee600ff9e9",
  "tree": "35da51859fe77699452f6046d327ac8874bf7c55",
  "parents": [
    "b36a3156b6cc76294267d7083ddd31e6e5f9c170"
  ],
  "author": {
    "name": "Adam Langley",
    "email": "agl@chromium.org",
    "time": "Fri Jun 20 12:00:00 2014 -0700"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@chromium.org",
    "time": "Fri Jun 20 13:17:33 2014 -0700"
  },
  "message": "OpenSSL: make final reduction in Montgomery multiplication constant-time.\n\n(The issue was reported by Shay Gueron.)\n\nThe final reduction in Montgomery multiplication computes if (X \u003e\u003d m) then X \u003d\nX - m else X \u003d X\n\nIn OpenSSL, this was done by computing T \u003d X - m,  doing a constant-time\nselection of the *addresses* of X and T, and loading from the resulting\naddress. But this is not cache-neutral.\n\nThis patch changes the behaviour by loading both X and T into registers, and\ndoing a constant-time selection of the *values*.\n\nTODO(fork): only some of the fixes from the original patch still apply to\nthe 1.0.2 code.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e8f6b050842e361df1b28d6e90f0e4a400b91dfb",
      "old_mode": 33188,
      "old_path": "crypto/bn/asm/x86-mont.pl",
      "new_id": "0626b487f8511f9c3eb8df149d98a8df760cca6d",
      "new_mode": 33188,
      "new_path": "crypto/bn/asm/x86-mont.pl"
    },
    {
      "type": "modify",
      "old_id": "38039286be72f3e86b65c9e85e0a85727016b516",
      "old_mode": 33188,
      "old_path": "crypto/bn/asm/x86_64-mont.pl",
      "new_id": "29c0f9c44874376ae3c8aa42d96cc962424744db",
      "new_mode": 33188,
      "new_path": "crypto/bn/asm/x86_64-mont.pl"
    },
    {
      "type": "modify",
      "old_id": "c107df95f5339ddb887317d09cbf47e80c54f2ad",
      "old_mode": 33188,
      "old_path": "crypto/bn/asm/x86_64-mont5.pl",
      "new_id": "85386c1662241d58b72136ccc85c1020f32898ad",
      "new_mode": 33188,
      "new_path": "crypto/bn/asm/x86_64-mont5.pl"
    }
  ]
}
