)]}'
{
  "commit": "b529253beab2dd65a4fdcdca27a4755256282401",
  "tree": "2cdce3c3c799042a3177ef632f8a7be382fac8bd",
  "parents": [
    "6af3a3d9edc26742a7ab8e2e393cfe850fa4df6f"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Fri Jun 09 19:27:37 2017 -0400"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Mon Jun 12 20:32:21 2017 +0000"
  },
  "message": "Implement scrypt from RFC 7914.\n\nThis imports upstream\u0027s scrypt implementation, though it\u0027s been heavily\nrevised. I lost track of words vs. blocks vs. bigger blocks too many\ntimes in the original code and introduced a typedef for the fixed-width\nSalsa20 blocks. The downside is going from bytes to blocks is a bit\ntrickier, so I took advantage of our little-endian assumption.\n\nThis also adds an missing check for N \u003c 2^32. Upstream\u0027s code is making\nthis assumption in Integerify. I\u0027ll send that change back upstream. I\u0027ve\nalso removed the weird edge case where a NULL out_key parameter means to\nvalidate N/r/p against max_mem and nothing else. That\u0027s just in there to\nget a different error code out of their PKCS#12 code.\n\nPerformance-wise, the cleanup appears to be the same (up to what little\nprecision I was able to get here), but an optimization to use bitwise\nAND rather than modulus makes us measurably faster. Though scrypt isn\u0027t\na fast operation to begin with, so hopefully it isn\u0027t anyone\u0027s\nbottleneck.\n\nThis CL does not route scrypt up to the PKCS#12 code, though we could\nwrite our own version of that if we need to later.\n\nBUG\u003dchromium:731993\n\nChange-Id: Ib2f43344017ed37b6bafd85a2c2b103d695020b8\nReviewed-on: https://boringssl-review.googlesource.com/17084\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cc5c69261cacdf51be4b1fe0ae7df89e01f83636",
      "old_mode": 33188,
      "old_path": "crypto/CMakeLists.txt",
      "new_id": "b941f67dbd49edf4667e58878980d92351216a45",
      "new_mode": 33188,
      "new_path": "crypto/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "7cad638c45a3ccfe71103728c84090bc4fc877f7",
      "old_mode": 33188,
      "old_path": "crypto/err/evp.errordata",
      "new_id": "aea4a94d4166125465c9e0f9e371f23a8f4dc3b8",
      "new_mode": 33188,
      "new_path": "crypto/err/evp.errordata"
    },
    {
      "type": "modify",
      "old_id": "c3b6d901924451e98029046c316444bab443ed88",
      "old_mode": 33188,
      "old_path": "crypto/evp/CMakeLists.txt",
      "new_id": "4b1fe5e8f114d523752c5c171e08c3b9d6ca100c",
      "new_mode": 33188,
      "new_path": "crypto/evp/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3f10214506fc8a8c34e83f861e0ae423e00b72b7",
      "new_mode": 33188,
      "new_path": "crypto/evp/scrypt.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e957fd0beb35ee66f515c81526b41c30f280b8dc",
      "new_mode": 33188,
      "new_path": "crypto/evp/scrypt_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7497bd27ea9fec2693b1954db95cbf64533b5491",
      "new_mode": 33188,
      "new_path": "crypto/evp/scrypt_tests.txt"
    },
    {
      "type": "modify",
      "old_id": "f3e96b16b8036341ff561494d6e8a5fddc796e70",
      "old_mode": 33188,
      "old_path": "include/openssl/evp.h",
      "new_id": "37c965a5d1b10cd7c7af1202da5c6d88c2b9b4e7",
      "new_mode": 33188,
      "new_path": "include/openssl/evp.h"
    },
    {
      "type": "modify",
      "old_id": "11fc61ad034a75cd9fa398e696a3ad972caa70de",
      "old_mode": 33188,
      "old_path": "sources.cmake",
      "new_id": "941a9ed545abab93dbeb61776b9b5debb9de9252",
      "new_mode": 33188,
      "new_path": "sources.cmake"
    },
    {
      "type": "modify",
      "old_id": "e941b8be96fa17465c4ce57cf0587091d6b4768e",
      "old_mode": 33188,
      "old_path": "tool/speed.cc",
      "new_id": "665229890345d5f4664924ca2f666546af1192fe",
      "new_mode": 33188,
      "new_path": "tool/speed.cc"
    }
  ]
}
