)]}'
{
  "commit": "4545503926f2a3049b49e24f750357c2088ddda6",
  "tree": "5120578bec28a56e89b6b252392f05c2411a3faa",
  "parents": [
    "9801a0714555f819dc6bd0f1d1a892a40465f056"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Wed Jan 09 03:35:56 2019 +0000"
  },
  "committer": {
    "name": "CQ bot account: commit-bot@chromium.org",
    "email": "commit-bot@chromium.org",
    "time": "Thu Jan 24 17:19:21 2019 +0000"
  },
  "message": "Add a constant-time pshufb-based GHASH implementation.\n\nWe currently require clmul instructions for constant-time GHASH\non x86_64. Otherwise, it falls back to a variable-time 4-bit table\nimplementation. However, a significant proportion of clients lack these\ninstructions.\n\nInspired by vpaes, we can use pshufb and a slightly different order of\nincorporating the bits to make a constant-time GHASH. This requires\nSSSE3, which is very common. Benchmarking old machines we had on hand,\nit appears to be a no-op on Sandy Bridge and a small slowdown for\nPenryn.\n\nSandy Bridge (Intel Pentium CPU 987 @ 1.50GHz):\n(Note: these numbers are before 16-byte-aligning the table. That was an\nimprovement on Penryn, so it\u0027s possible Sandy Bridge is now better.)\nBefore:\nDid 4244750 AES-128-GCM (16 bytes) seal operations in 4015000us (1057222.9 ops/sec): 16.9 MB/s\nDid 442000 AES-128-GCM (1350 bytes) seal operations in 4016000us (110059.8 ops/sec): 148.6 MB/s\nDid 84000 AES-128-GCM (8192 bytes) seal operations in 4015000us (20921.5 ops/sec): 171.4 MB/s\nDid 3349250 AES-256-GCM (16 bytes) seal operations in 4016000us (833976.6 ops/sec): 13.3 MB/s\nDid 343500 AES-256-GCM (1350 bytes) seal operations in 4016000us (85532.9 ops/sec): 115.5 MB/s\nDid 65250 AES-256-GCM (8192 bytes) seal operations in 4015000us (16251.6 ops/sec): 133.1 MB/s\nAfter:\nDid 4229250 AES-128-GCM (16 bytes) seal operations in 4016000us (1053100.1 ops/sec): 16.8 MB/s [-0.4%]\nDid 442250 AES-128-GCM (1350 bytes) seal operations in 4016000us (110122.0 ops/sec): 148.7 MB/s [+0.1%]\nDid 83500 AES-128-GCM (8192 bytes) seal operations in 4015000us (20797.0 ops/sec): 170.4 MB/s [-0.6%]\nDid 3286500 AES-256-GCM (16 bytes) seal operations in 4016000us (818351.6 ops/sec): 13.1 MB/s [-1.9%]\nDid 342750 AES-256-GCM (1350 bytes) seal operations in 4015000us (85367.4 ops/sec): 115.2 MB/s [-0.2%]\nDid 65250 AES-256-GCM (8192 bytes) seal operations in 4016000us (16247.5 ops/sec): 133.1 MB/s [-0.0%]\n\nPenryn (Intel Core 2 Duo CPU P8600 @ 2.40GHz):\nBefore:\nDid 1179000 AES-128-GCM (16 bytes) seal operations in 1000139us (1178836.1 ops/sec): 18.9 MB/s\nDid 97000 AES-128-GCM (1350 bytes) seal operations in 1006347us (96388.2 ops/sec): 130.1 MB/s\nDid 18000 AES-128-GCM (8192 bytes) seal operations in 1028943us (17493.7 ops/sec): 143.3 MB/s\nDid 977000 AES-256-GCM (16 bytes) seal operations in 1000197us (976807.6 ops/sec): 15.6 MB/s\nDid 82000 AES-256-GCM (1350 bytes) seal operations in 1012434us (80992.9 ops/sec): 109.3 MB/s\nDid 15000 AES-256-GCM (8192 bytes) seal operations in 1006528us (14902.7 ops/sec): 122.1 MB/s\nAfter:\nDid 1306000 AES-128-GCM (16 bytes) seal operations in 1000153us (1305800.2 ops/sec): 20.9 MB/s [+10.8%]\nDid 94000 AES-128-GCM (1350 bytes) seal operations in 1009852us (93082.9 ops/sec): 125.7 MB/s [-3.4%]\nDid 17000 AES-128-GCM (8192 bytes) seal operations in 1012096us (16796.8 ops/sec): 137.6 MB/s [-4.0%]\nDid 1070000 AES-256-GCM (16 bytes) seal operations in 1000929us (1069006.9 ops/sec): 17.1 MB/s [+9.4%]\nDid 79000 AES-256-GCM (1350 bytes) seal operations in 1002209us (78825.9 ops/sec): 106.4 MB/s [-2.7%]\nDid 15000 AES-256-GCM (8192 bytes) seal operations in 1061489us (14131.1 ops/sec): 115.8 MB/s [-5.2%]\n\nChange-Id: I1c3760a77af7bee4aee3745d1c648d9e34594afb\nReviewed-on: https://boringssl-review.googlesource.com/c/34267\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "463febbf82fe2dfc56cf4378fde3e322eb5b1b32",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/CMakeLists.txt",
      "new_id": "b459263c33ba6b77e8a8b0ed4ae57d30ea0ebf1c",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "f7c145b9dcb117bde5681c5244a7f2805896ce43",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/cipher/e_aes.c",
      "new_id": "81c74cbf4edf389ef816aa439f17033f9311cc09",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/cipher/e_aes.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "830381b1bc6d998baec6a2828f03bd07fac719e3",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/asm/ghash-ssse3-x86_64.pl"
    },
    {
      "type": "modify",
      "old_id": "2a450cd5eda515ecb1598c082662842854931e5d",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/gcm.c",
      "new_id": "681f7a91271de5071531fd05cf113d92da01f379",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/gcm.c"
    },
    {
      "type": "modify",
      "old_id": "fb17bbbf12cc58db2e51b264d999143400866590",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/gcm_test.cc",
      "new_id": "54827ca25fd1a150e37bd9e94841d9193d364b73",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/gcm_test.cc"
    },
    {
      "type": "modify",
      "old_id": "3163c5023cacf7caa7f25210df90aa512314afad",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/internal.h",
      "new_id": "79a09514aa70258152cc719129412c4bc43faf06",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/internal.h"
    }
  ]
}
