)]}'
{
  "commit": "a79eeb4d4fd60e5593e3540a0a4a0f6be83c1497",
  "tree": "9fc03934b8f93c2ebc702bcaa575e676d29065f0",
  "parents": [
    "c08d7ba0f32bfca9f1705766449ce5f83b5a1b41"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Fri Aug 29 13:55:23 2025 -0400"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Sep 03 21:21:54 2025 -0700"
  },
  "message": "Make ASN1_EXTERN_FUNCS\u0027s parse callback CBS-based\n\nHaving to keep flipping back and forth between the calling conventions\nwhen bridging rewritten types is tedious.\n\nThis does not rewrite the core of tasn_dec.cc (although at this point\nmuch of it is already CBS-based), but it does suggest a calling\nconvention for it. Right now, the internal calling convention is the\ndouble-pointer thing from d2i, with an extra twist that functions must\nreturn 0 for error, 1 for success, and -1 for \"success but parsed\nnothing\".\n\nThis proposes a CBS in/out param to return how bytes we consumed, and a\nplain success/error return value. The -1 case can be modeled as\nsuccessfully consuming zero bytes.\n\nFor now, we still have to bridge the two inside tasn_dec.cc. Also for\nthis CL I have not yet rewritten the messy X509_NAME parser, or the\ntasn_dec.cc parser.\n\nThere\u0027s also a messy situation where this object sometimes is called\nwith an existing object already there, and sometimes without one. I\ndon\u0027t see a good way to avoid that one, but hopefully it\u0027ll become less\nand as important as we stop using the tasn system.\n\nBug: 42290418\nChange-Id: I3969e19ade81aedf449b4baf139fe5f5b1dd867b\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/81776\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "74657e000188c8f0f1c11e32d0ebd4303c7eca43",
      "old_mode": 33188,
      "old_path": "crypto/asn1/internal.h",
      "new_id": "8eca02c2287fac11caba90b980886b05908c0e98",
      "new_mode": 33188,
      "new_path": "crypto/asn1/internal.h"
    },
    {
      "type": "modify",
      "old_id": "1d2b34b46aa0608b1dc96863e16293799212592f",
      "old_mode": 33188,
      "old_path": "crypto/asn1/tasn_dec.cc",
      "new_id": "2f53a79f16f2eebdd9d63a2f4ebd44bde77ab430",
      "new_mode": 33188,
      "new_path": "crypto/asn1/tasn_dec.cc"
    },
    {
      "type": "modify",
      "old_id": "8597375b73980a5290064ac52b38a66a3b9aab42",
      "old_mode": 33188,
      "old_path": "crypto/x509/x_name.cc",
      "new_id": "6dad6a21a783c3d20cda60e8aef99edbc415b0f8",
      "new_mode": 33188,
      "new_path": "crypto/x509/x_name.cc"
    },
    {
      "type": "modify",
      "old_id": "a2a5bdc12051c7fece85acc261209f281b5f278d",
      "old_mode": 33188,
      "old_path": "crypto/x509/x_x509.cc",
      "new_id": "a110368b02fb6b763855a1ce8094192d1a68029c",
      "new_mode": 33188,
      "new_path": "crypto/x509/x_x509.cc"
    }
  ]
}
