)]}'
{
  "commit": "fa6ced95123a19e43598f654b2c3ef6ddda30290",
  "tree": "40da6f77e1c304b655462a1387948147a046a1d5",
  "parents": [
    "523d6c74c0c325139614b34619be592ad897a732"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Sun Oct 03 01:53:38 2021 -0400"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Tue Oct 05 17:46:51 2021 +0000"
  },
  "message": "Extract common rotl/rotr functions.\n\nWe have a ton of per-file rotation functions, often with generic names\nthat do not tell you whether they are uint32_t vs uint64_t, or rotl vs\nrotr.\n\nAdditionally, (x \u003e\u003e r) | (x \u003c\u003c (32 - r)) is UB at r \u003d 0.\n(x \u003e\u003e r) | (x \u003c\u003c ((-r) \u0026 31)) works for 0 \u003c\u003d r \u003c 32, which is what\ncast.c does. GCC and Clang recognize this pattern as a rotate, but MSVC\ndoesn\u0027t. MSVC does, however, provide functions for this.\n\nWe usually rotate by a non-zero constant, which makes this moot, but\nrotation comes up often enough that it\u0027s worth extracting out. Some\nparticular changes to call out:\n\n- I\u0027ve switched sha256.c from rotl to rotr. There was a comment\n  explaining why it differed from the specification. Now that we have\n  both functions, it\u0027s simpler to just match the specification.\n\n- I\u0027ve dropped all the inline assembly from sha512.c. Compilers should\n  be able to recognize rotations in 2021.\n\nChange-Id: Ia1030e8bfe94dad92514ed1c28777447c48b82f9\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/49765\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e3c560f8049184eae093d302828fe1a716fdb732",
      "old_mode": 33188,
      "old_path": "crypto/blake2/blake2.c",
      "new_id": "096d61db1d698e4efd2e234a27f3b1439be237c5",
      "new_mode": 33188,
      "new_path": "crypto/blake2/blake2.c"
    },
    {
      "type": "modify",
      "old_id": "b539f9987c53f1e1ee28de95b96f78dcbeaa3ab6",
      "old_mode": 33188,
      "old_path": "crypto/chacha/chacha.c",
      "new_id": "64ca1c48faefe963c267ab87f4a4a6601b7c7b86",
      "new_mode": 33188,
      "new_path": "crypto/chacha/chacha.c"
    },
    {
      "type": "modify",
      "old_id": "2feb6504fbcb3898fb54d1c496a1385f2f5544c6",
      "old_mode": 33188,
      "old_path": "crypto/evp/scrypt.c",
      "new_id": "7ec6244ab0d80ae2891e49836bb11b985eec0243",
      "new_mode": 33188,
      "new_path": "crypto/evp/scrypt.c"
    },
    {
      "type": "modify",
      "old_id": "406e949f1d56e5e47abf0132a1ad84d5939c5355",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/aes/aes_test.cc",
      "new_id": "eef2567c7ad842e80686f9c7e32ebf3bdafb115b",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/aes/aes_test.cc"
    },
    {
      "type": "modify",
      "old_id": "2b0fdcd70256aad417e2cb616bd628135b3fda35",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/des/des.c",
      "new_id": "95c430cac00a4d6fdf88fbe30ef35abe8921e44e",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/des/des.c"
    },
    {
      "type": "modify",
      "old_id": "1ae3f22a3065b894f794f84b32b3e5e881fb0080",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/des/internal.h",
      "new_id": "3e3992ecfea76c6f9caa3a49fb8b828e6f2911d6",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/des/internal.h"
    },
    {
      "type": "modify",
      "old_id": "a505d057fbc88e885eb9ca07dc3f27f236022ad8",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/md4/md4.c",
      "new_id": "5b44653b52f68e520b67578d02bef8aeb70e4c27",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/md4/md4.c"
    },
    {
      "type": "modify",
      "old_id": "eba34bce83d037813844cf9968d90cc4152632c8",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/md5/md5.c",
      "new_id": "1691526766fe8f609fd446a176efdbe837cdb233",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/md5/md5.c"
    },
    {
      "type": "modify",
      "old_id": "c6293087d5643f1d704825b11a606b077d1b52e2",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/sha/sha1.c",
      "new_id": "e482c776105b5380371cb85bb21d1bfdbb790b62",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/sha/sha1.c"
    },
    {
      "type": "modify",
      "old_id": "4394f4aa033f2e6bcca7cd4d87493005efa2f57e",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/sha/sha256.c",
      "new_id": "c187c4a18fa3692f81fd0bee452858585bd573c6",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/sha/sha256.c"
    },
    {
      "type": "modify",
      "old_id": "befdd5251db737f5c50aa4172ab0aff7cb28a039",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/sha/sha512.c",
      "new_id": "d94de284c91b06aa30dea727808030c4e3192eb6",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/sha/sha512.c"
    },
    {
      "type": "modify",
      "old_id": "03bb779ca8d1a65707993cf5e5a23f719c73822e",
      "old_mode": 33188,
      "old_path": "crypto/internal.h",
      "new_id": "41c42dd91e1c800ca0df364531889291b0fada82",
      "new_mode": 33188,
      "new_path": "crypto/internal.h"
    },
    {
      "type": "modify",
      "old_id": "f55c3cab4a5a6d1c571949bc579253df9ef5cd9d",
      "old_mode": 33188,
      "old_path": "crypto/siphash/siphash.c",
      "new_id": "bb9a0c15a241db9ddf141dee24e8b8aa10203a4b",
      "new_mode": 33188,
      "new_path": "crypto/siphash/siphash.c"
    },
    {
      "type": "modify",
      "old_id": "8fd4e3ab02cf2de041f8949f60bed18ad1d2dac7",
      "old_mode": 33188,
      "old_path": "decrepit/cast/cast.c",
      "new_id": "dffee5c1f8e4e4f1b7ddc7125c3a20090f33e74e",
      "new_mode": 33188,
      "new_path": "decrepit/cast/cast.c"
    },
    {
      "type": "modify",
      "old_id": "9120cdddec87797a69f7c7a4f58404ef79631501",
      "old_mode": 33188,
      "old_path": "decrepit/ripemd/ripemd.c",
      "new_id": "3ae6904f971e2c86dfb91fb7d37755d2499f2e56",
      "new_mode": 33188,
      "new_path": "decrepit/ripemd/ripemd.c"
    }
  ]
}
