tttls1.3 0.3.6 → 0.3.8

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/Gemfile +1 -1
  4. data/lib/tttls1.3/version.rb +1 -1
  5. data/lib/tttls1.3.rb +1 -0
  6. data/tttls1.3.gemspec +6 -3
  7. metadata +11 -115
  8. data/.github/workflows/ci.yml +0 -39
  9. data/.gitignore +0 -17
  10. data/spec/aead_spec.rb +0 -95
  11. data/spec/alert_spec.rb +0 -54
  12. data/spec/alpn_spec.rb +0 -55
  13. data/spec/application_data_spec.rb +0 -26
  14. data/spec/certificate_spec.rb +0 -82
  15. data/spec/certificate_verify_spec.rb +0 -51
  16. data/spec/change_cipher_spec_spec.rb +0 -26
  17. data/spec/cipher_suites_spec.rb +0 -39
  18. data/spec/client_hello_spec.rb +0 -105
  19. data/spec/client_spec.rb +0 -274
  20. data/spec/compress_certificate_spec.rb +0 -54
  21. data/spec/cookie_spec.rb +0 -98
  22. data/spec/early_data_indication_spec.rb +0 -64
  23. data/spec/ech_outer_extensions_spec.rb +0 -42
  24. data/spec/ech_spec.rb +0 -122
  25. data/spec/encrypted_extensions_spec.rb +0 -94
  26. data/spec/end_of_early_data_spec.rb +0 -28
  27. data/spec/endpoint_spec.rb +0 -167
  28. data/spec/error_spec.rb +0 -18
  29. data/spec/extensions_spec.rb +0 -250
  30. data/spec/finished_spec.rb +0 -55
  31. data/spec/fixtures/rsa_ca.crt +0 -18
  32. data/spec/fixtures/rsa_ca.key +0 -27
  33. data/spec/fixtures/rsa_rsa.crt +0 -18
  34. data/spec/fixtures/rsa_rsa.key +0 -27
  35. data/spec/fixtures/rsa_rsa_ocsp.crt +0 -18
  36. data/spec/fixtures/rsa_rsa_ocsp.key +0 -27
  37. data/spec/fixtures/rsa_rsassaPss.crt +0 -20
  38. data/spec/fixtures/rsa_rsassaPss.key +0 -27
  39. data/spec/fixtures/rsa_secp256r1.crt +0 -14
  40. data/spec/fixtures/rsa_secp256r1.key +0 -5
  41. data/spec/fixtures/rsa_secp384r1.crt +0 -14
  42. data/spec/fixtures/rsa_secp384r1.key +0 -6
  43. data/spec/fixtures/rsa_secp521r1.crt +0 -15
  44. data/spec/fixtures/rsa_secp521r1.key +0 -7
  45. data/spec/key_schedule_spec.rb +0 -221
  46. data/spec/key_share_spec.rb +0 -199
  47. data/spec/new_session_ticket_spec.rb +0 -80
  48. data/spec/pre_shared_key_spec.rb +0 -167
  49. data/spec/psk_key_exchange_modes_spec.rb +0 -45
  50. data/spec/record_size_limit_spec.rb +0 -61
  51. data/spec/record_spec.rb +0 -105
  52. data/spec/server_hello_spec.rb +0 -200
  53. data/spec/server_name_spec.rb +0 -110
  54. data/spec/server_spec.rb +0 -232
  55. data/spec/signature_algorithms_cert_spec.rb +0 -77
  56. data/spec/signature_algorithms_spec.rb +0 -104
  57. data/spec/spec_helper.rb +0 -990
  58. data/spec/status_request_spec.rb +0 -140
  59. data/spec/supported_groups_spec.rb +0 -79
  60. data/spec/supported_versions_spec.rb +0 -136
  61. data/spec/transcript_spec.rb +0 -83
  62. data/spec/unknown_extension_spec.rb +0 -90
  63. data/spec/utils_spec.rb +0 -235
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d8c0f0a3a4d128e45cff220f8d4e7f230e3cbfb7afc9cca1bf9192e39224a64
4
- data.tar.gz: 0c10de227f96196783f95717bd141d1ede26a340525ef9af84ad0b6be1b6f6b1
3
+ metadata.gz: c49b7cb520966e4401900105dcf7c9c3e704a07ca13fedfa9f9669b0a60e57b0
4
+ data.tar.gz: 4c5753cf33a650e3442ca80a7ecd91e9b798f9e106a9515aeff298b5fcbb2ad4
5
5
  SHA512:
6
- metadata.gz: 36ead69d903139ea1618cb9cd105c8638f16b5c7ea4d5b5d168c785e87db085ede486d62f6f6be5d704e660d0f2a290ba4e7d8087facdc4a4da4a284aae806a6
7
- data.tar.gz: 72839111a9b18790c1dbcb8b9ac2136120317ea50f9352be7c0e676a1b7999cc789290ebb66430a1301052fd6bfba97d1b40dbc9f6e59955b595d784d380c240
6
+ metadata.gz: 26860cd885b413b5b09a8a93b9f928c1904eeb386e31392e47cee131beeeb70ca7d9d5487f333b347f451a9fecbac8f633351a218ebc8b1b12de71db5e56e9ab
7
+ data.tar.gz: 88cadeaab6f6dbfa220244fdfcf728c9ec112fbdaf7482a0cdd9d5cf797a8924e8cd3131cdeba94c0ce316847eaa80d300e275a0400e5aa0338aee56e659626e
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 4.0.0
1
+ 4.0.2
data/Gemfile CHANGED
@@ -3,7 +3,7 @@
3
3
  source 'https://rubygems.org'
4
4
 
5
5
  gem 'ech_config', '~> 0.0.3'
6
- gem 'hpke', '~> 1.0.0'
6
+ gem 'hpke', '~> 1', '>= 1.0.2'
7
7
  gem 'logger'
8
8
  gem 'openssl'
9
9
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TTTLS13
4
- VERSION = '0.3.6'
4
+ VERSION = '0.3.8'
5
5
  end
data/lib/tttls1.3.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openssl'
4
+ require 'pp' # rubocop:disable Lint/RedundantRequireStatement
4
5
  require 'net/http'
5
6
  require 'logger'
6
7
 
data/tttls1.3.gemspec CHANGED
@@ -15,13 +15,16 @@ Gem::Specification.new do |spec|
15
15
  spec.license = 'MIT'
16
16
  spec.required_ruby_version = '>= 3.1.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
26
  spec.add_dependency 'ech_config', '~> 0.0.3'
24
- spec.add_dependency 'hpke', '~> 1.0.0'
27
+ spec.add_dependency 'hpke', '~> 1', '>= 1.0.2'
25
28
  spec.add_dependency 'logger'
26
29
  spec.add_dependency 'openssl', '>= 3'
27
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tttls1.3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - thekuwayama
@@ -43,14 +43,20 @@ dependencies:
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 1.0.0
46
+ version: '1'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.0.2
47
50
  type: :runtime
48
51
  prerelease: false
49
52
  version_requirements: !ruby/object:Gem::Requirement
50
53
  requirements:
51
54
  - - "~>"
52
55
  - !ruby/object:Gem::Version
53
- version: 1.0.0
56
+ version: '1'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.0.2
54
60
  - !ruby/object:Gem::Dependency
55
61
  name: logger
56
62
  requirement: !ruby/object:Gem::Requirement
@@ -86,8 +92,6 @@ executables: []
86
92
  extensions: []
87
93
  extra_rdoc_files: []
88
94
  files:
89
- - ".github/workflows/ci.yml"
90
- - ".gitignore"
91
95
  - ".rspec"
92
96
  - ".rubocop.yml"
93
97
  - ".ruby-version"
@@ -164,60 +168,6 @@ files:
164
168
  - lib/tttls1.3/transcript.rb
165
169
  - lib/tttls1.3/utils.rb
166
170
  - lib/tttls1.3/version.rb
167
- - spec/aead_spec.rb
168
- - spec/alert_spec.rb
169
- - spec/alpn_spec.rb
170
- - spec/application_data_spec.rb
171
- - spec/certificate_spec.rb
172
- - spec/certificate_verify_spec.rb
173
- - spec/change_cipher_spec_spec.rb
174
- - spec/cipher_suites_spec.rb
175
- - spec/client_hello_spec.rb
176
- - spec/client_spec.rb
177
- - spec/compress_certificate_spec.rb
178
- - spec/cookie_spec.rb
179
- - spec/early_data_indication_spec.rb
180
- - spec/ech_outer_extensions_spec.rb
181
- - spec/ech_spec.rb
182
- - spec/encrypted_extensions_spec.rb
183
- - spec/end_of_early_data_spec.rb
184
- - spec/endpoint_spec.rb
185
- - spec/error_spec.rb
186
- - spec/extensions_spec.rb
187
- - spec/finished_spec.rb
188
- - spec/fixtures/rsa_ca.crt
189
- - spec/fixtures/rsa_ca.key
190
- - spec/fixtures/rsa_rsa.crt
191
- - spec/fixtures/rsa_rsa.key
192
- - spec/fixtures/rsa_rsa_ocsp.crt
193
- - spec/fixtures/rsa_rsa_ocsp.key
194
- - spec/fixtures/rsa_rsassaPss.crt
195
- - spec/fixtures/rsa_rsassaPss.key
196
- - spec/fixtures/rsa_secp256r1.crt
197
- - spec/fixtures/rsa_secp256r1.key
198
- - spec/fixtures/rsa_secp384r1.crt
199
- - spec/fixtures/rsa_secp384r1.key
200
- - spec/fixtures/rsa_secp521r1.crt
201
- - spec/fixtures/rsa_secp521r1.key
202
- - spec/key_schedule_spec.rb
203
- - spec/key_share_spec.rb
204
- - spec/new_session_ticket_spec.rb
205
- - spec/pre_shared_key_spec.rb
206
- - spec/psk_key_exchange_modes_spec.rb
207
- - spec/record_size_limit_spec.rb
208
- - spec/record_spec.rb
209
- - spec/server_hello_spec.rb
210
- - spec/server_name_spec.rb
211
- - spec/server_spec.rb
212
- - spec/signature_algorithms_cert_spec.rb
213
- - spec/signature_algorithms_spec.rb
214
- - spec/spec_helper.rb
215
- - spec/status_request_spec.rb
216
- - spec/supported_groups_spec.rb
217
- - spec/supported_versions_spec.rb
218
- - spec/transcript_spec.rb
219
- - spec/unknown_extension_spec.rb
220
- - spec/utils_spec.rb
221
171
  - tttls1.3.gemspec
222
172
  homepage: https://github.com/thekuwayama/tttls1.3
223
173
  licenses:
@@ -237,61 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
187
  - !ruby/object:Gem::Version
238
188
  version: '0'
239
189
  requirements: []
240
- rubygems_version: 4.0.3
190
+ rubygems_version: 4.0.10
241
191
  specification_version: 4
242
192
  summary: TLS 1.3 implementation in Ruby (Tiny Trial TLS1.3 aka tttls1.3)
243
- test_files:
244
- - spec/aead_spec.rb
245
- - spec/alert_spec.rb
246
- - spec/alpn_spec.rb
247
- - spec/application_data_spec.rb
248
- - spec/certificate_spec.rb
249
- - spec/certificate_verify_spec.rb
250
- - spec/change_cipher_spec_spec.rb
251
- - spec/cipher_suites_spec.rb
252
- - spec/client_hello_spec.rb
253
- - spec/client_spec.rb
254
- - spec/compress_certificate_spec.rb
255
- - spec/cookie_spec.rb
256
- - spec/early_data_indication_spec.rb
257
- - spec/ech_outer_extensions_spec.rb
258
- - spec/ech_spec.rb
259
- - spec/encrypted_extensions_spec.rb
260
- - spec/end_of_early_data_spec.rb
261
- - spec/endpoint_spec.rb
262
- - spec/error_spec.rb
263
- - spec/extensions_spec.rb
264
- - spec/finished_spec.rb
265
- - spec/fixtures/rsa_ca.crt
266
- - spec/fixtures/rsa_ca.key
267
- - spec/fixtures/rsa_rsa.crt
268
- - spec/fixtures/rsa_rsa.key
269
- - spec/fixtures/rsa_rsa_ocsp.crt
270
- - spec/fixtures/rsa_rsa_ocsp.key
271
- - spec/fixtures/rsa_rsassaPss.crt
272
- - spec/fixtures/rsa_rsassaPss.key
273
- - spec/fixtures/rsa_secp256r1.crt
274
- - spec/fixtures/rsa_secp256r1.key
275
- - spec/fixtures/rsa_secp384r1.crt
276
- - spec/fixtures/rsa_secp384r1.key
277
- - spec/fixtures/rsa_secp521r1.crt
278
- - spec/fixtures/rsa_secp521r1.key
279
- - spec/key_schedule_spec.rb
280
- - spec/key_share_spec.rb
281
- - spec/new_session_ticket_spec.rb
282
- - spec/pre_shared_key_spec.rb
283
- - spec/psk_key_exchange_modes_spec.rb
284
- - spec/record_size_limit_spec.rb
285
- - spec/record_spec.rb
286
- - spec/server_hello_spec.rb
287
- - spec/server_name_spec.rb
288
- - spec/server_spec.rb
289
- - spec/signature_algorithms_cert_spec.rb
290
- - spec/signature_algorithms_spec.rb
291
- - spec/spec_helper.rb
292
- - spec/status_request_spec.rb
293
- - spec/supported_groups_spec.rb
294
- - spec/supported_versions_spec.rb
295
- - spec/transcript_spec.rb
296
- - spec/unknown_extension_spec.rb
297
- - spec/utils_spec.rb
193
+ test_files: []
@@ -1,39 +0,0 @@
1
- name: CI
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- pull_request:
8
- branches:
9
- - '*'
10
-
11
- jobs:
12
- ci:
13
- runs-on: ubuntu-latest
14
- strategy:
15
- matrix:
16
- ruby-version: ['3.3', '3.4', '4.0']
17
- env:
18
- SPEC_VERBOSE: true
19
- steps:
20
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
21
- - uses: docker://thekuwayama/openssl:latest
22
- - name: Set up Ruby
23
- uses: ruby/setup-ruby@ae195bbe749a7cef685ac729197124a48305c1cb # v1.276.0
24
- with:
25
- ruby-version: ${{ matrix.ruby-version }}
26
- - name: Install dependencies
27
- run: |
28
- gem --version
29
- gem install bundler
30
- bundle --version
31
- bundle install
32
- - name: Run rubocop
33
- run: bundle exec rake rubocop
34
- - name: Run rspec
35
- run: bundle exec rake spec
36
- - name: Run interop client
37
- run: bundle exec rake interop:client
38
- - name: Run interop server
39
- run: bundle exec rake interop:server
data/.gitignore DELETED
@@ -1,17 +0,0 @@
1
- *.gem
2
- *.rbc
3
- Gemfile.lock
4
- .config
5
- .rvmrc
6
- /.bundle/
7
- /vendor/
8
- /lib/bundler/man/
9
- /pkg/
10
- /.yardoc/
11
- /_yardoc/
12
- /doc/
13
- /rdoc/
14
- /coverage/
15
- /spec/reports/
16
- /tmp/
17
- .DS_Store
data/spec/aead_spec.rb DELETED
@@ -1,95 +0,0 @@
1
- # encoding: ascii-8bit
2
- # frozen_string_literal: true
3
-
4
- require_relative 'spec_helper'
5
-
6
- RSpec.describe Aead do
7
- context 'aead using CipherSuite::TLS_AES_128_GCM_SHA256' do
8
- let(:cipher) do
9
- Aead.new(cipher_suite: CipherSuite::TLS_AES_128_GCM_SHA256,
10
- write_key: TESTBINARY_SERVER_PARAMETERS_WRITE_KEY,
11
- write_iv: TESTBINARY_SERVER_PARAMETERS_WRITE_IV,
12
- sequence_number: SequenceNumber.new)
13
- end
14
-
15
- let(:content) do
16
- TESTBINARY_SERVER_PARAMETERS
17
- end
18
-
19
- let(:encrypted_record) do
20
- TESTBINARY_SERVER_PARAMETERS_RECORD[5..]
21
- end
22
-
23
- let(:record_header) do
24
- TESTBINARY_SERVER_PARAMETERS_RECORD[0...5]
25
- end
26
-
27
- it 'should encrypt content of server parameters' do
28
- expect(cipher.encrypt(content, ContentType::HANDSHAKE))
29
- .to eq encrypted_record
30
- end
31
-
32
- it 'should decrypt encrypted_record server parameters' do
33
- expect(cipher.decrypt(encrypted_record, record_header))
34
- .to eq [content, ContentType::HANDSHAKE]
35
- end
36
- end
37
-
38
- context 'aead using CipherSuite::TLS_AES_128_GCM_SHA256' do
39
- let(:cipher) do
40
- Aead.new(cipher_suite: CipherSuite::TLS_AES_128_GCM_SHA256,
41
- write_key: TESTBINARY_CLIENT_FINISHED_WRITE_KEY,
42
- write_iv: TESTBINARY_CLIENT_FINISHED_WRITE_IV,
43
- sequence_number: SequenceNumber.new)
44
- end
45
-
46
- let(:content) do
47
- TESTBINARY_CLIENT_FINISHED
48
- end
49
-
50
- let(:encrypted_record) do
51
- TESTBINARY_CLIENT_FINISHED_RECORD[5..]
52
- end
53
-
54
- let(:record_header) do
55
- TESTBINARY_CLIENT_FINISHED_RECORD[0...5]
56
- end
57
-
58
- it 'should encrypt content of client finished' do
59
- expect(cipher.encrypt(content, ContentType::HANDSHAKE))
60
- .to eq encrypted_record
61
- end
62
-
63
- it 'should decrypt encrypted_record client finished' do
64
- expect(cipher.decrypt(encrypted_record, record_header))
65
- .to eq [content, ContentType::HANDSHAKE]
66
- end
67
- end
68
-
69
- context 'aead using CipherSuite::TLS_AES_128_GCM_SHA256, ' \
70
- 'HelloRetryRequest,' do
71
- let(:cipher) do
72
- Aead.new(cipher_suite: CipherSuite::TLS_AES_128_GCM_SHA256,
73
- write_key: TESTBINARY_HRR_SERVER_PARAMETERS_WRITE_KEY,
74
- write_iv: TESTBINARY_HRR_SERVER_PARAMETERS_WRITE_IV,
75
- sequence_number: SequenceNumber.new)
76
- end
77
-
78
- let(:content) do
79
- TESTBINARY_HRR_SERVER_PARAMETERS
80
- end
81
-
82
- let(:encrypted_record) do
83
- TESTBINARY_HRR_SERVER_PARAMETERS_RECORD[5..]
84
- end
85
-
86
- let(:record_header) do
87
- TESTBINARY_HRR_SERVER_PARAMETERS_RECORD[0...5]
88
- end
89
-
90
- it 'should decrypt encrypted_record server parameters' do
91
- expect(cipher.decrypt(encrypted_record, record_header))
92
- .to eq [content, ContentType::HANDSHAKE]
93
- end
94
- end
95
- end
data/spec/alert_spec.rb DELETED
@@ -1,54 +0,0 @@
1
- # encoding: ascii-8bit
2
- # frozen_string_literal: true
3
-
4
- require_relative 'spec_helper'
5
-
6
- RSpec.describe Alert do
7
- context 'unexpected_message alert' do
8
- let(:message) do
9
- Alert.new(level: AlertLevel::FATAL,
10
- description: ALERT_DESCRIPTION[:unexpected_message])
11
- end
12
-
13
- it 'should be serialized' do
14
- expect(message.serialize).to eq AlertLevel::FATAL \
15
- + ALERT_DESCRIPTION[:unexpected_message]
16
- end
17
-
18
- it 'should return error' do
19
- expect(message.to_error).to be_a_kind_of(ErrorAlerts)
20
- expect(message.to_error.message).to eq 'unexpected_message'
21
- end
22
- end
23
-
24
- context 'unexpected_message alert, not given level' do
25
- let(:message) do
26
- Alert.new(description: ALERT_DESCRIPTION[:unexpected_message])
27
- end
28
-
29
- it 'should be serialized' do
30
- expect(message.serialize).to eq AlertLevel::FATAL \
31
- + ALERT_DESCRIPTION[:unexpected_message]
32
- end
33
-
34
- it 'should return error' do
35
- expect(message.to_error).to be_a_kind_of(ErrorAlerts)
36
- expect(message.to_error.message).to eq 'unexpected_message'
37
- end
38
- end
39
-
40
- context 'valid alert binary' do
41
- let(:message) do
42
- Alert.deserialize(TESTBINARY_ALERT)
43
- end
44
-
45
- it 'should generate object' do
46
- expect(message.level).to eq AlertLevel::WARNING
47
- expect(message.description).to eq ALERT_DESCRIPTION[:close_notify]
48
- end
49
-
50
- it 'should generate serializable object' do
51
- expect(message.serialize).to eq TESTBINARY_ALERT
52
- end
53
- end
54
- end
data/spec/alpn_spec.rb DELETED
@@ -1,55 +0,0 @@
1
- # encoding: ascii-8bit
2
- # frozen_string_literal: true
3
-
4
- require_relative 'spec_helper'
5
- using Refinements
6
-
7
- RSpec.describe Alpn do
8
- context 'valid alpn' do
9
- let(:protocol_name_list) do
10
- ['h2', 'http/1.1', 'http/1.0']
11
- end
12
-
13
- let(:extension) do
14
- Alpn.new(protocol_name_list)
15
- end
16
-
17
- it 'should be generated' do
18
- expect(extension.extension_type)
19
- .to eq ExtensionType::APPLICATION_LAYER_PROTOCOL_NEGOTIATION
20
- expect(extension.protocol_name_list).to eq protocol_name_list
21
- end
22
-
23
- it 'should be serialized' do
24
- expect(extension.serialize)
25
- .to eq ExtensionType::APPLICATION_LAYER_PROTOCOL_NEGOTIATION \
26
- + 23.to_uint16 \
27
- + 21.to_uint16 \
28
- + 'h2'.prefix_uint8_length \
29
- + 'http/1.1'.prefix_uint8_length \
30
- + 'http/1.0'.prefix_uint8_length
31
- end
32
- end
33
-
34
- context 'invalid alpn, empty,' do
35
- let(:extension) do
36
- Alpn.new([])
37
- end
38
-
39
- it 'should not be generated' do
40
- expect { extension }.to raise_error(ErrorAlerts)
41
- end
42
- end
43
-
44
- context 'valid alpn binary' do
45
- let(:extension) do
46
- Alpn.deserialize(TESTBINARY_ALPN)
47
- end
48
-
49
- it 'should generate valid object' do
50
- expect(extension.extension_type)
51
- .to eq ExtensionType::APPLICATION_LAYER_PROTOCOL_NEGOTIATION
52
- expect(extension.protocol_name_list).to eq ['h2', 'http/1.1']
53
- end
54
- end
55
- end
@@ -1,26 +0,0 @@
1
- # encoding: ascii-8bit
2
- # frozen_string_literal: true
3
-
4
- require_relative 'spec_helper'
5
-
6
- RSpec.describe ApplicationData do
7
- context 'application_data' do
8
- let(:message) do
9
- ApplicationData.new(TESTBINARY_CLIENT_APPLICATION_DATA)
10
- end
11
-
12
- it 'should be serialized' do
13
- expect(message.serialize).to eq TESTBINARY_CLIENT_APPLICATION_DATA
14
- end
15
- end
16
-
17
- context 'valid application_data binary' do
18
- let(:message) do
19
- ApplicationData.deserialize(TESTBINARY_CLIENT_APPLICATION_DATA)
20
- end
21
-
22
- it 'should generate valid serializable object' do
23
- expect(message.serialize).to eq TESTBINARY_CLIENT_APPLICATION_DATA
24
- end
25
- end
26
- end
@@ -1,82 +0,0 @@
1
- # encoding: ascii-8bit
2
- # frozen_string_literal: true
3
-
4
- require_relative 'spec_helper'
5
- using Refinements
6
-
7
- RSpec.describe Certificate do
8
- context 'valid certificate' do
9
- let(:certificate) do
10
- OpenSSL::X509::Certificate.new(
11
- File.read(__dir__ + '/fixtures/rsa_rsa.crt')
12
- )
13
- end
14
-
15
- let(:message) do
16
- Certificate.new(certificate_list: [CertificateEntry.new(certificate)])
17
- end
18
-
19
- it 'should be generated' do
20
- expect(message.msg_type).to eq HandshakeType::CERTIFICATE
21
- expect(message.certificate_request_context).to be_empty
22
-
23
- certificate_entry = message.certificate_list.first
24
- expect(certificate_entry.cert_data.subject.to_s).to eq '/CN=localhost'
25
- expect(certificate_entry.extensions).to be_empty
26
- end
27
-
28
- it 'should be serialized' do
29
- expect(message.serialize).to eq HandshakeType::CERTIFICATE \
30
- + 742.to_uint24 \
31
- + 0.to_uint8 \
32
- + 738.to_uint24 \
33
- + 733.to_uint24 \
34
- + certificate.to_der \
35
- + 0.to_uint16
36
- end
37
- end
38
-
39
- context 'valid certificate binary' do
40
- let(:message) do
41
- Certificate.deserialize(TESTBINARY_CERTIFICATE)
42
- end
43
-
44
- it 'should generate valid object' do
45
- expect(message.msg_type).to eq HandshakeType::CERTIFICATE
46
- expect(message.certificate_request_context).to be_empty
47
-
48
- certificate_entry = message.certificate_list.first
49
- expect(certificate_entry.cert_data.subject.to_s).to eq '/CN=rsa'
50
- expect(certificate_entry.extensions).to be_empty
51
- end
52
-
53
- it 'should generate serializable object' do
54
- expect(message.serialize).to eq TESTBINARY_CERTIFICATE
55
- end
56
- end
57
-
58
- context 'invalid certificate, including forbidden extension type,' do
59
- let(:certificate) do
60
- OpenSSL::X509::Certificate.new(
61
- File.read(__dir__ + '/fixtures/rsa_rsa.crt')
62
- )
63
- end
64
-
65
- let(:server_name) do
66
- ServerName.new('')
67
- end
68
-
69
- let(:message) do
70
- Certificate.new(
71
- certificate_list: [
72
- CertificateEntry.new(certificate, Extensions.new([server_name]))
73
- ]
74
- )
75
- end
76
-
77
- it 'should be generated' do
78
- expect(message.msg_type).to eq HandshakeType::CERTIFICATE
79
- expect(message.appearable_extensions?).to be false
80
- end
81
- end
82
- end
@@ -1,51 +0,0 @@
1
- # encoding: ascii-8bit
2
- # frozen_string_literal: true
3
-
4
- require_relative 'spec_helper'
5
- using Refinements
6
-
7
- RSpec.describe CertificateVerify do
8
- context 'valid certificate_verify' do
9
- let(:signature) do
10
- OpenSSL::Random.random_bytes(128)
11
- end
12
-
13
- let(:message) do
14
- CertificateVerify.new(
15
- signature_scheme: SignatureScheme::RSA_PSS_RSAE_SHA256,
16
- signature:
17
- )
18
- end
19
-
20
- it 'should be generated' do
21
- expect(message.msg_type).to eq HandshakeType::CERTIFICATE_VERIFY
22
- expect(message.signature_scheme) \
23
- .to eq SignatureScheme::RSA_PSS_RSAE_SHA256
24
- expect(message.signature).to eq signature
25
- end
26
-
27
- it 'should be serialized' do
28
- expect(message.serialize).to eq HandshakeType::CERTIFICATE_VERIFY \
29
- + 132.to_uint24 \
30
- + SignatureScheme::RSA_PSS_RSAE_SHA256 \
31
- + signature.prefix_uint16_length
32
- end
33
- end
34
-
35
- context 'valid certificate_verify binary' do
36
- let(:message) do
37
- CertificateVerify.deserialize(TESTBINARY_CERTIFICATE_VERIFY)
38
- end
39
-
40
- it 'should generate valid object' do
41
- expect(message.msg_type).to eq HandshakeType::CERTIFICATE_VERIFY
42
- expect(message.signature_scheme) \
43
- .to eq SignatureScheme::RSA_PSS_RSAE_SHA256
44
- expect(message.signature.length).to eq 128
45
- end
46
-
47
- it 'should generate serializable object' do
48
- expect(message.serialize).to eq TESTBINARY_CERTIFICATE_VERIFY
49
- end
50
- end
51
- end
@@ -1,26 +0,0 @@
1
- # encoding: ascii-8bit
2
- # frozen_string_literal: true
3
-
4
- require_relative 'spec_helper'
5
-
6
- RSpec.describe ChangeCipherSpec do
7
- context 'change_cipher_spec' do
8
- let(:message) do
9
- ChangeCipherSpec.new
10
- end
11
-
12
- it 'should be serialized' do
13
- expect(message.serialize).to eq "\x01"
14
- end
15
- end
16
-
17
- context 'valid change_cipher_spec binary' do
18
- let(:message) do
19
- ChangeCipherSpec.deserialize(TESTBINARY_CHANGE_CIPHER_SPEC)
20
- end
21
-
22
- it 'should generate valid serializable object' do
23
- expect(message.serialize).to eq "\x01"
24
- end
25
- end
26
- end