[PR #2183] [MERGED] SVCB/HTTPS RFC updates, ECH config tweaks #2867

Closed
opened 2026-03-16 11:12:31 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/hickory-dns/hickory-dns/pull/2183
Author: @cpu
Created: 4/15/2024
Status: Merged
Merged: 4/18/2024
Merged by: @djc

Base: mainHead: cpu-svcb-updates_dev


📝 Commits (10+)

  • 0190b08 ci: offer a branch push pattern for easy testing
  • 745bf13 svcb: update docs to ref RFC 9460
  • 381a084 proto: correct ECH service parameter key
  • 606dd36 rdata_parsers: reorder svcb parse helpers
  • 658b02e proto: rename ECH SVCB types
  • 4d7435c rdata: store wire-encoded form of ECH configs
  • 7022955 rdata_parsers: support quoted SVCB parameter values
  • 2cc190a rdata_parsers: add RFC 9460 test vectors
  • 832a8be proto: fix parse of arbitrary keys in pres. syntax
  • 1f846a1 rdata_parsers: fix handling of escaped list delim

📊 Changes

3 files changed (+464 additions, -255 deletions)

View changed files

📝 .github/workflows/test.yml (+1 -0)
📝 crates/proto/src/rr/rdata/svcb.rs (+172 -173)
📝 crates/proto/src/serialize/txt/rdata_parsers/svcb.rs (+291 -82)

📄 Description

This branch brings in some changes I've found helpful while working on client ECH support downstream in Rustls.

  • Updates SVCB/HTTPS related code to cite RFC 9460. Existing text that was copied from an earlier draft is updated with the matching RFC text.
  • Corrects the ECH service parameter key, RFC 9460 specifies using "ech", where as hickory was using "echconfig".
  • Renames the ECH SVCB/HTTPS types from EchConfig to EchConfigList to better emphasize that the returned value's wire-encoding is a TLS-encoded ECHConfigList, as specified in draft-ietf-tls-esni-18 §4.
  • Switches the held representation of the EchConfigList to be the wire-encoding, removing pre-processing that stripped the TLS encoded list length prefix. Downstream users will have an easier time with this based on existing TLS list decoding capabilities inherit to a TLS implementation. Similarly, the BASE64 presentation format is updated to encode the wire-encoded value with the prefixed length. This matches what tools like dig render for what some public implementations have published in DNS.
  • Fixes support for quoted parameter values.
  • Adds RFC9460 presentation format test vectors, parsing coverage.
  • Fixes parsing of keys in arbitrary numeric key format.
  • Fixes parsing of lists containing an escaped list delimiter.

I haven't attempted to offer backwards compatible options based on the earlier draft content. I think that it's probably not worthwhile based on the very early state of ECH support broadly.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/hickory-dns/hickory-dns/pull/2183 **Author:** [@cpu](https://github.com/cpu) **Created:** 4/15/2024 **Status:** ✅ Merged **Merged:** 4/18/2024 **Merged by:** [@djc](https://github.com/djc) **Base:** `main` ← **Head:** `cpu-svcb-updates_dev` --- ### 📝 Commits (10+) - [`0190b08`](https://github.com/hickory-dns/hickory-dns/commit/0190b08c116b05b088b931c602cadc5bff080269) ci: offer a branch push pattern for easy testing - [`745bf13`](https://github.com/hickory-dns/hickory-dns/commit/745bf13523dd868b3954b000854d5a29d241769a) svcb: update docs to ref RFC 9460 - [`381a084`](https://github.com/hickory-dns/hickory-dns/commit/381a08433bb411ef43c607780374a6cab9473376) proto: correct ECH service parameter key - [`606dd36`](https://github.com/hickory-dns/hickory-dns/commit/606dd3659323ee01477e036005820f7f319070a7) rdata_parsers: reorder svcb parse helpers - [`658b02e`](https://github.com/hickory-dns/hickory-dns/commit/658b02e9afe77023af0993dca82df742546ada7d) proto: rename ECH SVCB types - [`4d7435c`](https://github.com/hickory-dns/hickory-dns/commit/4d7435c3d5e8cf802f68ecb4073192981a644dba) rdata: store wire-encoded form of ECH configs - [`7022955`](https://github.com/hickory-dns/hickory-dns/commit/7022955bf633cc01b7ff8ee8c319b4fefdd8e565) rdata_parsers: support quoted SVCB parameter values - [`2cc190a`](https://github.com/hickory-dns/hickory-dns/commit/2cc190a5b208cee9a2cf7d1f0835777ec1043c5b) rdata_parsers: add RFC 9460 test vectors - [`832a8be`](https://github.com/hickory-dns/hickory-dns/commit/832a8be3165e39b40f2dc0255bafe986e7ae15ec) proto: fix parse of arbitrary keys in pres. syntax - [`1f846a1`](https://github.com/hickory-dns/hickory-dns/commit/1f846a1fa7e3e0822e8cc7ce073d56da9d4330dd) rdata_parsers: fix handling of escaped list delim ### 📊 Changes **3 files changed** (+464 additions, -255 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/test.yml` (+1 -0) 📝 `crates/proto/src/rr/rdata/svcb.rs` (+172 -173) 📝 `crates/proto/src/serialize/txt/rdata_parsers/svcb.rs` (+291 -82) </details> ### 📄 Description This branch brings in some changes I've found helpful while working on client ECH support downstream in Rustls. * Updates SVCB/HTTPS related code to cite RFC 9460. Existing text that was copied from an earlier draft is updated with the matching RFC text. * Corrects the ECH service parameter key, RFC 9460 specifies using `"ech"`, where as hickory was using `"echconfig"`. * Renames the ECH SVCB/HTTPS types from `EchConfig` to `EchConfigList` to better emphasize that the returned value's wire-encoding is a TLS-encoded `ECHConfigList`, as specified in [draft-ietf-tls-esni-18 §4](https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-18#section-4). * Switches the held representation of the `EchConfigList` to be the wire-encoding, removing pre-processing that stripped the TLS encoded list length prefix. Downstream users will have an easier time with this based on existing TLS list decoding capabilities inherit to a TLS implementation. Similarly, the BASE64 presentation format is updated to encode the wire-encoded value with the prefixed length. This matches what tools like `dig` render for what some public implementations have published in DNS. * Fixes support for quoted parameter values. * Adds RFC9460 presentation format test vectors, parsing coverage. * Fixes parsing of keys in arbitrary numeric key format. * Fixes parsing of lists containing an escaped list delimiter. I haven't attempted to offer backwards compatible options based on the earlier draft content. I think that it's probably not worthwhile based on the very early state of ECH support broadly. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-16 11:12:31 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/hickory-dns#2867
No description provided.