@@ -1764,33 +1764,28 @@ def test_get_ephemeral_key
17641764 end
17651765 end
17661766
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 |
17761773 ctx = OpenSSL ::SSL ::SSLContext . new
1777- ctx . max_version = OpenSSL ::SSL ::TLS1_2_VERSION
1778- ctx . ciphers = "EDH"
1774+ ctx . groups = "ffdhe3072"
17791775 server_connect ( port , ctx ) { |ssl |
17801776 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
17811779 }
17821780 end
17831781 end
17841782
17851783 # ECDHE
17861784 ctx_proc3 = proc { |ctx |
1787- ctx . ciphers = "DEFAULT:!kRSA:!kEDH"
1788- ctx . ecdh_curves = "P-256"
1785+ ctx . groups = "P-256"
17891786 }
17901787 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 |
17941789 assert_instance_of OpenSSL ::PKey ::EC , ssl . tmp_key
17951790 ssl . puts "abc" ; assert_equal "abc\n " , ssl . gets
17961791 }
@@ -2079,17 +2074,17 @@ def test_tmp_dh
20792074 end
20802075 end
20812076
2082- def test_ecdh_curves_tls12
2077+ def test_set_groups_tls12
20832078 ctx_proc = -> ctx {
20842079 # Enable both ECDHE (~ TLS 1.2) cipher suites and TLS 1.3
20852080 ctx . max_version = OpenSSL ::SSL ::TLS1_2_VERSION
20862081 ctx . ciphers = "kEECDH"
2087- ctx . ecdh_curves = "P-384:P-521"
2082+ ctx . groups = "P-384:P-521"
20882083 }
20892084 start_server ( ctx_proc : ctx_proc , ignore_listener_error : true ) do |port |
20902085 # Test 1: Client=P-256:P-384, Server=P-384:P-521 --> P-384
20912086 ctx = OpenSSL ::SSL ::SSLContext . new
2092- ctx . ecdh_curves = "P-256:P-384"
2087+ ctx . groups = "P-256:P-384"
20932088 server_connect ( port , ctx ) { |ssl |
20942089 cs = ssl . cipher [ 0 ]
20952090 assert_match ( /\A ECDH/ ) , cs
@@ -2099,29 +2094,36 @@ def test_ecdh_curves_tls12
20992094
21002095 # Test 2: Client=P-256, Server=P-521:P-384 --> Fail
21012096 ctx = OpenSSL ::SSL ::SSLContext . new
2102- ctx . ecdh_curves = "P-256"
2097+ ctx . groups = "P-256"
21032098 assert_raise ( OpenSSL ::SSL ::SSLError ) {
21042099 server_connect ( port , ctx ) { }
21052100 }
21062101
21072102 # Test 3: Client=P-521:P-384, Server=P-521:P-384 --> P-521
21082103 ctx = OpenSSL ::SSL ::SSLContext . new
2109- ctx . ecdh_curves = "P-521:P-384"
2104+ ctx . groups = "P-521:P-384"
21102105 server_connect ( port , ctx ) { |ssl |
21112106 assert_equal "secp521r1" , ssl . tmp_key . group . curve_name
21122107 ssl . puts "abc" ; assert_equal "abc\n " , ssl . gets
21132108 }
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+ }
21142116 end
21152117 end
21162118
2117- def test_ecdh_curves_tls13
2119+ def test_set_groups_tls13
21182120 ctx_proc = -> ctx {
21192121 # 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"
21212123 }
21222124 start_server ( ctx_proc : ctx_proc , ignore_listener_error : true ) do |port |
21232125 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
21252127
21262128 server_connect ( port , ctx ) { |ssl |
21272129 assert_equal "TLSv1.3" , ssl . ssl_version
0 commit comments