<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/test/resolv/test_svcb_https.rb, branch v4.0.3</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>[ruby/resolv]  Implement dohpath SvcParam</title>
<updated>2023-11-24T01:42:08+00:00</updated>
<author>
<name>Kasumi Hanazuki</name>
<email>kasumi@rollingapple.net</email>
</author>
<published>2023-11-24T01:42:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e3b485213d06a5d9a07650174a2be9e20cb39e57'/>
<id>e3b485213d06a5d9a07650174a2be9e20cb39e57</id>
<content type='text'>
(https://github.com/ruby/resolv/pull/33)

* Implement dohpath SvcParam [RFC 9461]

This patch implements "dohpath" SvcParam proposed in
[draft-ietf-add-svcb-dns-08]. This parameter specifies a URI template
for the :path used in DNS-over-HTTPS requests.

"dohpath" is employed by [DDR], also a to-be-published Proposed Standard
that specifies how to upgrade DNS transport to a more secure one, i.d.,
DNS-over-TLS or DNS-over-HTTPS. DDR is deployed in the public DNS
resolvers including Cloudflare DNS, Google Public DNS, and Quad9.

[RFC 9461]: https://datatracker.ietf.org/doc/rfc9461/
[DDR]: https://datatracker.ietf.org/doc/draft-ietf-add-ddr/

https://github.com/ruby/resolv/commit/da9c023539

Co-authored-by: Sorah Fukumori &lt;her@sorah.jp&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(https://github.com/ruby/resolv/pull/33)

* Implement dohpath SvcParam [RFC 9461]

This patch implements "dohpath" SvcParam proposed in
[draft-ietf-add-svcb-dns-08]. This parameter specifies a URI template
for the :path used in DNS-over-HTTPS requests.

"dohpath" is employed by [DDR], also a to-be-published Proposed Standard
that specifies how to upgrade DNS transport to a more secure one, i.d.,
DNS-over-TLS or DNS-over-HTTPS. DDR is deployed in the public DNS
resolvers including Cloudflare DNS, Google Public DNS, and Quad9.

[RFC 9461]: https://datatracker.ietf.org/doc/rfc9461/
[DDR]: https://datatracker.ietf.org/doc/draft-ietf-add-ddr/

https://github.com/ruby/resolv/commit/da9c023539

Co-authored-by: Sorah Fukumori &lt;her@sorah.jp&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/resolv] Implement SVCB and HTTPS RRs</title>
<updated>2023-11-24T01:35:33+00:00</updated>
<author>
<name>Kasumi Hanazuki</name>
<email>kasumi@rollingapple.net</email>
</author>
<published>2023-11-24T01:35:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=608a518b42736edc6533a120a240ff92ca4a8a60'/>
<id>608a518b42736edc6533a120a240ff92ca4a8a60</id>
<content type='text'>
(https://github.com/ruby/resolv/pull/32)

* Add MessageDecoder#get_list

This method repeats yielding until all the data upto the current limit
is consumed, and then returns an Array containig the block results.

* Implement SVCB and HTTPS RRs [RFC 9460]

&gt; This patch implements SVCB and HTTPS resource record types defined in
&gt; [RFC 9460].
&gt;
&gt; The RR types are now supported by many server implementations including
&gt; BIND, unbound, PowerDNS, and Knot DNS. Major browsers such as Chrome,
&gt; Edge, and Safari have started to query HTTPS records, with the records
&gt; gradually adopted by websites. Also, SVCB is actually deployed in the
&gt; public DNS resolvers such as Cloudflare DNS and Google Public DNS for
&gt; [DDR].
&gt;
&gt; With such wide adoption, we have plenty of real-world use cases, and
&gt; it is unlikely the wire format will change further in an incompatible
&gt; way. It is time to implement them in the client libraries!
&gt;
&gt; # Rationale for proposed API
&gt;
&gt; ## `Resolv::DNS::Resource::IN::ServiceBinding`
&gt;
&gt; This is an abstract class for SVCB-compatible RR types.
&gt; SVCB-compatible RR types, as defined in the Draft, shares the wire
&gt; format and the semantics of their RDATA fields with SVCB to allow
&gt; implementations to share the processing of these RR types. So we do
&gt; so.
&gt;
&gt; The interface of this class is straightforward: It has three
&gt; attributes `priority`, `target`, and `params`, which correspond the
&gt; RDATA fields SvcPriority, TargetName, and SvcParams, resp.
&gt;
&gt; SVCB RR type is defined specifically within IN class. Thus, this
&gt; class is placed in the `Resolv::DNS::Resource::IN` namespace.
&gt;
&gt; ## `Resolv::DNS::Resource::IN::SVCB`, `Resolv::DNS::Resource::IN::HTTPS`
&gt;
&gt; Just inherits ServiceBinding class.
&gt;
&gt; ## `Resolv::DNS::SvcParam`
&gt;
&gt; This class represents a pair of a SvcParamKey and a SvcParamValue.
&gt; Aligned with the design of `Resolv::DNS::Resource`, each SvcParamKey
&gt; has its own subclass of `Resolv::DNS::SvcParam`.
&gt;
&gt; ## `Resolv::DNS::SvcParam::Generic`
&gt;
&gt; This is an abstract class representing a SvcParamKey that is unknown
&gt; to this library. `Generic.create(key)` dynamically defines its
&gt; subclass for specific `key`. E.g., `Generic.create(667)` will define
&gt; `Generic::Key667`.
&gt;
&gt; This class holds SvcParamValue in its wire format.
&gt;
&gt; SvcParam with an unknown SvcParamKey will be decoded as a subclass of
&gt; this class. Also, users of this library can generate a non-supported
&gt; SvcParam if they know its wire format.
&gt;
&gt; ## `Resolv::DNS::SvcParams`
&gt;
&gt; This is conceptually a set of `SvcParam`s, whose elements have the
&gt; unique SvcParamKeys. It behaves like a set, and for convenience
&gt; provides indexing by SvcParamKey.
&gt;
&gt; - `#initialize(params)` takes an Enumerable of `SvcParam`s as the
&gt;   initial content. If it contains `SvcParam`s with the duplicate key,
&gt;   the one that appears last takes precedence.
&gt; - `#[](key)` fetches the `SvcParam` with the given key. The key can be
&gt;   specified by its name (e.g., `:alpn`) or number (e.g., `1`).
&gt; - `#add(param)` adds a `SvcParam` to the set. If the set already has a
&gt;   `SvcParam` with the same key, it will be replaced.
&gt; - `#delete(key)` deletes a `SvcParam` by its key and returns it. The key
&gt;   can be specified by its name or number.

* Update comments referring to draft-ietf-dnsop-svcb-https-12

Published as RFC 9460. https://datatracker.ietf.org/doc/rfc9460/

[draft-ietf-dnsop-svcb-https-12]: https://datatracker.ietf.org/doc/draft-ietf-dnsop-svcb-https/12/
[RFC 9460]: https://datatracker.ietf.org/doc/rfc9460/
[DDR]: https://datatracker.ietf.org/doc/draft-ietf-add-ddr/

https://github.com/ruby/resolv/commit/b3ced7f039
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(https://github.com/ruby/resolv/pull/32)

* Add MessageDecoder#get_list

This method repeats yielding until all the data upto the current limit
is consumed, and then returns an Array containig the block results.

* Implement SVCB and HTTPS RRs [RFC 9460]

&gt; This patch implements SVCB and HTTPS resource record types defined in
&gt; [RFC 9460].
&gt;
&gt; The RR types are now supported by many server implementations including
&gt; BIND, unbound, PowerDNS, and Knot DNS. Major browsers such as Chrome,
&gt; Edge, and Safari have started to query HTTPS records, with the records
&gt; gradually adopted by websites. Also, SVCB is actually deployed in the
&gt; public DNS resolvers such as Cloudflare DNS and Google Public DNS for
&gt; [DDR].
&gt;
&gt; With such wide adoption, we have plenty of real-world use cases, and
&gt; it is unlikely the wire format will change further in an incompatible
&gt; way. It is time to implement them in the client libraries!
&gt;
&gt; # Rationale for proposed API
&gt;
&gt; ## `Resolv::DNS::Resource::IN::ServiceBinding`
&gt;
&gt; This is an abstract class for SVCB-compatible RR types.
&gt; SVCB-compatible RR types, as defined in the Draft, shares the wire
&gt; format and the semantics of their RDATA fields with SVCB to allow
&gt; implementations to share the processing of these RR types. So we do
&gt; so.
&gt;
&gt; The interface of this class is straightforward: It has three
&gt; attributes `priority`, `target`, and `params`, which correspond the
&gt; RDATA fields SvcPriority, TargetName, and SvcParams, resp.
&gt;
&gt; SVCB RR type is defined specifically within IN class. Thus, this
&gt; class is placed in the `Resolv::DNS::Resource::IN` namespace.
&gt;
&gt; ## `Resolv::DNS::Resource::IN::SVCB`, `Resolv::DNS::Resource::IN::HTTPS`
&gt;
&gt; Just inherits ServiceBinding class.
&gt;
&gt; ## `Resolv::DNS::SvcParam`
&gt;
&gt; This class represents a pair of a SvcParamKey and a SvcParamValue.
&gt; Aligned with the design of `Resolv::DNS::Resource`, each SvcParamKey
&gt; has its own subclass of `Resolv::DNS::SvcParam`.
&gt;
&gt; ## `Resolv::DNS::SvcParam::Generic`
&gt;
&gt; This is an abstract class representing a SvcParamKey that is unknown
&gt; to this library. `Generic.create(key)` dynamically defines its
&gt; subclass for specific `key`. E.g., `Generic.create(667)` will define
&gt; `Generic::Key667`.
&gt;
&gt; This class holds SvcParamValue in its wire format.
&gt;
&gt; SvcParam with an unknown SvcParamKey will be decoded as a subclass of
&gt; this class. Also, users of this library can generate a non-supported
&gt; SvcParam if they know its wire format.
&gt;
&gt; ## `Resolv::DNS::SvcParams`
&gt;
&gt; This is conceptually a set of `SvcParam`s, whose elements have the
&gt; unique SvcParamKeys. It behaves like a set, and for convenience
&gt; provides indexing by SvcParamKey.
&gt;
&gt; - `#initialize(params)` takes an Enumerable of `SvcParam`s as the
&gt;   initial content. If it contains `SvcParam`s with the duplicate key,
&gt;   the one that appears last takes precedence.
&gt; - `#[](key)` fetches the `SvcParam` with the given key. The key can be
&gt;   specified by its name (e.g., `:alpn`) or number (e.g., `1`).
&gt; - `#add(param)` adds a `SvcParam` to the set. If the set already has a
&gt;   `SvcParam` with the same key, it will be replaced.
&gt; - `#delete(key)` deletes a `SvcParam` by its key and returns it. The key
&gt;   can be specified by its name or number.

* Update comments referring to draft-ietf-dnsop-svcb-https-12

Published as RFC 9460. https://datatracker.ietf.org/doc/rfc9460/

[draft-ietf-dnsop-svcb-https-12]: https://datatracker.ietf.org/doc/draft-ietf-dnsop-svcb-https/12/
[RFC 9460]: https://datatracker.ietf.org/doc/rfc9460/
[DDR]: https://datatracker.ietf.org/doc/draft-ietf-add-ddr/

https://github.com/ruby/resolv/commit/b3ced7f039
</pre>
</div>
</content>
</entry>
</feed>
