)]}'
{
  "commit": "160a8891ae9a1d03f29aec079a67d97bc773990e",
  "tree": "a43d0341e50b0a89eb982c7a733842cab4e0ecfa",
  "parents": [
    "9734e4453bd755562e40388fc7e6d36933b10edc"
  ],
  "author": {
    "name": "Dan McArdle",
    "email": "dmcardle@google.com",
    "time": "Wed Jun 09 15:39:37 2021 -0400"
  },
  "committer": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Wed Jun 16 21:14:59 2021 +0000"
  },
  "message": "Add util/fetch_ech_config_list.go\n\nI wrote this tool to make it easier to test the ECH client against\nreal-world servers with the bssl client tool. I found that manually\nextracting an ECHConfigList from a raw HTTPS record is unnecessarily\npainful.\n\nThe tool queries DNS over UDP for HTTPS records. If it finds any HTTPS\nrecords in the response, it attempts to extract an ECHConfigList from\nthe \"ech\" SvcParam. It can write each extracted ECHConfigList to a file\nin a given directory. Once the ECH client implementation lands, the bssl\nclient tool should have a new flag that that takes the path to an\nECHConfigList file.\n\nI am using golang.org/x/net/dns/dnsmessage to parse the DNS response. I\nrecently added the |UnknownResource| type to this library to enable\ncallers (like us) to extract the bytes of otherwise-unsupported records\n(like HTTPS). I updated the dependency with `go get -u golang.org/x/net`.\n\nAlthough the bssl client tool knows how to resolve the address of its\n\"-connect\" parameter, it is difficult to query HTTPS records in a\nplatform-agnostic way. If we decide the bssl client should directly\nquery HTTPS rather than leaning on fetch_ech_config_list.go, we should\nlook into libresolv. Specifically, the |res_query| function enables the\ncaller to query arbitrary record types. This may open its own can of\ncross-platform worms; macOS and Linux typically ship with different\nimplementations and it is not available on Windows. For more info, see\n`man 3 resolver`.\n\nBug: 275\nChange-Id: I705591658921f60a958164a18b68ffb697c2ea4b\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/44104\nReviewed-by: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "17f946837cc510a2b5e44f01fcb52f8fd09b45bc",
      "old_mode": 33188,
      "old_path": "go.mod",
      "new_id": "e3184cbef38a0528d3f4f24ec935867dbe7c8422",
      "new_mode": 33188,
      "new_path": "go.mod"
    },
    {
      "type": "modify",
      "old_id": "8b7d318c6b28faa8d29e6da1d1573464cb43780d",
      "old_mode": 33188,
      "old_path": "go.sum",
      "new_id": "684fb56391f9611a7a7c9279b0fd329ad39e953c",
      "new_mode": 33188,
      "new_path": "go.sum"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "03b2f8738ee78e0731a995cadd22f26d7030c94e",
      "new_mode": 33188,
      "new_path": "util/fetch_ech_config_list.go"
    }
  ]
}
