)]}'
{
  "commit": "cc4333d757f765ca81c8f1df125a66711a623219",
  "tree": "38428ab94840ac5fa4bff54a6abe0eebb2d7b44d",
  "parents": [
    "e4b3e6afb63fd82e4157733723a9e7a450ae96cb"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Mon Feb 21 00:14:30 2022 -0500"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Mar 07 23:10:04 2022 +0000"
  },
  "message": "Use X509V3_add_value_int in i2v_AUTHORITY_KEYID.\n\nAlthough the preceding CL fixes x509v3_bytes_to_hex to work with the\nempty string, it\u0027s not really a good representation for zero. Zero as an\nASN1_INTEGER is sometimes the empty string (default-constructed) and\nsometimes a single zero byte (parsed). bytes_to_hex also doesn\u0027t capture\nthe sign bit.\n\nInstead, use X509V3_add_value_int, matching most of the other i2v, etc.,\nfunctions in crypto/x509v3. X509V3_add_value_int calls i2s_ASN1_INTEGER,\nwhich prints small values in decimal and large values in hexadecimal\nwith a 0x prefix.\n\nIt is unclear to me whether i2v and v2i are generally expected to be\ninverses. i2v (or i2s or i2r) is used when printing an extension, while\nv2i is used when using the stringly-typed config file APIs. However,\ni2v_AUTHORITY_KEYID does not consume the \"serial\" key at all. It\ncomputes the serial from the issuer cert.\n\nOddly, there is one ASN1_INTEGER,\nPROXY_CERT_INFO_EXTENSION.pcPathLengthConstraint, which uses\ni2a_ASN1_INTEGER instead. That one uses hexadecimal without the \"0x\"\nprefix, and with newlines. Interestingly, its r2i function is not the\nreverse of i2r and parses the s2i_ASN1_INTEGER format.\n\nBetween those, I\u0027m assuming they\u0027re not necessarily invertible.\n\nChange-Id: I6d813d1a93c5cd94a2bd06b22bcf1b80bc9d937b\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/51628\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0aba20ed824d10dec6285ec3697518ac984121fc",
      "old_mode": 33188,
      "old_path": "crypto/x509v3/v3_akey.c",
      "new_id": "e64e99fea12a7c464af447de854a01f2819dc6b0",
      "new_mode": 33188,
      "new_path": "crypto/x509v3/v3_akey.c"
    }
  ]
}
