tttls1.3 0.3.6 → 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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/lib/tttls1.3/version.rb +1 -1
  4. data/lib/tttls1.3.rb +1 -0
  5. data/tttls1.3.gemspec +5 -2
  6. metadata +3 -113
  7. data/.github/workflows/ci.yml +0 -39
  8. data/.gitignore +0 -17
  9. data/spec/aead_spec.rb +0 -95
  10. data/spec/alert_spec.rb +0 -54
  11. data/spec/alpn_spec.rb +0 -55
  12. data/spec/application_data_spec.rb +0 -26
  13. data/spec/certificate_spec.rb +0 -82
  14. data/spec/certificate_verify_spec.rb +0 -51
  15. data/spec/change_cipher_spec_spec.rb +0 -26
  16. data/spec/cipher_suites_spec.rb +0 -39
  17. data/spec/client_hello_spec.rb +0 -105
  18. data/spec/client_spec.rb +0 -274
  19. data/spec/compress_certificate_spec.rb +0 -54
  20. data/spec/cookie_spec.rb +0 -98
  21. data/spec/early_data_indication_spec.rb +0 -64
  22. data/spec/ech_outer_extensions_spec.rb +0 -42
  23. data/spec/ech_spec.rb +0 -122
  24. data/spec/encrypted_extensions_spec.rb +0 -94
  25. data/spec/end_of_early_data_spec.rb +0 -28
  26. data/spec/endpoint_spec.rb +0 -167
  27. data/spec/error_spec.rb +0 -18
  28. data/spec/extensions_spec.rb +0 -250
  29. data/spec/finished_spec.rb +0 -55
  30. data/spec/fixtures/rsa_ca.crt +0 -18
  31. data/spec/fixtures/rsa_ca.key +0 -27
  32. data/spec/fixtures/rsa_rsa.crt +0 -18
  33. data/spec/fixtures/rsa_rsa.key +0 -27
  34. data/spec/fixtures/rsa_rsa_ocsp.crt +0 -18
  35. data/spec/fixtures/rsa_rsa_ocsp.key +0 -27
  36. data/spec/fixtures/rsa_rsassaPss.crt +0 -20
  37. data/spec/fixtures/rsa_rsassaPss.key +0 -27
  38. data/spec/fixtures/rsa_secp256r1.crt +0 -14
  39. data/spec/fixtures/rsa_secp256r1.key +0 -5
  40. data/spec/fixtures/rsa_secp384r1.crt +0 -14
  41. data/spec/fixtures/rsa_secp384r1.key +0 -6
  42. data/spec/fixtures/rsa_secp521r1.crt +0 -15
  43. data/spec/fixtures/rsa_secp521r1.key +0 -7
  44. data/spec/key_schedule_spec.rb +0 -221
  45. data/spec/key_share_spec.rb +0 -199
  46. data/spec/new_session_ticket_spec.rb +0 -80
  47. data/spec/pre_shared_key_spec.rb +0 -167
  48. data/spec/psk_key_exchange_modes_spec.rb +0 -45
  49. data/spec/record_size_limit_spec.rb +0 -61
  50. data/spec/record_spec.rb +0 -105
  51. data/spec/server_hello_spec.rb +0 -200
  52. data/spec/server_name_spec.rb +0 -110
  53. data/spec/server_spec.rb +0 -232
  54. data/spec/signature_algorithms_cert_spec.rb +0 -77
  55. data/spec/signature_algorithms_spec.rb +0 -104
  56. data/spec/spec_helper.rb +0 -990
  57. data/spec/status_request_spec.rb +0 -140
  58. data/spec/supported_groups_spec.rb +0 -79
  59. data/spec/supported_versions_spec.rb +0 -136
  60. data/spec/transcript_spec.rb +0 -83
  61. data/spec/unknown_extension_spec.rb +0 -90
  62. data/spec/utils_spec.rb +0 -235
@@ -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 Finished do
8
- context 'valid finished' do
9
- let(:verify_data) do
10
- OpenSSL::Random.random_bytes(128)
11
- end
12
-
13
- let(:message) do
14
- Finished.new(verify_data)
15
- end
16
-
17
- it 'should be generated' do
18
- expect(message.msg_type).to eq HandshakeType::FINISHED
19
- expect(message.verify_data).to eq verify_data
20
- end
21
-
22
- it 'should be serialized' do
23
- expect(message.serialize).to eq HandshakeType::FINISHED \
24
- + verify_data.prefix_uint24_length
25
- end
26
- end
27
-
28
- context 'valid finished binary' do
29
- let(:message) do
30
- Finished.deserialize(TESTBINARY_SERVER_FINISHED)
31
- end
32
-
33
- it 'should generate valid object' do
34
- expect(message.msg_type).to eq HandshakeType::FINISHED
35
- end
36
-
37
- it 'should generate serializable object' do
38
- expect(message.serialize).to eq TESTBINARY_SERVER_FINISHED
39
- end
40
- end
41
-
42
- context 'valid finished binary' do
43
- let(:message) do
44
- Finished.deserialize(TESTBINARY_CLIENT_FINISHED)
45
- end
46
-
47
- it 'should generate valid object' do
48
- expect(message.msg_type).to eq HandshakeType::FINISHED
49
- end
50
-
51
- it 'should generate serializable object' do
52
- expect(message.serialize).to eq TESTBINARY_CLIENT_FINISHED
53
- end
54
- end
55
- end
@@ -1,18 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIC6TCCAdGgAwIBAgIJAPCDjtGMCXxLMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV
3
- BAMMB3Rlc3QtY2EwHhcNMTkwNTI1MDEyOTA1WhcNMjkwNTIyMDEyOTA1WjASMRAw
4
- DgYDVQQDDAd0ZXN0LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
5
- uL67dHTIZa/Lv+q/k2cTdXUyARn8EjKYWyWCSlJ9ixm9og5OudrqtjncVEf7m8N4
6
- cZ4BRztZjHnhFSmaezw79siK1e8/ZtNcKy6cQ6CirmZ7JgHhUTJTWVWqW2k3xp10
7
- Ur+fAUqOqV+v1iYlznbZSFyV9jkOKQd/kJwUSCpcd1KNDgTjeRI7h47ppAss5QdF
8
- 8GSRnqa+z4yar4cc6zEEHFyvO/MES0rGN+wQ/aZ2Q5RC5tOACLsEndyWjiwnUSYX
9
- IpivEAb/MUoSsNN3okhBL9VUzIyhy3oLUcvEzUXrdHgXjkimISE74kOSIEqD/Mgh
10
- YbBOa/7ZZZeXjGu4tfoWpQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T
11
- AQH/BAUwAwEB/zAdBgNVHQ4EFgQUrMJjif5NxggfH013nhJ6vzK21hIwDQYJKoZI
12
- hvcNAQELBQADggEBAHNSeg80fBBbFmNQaRDCmAratdBVgXPfTwH2LF7OUZh2JJGA
13
- n/H0m3mLFgfunQhYgWh5/6T71xWx/A0pAI73WDA/v2UnMUkNcJ6DttUEcRmhZJ7+
14
- nmu2Ym4LN3dTvMtNe0/6Yph+6PR8cP56HvSu1vIxQTjN3Dadjop92k98hxbX5iVp
15
- I74YZcLyOYqWWp1id3lF0ro7uyW6dcxUJTf53LXHlGNrIiUj07ThX/wCKBS0yw/H
16
- +TCUdykUoiBCwgrl+RAn9EE1Hjt4D3q/vlZwzzddFds3kvP97CdjyP2M/60Ff9po
17
- Bdrqsa1vegwvAk+hRgocvrH3TPJslfycAada1zw=
18
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEowIBAAKCAQEAuL67dHTIZa/Lv+q/k2cTdXUyARn8EjKYWyWCSlJ9ixm9og5O
3
- udrqtjncVEf7m8N4cZ4BRztZjHnhFSmaezw79siK1e8/ZtNcKy6cQ6CirmZ7JgHh
4
- UTJTWVWqW2k3xp10Ur+fAUqOqV+v1iYlznbZSFyV9jkOKQd/kJwUSCpcd1KNDgTj
5
- eRI7h47ppAss5QdF8GSRnqa+z4yar4cc6zEEHFyvO/MES0rGN+wQ/aZ2Q5RC5tOA
6
- CLsEndyWjiwnUSYXIpivEAb/MUoSsNN3okhBL9VUzIyhy3oLUcvEzUXrdHgXjkim
7
- ISE74kOSIEqD/MghYbBOa/7ZZZeXjGu4tfoWpQIDAQABAoIBAFlvC/QubKy9U5dO
8
- nvtOlN7xowlheOOeVp8ZI1+zW08xYNnIr1fNoH4iuIScbDNVh0MJSHkhRBJ7FflW
9
- sJAj8qtfHca/ESRIAYBuCfu7EcX3mnolwtu5zxuaGuQxpWyi4KMGXIUVgMaBqe+z
10
- e+3dHwamu3n82NwH4zswM6lTyHuCScvLr0d/Bbjq6v1pNfRhU58L3RNKDrhETrSA
11
- aQNEb7Z185q/B/dbDB810pcLaZ5ALbrM89sr7wD4ULPiAgDI7fX/0tK1/Dg4nQzJ
12
- 6j3qrPoR6KdMmiTdtd2/jc3sRbNCBvzsakcGH/8V/47+8ysYGey4T7zBruvJlqY6
13
- tNkGEGkCgYEA61TM5paQhtzP62cK3b68KhBXFqxov0uV4kVuQFK5jBVVslpExnWl
14
- Zi+/YXJOOMt8oXkkWeyR2GmBl5BYYiUYfwZHkVWyImDfkYA5dyIpgoB6kGPANaqi
15
- 5J+NCdj3PKgdYSZ7HPnm/pTen9m3Q/Dv5hjMj50Dd+CkJP7qKBavUDcCgYEAyPiM
16
- k1TgIvSvoVxCXi1yyuxOQgiiAaCBACiEyBpJYu13lVl4H9ziRMnhsXUv22ZsMd+Z
17
- HW05gMsn+EKifDBWnQqZT8ziRiFXoPylHOOOYbDVBjYMyTOT+ma9OZhJbL+bfTyC
18
- SjPkiZgIkPRUtqEYsgXZhrQd1qux03rrjUSGCgMCgYBWM3vSwzgxjlTC/72lOCao
19
- qc+cyI6d88v1VEVsXmEFBROc/x/OKm3pnnfV9A7fEvqWE0/TeKp7wTntELyvRrNQ
20
- ZDZ28BMOMLn0DCoAj4zw9qrulPtlLRn58M+y2bzGhTYtzfCuzoNkoZdiqldNFcZq
21
- XI8h0/vfP3Qg8RdIk/anxQKBgG64UGpTFnDrsV8Kvx23mEiny62hp++Rh8CYkh7U
22
- LJ4uCfXkJsQXIymWt5rW3xjW4sDPWUHXDRkh09F4lKAq2W0Hi9NlIzxT3j05M5Yo
23
- 4CZ+D76uRHkMy3fm5lU2yyz4mydyEK3kzQHpGr8RfSJounxJsL//t3ivevbx/5gC
24
- qn4VAoGBAIX4k2ugHMPs2R7XVeieURm+otH9QJX81CgVyiLTN67je/0h3bVzmqcI
25
- SinujOpR6x+Xvc1fMfLEhDkKfO9L+iBAdIb7kd8lQXAdIrgUGhORmvAl99aRFLCC
26
- 1FxaU9P9lk/WMXhuIkq1DmUAHzZGAz+/JzPiXezdo6POcPLoRri4
27
- -----END RSA PRIVATE KEY-----
@@ -1,18 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIC2TCCAcGgAwIBAgIJALo0YKZBVqYnMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV
3
- BAMMB3Rlc3QtY2EwHhcNMjAwNzE1MTU0NTE4WhcNMzAwNzEzMTU0NTE4WjAUMRIw
4
- EAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
5
- AQC65xzvPQrsXXRVsQ4rcrmvOF0gdWV38JKlhHUrS50//T0S55FUSBkuVXUDCZDx
6
- dOf0y/5HaMb3hm68+ld5B/oNtoPlJWW6Sgc8OLERQy9qGpwR0mXND4SnZ9or7RDV
7
- 8tAEg/Hzq5rm6Xy2WClSR+nHg2tVh2Szde39j7o8ivJpHPzfEyZh37y9oIiY2/FP
8
- QpbAe8n3Ses04D3jhZRoysdcuneWuG3h5DJ9X4IhZUBM54nEO5IQElyYnF6xY/Lt
9
- Gykf8+ydiuAZpZF5FGGfoiKB7XdIwhSlK1XRFeBbHRqyAFjpSNtqy6RPdJINLseb
10
- wG6DNSxcLm91C6ZJaaqu7Qp1AgMBAAGjMDAuMAkGA1UdEwQCMAAwCwYDVR0PBAQD
11
- AgWgMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAQEALqaQ
12
- J5H9jB2VmIEDxhXAQTeqW1Hmp0oHhL1XcAvNS+JILjFfAdjMe/3Kei3hQJv8j8sE
13
- uck3o7iA4kcE0ydUzO7TM7efjqcksyZrmWSB0xj+NHjcybwhD4Selr1vBSCU0IHN
14
- Ap+zYbBX7eQawm2lIzniBvS6MmP+dgZjhy73FVQ4oSz+wTcg1iPkhulYL4iV/HSG
15
- fND5gUvlRbLHGTETpCdq7iJNOpNl/OYboJLPvVpx8H7Jc+L2bQl05fj/koO35xaL
16
- JuZGj5aVOKw45WvqERpe1RI3077dWE6bAr9DzrW13IqmFMbPD817pcB6+ILZnMAF
17
- RhobWRU6PA4TdDP8bg==
18
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEowIBAAKCAQEAuucc7z0K7F10VbEOK3K5rzhdIHVld/CSpYR1K0udP/09EueR
3
- VEgZLlV1AwmQ8XTn9Mv+R2jG94ZuvPpXeQf6DbaD5SVlukoHPDixEUMvahqcEdJl
4
- zQ+Ep2faK+0Q1fLQBIPx86ua5ul8tlgpUkfpx4NrVYdks3Xt/Y+6PIryaRz83xMm
5
- Yd+8vaCImNvxT0KWwHvJ90nrNOA944WUaMrHXLp3lrht4eQyfV+CIWVATOeJxDuS
6
- EBJcmJxesWPy7RspH/PsnYrgGaWReRRhn6Iige13SMIUpStV0RXgWx0asgBY6Ujb
7
- asukT3SSDS7Hm8BugzUsXC5vdQumSWmqru0KdQIDAQABAoIBABPIjNaB9psIVV0Q
8
- rbhJn3/9jlX2NzRX4Z3lhGV9znpMet96ZXavXwL5hrY4mAAG6NqPkS3L2Guw7h3Q
9
- vduQzZYQAKwLplXuqg9kzNFP9D/d6zEzvRTUlK0HoB9QK50J45zmvoCVZIMWqd2/
10
- PTh5ZjR5I65c83rPe86AHS11Y61edr+vvGtI07kvj7EzR3jie0Lzzpj7TbmjTt5U
11
- v9rskcxjulQOmp8t/3ouptUhi16PRXPof0yzRGo6rrCUoQ7Cuy1dbFZ96dIBxrt4
12
- h9suE6MtpXdsGfI5FZPOKHqUcw8hZfUgeOYm4OTV3vBYie0xJ77i9YgqR+UwymjA
13
- NK4AOY0CgYEA553JtUvl8py76HjL3DxfbU38Dq22AF9sdUAs9Xwy9B8Y6R9SyrPI
14
- nab+3EE0gz5NnFLFCILK4A7ewe3OB3bE7/P4mc7JlUWM2LAcBz7K50seIKD3r+cj
15
- VzLHarOBi/VZ0pe1lDj/cuQ6cXTLHbKtk2XGCRnCBMJlog4ruFMYJ+sCgYEAzpRD
16
- 3YtuQcT0rtvK05BcdWD3nGgsrAauLvKz80LIu4zX9nfz/H6lNRpZYJ2jrLR1ikbX
17
- XVWIsNlWizAuWEbGokUEYDTuhkh3591nrdPyB6/0Lm2Snl+q7mKIUFrZ08MXe7U8
18
- Z/qPq2VLVSzCyoGX0l4GuNymgDH6NVR/i5yQXx8CgYBNJ1OUz+aWbb1ukCagg3/q
19
- QksPfLAe6aqQWENhtvCmP2Gl7mg+26qdUY6eQh5DBdMGms/FqQP5pRpxEU1LUTYD
20
- FIsgeTDPR67GU8vSYglnCK/NgLFhaCZumpyxH4Cs5Zr5Os4ixOXbGMmbF6O9jdKi
21
- Qgm46FqoCTWfyQapTQzD5wKBgGQV4WuNCjZDPmkZhANMhf84o77bmgkek3WbkSPi
22
- z25OprN7GnLSySgZRARTW+Fo7Sm5eM53impkYlG9XjbW05X66kvSWV4l7jIgSwMl
23
- FLY0wZFc9RRWNXKZuoF0AuVeOBpvjHy0ILdhtEXoEdgbQXtios8d2G1zyU3dSo5R
24
- pIDxAoGBAIlXeI9tB0X9ywXKylI3CyHi8ex/k6o4WTj/5fH4bYp4faHBRm78Ho81
25
- Ih9rewMw7fMC3YUN3rcyvHRQqbJ2Wcxpyf0k45GMxTRasoVXCXgV/sMNCHh/ddZM
26
- Gf5ZTeq10gJPofBlPObg5VrlCLRnIFaNI4izpq2A+/FqTrEvSGlf
27
- -----END RSA PRIVATE KEY-----
@@ -1,18 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIC4TCCAcmgAwIBAgIJALkL6IyOlMwWMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV
3
- BAMMB3Rlc3QtY2EwHhcNMTkxMTI2MDczMzExWhcNMjkxMTIzMDczMzExWjAUMRIw
4
- EAYDVQQDDAl0ZXN0LW9jc3AwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
5
- AQDapLrB5S2yXQ9Wt/O9SZzoMW8IChsPgtZYC8h4Z/bcbqRb/6Bq5YfcYxq84cD/
6
- 8xn7e8R2OCNgva8GBlMy7d0czt3ysLnNlZ+dPu7MU4yS/R40LOhMGEf71mf6PLqj
7
- 1ecaEclgbIhyIGHlUXQIAnhhpAwzHxKVAhcgBgQFs8NgNViAE3BpjyUW0qXE5RUY
8
- BQ7V9/Kn/fnsfOk6jMF20V2Kxn5Sj/c+D59+vFX3FmQyqsTKoAKoUuNsFOvHGV0d
9
- gxLggE5wq4AodrA40MY95HgCZ2rDfEKgfc9rKhLGz6s0etGFMVtjqK6YvpQYUOaS
10
- 8JStLrGF1eINoJJFibIf69v9AgMBAAGjODA2MAkGA1UdEwQCMAAwEwYDVR0lBAww
11
- CgYIKwYBBQUHAwkwFAYDVR0RBA0wC4IJdGVzdC1vY3NwMA0GCSqGSIb3DQEBCwUA
12
- A4IBAQBHC6jRQyZhBJIdfP9CGpNO1dNHicwpFJ61ofwgzW1jEkVfBtVpqvEaEbYE
13
- LVxru1s8VY281trhwRuZkDRv5hB/CUUbdPICwQlkyCdUoYURrJEm/mirK9494AGh
14
- f33S+bMXZGAYLYoPYlSGj8EpL1Do3nvJK8//coRJlTEBcfgIIUlRMaeOiGrg3zpM
15
- 1KGxO3GtG1mpod7BEMv3ZGI85p8wXF4N2Z+phBoAyRGW+R4VW3tF5bbqiKlRr3Lt
16
- HNsuXHSQykKpxD085eeQLTZGVESrCcmNv8XvVxwGE1r0kmlwexADNvP3HDXseie+
17
- 8QFIt+zvJb/lDy4xbCT/M4a7L9Gn
18
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEpAIBAAKCAQEA2qS6weUtsl0PVrfzvUmc6DFvCAobD4LWWAvIeGf23G6kW/+g
3
- auWH3GMavOHA//MZ+3vEdjgjYL2vBgZTMu3dHM7d8rC5zZWfnT7uzFOMkv0eNCzo
4
- TBhH+9Zn+jy6o9XnGhHJYGyIciBh5VF0CAJ4YaQMMx8SlQIXIAYEBbPDYDVYgBNw
5
- aY8lFtKlxOUVGAUO1ffyp/357HzpOozBdtFdisZ+Uo/3Pg+ffrxV9xZkMqrEyqAC
6
- qFLjbBTrxxldHYMS4IBOcKuAKHawONDGPeR4Amdqw3xCoH3PayoSxs+rNHrRhTFb
7
- Y6iumL6UGFDmkvCUrS6xhdXiDaCSRYmyH+vb/QIDAQABAoIBAQC/s1D/siYHzeol
8
- +XFelI1bVARqwxmI1wmB9wrU7yqViPjYpN+M+iTNyaLm2vUyNH6ibZkKohv6tTUh
9
- DiiibcXBfWtCX0r5gueIomYThmmpcv6pdnpSRbPPjeRqlhZ6kZBn3hJ3VZGoptXO
10
- j0UxxKCx03jS1bqgJU4LSNr7+OojjeKh8D9bxwCizhGx9239QwChtQTPr4U3aeTb
11
- Qwx8WtNH/2zvpdylyXW/eg8MO4WPYXpxWSGQnRJG5knPa7hF+iRnszysbUPNBVUd
12
- TUQJHBdtukt+7hDbPyMpMu0DwpqhOqsEk2avacWuCYEEE/SWmJ/mvLokbfECSUpy
13
- ZqfXJPLNAoGBAPtd+m2YVmLJmjO2skv+zGG5KhHNF2cY6xLQWuHW/yChNjSzpLYm
14
- YygyOd4hBH39ieQkBRs0QOX9S5Dzv6ERU1cr0CVDJeb9TQ9UTxXc01paJ+aoZNr5
15
- uHoGO16xBR4tmidc4HmbHDFSwmRAFhkooHM9MVACUFABIdWqwEwSZa/HAoGBAN6s
16
- WhPrsDyRAfKFV9bwD1P5aMPu6pjWOFO3bRIisPRtVzilamCkKvXCh1SyYHaNRjjG
17
- fQYEZeCZTxHi7GxZltRG5DRsmm8rDz6E4OrTQMHfQNDiuw78uZZ9+YYwaIM3nt1i
18
- /lN2hs79zj/HPf5qX9rw+CarOL0bdW97a/Monx4bAoGAeMqXXfT3hi9E15bypQxD
19
- IK6/JaC9n0BdLkRLd/09ymtNxhORkipuOdGw9yo8o2Kj0arxfTol+Z83oedP7dGK
20
- j/gw5McYvqB4WGZ2PpZIRkHOrMu883FPEexOuVktkWvuiP3brPQ5nwYa/dvCAsMA
21
- H4CHYuBJwbhZjvinwaaRkN8CgYA9sQh/zmOUVCRy+Yh9jyLgBBCHgDDUyTzvzLjW
22
- NnBKN+TbV9DiF3mjfxKZX5YkIj3bSvqmaR+Em1Txwqn31tZX15AwCgq7U/W0P4JE
23
- 7ORbEixV8wsaOuB8FkjEabL677T+5wdJPmRZAq5asyu0yenmsa4+oF9m3S2rBknB
24
- I3b6EwKBgQD1+0+xdGomMeKHg8jWuDytdlWmNXmbiV0g2yOm533jG67vGDPfgd0H
25
- PNC62d7r5EhIVJwQZmW/GdOfZ7tI91XN+GjNyslr9t299hoMeRMT+Db2U+mQvKuS
26
- Oz+MHhO8YnOz9GFbQShqiCFj4zTU/0Ga/BY8Y52lURftt/QIXo+7Vg==
27
- -----END RSA PRIVATE KEY-----
@@ -1,20 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDOTCCAfGgAwIBAgIJAIRaPtlbsnO/MD0GCSqGSIb3DQEBCjAwoA0wCwYJYIZI
3
- AWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCAaIDAgEgMBIxEDAOBgNV
4
- BAMMB3Rlc3QtY2EwHhcNMTkwNTI1MDE0MjM2WhcNMjkwNTIyMDE0MjM2WjAUMRIw
5
- EAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
6
- AQDW7BNlVE8xg7M1VND+HwpmDF5v2F4GtKhD/c79Ge6bnXa1GPyvLV7FpVZdCtkz
7
- VfNF50urICV2TzlRzaTu4uoM9DeZRfmI/YIk9PSqLXiqmjpd382B5BD6EzDmHKNr
8
- 6HrkcMHrMfsif7hJkCIofYh98Kh5L5c/kS6fzNXIbOeexq62cVB+835+xCXQHNGN
9
- iLijlmhi3sEbBoI+GF/aiYt+Nz0X6mfPjHdSoZrbY5biiBeYG91fw9nmli/eV3nV
10
- VMlOD3O+tDZo/A2QlZlG0UcIn4no0KFKCZNZm0H5jF9Q/S3o+HcjvWAtg7phk8qH
11
- OVlzrgaLH8RVERIUJHflSQOlAgMBAAGjMDAuMAkGA1UdEwQCMAAwCwYDVR0PBAQD
12
- AgKEMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDA9BgkqhkiG9w0BAQowMKANMAsGCWCG
13
- SAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAQEAayq/
14
- jL1hEkL+tguCdfn80mYQKxeteFstJt+cHKKrfpqPmxm/ponGsUK/64tziPIazWgI
15
- jkoNH9JZhZ+H4Gy3hcUr5emK+o2swqWT1xzT4/6QtCmtSJeXPD6Jap2v7HpG+xeM
16
- V3tIuSrIwv5Tg80p1waDWodlXJH1G1raXZ/wzBlx+QH7BRPuUrOMkYQlVPTvXfjD
17
- SRSz7zHe5o4zv5nQMU8qA4e7X8ZE8nFUjptSwg1nx1TSdGAMHiZG/QBAH3CKqQ4p
18
- jzJJS3cemsjrW7dq4TfeFGHWD1oE3/Q6LzvtLVIyRGU+GTjP3ltJ17KxSHraGg8V
19
- Na3zecUHuS+C02ovFw==
20
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEowIBAAKCAQEA1uwTZVRPMYOzNVTQ/h8KZgxeb9heBrSoQ/3O/Rnum512tRj8
3
- ry1exaVWXQrZM1XzRedLqyAldk85Uc2k7uLqDPQ3mUX5iP2CJPT0qi14qpo6Xd/N
4
- geQQ+hMw5hyja+h65HDB6zH7In+4SZAiKH2IffCoeS+XP5Eun8zVyGznnsautnFQ
5
- fvN+fsQl0BzRjYi4o5ZoYt7BGwaCPhhf2omLfjc9F+pnz4x3UqGa22OW4ogXmBvd
6
- X8PZ5pYv3ld51VTJTg9zvrQ2aPwNkJWZRtFHCJ+J6NChSgmTWZtB+YxfUP0t6Ph3
7
- I71gLYO6YZPKhzlZc64Gix/EVRESFCR35UkDpQIDAQABAoIBAQCh3+Nn8Y1IPOqw
8
- Y3aZwCVj4TMLyIphQJZvx22sYmi+GmZ7VhuTkXeNI8+dentHWBhH8UKj3C17I4aH
9
- n3z3VD92jEaIEhU1YcMxNLJGrsLwtAL8C4HMsEs9H1E4MB/CObK99lOIYvfE7y+N
10
- cJrZpls0iBtMU1T20tGsGGp4b9YwVhDx7TI7E8Gn/gCtc9aMfBTnCSTqlq6RaFoF
11
- hIYMczBW9mHB40PPbwBtNUyT7+xo1nkyTpI24iUR6UNOKyUVQXgZQ4IAclvvXFIe
12
- TBQfzi3O6LP+OY+jawkeZho+KvNds3jU/bDkHyHqimtVkkhZFwSe8yf+TDskdVgm
13
- LF4iJa+tAoGBAPjYmt2vT3ck/1rGJ7eq6VaJWic821h+LjwrGpBCVz9rqndZsREM
14
- Ww04Zs9aGUEVKXUB5ecSERWO2r+IITXw/QniZWxFTF+iVn+xjNcPBEUIW8/sZit7
15
- VA2fXppW80gzWCUbY5GAp1lP7HmCf5AYtSEAE2NR5pQdiRZmT6hCn1QXAoGBAN0Z
16
- zlDJpT0OT2NHoUfK4wvui8AC8MoBYEgeRiLHBFkJkZY1m1si1Y5H5sc+8eL0Cgf4
17
- JQASdXB+7alg4Lisr5injVz9tgEuMdSJSdV8ULCCMEidQU7JNpsqUlnURBmWFiT3
18
- o8BKp5cHw5DNaqHReqyP7BvyidUttgYV0EQsc++jAoGAKsf6X/Baxg37RJzaiS39
19
- 7Z2xfRtuTllrE3cJmxF8tG+LH/ewhFDOeohezHkd7F16Ah6warhlbYJgwxrhMsfa
20
- iM9+Rk3nom1jV5KrtvFi94dHWYi3y/Po8GqctgYKzzfciIyb4pDutGEUM5Om4JwO
21
- z7yWmLWk4YPuZIZ0XWYOxEMCgYBS0Su6jw1ZxVZvNZFvtss82Ol3zqIqyEEsQkq7
22
- FBjI0RC7VvEOPgoH9V64Gxe3jvmC6qvRTxi2PpT+8M673dMYNwp4XoAiCQ+ZMKN7
23
- V8lRlDJJwL2JqUzO6hdWlm+7tcAtsKShjlUf+USDpK3gVvrAUFh8T2jZdPnNZbZR
24
- EuWKSQKBgAgDE7sgZZteyyZObaoVFgZIQtgAVR6VoWgrruMmBU4t01Axr5+wmtPU
25
- w7uutWkPemGf+MbfqjWyjdfR7gIlaPshmRLfcTcEtodUaMGO8PEbqOqENXRrhDag
26
- OMtrcu6HNKV0YwAjW+r37A4HVRYkzGkF3COnseUIH3sISHklade9
27
- -----END RSA PRIVATE KEY-----
@@ -1,14 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICDTCB9qADAgECAgkA0i+ulU4TnLIwDQYJKoZIhvcNAQELBQAwEjEQMA4GA1UE
3
- AwwHdGVzdC1jYTAeFw0xOTA1MjUwMTQyMzZaFw0yOTA1MjIwMTQyMzZaMBQxEjAQ
4
- BgNVBAMMCWxvY2FsaG9zdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKiwh2oW
5
- 7PTxGbN5oO82jxEwQ1ZVweWviU4gwAnms8RVNTYBKj/ZCuuWCGtsB91zhzrOkATt
6
- mMTGrKHJzMGjP4ajMDAuMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgKEMBQGA1UdEQQN
7
- MAuCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAQEAColT35sqr72ge00Sm9Ww
8
- YolLHhGcdCWXH0AnuxMUdMwUBx9tLd4CQUVSS2OYeiKigbYYgBcPelzo7Vka0mNy
9
- /mSYW1cCDe3Lh7qKyBbf4bGKviag2KZzpOHD858BzWmX40moSxzwhh4HJoy4OsGp
10
- QXheM3Zgv4CD4GleUerK1OsHoDnA8QLqZ0DPpCGUhb1Nfqce5+ecQHdELNqTt3hD
11
- m7z4hc06NYoel4HQTWRt1UXQivkkrFkOiuzT6DOYF5CMy5BwPKxMlCqiE5ObxwVl
12
- AAB9A6XGxeUa2ZJUdtAzESzm6Azy7evGh+3b/QO3rlcd7mMHHvNXl1EpX3upvhK9
13
- LA==
14
- -----END CERTIFICATE-----
@@ -1,5 +0,0 @@
1
- -----BEGIN EC PRIVATE KEY-----
2
- MHcCAQEEIHf3C/ryQ5xIBbSj+OfwSLXGFEh9WT5HbklavzjJ2aD3oAoGCCqGSM49
3
- AwEHoUQDQgAEqLCHahbs9PEZs3mg7zaPETBDVlXB5a+JTiDACeazxFU1NgEqP9kK
4
- 65YIa2wH3XOHOs6QBO2YxMasocnMwaM/hg==
5
- -----END EC PRIVATE KEY-----
@@ -1,14 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICKzCCAROgAwIBAgIJAILLdBXeo7wWMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV
3
- BAMMB3Rlc3QtY2EwHhcNMTkwNTI1MDE0MjM2WhcNMjkwNTIyMDE0MjM2WjAUMRIw
4
- EAYDVQQDDAlsb2NhbGhvc3QwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARnaVUUcy6O
5
- TbFJyF9qTNhwH54qYGab+9hLTitZ1rDw6DL31aVmh1aOC9+Cn8yGESL26Pt7LfeU
6
- GnexSIT0+Igmim501WjfHa+KwpWPsRqiGnIKzXy6MVTbxJdTZvJ9agmjMDAuMAkG
7
- A1UdEwQCMAAwCwYDVR0PBAQDAgKEMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDANBgkq
8
- hkiG9w0BAQsFAAOCAQEAUJ0Av0mdfaJHF09bc77cFBcokrfkXa9dR0SEjcGIzevk
9
- kf/dsErR9wHmDR6nmYW6dA41equDFNAEDCosRvAW0RIe4TegwSLmcnZr6w9+2gfU
10
- yXqvaEkJsks3COZeiH6Is0SXiC6IuL3w2Y+M9IptjgqYukFz15Bv434NYup+Zr9T
11
- Eq0dQp5p+pM/NNjRekEQOiJq4P+98D3bR689byDwkdlXkpUmvoYBXkoqqtXE22T0
12
- cAAAVA+qj8jGVg0HH/acnpXyWZuQaG3gpY9vkyskVcGc4Q8qN9U53IpyI8QMeRJy
13
- pGUnRLCltIIT0WyIVucvCzJ0v9M88yU8Qyx4Tm2fAg==
14
- -----END CERTIFICATE-----
@@ -1,6 +0,0 @@
1
- -----BEGIN EC PRIVATE KEY-----
2
- MIGkAgEBBDCyZusDHIZWr1uWefvcMticNHQYSHJ456lB6z0qKQKy7HPA6k8Tp/9E
3
- bwyyJSS7/sCgBwYFK4EEACKhZANiAARnaVUUcy6OTbFJyF9qTNhwH54qYGab+9hL
4
- TitZ1rDw6DL31aVmh1aOC9+Cn8yGESL26Pt7LfeUGnexSIT0+Igmim501WjfHa+K
5
- wpWPsRqiGnIKzXy6MVTbxJdTZvJ9agk=
6
- -----END EC PRIVATE KEY-----
@@ -1,15 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIICUTCCATmgAwIBAgIJAKkpp78+S8JUMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV
3
- BAMMB3Rlc3QtY2EwHhcNMTkwNTI1MDE0MjM2WhcNMjkwNTIyMDE0MjM2WjAUMRIw
4
- EAYDVQQDDAlsb2NhbGhvc3QwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABAA2hmEd
5
- +V4JM974u/DSPW7uGafw5mF9XngzGU2HeIhY4vXDzt884Rt4kjpcAByAjxtbVhB9
6
- byPwc5FN6LrZiatB+gBDIija5Fq6d1gn3nXESirdZrMyLAlykXhS7nywOx0HDCYq
7
- 2sD0lIMZXB04kFVC+XQsLqwA5J1k87oQ3EwEjwJVzKMwMC4wCQYDVR0TBAIwADAL
8
- BgNVHQ8EBAMCAoQwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUA
9
- A4IBAQBOUnOHUsJPNO56nvFLbIn1COnyRPo3C1BpGpV9uk6mzGuQ0jvDUhN01A5m
10
- F/OZ4wmeOBRkzPgUbbcTeUVNtZX3V9Js6V9MFwNQjgLgYPC0soGJbexVWpg5ZEUu
11
- ishnmsllej4cMD3XNO1UFSUzjqE0OHIYzp38wIiI7Jx4nBnFTUw4EneACbj1ZCJM
12
- 5BP8c6522FCYgsA+97itp7sSjCYqD6u4IIwi0GhcISrn2DPwAsWhAYf5AadL5+Di
13
- jaoKheW5xjs3jbK6w62yGkmaECKIq9kKv7d1rqdgn3FB4NP+KP6UPxPeFDaiqcr6
14
- f8K7pV48fGr0TNhPPWwGbZEejhHF
15
- -----END CERTIFICATE-----
@@ -1,7 +0,0 @@
1
- -----BEGIN EC PRIVATE KEY-----
2
- MIHcAgEBBEIBpLFBw5Z/X6SoBwA8uOZczz8UB3uiQv2LpVhIp4GFOyRJKx5x3YL7
3
- jrx2zaaIdaGFi82tJ8UEAcdEknCXkWFhKfKgBwYFK4EEACOhgYkDgYYABAA2hmEd
4
- +V4JM974u/DSPW7uGafw5mF9XngzGU2HeIhY4vXDzt884Rt4kjpcAByAjxtbVhB9
5
- byPwc5FN6LrZiatB+gBDIija5Fq6d1gn3nXESirdZrMyLAlykXhS7nywOx0HDCYq
6
- 2sD0lIMZXB04kFVC+XQsLqwA5J1k87oQ3EwEjwJVzA==
7
- -----END EC PRIVATE KEY-----
@@ -1,221 +0,0 @@
1
- # encoding: ascii-8bit
2
- # frozen_string_literal: true
3
-
4
- require_relative 'spec_helper'
5
-
6
- RSpec.describe KeySchedule do
7
- context 'key_schedule, Simple 1-RTT Handshake,' do
8
- let(:key_schedule) do
9
- ch = ClientHello.deserialize(TESTBINARY_CLIENT_HELLO)
10
- sh = ServerHello.deserialize(TESTBINARY_SERVER_HELLO)
11
- ee = EncryptedExtensions.deserialize(TESTBINARY_ENCRYPTED_EXTENSIONS)
12
- ct = Certificate.deserialize(TESTBINARY_CERTIFICATE)
13
- cv = CertificateVerify.deserialize(TESTBINARY_CERTIFICATE_VERIFY)
14
- sf = Finished.deserialize(TESTBINARY_SERVER_FINISHED)
15
- cf = Finished.deserialize(TESTBINARY_CLIENT_FINISHED)
16
- transcript = Transcript.new
17
- transcript.merge!(
18
- CH => [ch, TESTBINARY_CLIENT_HELLO],
19
- SH => [sh, TESTBINARY_SERVER_HELLO],
20
- EE => [ee, TESTBINARY_ENCRYPTED_EXTENSIONS],
21
- CT => [ct, TESTBINARY_CERTIFICATE],
22
- CV => [cv, TESTBINARY_CERTIFICATE_VERIFY],
23
- SF => [sf, TESTBINARY_SERVER_FINISHED],
24
- CF => [cf, TESTBINARY_CLIENT_FINISHED]
25
- )
26
- KeySchedule.new(shared_secret: TESTBINARY_SHARED_SECRET,
27
- cipher_suite: CipherSuite::TLS_AES_128_GCM_SHA256,
28
- transcript:)
29
- end
30
-
31
- it 'should generate secret' do
32
- expect(key_schedule.client_handshake_traffic_secret)
33
- .to eq TESTBINARY_C_HS_TRAFFIC
34
- expect(key_schedule.server_handshake_traffic_secret)
35
- .to eq TESTBINARY_S_HS_TRAFFIC
36
- expect(key_schedule.client_application_traffic_secret)
37
- .to eq TESTBINARY_C_AP_TRAFFIC
38
- expect(key_schedule.server_application_traffic_secret)
39
- .to eq TESTBINARY_S_AP_TRAFFIC
40
- expect(key_schedule.exporter_secret)
41
- .to eq TESTBINARY_EXP_MASTER
42
- expect(key_schedule.resumption_secret)
43
- .to eq TESTBINARY_RES_MASTER
44
- end
45
-
46
- it 'should generate server finished_key' do
47
- expect(key_schedule.server_finished_key)
48
- .to eq TESTBINARY_SERVER_FINISHED_KEY
49
- end
50
-
51
- it 'should generate server parameters write_key, iv' do
52
- expect(key_schedule.server_handshake_write_key)
53
- .to eq TESTBINARY_SERVER_PARAMETERS_WRITE_KEY
54
- expect(key_schedule.server_handshake_write_iv)
55
- .to eq TESTBINARY_SERVER_PARAMETERS_WRITE_IV
56
- end
57
-
58
- it 'should generate client finished_key' do
59
- expect(key_schedule.client_finished_key)
60
- .to eq TESTBINARY_CLIENT_FINISHED_KEY
61
- end
62
-
63
- it 'should generate client finished write_key, iv' do
64
- expect(key_schedule.client_handshake_write_key)
65
- .to eq TESTBINARY_CLIENT_FINISHED_WRITE_KEY
66
- expect(key_schedule.client_handshake_write_iv)
67
- .to eq TESTBINARY_CLIENT_FINISHED_WRITE_IV
68
- end
69
-
70
- it 'should generete server application write_key, iv' do
71
- expect(key_schedule.server_application_write_key)
72
- .to eq TESTBINARY_SERVER_APPLICATION_WRITE_KEY
73
- expect(key_schedule.server_application_write_iv)
74
- .to eq TESTBINARY_SERVER_APPLICATION_WRITE_IV
75
- end
76
-
77
- it 'should generete client application write_key, iv' do
78
- expect(key_schedule.client_application_write_key)
79
- .to eq TESTBINARY_CLIENT_APPLICATION_WRITE_KEY
80
- expect(key_schedule.client_application_write_iv)
81
- .to eq TESTBINARY_CLIENT_APPLICATION_WRITE_IV
82
- end
83
- end
84
-
85
- context 'key_schedule, Resumed 0-RTT Handshake,' do
86
- let(:key_schedule) do
87
- ch = ClientHello.deserialize(TESTBINARY_0_RTT_CLIENT_HELLO)
88
- sh = ServerHello.deserialize(TESTBINARY_0_RTT_SERVER_HELLO)
89
- ee = EncryptedExtensions.deserialize(
90
- TESTBINARY_0_RTT_ENCRYPTED_EXTENSIONS
91
- )
92
- sf = Finished.deserialize(TESTBINARY_0_RTT_SERVER_FINISHED)
93
- eoed = EndOfEarlyData.deserialize(TESTBINARY_0_RTT_END_OF_EARLY_DATA)
94
- cf = Finished.deserialize(TESTBINARY_0_RTT_CLIENT_FINISHED)
95
- transcript = Transcript.new
96
- transcript.merge!(
97
- CH => [ch, TESTBINARY_0_RTT_CLIENT_HELLO],
98
- SH => [sh, TESTBINARY_0_RTT_SERVER_HELLO],
99
- EE => [ee, TESTBINARY_0_RTT_ENCRYPTED_EXTENSIONS],
100
- SF => [sf, TESTBINARY_0_RTT_SERVER_FINISHED],
101
- EOED => [eoed, TESTBINARY_0_RTT_END_OF_EARLY_DATA],
102
- CF => [cf, TESTBINARY_0_RTT_CLIENT_FINISHED]
103
- )
104
- KeySchedule.new(psk: TESTBINARY_0_RTT_PSK,
105
- shared_secret: TESTBINARY_0_RTT_SHARED_SECRET,
106
- cipher_suite: CipherSuite::TLS_AES_128_GCM_SHA256,
107
- transcript:)
108
- end
109
-
110
- it 'should generate server parameters write_key, iv' do
111
- expect(key_schedule.server_handshake_write_key)
112
- .to eq TESTBINARY_0_RTT_SERVER_PARAMETERS_WRITE_KEY
113
- expect(key_schedule.server_handshake_write_iv)
114
- .to eq TESTBINARY_0_RTT_SERVER_PARAMETERS_WRITE_IV
115
- end
116
-
117
- it 'should generete client application write_key, iv' do
118
- expect(key_schedule.client_application_write_key)
119
- .to eq TESTBINARY_0_RTT_CLIENT_APPLICATION_WRITE_KEY
120
- expect(key_schedule.client_application_write_iv)
121
- .to eq TESTBINARY_0_RTT_CLIENT_APPLICATION_WRITE_IV
122
- end
123
- end
124
-
125
- context 'key_schedule, Resumed 0-RTT Handshake, ' \
126
- 'not negotiated shared_secret yet,' do
127
- let(:key_schedule) do
128
- ch = ClientHello.deserialize(TESTBINARY_0_RTT_CLIENT_HELLO)
129
- transcript = Transcript.new
130
- transcript[CH] = [ch, TESTBINARY_0_RTT_CLIENT_HELLO]
131
- KeySchedule.new(psk: TESTBINARY_0_RTT_PSK,
132
- shared_secret: nil,
133
- cipher_suite: CipherSuite::TLS_AES_128_GCM_SHA256,
134
- transcript:)
135
- end
136
-
137
- it 'should generate binder key for resumption PSKs' do
138
- expect(key_schedule.binder_key_res)
139
- .to eq TESTBINARY_0_RTT_BINDER_KEY_RES
140
- end
141
-
142
- it 'should generate client_early_traffic_secret' do
143
- expect(key_schedule.client_early_traffic_secret)
144
- .to eq TESTBINARY_0_RTT_C_E_TRAFFIC
145
- end
146
-
147
- it 'should generate 0-RTT application write_key, iv' do
148
- expect(key_schedule.early_data_write_key)
149
- .to eq TESTBINARY_0_RTT_EARLY_DATA_WRITE_KEY
150
- expect(key_schedule.early_data_write_iv)
151
- .to eq TESTBINARY_0_RTT_EARLY_DATA_WRITE_IV
152
- end
153
- end
154
-
155
- context 'key_schedule, HelloRetryRequest,' do
156
- let(:key_schedule) do
157
- ch1 = ClientHello.deserialize(TESTBINARY_HRR_CLIENT_HELLO1)
158
- hrr = ServerHello.deserialize(TESTBINARY_HRR_HELLO_RETRY_REQUEST)
159
- ch = ClientHello.deserialize(TESTBINARY_HRR_CLIENT_HELLO)
160
- sh = ServerHello.deserialize(TESTBINARY_HRR_SERVER_HELLO)
161
- ee = EncryptedExtensions.deserialize(TESTBINARY_HRR_ENCRYPTED_EXTENSIONS)
162
- ct = Certificate.deserialize(TESTBINARY_HRR_CERTIFICATE)
163
- cv = CertificateVerify.deserialize(TESTBINARY_HRR_CERTIFICATE_VERIFY)
164
- sf = Finished.deserialize(TESTBINARY_HRR_SERVER_FINISHED)
165
- cf = Finished.deserialize(TESTBINARY_HRR_CLIENT_FINISHED)
166
- transcript = Transcript.new
167
- transcript.merge!(
168
- CH1 => [ch1, TESTBINARY_HRR_CLIENT_HELLO1],
169
- HRR => [hrr, TESTBINARY_HRR_HELLO_RETRY_REQUEST],
170
- CH => [ch, TESTBINARY_HRR_CLIENT_HELLO],
171
- SH => [sh, TESTBINARY_HRR_SERVER_HELLO],
172
- EE => [ee, TESTBINARY_HRR_ENCRYPTED_EXTENSIONS],
173
- CT => [ct, TESTBINARY_HRR_CERTIFICATE],
174
- CV => [cv, TESTBINARY_HRR_CERTIFICATE_VERIFY],
175
- SF => [sf, TESTBINARY_HRR_SERVER_FINISHED],
176
- CF => [cf, TESTBINARY_HRR_CLIENT_FINISHED]
177
- )
178
- KeySchedule.new(shared_secret: TESTBINARY_HRR_SHARED_SECRET,
179
- cipher_suite: CipherSuite::TLS_AES_128_GCM_SHA256,
180
- transcript:)
181
- end
182
-
183
- it 'should generate server finished_key' do
184
- expect(key_schedule.server_finished_key)
185
- .to eq TESTBINARY_HRR_SERVER_FINISHED_KEY
186
- end
187
-
188
- it 'should generate server parameters write_key, iv' do
189
- expect(key_schedule.server_handshake_write_key)
190
- .to eq TESTBINARY_HRR_SERVER_PARAMETERS_WRITE_KEY
191
- expect(key_schedule.server_handshake_write_iv)
192
- .to eq TESTBINARY_HRR_SERVER_PARAMETERS_WRITE_IV
193
- end
194
-
195
- it 'should generate client finished_key' do
196
- expect(key_schedule.client_finished_key)
197
- .to eq TESTBINARY_HRR_CLIENT_FINISHED_KEY
198
- end
199
-
200
- it 'should generate client finished write_key, iv' do
201
- expect(key_schedule.client_handshake_write_key)
202
- .to eq TESTBINARY_HRR_CLIENT_FINISHED_WRITE_KEY
203
- expect(key_schedule.client_handshake_write_iv)
204
- .to eq TESTBINARY_HRR_CLIENT_FINISHED_WRITE_IV
205
- end
206
-
207
- it 'should generete server application write_key, iv' do
208
- expect(key_schedule.server_application_write_key)
209
- .to eq TESTBINARY_HRR_SERVER_APPLICATION_WRITE_KEY
210
- expect(key_schedule.server_application_write_iv)
211
- .to eq TESTBINARY_HRR_SERVER_APPLICATION_WRITE_IV
212
- end
213
-
214
- it 'should generete client application write_key, iv' do
215
- expect(key_schedule.client_application_write_key)
216
- .to eq TESTBINARY_HRR_CLIENT_APPLICATION_WRITE_KEY
217
- expect(key_schedule.client_application_write_iv)
218
- .to eq TESTBINARY_HRR_CLIENT_APPLICATION_WRITE_IV
219
- end
220
- end
221
- end