ech_config 0.0.2 → 0.0.4

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +9 -10
  3. data/.ruby-version +1 -1
  4. data/Gemfile +5 -6
  5. data/Gemfile.lock +204 -47
  6. data/README.md +1 -1
  7. data/Rakefile +11 -5
  8. data/Steepfile +8 -0
  9. data/ech_config.gemspec +7 -4
  10. data/example/README.md +1 -1
  11. data/lib/ech_config/ech_config_contents/extensions.rb +7 -5
  12. data/lib/ech_config/ech_config_contents/hpke_key_config/hpke_kem_id.rb +15 -6
  13. data/lib/ech_config/ech_config_contents/hpke_key_config/hpke_public_key.rb +7 -5
  14. data/lib/ech_config/ech_config_contents/hpke_key_config/hpke_symmetric_cipher_suite/hpke_aead_id.rb +15 -6
  15. data/lib/ech_config/ech_config_contents/hpke_key_config/hpke_symmetric_cipher_suite/hpke_kdf_id.rb +15 -6
  16. data/lib/ech_config/ech_config_contents/hpke_key_config/hpke_symmetric_cipher_suite.rb +15 -6
  17. data/lib/ech_config/ech_config_contents/hpke_key_config.rb +16 -18
  18. data/lib/ech_config/ech_config_contents.rb +15 -17
  19. data/lib/ech_config/error.rb +2 -1
  20. data/lib/ech_config/version.rb +3 -2
  21. data/lib/ech_config.rb +39 -14
  22. data/sig/generated/ech_config/ech_config_contents/extensions.rbs +16 -0
  23. data/sig/generated/ech_config/ech_config_contents/hpke_key_config/hpke_kem_id.rbs +20 -0
  24. data/sig/generated/ech_config/ech_config_contents/hpke_key_config/hpke_public_key.rbs +16 -0
  25. data/sig/generated/ech_config/ech_config_contents/hpke_key_config/hpke_symmetric_cipher_suite/hpke_aead_id.rbs +20 -0
  26. data/sig/generated/ech_config/ech_config_contents/hpke_key_config/hpke_symmetric_cipher_suite/hpke_kdf_id.rbs +20 -0
  27. data/sig/generated/ech_config/ech_config_contents/hpke_key_config/hpke_symmetric_cipher_suite.rbs +26 -0
  28. data/sig/generated/ech_config/ech_config_contents/hpke_key_config.rbs +31 -0
  29. data/sig/generated/ech_config/ech_config_contents.rbs +31 -0
  30. data/sig/generated/ech_config/error.rbs +13 -0
  31. data/sig/generated/ech_config/version.rbs +5 -0
  32. data/sig/generated/ech_config.rbs +35 -0
  33. metadata +18 -43
  34. data/.github/workflows/ci.yml +0 -34
  35. data/.gitignore +0 -16
  36. data/sorbet/config +0 -3
  37. data/sorbet/rbi/gems/ast.rbi +0 -49
  38. data/sorbet/rbi/gems/byebug.rbi +0 -1041
  39. data/sorbet/rbi/gems/ech_config.rbi +0 -22
  40. data/sorbet/rbi/gems/parallel.rbi +0 -86
  41. data/sorbet/rbi/gems/parser.rbi +0 -1477
  42. data/sorbet/rbi/gems/rainbow.rbi +0 -122
  43. data/sorbet/rbi/gems/rake.rbi +0 -646
  44. data/sorbet/rbi/gems/regexp_parser.rbi +0 -984
  45. data/sorbet/rbi/gems/rexml.rbi +0 -599
  46. data/sorbet/rbi/gems/rspec-core.rbi +0 -1947
  47. data/sorbet/rbi/gems/rspec-expectations.rbi +0 -1178
  48. data/sorbet/rbi/gems/rspec-mocks.rbi +0 -1096
  49. data/sorbet/rbi/gems/rspec-support.rbi +0 -282
  50. data/sorbet/rbi/gems/rspec.rbi +0 -15
  51. data/sorbet/rbi/gems/rubocop-ast.rbi +0 -1399
  52. data/sorbet/rbi/gems/rubocop-sorbet.rbi +0 -218
  53. data/sorbet/rbi/gems/rubocop.rbi +0 -9351
  54. data/sorbet/rbi/gems/ruby-progressbar.rbi +0 -304
  55. data/sorbet/rbi/gems/unicode-display_width.rbi +0 -23
  56. data/sorbet/rbi/gems/webrick.rbi +0 -662
  57. data/sorbet/rbi/hidden-definitions/errors.txt +0 -22890
  58. data/sorbet/rbi/hidden-definitions/hidden.rbi +0 -12118
  59. data/sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi +0 -276
  60. data/sorbet/rbi/sorbet-typed/lib/rake/all/rake.rbi +0 -645
  61. data/sorbet/rbi/sorbet-typed/lib/rspec-core/all/rspec-core.rbi +0 -24
  62. data/sorbet/rbi/sorbet-typed/lib/rubocop/>=1.8/rubocop.rbi +0 -12
  63. data/sorbet/rbi/todo.rbi +0 -6
  64. data/spec/hpke_key_config_spec.rb +0 -32
  65. data/spec/spec_helper.rb +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad7a4376a3c5bf717173817b87a3fc517405659909c6024b54041cef12e2dbe4
4
- data.tar.gz: 46a316838ad31faff1a3066d3bd2d9f910c3e2a59d94be3100eb4cd072816058
3
+ metadata.gz: 97281007956e8eac019720dc5d956d3fdb14c5b3fd9f30cc46516ba7d14ab996
4
+ data.tar.gz: c49c4e9da620abcb1aeb378439c5bb214c99505a81283aa5f80dd240254df56c
5
5
  SHA512:
6
- metadata.gz: c7277924712ed936097f52a1a2e90c75484229492e3164cd4ab5bcc3ad4102bc0178ca37a888d4c9905d9c0b668e9750587546742911659698750929f849c6f2
7
- data.tar.gz: 94c3ca0f9260b0ea67d333eb871ee3d5ff29629300a5554cbf18410df0a6e857f190a6ced4c423e781410db4a5a18cebd2e6abe335e3dd3ddb3e83827bb602b6
6
+ metadata.gz: bb658a90c4c70e66f73a97e59e5ac1c77b98806a79586942c44bb55e314b93cbea11d16f7a7a79051655cea0eb9466c4452a3e900a360c4e63668e8414985eba
7
+ data.tar.gz: 2e39c8d66c0736bc9e8beeba461d4005455125cc239a2fdfdc6e87d8fe267a6b14fd0d9daff6a5a0010a69fd02ae50e4037c931769a5fa91772422b957ac9140
data/.rubocop.yml CHANGED
@@ -1,5 +1,8 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.7
2
+ TargetRubyVersion: 4.0
3
+
4
+ Style/ClassAndModuleChildren:
5
+ EnforcedStyle: compact
3
6
 
4
7
  Style/ConditionalAssignment:
5
8
  Enabled: false
@@ -10,8 +13,11 @@ Style/Documentation:
10
13
  Style/NumericLiterals:
11
14
  Enabled: false
12
15
 
13
- Style/ClassAndModuleChildren:
14
- EnforcedStyle: compact
16
+ Style/RedundantReturn:
17
+ Enabled: false
18
+
19
+ Layout/LeadingCommentSpace:
20
+ Enabled: false
15
21
 
16
22
  Metrics/AbcSize:
17
23
  Max: 30
@@ -25,10 +31,3 @@ Naming/MethodParameterName:
25
31
  Metrics/BlockLength:
26
32
  Exclude:
27
33
  - 'spec/*.rb'
28
- - 'sorbet/**/*'
29
-
30
- require:
31
- - rubocop-sorbet
32
-
33
- Sorbet:
34
- Enabled: true
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.1.2
1
+ 4.0.1
data/Gemfile CHANGED
@@ -4,14 +4,13 @@ source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
6
 
7
- gem 'sorbet-runtime'
8
-
9
7
  group :test do
10
8
  gem 'byebug'
9
+ gem 'openssl'
11
10
  gem 'rake'
12
- gem 'rspec', '3.11'
13
- gem 'rubocop', '1.42'
14
- gem 'rubocop-sorbet'
15
- gem 'sorbet'
11
+ gem 'rbs-inline'
12
+ gem 'rspec'
13
+ gem 'rubocop', '1.82.1'
14
+ gem 'steep'
16
15
  gem 'webrick'
17
16
  end
data/Gemfile.lock CHANGED
@@ -1,73 +1,230 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ech_config (0.0.1)
5
- sorbet-runtime
4
+ ech_config (0.0.4)
5
+ base64
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- ast (2.4.2)
11
- byebug (11.1.3)
12
- diff-lcs (1.5.0)
13
- json (2.6.3)
14
- parallel (1.22.1)
15
- parser (3.2.0.0)
10
+ activesupport (8.1.2)
11
+ base64
12
+ bigdecimal
13
+ concurrent-ruby (~> 1.0, >= 1.3.1)
14
+ connection_pool (>= 2.2.5)
15
+ drb
16
+ i18n (>= 1.6, < 2)
17
+ json
18
+ logger (>= 1.4.2)
19
+ minitest (>= 5.1)
20
+ securerandom (>= 0.3)
21
+ tzinfo (~> 2.0, >= 2.0.5)
22
+ uri (>= 0.13.1)
23
+ ast (2.4.3)
24
+ base64 (0.3.0)
25
+ bigdecimal (4.0.1)
26
+ byebug (13.0.0)
27
+ reline (>= 0.6.0)
28
+ concurrent-ruby (1.3.6)
29
+ connection_pool (3.0.2)
30
+ csv (3.3.5)
31
+ diff-lcs (1.6.2)
32
+ drb (2.2.3)
33
+ ffi (1.17.3)
34
+ ffi (1.17.3-aarch64-linux-gnu)
35
+ ffi (1.17.3-aarch64-linux-musl)
36
+ ffi (1.17.3-arm-linux-gnu)
37
+ ffi (1.17.3-arm-linux-musl)
38
+ ffi (1.17.3-arm64-darwin)
39
+ ffi (1.17.3-x86-linux-gnu)
40
+ ffi (1.17.3-x86-linux-musl)
41
+ ffi (1.17.3-x86_64-darwin)
42
+ ffi (1.17.3-x86_64-linux-gnu)
43
+ ffi (1.17.3-x86_64-linux-musl)
44
+ fileutils (1.8.0)
45
+ i18n (1.14.8)
46
+ concurrent-ruby (~> 1.0)
47
+ io-console (0.8.2)
48
+ json (2.19.0)
49
+ language_server-protocol (3.17.0.5)
50
+ lint_roller (1.1.0)
51
+ listen (3.10.0)
52
+ logger
53
+ rb-fsevent (~> 0.10, >= 0.10.3)
54
+ rb-inotify (~> 0.9, >= 0.9.10)
55
+ logger (1.7.0)
56
+ minitest (6.0.2)
57
+ drb (~> 2.0)
58
+ prism (~> 1.5)
59
+ mutex_m (0.3.0)
60
+ openssl (4.0.1)
61
+ parallel (1.27.0)
62
+ parser (3.3.10.2)
16
63
  ast (~> 2.4.1)
64
+ racc
65
+ prism (1.9.0)
66
+ racc (1.8.1)
17
67
  rainbow (3.1.1)
18
- rake (13.0.6)
19
- regexp_parser (2.6.1)
20
- rexml (3.2.5)
21
- rspec (3.11.0)
22
- rspec-core (~> 3.11.0)
23
- rspec-expectations (~> 3.11.0)
24
- rspec-mocks (~> 3.11.0)
25
- rspec-core (3.11.0)
26
- rspec-support (~> 3.11.0)
27
- rspec-expectations (3.11.1)
68
+ rake (13.3.1)
69
+ rb-fsevent (0.11.2)
70
+ rb-inotify (0.11.1)
71
+ ffi (~> 1.0)
72
+ rbs (3.10.3)
73
+ logger
74
+ tsort
75
+ rbs-inline (0.13.0)
76
+ prism (>= 0.29)
77
+ rbs (>= 3.8.0)
78
+ regexp_parser (2.11.3)
79
+ reline (0.6.3)
80
+ io-console (~> 0.5)
81
+ rspec (3.13.2)
82
+ rspec-core (~> 3.13.0)
83
+ rspec-expectations (~> 3.13.0)
84
+ rspec-mocks (~> 3.13.0)
85
+ rspec-core (3.13.6)
86
+ rspec-support (~> 3.13.0)
87
+ rspec-expectations (3.13.5)
28
88
  diff-lcs (>= 1.2.0, < 2.0)
29
- rspec-support (~> 3.11.0)
30
- rspec-mocks (3.11.2)
89
+ rspec-support (~> 3.13.0)
90
+ rspec-mocks (3.13.8)
31
91
  diff-lcs (>= 1.2.0, < 2.0)
32
- rspec-support (~> 3.11.0)
33
- rspec-support (3.11.1)
34
- rubocop (1.42.0)
92
+ rspec-support (~> 3.13.0)
93
+ rspec-support (3.13.7)
94
+ rubocop (1.82.1)
35
95
  json (~> 2.3)
96
+ language_server-protocol (~> 3.17.0.2)
97
+ lint_roller (~> 1.1.0)
36
98
  parallel (~> 1.10)
37
- parser (>= 3.1.2.1)
99
+ parser (>= 3.3.0.2)
38
100
  rainbow (>= 2.2.2, < 4.0)
39
- regexp_parser (>= 1.8, < 3.0)
40
- rexml (>= 3.2.5, < 4.0)
41
- rubocop-ast (>= 1.24.1, < 2.0)
101
+ regexp_parser (>= 2.9.3, < 3.0)
102
+ rubocop-ast (>= 1.48.0, < 2.0)
42
103
  ruby-progressbar (~> 1.7)
43
- unicode-display_width (>= 1.4.0, < 3.0)
44
- rubocop-ast (1.24.1)
45
- parser (>= 3.1.1.0)
46
- rubocop-sorbet (0.6.11)
47
- rubocop (>= 0.90.0)
48
- ruby-progressbar (1.11.0)
49
- sorbet (0.5.10607)
50
- sorbet-static (= 0.5.10607)
51
- sorbet-runtime (0.5.10607)
52
- sorbet-static (0.5.10607-universal-darwin-21)
53
- unicode-display_width (2.4.2)
54
- webrick (1.7.0)
104
+ unicode-display_width (>= 2.4.0, < 4.0)
105
+ rubocop-ast (1.49.0)
106
+ parser (>= 3.3.7.2)
107
+ prism (~> 1.7)
108
+ ruby-progressbar (1.13.0)
109
+ securerandom (0.4.1)
110
+ steep (1.10.0)
111
+ activesupport (>= 5.1)
112
+ concurrent-ruby (>= 1.1.10)
113
+ csv (>= 3.0.9)
114
+ fileutils (>= 1.1.0)
115
+ json (>= 2.1.0)
116
+ language_server-protocol (>= 3.17.0.4, < 4.0)
117
+ listen (~> 3.0)
118
+ logger (>= 1.3.0)
119
+ mutex_m (>= 0.3.0)
120
+ parser (>= 3.1)
121
+ rainbow (>= 2.2.2, < 4.0)
122
+ rbs (~> 3.9)
123
+ securerandom (>= 0.1)
124
+ strscan (>= 1.0.0)
125
+ terminal-table (>= 2, < 5)
126
+ uri (>= 0.12.0)
127
+ strscan (3.1.7)
128
+ terminal-table (4.0.0)
129
+ unicode-display_width (>= 1.1.1, < 4)
130
+ tsort (0.2.0)
131
+ tzinfo (2.0.6)
132
+ concurrent-ruby (~> 1.0)
133
+ unicode-display_width (3.2.0)
134
+ unicode-emoji (~> 4.1)
135
+ unicode-emoji (4.2.0)
136
+ uri (1.1.1)
137
+ webrick (1.9.2)
55
138
 
56
139
  PLATFORMS
57
- arm64-darwin-21
58
- x86_64-darwin-21
140
+ aarch64-linux-gnu
141
+ aarch64-linux-musl
142
+ arm-linux-gnu
143
+ arm-linux-musl
144
+ arm64-darwin
145
+ ruby
146
+ x86-linux-gnu
147
+ x86-linux-musl
148
+ x86_64-darwin
149
+ x86_64-linux-gnu
150
+ x86_64-linux-musl
59
151
 
60
152
  DEPENDENCIES
61
153
  bundler
62
154
  byebug
63
155
  ech_config!
156
+ openssl
64
157
  rake
65
- rspec (= 3.11)
66
- rubocop (= 1.42)
67
- rubocop-sorbet
68
- sorbet
69
- sorbet-runtime
158
+ rbs-inline
159
+ rspec
160
+ rubocop (= 1.82.1)
161
+ steep
70
162
  webrick
71
163
 
164
+ CHECKSUMS
165
+ activesupport (8.1.2) sha256=88842578ccd0d40f658289b0e8c842acfe9af751afee2e0744a7873f50b6fdae
166
+ ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
167
+ base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
168
+ bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7
169
+ byebug (13.0.0) sha256=d2263efe751941ca520fa29744b71972d39cbc41839496706f5d9b22e92ae05d
170
+ concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
171
+ connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
172
+ csv (3.3.5) sha256=6e5134ac3383ef728b7f02725d9872934f523cb40b961479f69cf3afa6c8e73f
173
+ diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
174
+ drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
175
+ ech_config (0.0.4)
176
+ ffi (1.17.3) sha256=0e9f39f7bb3934f77ad6feab49662be77e87eedcdeb2a3f5c0234c2938563d4c
177
+ ffi (1.17.3-aarch64-linux-gnu) sha256=28ad573df26560f0aedd8a90c3371279a0b2bd0b4e834b16a2baa10bd7a97068
178
+ ffi (1.17.3-aarch64-linux-musl) sha256=020b33b76775b1abacc3b7d86b287cef3251f66d747092deec592c7f5df764b2
179
+ ffi (1.17.3-arm-linux-gnu) sha256=5bd4cea83b68b5ec0037f99c57d5ce2dd5aa438f35decc5ef68a7d085c785668
180
+ ffi (1.17.3-arm-linux-musl) sha256=0d7626bb96265f9af78afa33e267d71cfef9d9a8eb8f5525344f8da6c7d76053
181
+ ffi (1.17.3-arm64-darwin) sha256=0c690555d4cee17a7f07c04d59df39b2fba74ec440b19da1f685c6579bb0717f
182
+ ffi (1.17.3-x86-linux-gnu) sha256=868a88fcaf5186c3a46b7c7c2b2c34550e1e61a405670ab23f5b6c9971529089
183
+ ffi (1.17.3-x86-linux-musl) sha256=f0286aa6ef40605cf586e61406c446de34397b85dbb08cc99fdaddaef8343945
184
+ ffi (1.17.3-x86_64-darwin) sha256=1f211811eb5cfaa25998322cdd92ab104bfbd26d1c4c08471599c511f2c00bb5
185
+ ffi (1.17.3-x86_64-linux-gnu) sha256=3746b01f677aae7b16dc1acb7cb3cc17b3e35bdae7676a3f568153fb0e2c887f
186
+ ffi (1.17.3-x86_64-linux-musl) sha256=086b221c3a68320b7564066f46fed23449a44f7a1935f1fe5a245bd89d9aea56
187
+ fileutils (1.8.0) sha256=8c6b1df54e2540bdb2f39258f08af78853aa70bad52b4d394bbc6424593c6e02
188
+ i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
189
+ io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
190
+ json (2.19.0) sha256=bc5202f083618b3af7aba3184146ec9d820f8f6de261838b577173475e499d9a
191
+ language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
192
+ lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
193
+ listen (3.10.0) sha256=c6e182db62143aeccc2e1960033bebe7445309c7272061979bb098d03760c9d2
194
+ logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
195
+ minitest (6.0.2) sha256=db6e57956f6ecc6134683b4c87467d6dd792323c7f0eea7b93f66bd284adbc3d
196
+ mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751
197
+ openssl (4.0.1) sha256=e27974136b7b02894a1bce46c5397ee889afafe704a839446b54dc81cb9c5f7d
198
+ parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
199
+ parser (3.3.10.2) sha256=6f60c84aa4bdcedb6d1a2434b738fe8a8136807b6adc8f7f53b97da9bc4e9357
200
+ prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
201
+ racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
202
+ rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
203
+ rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
204
+ rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe
205
+ rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e
206
+ rbs (3.10.3) sha256=70627f3919016134d554e6c99195552ae3ef6020fe034c8e983facc9c192daa6
207
+ rbs-inline (0.13.0) sha256=aba6e48c2d1b75276e8557376164f4b4ba96dd0204e779a5cee2af442bd30442
208
+ regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
209
+ reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835
210
+ rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
211
+ rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
212
+ rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
213
+ rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
214
+ rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
215
+ rubocop (1.82.1) sha256=09f1a6a654a960eda767aebea33e47603080f8e9c9a3f019bf9b94c9cab5e273
216
+ rubocop-ast (1.49.0) sha256=49c3676d3123a0923d333e20c6c2dbaaae2d2287b475273fddee0c61da9f71fd
217
+ ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
218
+ securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
219
+ steep (1.10.0) sha256=1b295b55f9aaff1b8d3ee42453ee55bc2a1078fda0268f288edb2dc014f4d7d1
220
+ strscan (3.1.7) sha256=5f76462b94a3ea50b44973225b7d75b2cb96d4e1bee9ef1319b99ca117b72c8c
221
+ terminal-table (4.0.0) sha256=f504793203f8251b2ea7c7068333053f0beeea26093ec9962e62ea79f94301d2
222
+ tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
223
+ tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
224
+ unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
225
+ unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
226
+ uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
227
+ webrick (1.9.2) sha256=beb4a15fc474defed24a3bda4ffd88a490d517c9e4e6118c3edce59e45864131
228
+
72
229
  BUNDLED WITH
73
- 2.3.7
230
+ 4.0.7
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/ech_config.svg)](https://badge.fury.io/rb/ech_config)
4
4
  [![CI](https://github.com/thekuwayama/ech_config/workflows/CI/badge.svg)](https://github.com/thekuwayama/ech_config/actions?workflow=CI)
5
5
 
6
- `ech_config` is Ruby implementation of [Encrypted ClientHello Configuration](https://datatracker.ietf.org/doc/draft-ietf-tls-esni/).
6
+ `ech_config` is Ruby implementation of [Encrypted ClientHello Configuration](https://datatracker.ietf.org/doc/html/rfc9849.html).
7
7
 
8
8
  `ech_config` supports `0xfe0b` ~ `0xfe0f` ECHConfig.version.
9
9
 
data/Rakefile CHANGED
@@ -1,4 +1,3 @@
1
- # typed: false
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'bundler/gem_tasks'
@@ -8,9 +7,16 @@ require 'rspec/core/rake_task'
8
7
  RuboCop::RakeTask.new
9
8
  RSpec::Core::RakeTask.new(:spec)
10
9
 
11
- desc 'Run Sorbet type checker'
12
- task :sorbet do
13
- sh 'srb tc'
10
+ desc 'Generate RBS signatures for `lib` files'
11
+ task :rbs_inline do
12
+ sh 'rbs-inline', 'lib', '--output=sig/generated'
14
13
  end
15
14
 
16
- task default: %i[rubocop sorbet spec]
15
+ namespace :steep do
16
+ desc 'Run `steep check`'
17
+ task :check do
18
+ sh 'steep', 'check'
19
+ end
20
+ end
21
+
22
+ task default: %i[rubocop spec rbs_inline steep:check]
data/Steepfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ target :lib do
4
+ signature 'sig'
5
+ check 'lib'
6
+
7
+ library 'base64'
8
+ end
data/ech_config.gemspec CHANGED
@@ -13,12 +13,15 @@ Gem::Specification.new do |spec|
13
13
  spec.description = spec.summary
14
14
  spec.homepage = 'https://github.com/thekuwayama/ech_config'
15
15
  spec.license = 'MIT'
16
- spec.required_ruby_version = '>=2.7.0'
16
+ spec.required_ruby_version = '>=4.0'
17
17
 
18
- spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
19
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
+ `git ls-files -z`.split("\x0").reject do |f|
20
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
21
+ end
22
+ end
20
23
  spec.require_paths = ['lib']
21
24
 
22
25
  spec.add_development_dependency 'bundler'
23
- spec.add_runtime_dependency 'sorbet-runtime'
26
+ spec.add_dependency 'base64'
24
27
  end
data/example/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  ```sh-session
4
4
  $ cd /path/to/ech_config/example
5
5
 
6
- $ ruby well_known_url_client.rb cover.defo.ie draft-13.esni.defo.ie
6
+ $ bundle exec ruby well_known_url_client.rb cover.defo.ie draft-13.esni.defo.ie
7
7
  ```
8
8
 
9
9
  https://datatracker.ietf.org/meeting/113/materials/slides-113-dispatch-a-well-known-url-for-publishing-echconfiglists-00
@@ -1,23 +1,25 @@
1
- # typed: true
2
1
  # frozen_string_literal: true
3
2
 
3
+ # rbs_inline: enabled
4
+
4
5
  class ECHConfig::ECHConfigContents::Extensions
5
- extend T::Sig
6
6
  attr_reader :octet
7
7
 
8
- sig { params(octet: String).void }
8
+ # @rbs octet: String
9
+ # @rbs return: void
9
10
  def initialize(octet)
10
11
  # Note taht ECHConfig::ECHConfigContents::Extension only has octets.
11
12
  # If you need, deserialize octets to get TLS Extension objects.
12
13
  @octet = octet
13
14
  end
14
15
 
15
- sig { returns(String) }
16
+ # @rbs return: String
16
17
  def load
17
18
  @octet
18
19
  end
19
20
 
20
- sig { params(octet: String).returns(T.attached_class) }
21
+ # @rbs octet: String
22
+ # @rbs return: ECHConfig::ECHConfigContents::Extensions
21
23
  def self.store(octet)
22
24
  new(octet)
23
25
  end
@@ -1,24 +1,33 @@
1
- # typed: true
2
1
  # frozen_string_literal: true
3
2
 
3
+ # rbs_inline: enabled
4
+
4
5
  class ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeKemId
5
- extend T::Sig
6
6
  attr_reader :uint16
7
7
 
8
- sig { params(uint16: Integer).void }
8
+ # @rbs uint16: Integer
9
+ # @rbs return: void
9
10
  def initialize(uint16)
10
11
  @uint16 = uint16
11
12
  end
12
13
 
13
- sig { returns(String) }
14
+ # @rbs return: String
14
15
  def encode
15
16
  [@uint16].pack('n')
16
17
  end
17
18
 
18
- sig { params(octet: String).returns(T.attached_class) }
19
+ # @rbs other: ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeKemId
20
+ # @rbs return: bool
21
+ def ==(other)
22
+ other.uint16 == @uint16
23
+ end
24
+
25
+ # @rbs octet: String
26
+ # @rbs return: ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeKemId
19
27
  def self.decode(octet)
20
28
  raise ::ECHConfig::DecodeError if octet.length != 2
21
29
 
22
- new(octet.unpack1('n'))
30
+ id = octet.unpack1('n') #: Integer
31
+ new(id)
23
32
  end
24
33
  end
@@ -1,21 +1,23 @@
1
- # typed: true
2
1
  # frozen_string_literal: true
3
2
 
3
+ # rbs_inline: enabled
4
+
4
5
  class ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkePublicKey
5
- extend T::Sig
6
6
  attr_reader :opaque
7
7
 
8
- sig { params(opaque: String).void }
8
+ # @rbs opaque: String
9
+ # @rbs return: void
9
10
  def initialize(opaque)
10
11
  @opaque = opaque
11
12
  end
12
13
 
13
- sig { returns(String) }
14
+ # @rbs return: String
14
15
  def encode
15
16
  @opaque.then { |s| [s.length].pack('n') + s }
16
17
  end
17
18
 
18
- sig { params(octet: String).returns(T.attached_class) }
19
+ # @rbs octet: String
20
+ # @rbs return: ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkePublicKey
19
21
  def self.decode(octet)
20
22
  new(octet)
21
23
  end
@@ -1,24 +1,33 @@
1
- # typed: true
2
1
  # frozen_string_literal: true
3
2
 
3
+ # rbs_inline: enabled
4
+
4
5
  class ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite::HpkeAeadId
5
- extend T::Sig
6
6
  attr_reader :uint16
7
7
 
8
- sig { params(uint16: Integer).void }
8
+ # @rbs uint16: Integer
9
+ # @rbs return: void
9
10
  def initialize(uint16)
10
11
  @uint16 = uint16
11
12
  end
12
13
 
13
- sig { returns(String) }
14
+ # @rbs return: String
14
15
  def encode
15
16
  [@uint16].pack('n')
16
17
  end
17
18
 
18
- sig { params(octet: String).returns(T.attached_class) }
19
+ # @rbs other: ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite::HpkeAeadId
20
+ # @rbs return: bool
21
+ def ==(other)
22
+ other.uint16 == @uint16
23
+ end
24
+
25
+ # @rbs octet: String
26
+ # @rbs return: ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite::HpkeAeadId
19
27
  def self.decode(octet)
20
28
  raise ::ECHConfig::DecodeError if octet.length != 2
21
29
 
22
- new(octet.unpack1('n'))
30
+ id = octet.unpack1('n') #: Integer
31
+ new(id)
23
32
  end
24
33
  end
@@ -1,24 +1,33 @@
1
- # typed: true
2
1
  # frozen_string_literal: true
3
2
 
3
+ # rbs_inline: enabled
4
+
4
5
  class ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite::HpkeKdfId
5
- extend T::Sig
6
6
  attr_reader :uint16
7
7
 
8
- sig { params(uint16: Integer).void }
8
+ # @rbs uint16: Integer
9
+ # @rbs return: void
9
10
  def initialize(uint16)
10
11
  @uint16 = uint16
11
12
  end
12
13
 
13
- sig { returns(String) }
14
+ # @rbs return: String
14
15
  def encode
15
16
  [@uint16].pack('n')
16
17
  end
17
18
 
18
- sig { params(octet: String).returns(T.attached_class) }
19
+ # @rbs other: ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite::HpkeKdfId
20
+ # @rbs return: bool
21
+ def ==(other)
22
+ other.uint16 == @uint16
23
+ end
24
+
25
+ # @rbs octet: String
26
+ # @rbs return: ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite::HpkeKdfId
19
27
  def self.decode(octet)
20
28
  raise ::ECHConfig::DecodeError if octet.length != 2
21
29
 
22
- new(octet.unpack1('n'))
30
+ uint16 = octet.unpack1('n') # @type var uint16: Integer
31
+ new(uint16)
23
32
  end
24
33
  end
@@ -1,8 +1,8 @@
1
- # typed: true
2
1
  # frozen_string_literal: true
3
2
 
3
+ # rbs_inline: enabled
4
+
4
5
  class ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite
5
- extend T::Sig
6
6
  # define class
7
7
  end
8
8
 
@@ -12,21 +12,30 @@ Dir["#{File.dirname(__FILE__)}/hpke_symmetric_cipher_suite/*.rb"]
12
12
  class ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite
13
13
  attr_reader :kdf_id, :aead_id
14
14
 
15
- sig { params(kdf_id: HpkeKdfId, aead_id: HpkeAeadId).void }
15
+ # @rbs kdf_id: ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite::HpkeKdfId
16
+ # @rbs aead_id: ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite::HpkeAeadId
17
+ # @rbs return: void
16
18
  def initialize(kdf_id, aead_id)
17
19
  @kdf_id = kdf_id
18
20
  @aead_id = aead_id
19
21
  end
20
22
 
21
- sig { returns(String) }
23
+ # @rbs return: String
22
24
  def encode
23
25
  @kdf_id.encode + @aead_id.encode
24
26
  end
25
27
 
26
- sig { params(octet: String).returns(T::Array[T.attached_class]) }
28
+ # @rbs other: ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite
29
+ # @rbs return: bool
30
+ def ==(other)
31
+ other.kdf_id == @kdf_id && other.aead_id == @aead_id
32
+ end
33
+
34
+ # @rbs octet: String
35
+ # @rbs return: Array[ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite]
27
36
  def self.decode_vectors(octet)
28
37
  i = 0
29
- cipher_suites = []
38
+ cipher_suites = [] # @type var cipher_suites: Array[ECHConfig::ECHConfigContents::HpkeKeyConfig::HpkeSymmetricCipherSuite]
30
39
  while i < octet.length
31
40
  raise ::ECHConfig::DecodeError if i + 4 > octet.length
32
41