@@ -1764,33 +1764,28 @@ def test_get_ephemeral_key
1764
1764
end
1765
1765
end
1766
1766
1767
- if !aws_lc? # AWS-LC does not support DHE ciphersuites.
1768
- # DHE
1769
- # TODO: SSL_CTX_set1_groups() is required for testing this with TLS 1.3
1770
- ctx_proc2 = proc { |ctx |
1771
- ctx . max_version = OpenSSL ::SSL ::TLS1_2_VERSION
1772
- ctx . ciphers = "EDH"
1773
- ctx . tmp_dh = Fixtures . pkey ( "dh-1" )
1774
- }
1775
- start_server ( ctx_proc : ctx_proc2 ) do |port |
1767
+ # DHE
1768
+ # OpenSSL 3.0 added support for named FFDHE groups in TLS 1.3
1769
+ # LibreSSL does not support named FFDHE groups currently
1770
+ # AWS-LC does not support DHE ciphersuites
1771
+ if openssl? ( 3 , 0 , 0 )
1772
+ start_server do |port |
1776
1773
ctx = OpenSSL ::SSL ::SSLContext . new
1777
- ctx . max_version = OpenSSL ::SSL ::TLS1_2_VERSION
1778
- ctx . ciphers = "EDH"
1774
+ ctx . groups = "ffdhe3072"
1779
1775
server_connect ( port , ctx ) { |ssl |
1780
1776
assert_instance_of OpenSSL ::PKey ::DH , ssl . tmp_key
1777
+ assert_equal 3072 , ssl . tmp_key . p . num_bits
1778
+ ssl . puts "abc" ; assert_equal "abc\n " , ssl . gets
1781
1779
}
1782
1780
end
1783
1781
end
1784
1782
1785
1783
# ECDHE
1786
1784
ctx_proc3 = proc { |ctx |
1787
- ctx . ciphers = "DEFAULT:!kRSA:!kEDH"
1788
- ctx . ecdh_curves = "P-256"
1785
+ ctx . groups = "P-256"
1789
1786
}
1790
1787
start_server ( ctx_proc : ctx_proc3 ) do |port |
1791
- ctx = OpenSSL ::SSL ::SSLContext . new
1792
- ctx . ciphers = "DEFAULT:!kRSA:!kEDH"
1793
- server_connect ( port , ctx ) { |ssl |
1788
+ server_connect ( port ) { |ssl |
1794
1789
assert_instance_of OpenSSL ::PKey ::EC , ssl . tmp_key
1795
1790
ssl . puts "abc" ; assert_equal "abc\n " , ssl . gets
1796
1791
}
@@ -2001,17 +1996,17 @@ def test_tmp_dh
2001
1996
end
2002
1997
end
2003
1998
2004
- def test_ecdh_curves_tls12
1999
+ def test_set_groups_tls12
2005
2000
ctx_proc = -> ctx {
2006
2001
# Enable both ECDHE (~ TLS 1.2) cipher suites and TLS 1.3
2007
2002
ctx . max_version = OpenSSL ::SSL ::TLS1_2_VERSION
2008
2003
ctx . ciphers = "kEECDH"
2009
- ctx . ecdh_curves = "P-384:P-521"
2004
+ ctx . groups = "P-384:P-521"
2010
2005
}
2011
2006
start_server ( ctx_proc : ctx_proc , ignore_listener_error : true ) do |port |
2012
2007
# Test 1: Client=P-256:P-384, Server=P-384:P-521 --> P-384
2013
2008
ctx = OpenSSL ::SSL ::SSLContext . new
2014
- ctx . ecdh_curves = "P-256:P-384"
2009
+ ctx . groups = "P-256:P-384"
2015
2010
server_connect ( port , ctx ) { |ssl |
2016
2011
cs = ssl . cipher [ 0 ]
2017
2012
assert_match ( /\A ECDH/ ) , cs
@@ -2021,29 +2016,36 @@ def test_ecdh_curves_tls12
2021
2016
2022
2017
# Test 2: Client=P-256, Server=P-521:P-384 --> Fail
2023
2018
ctx = OpenSSL ::SSL ::SSLContext . new
2024
- ctx . ecdh_curves = "P-256"
2019
+ ctx . groups = "P-256"
2025
2020
assert_raise ( OpenSSL ::SSL ::SSLError ) {
2026
2021
server_connect ( port , ctx ) { }
2027
2022
}
2028
2023
2029
2024
# Test 3: Client=P-521:P-384, Server=P-521:P-384 --> P-521
2030
2025
ctx = OpenSSL ::SSL ::SSLContext . new
2031
- ctx . ecdh_curves = "P-521:P-384"
2026
+ ctx . groups = "P-521:P-384"
2032
2027
server_connect ( port , ctx ) { |ssl |
2033
2028
assert_equal "secp521r1" , ssl . tmp_key . group . curve_name
2034
2029
ssl . puts "abc" ; assert_equal "abc\n " , ssl . gets
2035
2030
}
2031
+
2032
+ # Test 4: #ecdh_curves= alias
2033
+ ctx = OpenSSL ::SSL ::SSLContext . new
2034
+ ctx . ecdh_curves = "P-256:P-384"
2035
+ server_connect ( port , ctx ) { |ssl |
2036
+ assert_equal "secp384r1" , ssl . tmp_key . group . curve_name
2037
+ }
2036
2038
end
2037
2039
end
2038
2040
2039
- def test_ecdh_curves_tls13
2041
+ def test_set_groups_tls13
2040
2042
ctx_proc = -> ctx {
2041
2043
# Assume TLS 1.3 is enabled and chosen by default
2042
- ctx . ecdh_curves = "P-384:P-521"
2044
+ ctx . groups = "P-384:P-521"
2043
2045
}
2044
2046
start_server ( ctx_proc : ctx_proc , ignore_listener_error : true ) do |port |
2045
2047
ctx = OpenSSL ::SSL ::SSLContext . new
2046
- ctx . ecdh_curves = "P-256:P-384" # disable P-521
2048
+ ctx . groups = "P-256:P-384" # disable P-521
2047
2049
2048
2050
server_connect ( port , ctx ) { |ssl |
2049
2051
assert_equal "TLSv1.3" , ssl . ssl_version
0 commit comments