svcb_rr_patch 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ebef813aa54947f773ae2725fccfa9ba030bc17f42890fcfd184ad0e7a186fd
4
- data.tar.gz: b2b7b03a69be23a0b2d5b935f668d24b178a066a716d676d668679b119b7a363
3
+ metadata.gz: 503344cf96161251cbd1d4757b83f88c801cc2dd759a65c565d6ced4ee5c7821
4
+ data.tar.gz: a7c0ed560ab69ce745d24488c0a9d9cf05cafb022daa4bda9ac02e0aa3f9bc23
5
5
  SHA512:
6
- metadata.gz: d1f8d9d0fea71fa10c4f0b316b85122d5fd58a7798fead763de346576dc4f0e599c3073f7d2b409b5d065686aa2da2c4032858c2f3ba27ca5edbf801118d82c2
7
- data.tar.gz: 7e382bbbb79bda402a5fa3694b3e90f1e039789ee4328336cb0448970ab42c6b2db6f0b546487b947d963afc40cc09d08382cff9c796e130f60f64dbac181b27
6
+ metadata.gz: 65d4ae23c0a139f3572330d4b7965209c25c1842fd0af6ea9fd404748359ab3f24f632ca873e63469728bf7d3c6ade8b21dbf57a2c3387fdb69ef85157d73965
7
+ data.tar.gz: 127393d4ceb5f7afc7e1ec48baefb850c6cad8eca6c26f7baef1818ba1dcfdb01c8dd6fdc7f23f3aefb7ca1aa5edfb3b7ae5b2d11674785051d8c189dc4b611f
data/README.md CHANGED
@@ -8,16 +8,16 @@
8
8
 
9
9
  - https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-06
10
10
 
11
- `svcb_rr_patch` supports "ech" SvcParamKey that ECHConfig.version is 0xfe0a.
11
+ `svcb_rr_patch` supports "ech" SvcParamKey that ECHConfig.version is `0xfe0d`.
12
12
 
13
- - https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-10#section-4
13
+ - https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-13#section-4
14
14
 
15
15
 
16
16
  ## Installation
17
17
 
18
18
  he gem is available at [rubygems.org](https://rubygems.org/gems/svcb_rr_patch). You can install it the following.
19
19
 
20
- ```bash
20
+ ```sh-session
21
21
  $ gem install svcb_rr_patch
22
22
  ```
23
23
 
@@ -26,7 +26,7 @@ $ gem install svcb_rr_patch
26
26
 
27
27
  You can resolve HTTPS resources.
28
28
 
29
- ```bash
29
+ ```sh-session
30
30
  $ irb
31
31
  irb(main):001:0> require 'svcb_rr_patch'
32
32
  => true
@@ -34,7 +34,21 @@ irb(main):002:1* Resolv::DNS.new.getresources(
34
34
  irb(main):003:1* "blog.cloudflare.com",
35
35
  irb(main):004:1* Resolv::DNS::Resource::IN::HTTPS
36
36
  irb(main):005:0> )
37
- => [#<Resolv::DNS::Resource::IN::HTTPS:0x0000000000000001 @svc_priority=1, @svc_domain_name="", @svc_field_value={"alpn"=>#<SvcbRrPatch::SvcParams::Alpn:0x0000000000000002 @protocols=["h3-29", "h3-28", "h3-27", "h2"]>, "ipv4hint"=>#<SvcbRrPatch::SvcParams::Ipv4hint:0x0000000000000003 @addresses=[#<Resolv::IPv4 104.18.26.46>, #<Resolv::IPv4 104.18.27.46>]>, "ipv6hint"=>#<SvcbRrPatch::SvcParams::Ipv6hint:0x0000000000000004 @addresses=[#<Resolv::IPv6 2606:4700::6812:1a2e>, #<Resolv::IPv6 2606:4700::6812:1b2e>]>}, @ttl=300>]
37
+ =>
38
+ [#<Resolv::DNS::Resource::IN::HTTPS:0x0000000000000001
39
+ @svc_params=
40
+ {"alpn"=>
41
+ #<SvcbRrPatch::SvcParams::Alpn:0x0000000000000002
42
+ @protocols=["h3", "h3-29", "h3-28", "h3-27", "h2"]>,
43
+ "ipv4hint"=>
44
+ #<SvcbRrPatch::SvcParams::Ipv4hint:0x0000000000000003
45
+ @addresses=[#<Resolv::IPv4 104.18.26.46>, #<Resolv::IPv4 104.18.27.46>]>,
46
+ "ipv6hint"=>
47
+ #<SvcbRrPatch::SvcParams::Ipv6hint:0x0000000000000004
48
+ @addresses=[#<Resolv::IPv6 2606:4700::6812:1a2e>, #<Resolv::IPv6 2606:4700::6812:1b2e>]>},
49
+ @svc_priority=1,
50
+ @target_name="",
51
+ @ttl=300>]
38
52
  ```
39
53
 
40
54
 
@@ -9,7 +9,7 @@ class Resolv::DNS::Resource::IN::HTTPS < Resolv::DNS::Resource::IN::SVCB
9
9
  ClassHash[[TypeValue, ClassValue]] = self
10
10
 
11
11
  def initialize(svc_priority, target_name, svc_params)
12
- # https://tools.ietf.org/html/draft-ietf-dnsop-svcb-https-06
12
+ # https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-06
13
13
  super(svc_priority, target_name, svc_params)
14
14
  end
15
15
 
@@ -30,24 +30,20 @@ class SvcbRrPatch::SvcParams::Ech::ECHConfigContents
30
30
  # @return [String]
31
31
  def encode
32
32
  @key_config.encode \
33
- + [@maximum_name_length].pack('n') \
34
- + @public_name.then { |s| [s.length].pack('n') + s } \
33
+ + [@maximum_name_length].pack('C') \
34
+ + @public_name.then { |s| [s.length].pack('C') + s } \
35
35
  + @extensions.map(&:encode).join.then { |s| [s.length].pack('n') + s }
36
36
  end
37
37
 
38
38
  # :nodoc
39
39
  # rubocop:disable Metrics/AbcSize
40
- # rubocop:disable Metrics/CyclomaticComplexity
41
40
  def self.decode(octet)
42
41
  key_config, octet = HpkeKeyConfig.decode(octet)
43
42
  raise ::Resolv::DNS::DecodeError if octet.length < 2
44
43
 
45
- maximum_name_length = octet.slice(0, 2).unpack1('n')
44
+ maximum_name_length = octet.slice(0, 1).unpack1('C')
45
+ pn_len = octet.slice(1, 1).unpack1('C')
46
46
  i = 2
47
- raise ::Resolv::DNS::DecodeError if i + 2 > octet.length
48
-
49
- pn_len = octet.slice(i, 2).unpack1('n')
50
- i += 2
51
47
  raise ::Resolv::DNS::DecodeError if i + pn_len > octet.length
52
48
 
53
49
  public_name = octet.slice(i, pn_len)
@@ -70,5 +66,4 @@ class SvcbRrPatch::SvcParams::Ech::ECHConfigContents
70
66
  )
71
67
  end
72
68
  # rubocop:enable Metrics/AbcSize
73
- # rubocop:enable Metrics/CyclomaticComplexity
74
69
  end
@@ -12,7 +12,7 @@ class Resolv::DNS::Resource::IN::SVCB < Resolv::DNS::Resource
12
12
  # @param target_name [String]
13
13
  # @param svc_params [Map]
14
14
  def initialize(svc_priority, target_name, svc_params)
15
- # https://tools.ietf.org/html/draft-ietf-dnsop-svcb-https-06
15
+ # https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-06
16
16
  @svc_priority = svc_priority
17
17
  @target_name = target_name
18
18
  @svc_params = svc_params
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SvcbRrPatch
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svcb_rr_patch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - thekuwayama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-01 00:00:00.000000000 Z
11
+ date: 2021-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  - !ruby/object:Gem::Version
87
87
  version: '0'
88
88
  requirements: []
89
- rubygems_version: 3.2.24
89
+ rubygems_version: 3.2.22
90
90
  signing_key:
91
91
  specification_version: 4
92
92
  summary: the patch that adds SVCB Resource Record and HTTPS Resource Record