@@ -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
}
@@ -2079,17 +2074,17 @@ def test_tmp_dh
2079
2074
end
2080
2075
end
2081
2076
2082
- def test_ecdh_curves_tls12
2077
+ def test_set_groups_tls12
2083
2078
ctx_proc = -> ctx {
2084
2079
# Enable both ECDHE (~ TLS 1.2) cipher suites and TLS 1.3
2085
2080
ctx . max_version = OpenSSL ::SSL ::TLS1_2_VERSION
2086
2081
ctx . ciphers = "kEECDH"
2087
- ctx . ecdh_curves = "P-384:P-521"
2082
+ ctx . groups = "P-384:P-521"
2088
2083
}
2089
2084
start_server ( ctx_proc : ctx_proc , ignore_listener_error : true ) do |port |
2090
2085
# Test 1: Client=P-256:P-384, Server=P-384:P-521 --> P-384
2091
2086
ctx = OpenSSL ::SSL ::SSLContext . new
2092
- ctx . ecdh_curves = "P-256:P-384"
2087
+ ctx . groups = "P-256:P-384"
2093
2088
server_connect ( port , ctx ) { |ssl |
2094
2089
cs = ssl . cipher [ 0 ]
2095
2090
assert_match ( /\A ECDH/ ) , cs
@@ -2099,29 +2094,36 @@ def test_ecdh_curves_tls12
2099
2094
2100
2095
# Test 2: Client=P-256, Server=P-521:P-384 --> Fail
2101
2096
ctx = OpenSSL ::SSL ::SSLContext . new
2102
- ctx . ecdh_curves = "P-256"
2097
+ ctx . groups = "P-256"
2103
2098
assert_raise ( OpenSSL ::SSL ::SSLError ) {
2104
2099
server_connect ( port , ctx ) { }
2105
2100
}
2106
2101
2107
2102
# Test 3: Client=P-521:P-384, Server=P-521:P-384 --> P-521
2108
2103
ctx = OpenSSL ::SSL ::SSLContext . new
2109
- ctx . ecdh_curves = "P-521:P-384"
2104
+ ctx . groups = "P-521:P-384"
2110
2105
server_connect ( port , ctx ) { |ssl |
2111
2106
assert_equal "secp521r1" , ssl . tmp_key . group . curve_name
2112
2107
ssl . puts "abc" ; assert_equal "abc\n " , ssl . gets
2113
2108
}
2109
+
2110
+ # Test 4: #ecdh_curves= alias
2111
+ ctx = OpenSSL ::SSL ::SSLContext . new
2112
+ ctx . ecdh_curves = "P-256:P-384"
2113
+ server_connect ( port , ctx ) { |ssl |
2114
+ assert_equal "secp384r1" , ssl . tmp_key . group . curve_name
2115
+ }
2114
2116
end
2115
2117
end
2116
2118
2117
- def test_ecdh_curves_tls13
2119
+ def test_set_groups_tls13
2118
2120
ctx_proc = -> ctx {
2119
2121
# Assume TLS 1.3 is enabled and chosen by default
2120
- ctx . ecdh_curves = "P-384:P-521"
2122
+ ctx . groups = "P-384:P-521"
2121
2123
}
2122
2124
start_server ( ctx_proc : ctx_proc , ignore_listener_error : true ) do |port |
2123
2125
ctx = OpenSSL ::SSL ::SSLContext . new
2124
- ctx . ecdh_curves = "P-256:P-384" # disable P-521
2126
+ ctx . groups = "P-256:P-384" # disable P-521
2125
2127
2126
2128
server_connect ( port , ctx ) { |ssl |
2127
2129
assert_equal "TLSv1.3" , ssl . ssl_version
0 commit comments