)]}'
{
  "commit": "73535ab252b514030a935274397dc4bab089efa1",
  "tree": "95ae4dc7d7042f9fc7ca8c34ecdc79b380ccd0b6",
  "parents": [
    "419144adce049b5341bd94d355c52d099eac56e3"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Sat Sep 22 20:37:01 2018 -0500"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Mon Oct 01 17:35:02 2018 +0000"
  },
  "message": "Fix undefined block128_f, etc., casts.\n\nThis one is a little thorny. All the various block cipher modes\nfunctions and callbacks take a void *key. This allows them to be used\nwith multiple kinds of block ciphers.\n\nHowever, the implementations of those callbacks are the normal typed\nfunctions, like AES_encrypt. Those take AES_KEY *key. While, at the ABI\nlevel, this is perfectly fine, C considers this undefined behavior.\n\nIf we wish to preserve this genericness, we could either instantiate\nmultiple versions of these mode functions or create wrappers of\nAES_encrypt, etc., that take void *key.\n\nThe former means more code and is tedious without C++ templates (maybe\nsomeday...). The latter would not be difficult for a compiler to\noptimize out. C mistakenly allowed comparing function pointers for\nequality, which means a compiler cannot replace pointers to wrapper\nfunctions with the real thing. (That said, the performance-sensitive\nbits already act in chunks, e.g. ctr128_f, so the function call overhead\nshouldn\u0027t matter.)\n\nBut our only 128-bit block cipher is AES anyway, so I just switched\nthings to use AES_KEY throughout. AES is doing fine, and hopefully we\nwould have the sense not to pair a hypothetical future block cipher with\nso many modes!\n\nChange-Id: Ied3e843f0e3042a439f09e655b29847ade9d4c7d\nReviewed-on: https://boringssl-review.googlesource.com/32107\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5c50c8585863102217257d18b4a12bd4d0e13aa8",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/aes/mode_wrappers.c",
      "new_id": "0140c70fab5117283b06a626339d7a514280e910",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/aes/mode_wrappers.c"
    },
    {
      "type": "modify",
      "old_id": "734a5174604d2f9eff8f300449f3e6560e00ea6a",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/cipher/e_aes.c",
      "new_id": "0ced19350778d5e0ddf7db556157869e62928bc9",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/cipher/e_aes.c"
    },
    {
      "type": "modify",
      "old_id": "db9f024196cd46b7e13e2d397ea6f7070906c767",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/cbc.c",
      "new_id": "64ea505635043ec64b183cff412a26bb5dc01e7e",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/cbc.c"
    },
    {
      "type": "modify",
      "old_id": "784e4fa2a9f1b37b1bcaca46a6e3376fe28b58c7",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/ccm.c",
      "new_id": "5a153f41e0f38f68abf782eff18ad4dee6d1af5f",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/ccm.c"
    },
    {
      "type": "modify",
      "old_id": "e1b0a80e0362ce5df676f318b60699f71006f0dc",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/cfb.c",
      "new_id": "d3a38d6ee5ab939b31f605846df1ff1dc34cb45b",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/cfb.c"
    },
    {
      "type": "modify",
      "old_id": "63907b43ae8a7c53d507cbd65de0da21ee73058b",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/ctr.c",
      "new_id": "5093408c5f7b581b4ec09275dfbd0e055b657bbe",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/ctr.c"
    },
    {
      "type": "modify",
      "old_id": "6eff4792189b31f2a1fa66f715b856c3649683e0",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/gcm.c",
      "new_id": "5e556df2708911e1c633ed830cb4df4bad031a22",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/gcm.c"
    },
    {
      "type": "modify",
      "old_id": "ab8cc34e34e214a8bb82f8054a884b521b54ebf3",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/gcm_test.cc",
      "new_id": "30308f8a5e68124366c048ccf2a6c0a211d29da0",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/gcm_test.cc"
    },
    {
      "type": "modify",
      "old_id": "788960b70bbfd777db6b65ef1cf1bad4f052113a",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/internal.h",
      "new_id": "38cc70e8ed9f8deb21ca6a463fc0457b2aa57aa7",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/internal.h"
    },
    {
      "type": "modify",
      "old_id": "63bba68b0034e46e7598e29520902f4f89deccc2",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/ofb.c",
      "new_id": "b1b4d875b255bc26ea3d735378ad0df813d0509c",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/ofb.c"
    },
    {
      "type": "modify",
      "old_id": "e3189e592ee447787948f5faafb77c39ed28dafa",
      "old_mode": 33188,
      "old_path": "decrepit/xts/xts.c",
      "new_id": "bc2a1b23b84103d6423e9bc568cca4e4d869b17e",
      "new_mode": 33188,
      "new_path": "decrepit/xts/xts.c"
    }
  ]
}
