)]}'
{
  "commit": "c509ee3fa27d191b23da353d363c396ef7bdecdb",
  "tree": "90cddacf8ee206ab74fd6941d1291f9c3f89ef51",
  "parents": [
    "c6ffcde8cdfd46bf0b16b5e6ceca2be0d4c6ea72"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Tue Nov 10 02:24:09 2020 -0500"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Thu Nov 12 18:18:53 2020 +0000"
  },
  "message": "Switch M_ASN1_TIME macros within the library.\n\nThere is no ASN1_TIME_dup, so switch M_ASN1_TIME_dup to ASN1_STRING_dup\nas upstream does. Switch M_ASN1_TIME_free to ASN1_TIME_free, also\nmatching upstream. This is a no-op, but less obviously so:\n\nASN1_TIME is an MSTRING defined in a_time.c. This defines an MSTRING\nASN1_ITEM. The new/free functions are then generated with\nIMPLEMENT_ASN1_FUNCTIONS, which walks the ASN1_ITEM. ASN1_TIME_free then\ngoes through table-based free function, eventually running\nASN1_primitive_free, which calls ASN1_STRING_free on MSTRINGs.\n\nChange-Id: I1765848a5301ecceeb74f91457351c969b741bb1\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/44046\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6141af0d9ddd2ec4737429a1c8a546b314e04d47",
      "old_mode": 33188,
      "old_path": "crypto/x509/x509_set.c",
      "new_id": "5f17851981f0071221671b6a23e38428efd80882",
      "new_mode": 33188,
      "new_path": "crypto/x509/x509_set.c"
    },
    {
      "type": "modify",
      "old_id": "04f1f87eb2d34d15ecaa579100f52511b0fa1af7",
      "old_mode": 33188,
      "old_path": "crypto/x509/x509cset.c",
      "new_id": "f207a25c694cc5a01fbc54dcb1dff096105f7a08",
      "new_mode": 33188,
      "new_path": "crypto/x509/x509cset.c"
    }
  ]
}
