)]}'
{
  "commit": "995574c22569576f024ce730fecec9678dfc63ed",
  "tree": "ddb2a80d16df52df6afa8498804b3ab43ba42635",
  "parents": [
    "9a5abe05cc999177bc55949c9243b3bc360595cb"
  ],
  "author": {
    "name": "Dan McArdle",
    "email": "dmcardle@google.com",
    "time": "Wed Jun 09 15:39:37 2021 -0400"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jun 16 22:29:27 2021 +0000"
  },
  "message": "Reland \"Add util/fetch_ech_config_list.go\"\n\nThis is a reland of 160a8891ae9a1d03f29aec079a67d97bc773990e with go.mod\nand go.sum fixed. This updates golang.org/x/crypto, adds the latest\ngolang.org/x/net as a direct dependency (it was previously an indirect\ndependency via x/crypto), and cleans up stale entries from go.sum with\ngo mod tidy.\n\nOriginal change\u0027s description:\n\u003e Add util/fetch_ech_config_list.go\n\u003e\n\u003e I wrote this tool to make it easier to test the ECH client against\n\u003e real-world servers with the bssl client tool. I found that manually\n\u003e extracting an ECHConfigList from a raw HTTPS record is unnecessarily\n\u003e painful.\n\u003e\n\u003e The tool queries DNS over UDP for HTTPS records. If it finds any HTTPS\n\u003e records in the response, it attempts to extract an ECHConfigList from\n\u003e the \"ech\" SvcParam. It can write each extracted ECHConfigList to a file\n\u003e in a given directory. Once the ECH client implementation lands, the bssl\n\u003e client tool should have a new flag that that takes the path to an\n\u003e ECHConfigList file.\n\u003e\n\u003e I am using golang.org/x/net/dns/dnsmessage to parse the DNS response. I\n\u003e recently added the |UnknownResource| type to this library to enable\n\u003e callers (like us) to extract the bytes of otherwise-unsupported records\n\u003e (like HTTPS). I updated the dependency with `go get -u golang.org/x/net`.\n\u003e\n\u003e Although the bssl client tool knows how to resolve the address of its\n\u003e \"-connect\" parameter, it is difficult to query HTTPS records in a\n\u003e platform-agnostic way. If we decide the bssl client should directly\n\u003e query HTTPS rather than leaning on fetch_ech_config_list.go, we should\n\u003e look into libresolv. Specifically, the |res_query| function enables the\n\u003e caller to query arbitrary record types. This may open its own can of\n\u003e cross-platform worms; macOS and Linux typically ship with different\n\u003e implementations and it is not available on Windows. For more info, see\n\u003e `man 3 resolver`.\n\u003e\n\u003e Bug: 275\n\u003e Change-Id: I705591658921f60a958164a18b68ffb697c2ea4b\n\u003e Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/44104\n\u003e Reviewed-by: David Benjamin \u003cdavidben@google.com\u003e\n\nBug: 275\nChange-Id: I9571e96c7a2ad7e239d86a353929a4e556d71287\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/48106\nReviewed-by: David Benjamin \u003cdavidben@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "17f946837cc510a2b5e44f01fcb52f8fd09b45bc",
      "old_mode": 33188,
      "old_path": "go.mod",
      "new_id": "25a9d66390c06e40c91e7536710a07e814ca209c",
      "new_mode": 33188,
      "new_path": "go.mod"
    },
    {
      "type": "modify",
      "old_id": "8b7d318c6b28faa8d29e6da1d1573464cb43780d",
      "old_mode": 33188,
      "old_path": "go.sum",
      "new_id": "87e3c894c27e6c83a1dd0a6755a7a8758015136c",
      "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"
    }
  ]
}
