tttls1.3 0.3.5 → 0.3.7

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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/Gemfile +2 -2
  4. data/README.md +1 -1
  5. data/lib/tttls1.3/client.rb +11 -5
  6. data/lib/tttls1.3/ech.rb +31 -90
  7. data/lib/tttls1.3/message/alert.rb +1 -0
  8. data/lib/tttls1.3/sslkeylogfile.rb +22 -0
  9. data/lib/tttls1.3/version.rb +1 -1
  10. data/lib/tttls1.3.rb +1 -0
  11. data/tttls1.3.gemspec +7 -4
  12. metadata +11 -121
  13. data/.github/workflows/ci.yml +0 -39
  14. data/.gitignore +0 -17
  15. data/spec/aead_spec.rb +0 -95
  16. data/spec/alert_spec.rb +0 -54
  17. data/spec/alpn_spec.rb +0 -55
  18. data/spec/application_data_spec.rb +0 -26
  19. data/spec/certificate_spec.rb +0 -82
  20. data/spec/certificate_verify_spec.rb +0 -51
  21. data/spec/change_cipher_spec_spec.rb +0 -26
  22. data/spec/cipher_suites_spec.rb +0 -39
  23. data/spec/client_hello_spec.rb +0 -105
  24. data/spec/client_spec.rb +0 -274
  25. data/spec/compress_certificate_spec.rb +0 -54
  26. data/spec/cookie_spec.rb +0 -98
  27. data/spec/early_data_indication_spec.rb +0 -64
  28. data/spec/ech_outer_extensions_spec.rb +0 -42
  29. data/spec/ech_spec.rb +0 -122
  30. data/spec/encrypted_extensions_spec.rb +0 -94
  31. data/spec/end_of_early_data_spec.rb +0 -28
  32. data/spec/endpoint_spec.rb +0 -167
  33. data/spec/error_spec.rb +0 -18
  34. data/spec/extensions_spec.rb +0 -250
  35. data/spec/finished_spec.rb +0 -55
  36. data/spec/fixtures/rsa_ca.crt +0 -18
  37. data/spec/fixtures/rsa_ca.key +0 -27
  38. data/spec/fixtures/rsa_rsa.crt +0 -18
  39. data/spec/fixtures/rsa_rsa.key +0 -27
  40. data/spec/fixtures/rsa_rsa_ocsp.crt +0 -18
  41. data/spec/fixtures/rsa_rsa_ocsp.key +0 -27
  42. data/spec/fixtures/rsa_rsassaPss.crt +0 -20
  43. data/spec/fixtures/rsa_rsassaPss.key +0 -27
  44. data/spec/fixtures/rsa_secp256r1.crt +0 -14
  45. data/spec/fixtures/rsa_secp256r1.key +0 -5
  46. data/spec/fixtures/rsa_secp384r1.crt +0 -14
  47. data/spec/fixtures/rsa_secp384r1.key +0 -6
  48. data/spec/fixtures/rsa_secp521r1.crt +0 -15
  49. data/spec/fixtures/rsa_secp521r1.key +0 -7
  50. data/spec/key_schedule_spec.rb +0 -221
  51. data/spec/key_share_spec.rb +0 -199
  52. data/spec/new_session_ticket_spec.rb +0 -80
  53. data/spec/pre_shared_key_spec.rb +0 -167
  54. data/spec/psk_key_exchange_modes_spec.rb +0 -45
  55. data/spec/record_size_limit_spec.rb +0 -61
  56. data/spec/record_spec.rb +0 -105
  57. data/spec/server_hello_spec.rb +0 -200
  58. data/spec/server_name_spec.rb +0 -110
  59. data/spec/server_spec.rb +0 -232
  60. data/spec/signature_algorithms_cert_spec.rb +0 -77
  61. data/spec/signature_algorithms_spec.rb +0 -104
  62. data/spec/spec_helper.rb +0 -990
  63. data/spec/status_request_spec.rb +0 -140
  64. data/spec/supported_groups_spec.rb +0 -79
  65. data/spec/supported_versions_spec.rb +0 -136
  66. data/spec/transcript_spec.rb +0 -83
  67. data/spec/unknown_extension_spec.rb +0 -90
  68. data/spec/utils_spec.rb +0 -235
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f96bc3fd01ddafecaaa2871ffb65b8126f98d4ae3f7e227ec60d4d3b84fb20f4
4
- data.tar.gz: d4f76a3799d201a2ad830182e00dab1becbdb3927ecf9a9b4afef77276de4b0c
3
+ metadata.gz: d88444a4aefeed764140eec7d91c56ee1461e982de65945402e31b5494bb16c5
4
+ data.tar.gz: 41b564c55684b3196f6e610236dff2647601baed54342eb0f512785011cd260b
5
5
  SHA512:
6
- metadata.gz: 4ae20c65462966ad685029f1f419e8fe141ccdd7fba9a61a04a7f1f238fd1e62ee88ac06e8f80bd6d5ea907b1571914acd23561d53350238adcc30eacac84885
7
- data.tar.gz: 8e11fb873969e1b3a37a582d7e7b6db06bfe2c55aaa0c5f2035b3b9ca0c79fd1a35d8f4bb064ad0b3f2708f545624925f1f4c95aa9fee8ed8635b64c8f64d730
6
+ metadata.gz: 696209ef1023a0261e8420a66287444b95406f2e5042c0831f4840f4e6733dd35bae60df6f6797c64e78ab8a902774d682d98683d87130bc49754225ae8bd3ad
7
+ data.tar.gz: a9b9f5f8e8b65018e3b0a1e9e0212b2d8032ddd8199de091c662ee9fd579d9f9f3f788d5a2f7d781ff3df05ceb623598b1b90830316243bab1d47341a8652895
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.4.3
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'
6
+ gem 'hpke', '~> 1.0.0'
7
7
  gem 'logger'
8
8
  gem 'openssl'
9
9
 
@@ -12,7 +12,7 @@ group :development do
12
12
  gem 'byebug'
13
13
  gem 'http_parser.rb'
14
14
  gem 'rake'
15
- gem 'resolv', '~> 0.4.0'
15
+ gem 'resolv', '>= 0.6.2'
16
16
  gem 'rspec'
17
17
  gem 'rubocop', '1.62.0'
18
18
  gem 'webrick'
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/tttls1.3.svg)](https://badge.fury.io/rb/tttls1.3)
4
4
  [![Actions Status](https://github.com/thekuwayama/tttls1.3/workflows/CI/badge.svg)](https://github.com/thekuwayama/tttls1.3/actions?workflow=CI)
5
- [![Maintainability](https://api.codeclimate.com/v1/badges/b5ae1b3a43828142d2fa/maintainability)](https://codeclimate.com/github/thekuwayama/tttls1.3/maintainability)
5
+ [![Maintainability](https://qlty.sh/gh/thekuwayama/projects/tttls1.3/maintainability.svg)](https://qlty.sh/gh/thekuwayama/projects/tttls1.3)
6
6
 
7
7
  tttls1.3 is Ruby implementation of [TLS 1.3](https://datatracker.ietf.org/doc/rfc8446/) protocol.
8
8
 
@@ -79,10 +79,10 @@ module TTTLS13
79
79
  STANDARD_CLIENT_ECH_HPKE_SYMMETRIC_CIPHER_SUITES = [
80
80
  HpkeSymmetricCipherSuite.new(
81
81
  HpkeSymmetricCipherSuite::HpkeKdfId.new(
82
- Ech::KdfId::HKDF_SHA256
82
+ HPKE::HKDF_SHA256
83
83
  ),
84
84
  HpkeSymmetricCipherSuite::HpkeAeadId.new(
85
- Ech::AeadId::AES_128_GCM
85
+ HPKE::AES_128_GCM
86
86
  )
87
87
  )
88
88
  ].freeze
@@ -192,7 +192,12 @@ module TTTLS13
192
192
 
193
193
  extensions, shared_secret = gen_ch_extensions
194
194
  binder_key = (use_psk? ? key_schedule.binder_key_res : nil)
195
- ch, inner, ech_state = send_client_hello(extensions, binder_key)
195
+ ch, inner, ech_state, ech_secret = send_client_hello(extensions, binder_key)
196
+ unless ech_secret.nil?
197
+ sslkeylogfile&.write_ech_secret(ch.random, ech_secret)
198
+ sslkeylogfile&.write_ech_config(ch.random, @settings[:ech_config].encode)
199
+ end
200
+
196
201
  ch_outer = ch
197
202
  # use ClientHelloInner messages for the transcript hash
198
203
  ch = inner.nil? ? ch : inner
@@ -828,6 +833,7 @@ module TTTLS13
828
833
  # @return [TTTLS13::Message::ClientHello] outer
829
834
  # @return [TTTLS13::Message::ClientHello] inner
830
835
  # @return [TTTLS13::EchState]
836
+ # @return [String]
831
837
  # rubocop: disable Metrics/MethodLength
832
838
  def send_client_hello(extensions, binder_key = nil)
833
839
  ch = Message::ClientHello.new(
@@ -842,7 +848,7 @@ module TTTLS13
842
848
  inner_ech = Message::Extension::ECHClientHello.new_inner
843
849
  inner.extensions[Message::ExtensionType::ENCRYPTED_CLIENT_HELLO] \
844
850
  = inner_ech
845
- ch, inner, ech_state = Ech.offer_ech(
851
+ ch, inner, ech_state, ech_secret = Ech.offer_ech(
846
852
  inner,
847
853
  @settings[:ech_config],
848
854
  method(:select_ech_hpke_cipher_suite)
@@ -880,7 +886,7 @@ module TTTLS13
880
886
  @connection.send_handshakes(Message::ContentType::HANDSHAKE, [ch],
881
887
  Cryptograph::Passer.new)
882
888
 
883
- [ch, inner, ech_state]
889
+ [ch, inner, ech_state, ech_secret]
884
890
  end
885
891
  # rubocop: enable Metrics/MethodLength
886
892
 
data/lib/tttls1.3/ech.rb CHANGED
@@ -21,18 +21,19 @@ module TTTLS13
21
21
  # @return [TTTLS13::Message::ClientHello]
22
22
  # @return [TTTLS13::Message::ClientHello] ClientHelloInner
23
23
  # @return [TTTLS13::EchState]
24
+ # @return [String]
24
25
  # rubocop: disable Metrics/AbcSize
25
26
  def self.offer_ech(inner, ech_config, hpke_cipher_suite_selector)
26
- return [new_greased_ch(inner, new_grease_ech), nil, nil] \
27
+ return [new_greased_ch(inner, new_grease_ech), nil, nil, nil] \
27
28
  if ech_config.nil? ||
28
29
  !SUPPORTED_ECHCONFIG_VERSIONS.include?(ech_config.version)
29
30
 
30
31
  # Encrypted ClientHello Configuration
31
- ech_state, enc = encrypted_ech_config(
32
+ ech_state, enc, ech_secret = encrypted_ech_config(
32
33
  ech_config,
33
34
  hpke_cipher_suite_selector
34
35
  )
35
- return [new_greased_ch(inner, new_grease_ech), nil, nil] \
36
+ return [new_greased_ch(inner, new_grease_ech), nil, nil, nil] \
36
37
  if ech_state.nil? || enc.nil?
37
38
 
38
39
  # for ech_outer_extensions
@@ -62,7 +63,7 @@ module TTTLS13
62
63
  ech_state.ctx.seal(aad.serialize[4..], encoded)
63
64
  )
64
65
 
65
- [outer, inner, ech_state]
66
+ [outer, inner, ech_state, ech_secret]
66
67
  end
67
68
  # rubocop: enable Metrics/AbcSize
68
69
 
@@ -71,6 +72,7 @@ module TTTLS13
71
72
  #
72
73
  # @return [TTTLS13::EchState or nil]
73
74
  # @return [String or nil]
75
+ # @return [String or nil]
74
76
  # rubocop: disable Metrics/AbcSize
75
77
  def self.encrypted_ech_config(ech_config, hpke_cipher_suite_selector)
76
78
  public_name = ech_config.echconfig_contents.public_name
@@ -79,20 +81,19 @@ module TTTLS13
79
81
  kem_id = key_config&.kem_id&.uint16
80
82
  config_id = key_config.config_id
81
83
  cipher_suite = hpke_cipher_suite_selector.call(key_config)
82
- aead_cipher = aead_id2aead_cipher(cipher_suite&.aead_id&.uint16)
83
- kdf_hash = kdf_id2kdf_hash(cipher_suite&.kdf_id&.uint16)
84
- return [nil, nil] \
85
- if [kem_id, aead_cipher, kdf_hash].any?(&:nil?)
84
+ aead_cipher = cipher_suite&.aead_id&.uint16
85
+ return [nil, nil, nil] \
86
+ if [kem_id, aead_cipher].any?(&:nil?)
86
87
 
87
- kem_curve_name, kem_hash = kem_id2dhkem(kem_id)
88
- dhkem = kem_curve_name2dhkem(kem_curve_name)
89
- pkr = dhkem&.new(kem_hash)&.deserialize_public_key(public_key)
90
- return [nil, nil] if pkr.nil?
88
+ kem_curve, hash = kem_id2dhkem(kem_id)
89
+ pkr = kem_curve&.new(hash)&.deserialize_public_key(public_key)
90
+ return [nil, nil, nil] if pkr.nil?
91
91
 
92
- hpke = HPKE.new(kem_curve_name, kem_hash, kdf_hash, aead_cipher)
92
+ hpke = HPKE.new(kem_id, hash, aead_cipher)
93
93
  base_s = hpke.setup_base_s(pkr, "tls ech\x00" + ech_config.encode)
94
94
  enc = base_s[:enc]
95
95
  ctx = base_s[:context_s]
96
+ ech_secret = base_s[:shared_secret]
96
97
  mnl = ech_config.echconfig_contents.maximum_name_length
97
98
  ech_state = EchState.new(
98
99
  mnl,
@@ -102,7 +103,7 @@ module TTTLS13
102
103
  ctx
103
104
  )
104
105
 
105
- [ech_state, enc]
106
+ [ech_state, enc, ech_secret]
106
107
  end
107
108
  # rubocop: enable Metrics/AbcSize
108
109
 
@@ -259,10 +260,10 @@ module TTTLS13
259
260
  # https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-17#name-compliance-requirements
260
261
  cipher_suite = HpkeSymmetricCipherSuite.new(
261
262
  HpkeSymmetricCipherSuite::HpkeKdfId.new(
262
- KdfId::HKDF_SHA256
263
+ HPKE::HKDF_SHA256
263
264
  ),
264
265
  HpkeSymmetricCipherSuite::HpkeAeadId.new(
265
- AeadId::AES_128_GCM
266
+ HPKE::AES_128_GCM
266
267
  )
267
268
  )
268
269
  # Set the enc field to a randomly-generated valid encapsulated public key
@@ -272,7 +273,7 @@ module TTTLS13
272
273
  public_key = OpenSSL::PKey.read(
273
274
  OpenSSL::PKey.generate_key('X25519').public_to_pem
274
275
  )
275
- hpke = HPKE.new(:x25519, :sha256, :sha256, :aes_128_gcm)
276
+ hpke = HPKE.new(HPKE::DHKEM_X25519_HKDF_SHA256, HPKE::HKDF_SHA256, HPKE::AES_128_GCM)
276
277
  enc = hpke.setup_base_s(public_key, '')[:enc]
277
278
  # Set the payload field to a randomly-generated string of L+C bytes, where
278
279
  # C is the ciphertext expansion of the selected AEAD scheme and L is the
@@ -281,7 +282,7 @@ module TTTLS13
281
282
  #
282
283
  # https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-17#section-6.2-2.4.1
283
284
  payload_len = placeholder_encoded_ch_inner_len \
284
- + aead_id2overhead_len(AeadId::AES_128_GCM)
285
+ + aead_id2overhead_len(HPKE::AES_128_GCM)
285
286
 
286
287
  Message::Extension::ECHClientHello.new_outer(
287
288
  cipher_suite:,
@@ -313,89 +314,29 @@ module TTTLS13
313
314
  )
314
315
  end
315
316
 
316
- module KemId
317
- # https://www.iana.org/assignments/hpke/hpke.xhtml#hpke-kem-ids
318
- P_256_SHA256 = 0x0010
319
- P_384_SHA384 = 0x0011
320
- P_521_SHA512 = 0x0012
321
- X25519_SHA256 = 0x0020
322
- X448_SHA512 = 0x0021
323
- end
324
-
325
317
  def self.kem_id2dhkem(kem_id)
326
318
  case kem_id
327
- when KemId::P_256_SHA256
328
- %i[p_256 sha256]
329
- when KemId::P_384_SHA384
330
- %i[p_384 sha384]
331
- when KemId::P_521_SHA512
332
- %i[p_521 sha512]
333
- when KemId::X25519_SHA256
334
- %i[x25519 sha256]
335
- when KemId::X448_SHA512
336
- %i[x448 sha512]
337
- end
338
- end
339
-
340
- def self.kem_curve_name2dhkem(kem_curve_name)
341
- case kem_curve_name
342
- when :p_256
343
- HPKE::DHKEM::EC::P_256
344
- when :p_384
345
- HPKE::DHKEM::EC::P_384
346
- when :p_521
347
- HPKE::DHKEM::EC::P_521
348
- when :x25519
349
- HPKE::DHKEM::X25519
350
- when :x448
351
- HPKE::DHKEM::X448
352
- end
353
- end
354
-
355
- module KdfId
356
- # https://www.iana.org/assignments/hpke/hpke.xhtml#hpke-kdf-ids
357
- HKDF_SHA256 = 0x0001
358
- HKDF_SHA384 = 0x0002
359
- HKDF_SHA512 = 0x0003
360
- end
361
-
362
- def self.kdf_id2kdf_hash(kdf_id)
363
- case kdf_id
364
- when KdfId::HKDF_SHA256
365
- :sha256
366
- when KdfId::HKDF_SHA384
367
- :sha384
368
- when KdfId::HKDF_SHA512
369
- :sha512
319
+ when HPKE::DHKEM_P256_HKDF_SHA256
320
+ [HPKE::DHKEM::EC::P_256, HPKE::HKDF_SHA256]
321
+ when HPKE::DHKEM_P384_HKDF_SHA384
322
+ [HPKE::DHKEM::EC::P_384, HPKE::HKDF_SHA384]
323
+ when HPKE::DHKEM_P521_HKDF_SHA512
324
+ [HPKE::DHKEM::EC::P_521, HPKE::HKDF_SHA512]
325
+ when HPKE::DHKEM_X25519_HKDF_SHA256
326
+ [HPKE::DHKEM::X25519, HPKE::HKDF_SHA256]
327
+ when HPKE::DHKEM_X448_HKDF_SHA512
328
+ [HPKE::DHKEM::X448, HPKE::HKDF_SHA512]
370
329
  end
371
330
  end
372
331
 
373
- module AeadId
374
- # https://www.iana.org/assignments/hpke/hpke.xhtml#hpke-aead-ids
375
- AES_128_GCM = 0x0001
376
- AES_256_GCM = 0x0002
377
- CHACHA20_POLY1305 = 0x0003
378
- end
379
-
380
332
  def self.aead_id2overhead_len(aead_id)
381
333
  case aead_id
382
- when AeadId::AES_128_GCM, AeadId::CHACHA20_POLY1305
334
+ when HPKE::AES_128_GCM, HPKE::CHACHA20_POLY1305
383
335
  16
384
- when AeadId::AES_256_GCM
336
+ when HPKE::AES_256_GCM
385
337
  32
386
338
  end
387
339
  end
388
-
389
- def self.aead_id2aead_cipher(aead_id)
390
- case aead_id
391
- when AeadId::AES_128_GCM
392
- :aes_128_gcm
393
- when AeadId::AES_256_GCM
394
- :aes_256_gcm
395
- when AeadId::CHACHA20_POLY1305
396
- :chacha20_poly1305
397
- end
398
- end
399
340
  end
400
341
 
401
342
  class EchState
@@ -36,6 +36,7 @@ module TTTLS13
36
36
  bad_certificate_status_response: "\x71",
37
37
  unknown_psk_identity: "\x73",
38
38
  certificate_required: "\x74",
39
+ general_error: "\x75",
39
40
  no_application_protocol: "\x78",
40
41
  ech_required: "\x79"
41
42
  }.freeze
@@ -9,6 +9,8 @@ module TTTLS13
9
9
  SERVER_HANDSHAKE_TRAFFIC_SECRET = 'SERVER_HANDSHAKE_TRAFFIC_SECRET'
10
10
  CLIENT_TRAFFIC_SECRET_0 = 'CLIENT_TRAFFIC_SECRET_0'
11
11
  SERVER_TRAFFIC_SECRET_0 = 'SERVER_TRAFFIC_SECRET_0'
12
+ ECH_SECRET = 'ECH_SECRET'
13
+ ECH_CONFIG = 'ECH_CONFIG'
12
14
  end
13
15
 
14
16
  class Writer
@@ -69,6 +71,26 @@ module TTTLS13
69
71
  )
70
72
  end
71
73
 
74
+ # @param client_random [String]
75
+ # @param ech_secret [String]
76
+ def write_ech_secret(client_random, ech_secret)
77
+ write_key_log(
78
+ Label::ECH_SECRET,
79
+ client_random,
80
+ ech_secret
81
+ )
82
+ end
83
+
84
+ # @param client_random [String]
85
+ # @param ech_config [String]
86
+ def write_ech_config(client_random, ech_config)
87
+ write_key_log(
88
+ Label::ECH_CONFIG,
89
+ client_random,
90
+ ech_config
91
+ )
92
+ end
93
+
72
94
  def close
73
95
  @file&.close
74
96
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TTTLS13
4
- VERSION = '0.3.5'
4
+ VERSION = '0.3.7'
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
- spec.add_development_dependency 'bundler', '~> 2.0'
25
+ spec.add_development_dependency 'bundler'
23
26
  spec.add_dependency 'ech_config', '~> 0.0.3'
24
- spec.add_dependency 'hpke'
27
+ spec.add_dependency 'hpke', '~> 1.0.0'
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.5
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - thekuwayama
@@ -13,16 +13,16 @@ dependencies:
13
13
  name: bundler
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '2.0'
18
+ version: '0'
19
19
  type: :development
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '2.0'
25
+ version: '0'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: ech_config
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -41,16 +41,16 @@ dependencies:
41
41
  name: hpke
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">="
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0'
46
+ version: 1.0.0
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ">="
51
+ - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
53
+ version: 1.0.0
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: logger
56
56
  requirement: !ruby/object:Gem::Requirement
@@ -86,8 +86,6 @@ executables: []
86
86
  extensions: []
87
87
  extra_rdoc_files: []
88
88
  files:
89
- - ".github/workflows/ci.yml"
90
- - ".gitignore"
91
89
  - ".rspec"
92
90
  - ".rubocop.yml"
93
91
  - ".ruby-version"
@@ -164,60 +162,6 @@ files:
164
162
  - lib/tttls1.3/transcript.rb
165
163
  - lib/tttls1.3/utils.rb
166
164
  - 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
165
  - tttls1.3.gemspec
222
166
  homepage: https://github.com/thekuwayama/tttls1.3
223
167
  licenses:
@@ -237,61 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
181
  - !ruby/object:Gem::Version
238
182
  version: '0'
239
183
  requirements: []
240
- rubygems_version: 3.6.7
184
+ rubygems_version: 3.6.9
241
185
  specification_version: 4
242
186
  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
187
+ 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.1', '3.2', '3.3']
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@eaecf785f6a34567a6d97f686bbb7bccc1ac1e5c # v1.237.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