)]}'
{
  "commit": "2f6410ba4e8f610db59e56c5802bfbeb3f57ecf2",
  "tree": "c785fba44a156286390fce8f64554e8d69b91dd5",
  "parents": [
    "666973b8e9b6befe63249e51ff6b63e7605c605d"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@chromium.org",
    "time": "Sun Jan 03 00:57:37 2016 -0800"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Tue Feb 16 23:51:09 2016 +0000"
  },
  "message": "Rewrite ECPrivateKey serialization.\n\nFunctions which lose object reuse and need auditing:\n- d2i_ECParameters\n- d2i_ECPrivateKey\n\nThis adds a handful of bytestring-based APIs to handle EC key\nserialization. Deprecate all the old serialization APIs. Notes:\n\n- An EC_KEY has additional state that controls its encoding, enc_flags\n  and conv_form. conv_form is left alone, but enc_flags in the new API\n  is an explicit parameter.\n\n- d2i_ECPrivateKey interpreted its T** argument unlike nearly every\n  other d2i function. This is an explicit EC_GROUP parameter in the new\n  function.\n\n- The new specified curve code is much stricter and should parse enough\n  to uniquely identify the curve.\n\n- I\u0027ve not bothered with a new version of i2d_ECParameters. It just\n  writes an OID. This may change later when decoupling from the giant\n  OID table.\n\n- Likewise, I\u0027ve not bothered with new APIs for the public key since the\n  EC_POINT APIs should suffice.\n\n- Previously, d2i_ECPrivateKey would not call EC_KEY_check_key and it\n  was possible for the imported public and private key to mismatch. It\n  now calls it.\n\nBUG\u003d499653\n\nChange-Id: I30b4dd2841ae76c56ab0e1808360b2628dee0615\nReviewed-on: https://boringssl-review.googlesource.com/6859\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a085be533717e8719b3bffbf64f552af56084f20",
      "old_mode": 33188,
      "old_path": "crypto/ec/ec_asn1.c",
      "new_id": "a29a2dcfc7bc34172c6bd0961e45c812588718fd",
      "new_mode": 33188,
      "new_path": "crypto/ec/ec_asn1.c"
    },
    {
      "type": "modify",
      "old_id": "5b015f50b57dce892a0d58cf9237db28de799c3c",
      "old_mode": 33188,
      "old_path": "crypto/ec/ec_key.c",
      "new_id": "a1f8619220363d49d77971129ffa40d47b6327e3",
      "new_mode": 33188,
      "new_path": "crypto/ec/ec_key.c"
    },
    {
      "type": "modify",
      "old_id": "a28797208ee5d7f6465d78021bf378ae1235c854",
      "old_mode": 33188,
      "old_path": "crypto/ec/ec_test.cc",
      "new_id": "d45e193a3a788eadd1b0d09c4c7bdc71bfe5506f",
      "new_mode": 33188,
      "new_path": "crypto/ec/ec_test.cc"
    },
    {
      "type": "modify",
      "old_id": "55d2afa5ff35703f5282020330dfb5a086e58a6c",
      "old_mode": 33188,
      "old_path": "crypto/ec/internal.h",
      "new_id": "0299e1bfb0a8ec262be9f14541aaf3c663bc2e29",
      "new_mode": 33188,
      "new_path": "crypto/ec/internal.h"
    },
    {
      "type": "modify",
      "old_id": "e7b4175693818a9f36f3fac3d7af0d16e38f26a3",
      "old_mode": 33188,
      "old_path": "crypto/err/ec.errordata",
      "new_id": "d074afc9674e14b958e785fa9b96cce900e89be1",
      "new_mode": 33188,
      "new_path": "crypto/err/ec.errordata"
    },
    {
      "type": "modify",
      "old_id": "230d395c046c45b289c1ffda8f0f8a2407a12858",
      "old_mode": 33188,
      "old_path": "include/openssl/ec.h",
      "new_id": "4957066fdccb8fbcfe1a809843f48cad27656e12",
      "new_mode": 33188,
      "new_path": "include/openssl/ec.h"
    },
    {
      "type": "modify",
      "old_id": "da96508c6a1f686ffab0f0f7d88d8e5f5dd8ddc6",
      "old_mode": 33188,
      "old_path": "include/openssl/ec_key.h",
      "new_id": "2742355855662fe5ddb811feb3978b7e0ee5c794",
      "new_mode": 33188,
      "new_path": "include/openssl/ec_key.h"
    }
  ]
}
