From 160a8891ae9a1d03f29aec079a67d97bc773990e Mon Sep 17 00:00:00 2001 From: Dan McArdle Date: Wed, 9 Jun 2021 15:39:37 -0400 Subject: Add util/fetch_ech_config_list.go I wrote this tool to make it easier to test the ECH client against real-world servers with the bssl client tool. I found that manually extracting an ECHConfigList from a raw HTTPS record is unnecessarily painful. The tool queries DNS over UDP for HTTPS records. If it finds any HTTPS records in the response, it attempts to extract an ECHConfigList from the "ech" SvcParam. It can write each extracted ECHConfigList to a file in a given directory. Once the ECH client implementation lands, the bssl client tool should have a new flag that that takes the path to an ECHConfigList file. I am using golang.org/x/net/dns/dnsmessage to parse the DNS response. I recently added the |UnknownResource| type to this library to enable callers (like us) to extract the bytes of otherwise-unsupported records (like HTTPS). I updated the dependency with `go get -u golang.org/x/net`. Although the bssl client tool knows how to resolve the address of its "-connect" parameter, it is difficult to query HTTPS records in a platform-agnostic way. If we decide the bssl client should directly query HTTPS rather than leaning on fetch_ech_config_list.go, we should look into libresolv. Specifically, the |res_query| function enables the caller to query arbitrary record types. This may open its own can of cross-platform worms; macOS and Linux typically ship with different implementations and it is not available on Windows. For more info, see `man 3 resolver`. Bug: 275 Change-Id: I705591658921f60a958164a18b68ffb697c2ea4b Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/44104 Reviewed-by: David Benjamin --- go.sum | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'go.sum') diff --git a/go.sum b/go.sum index 8b7d318..684fb56 100644 --- a/go.sum +++ b/go.sum @@ -2,7 +2,14 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -- cgit v1.1