4848PROTOCOLS = sorted (ssl ._PROTOCOL_NAMES )
4949HOST = socket_helper .HOST
5050IS_OPENSSL_3_0_0 = ssl .OPENSSL_VERSION_INFO >= (3 , 0 , 0 )
51+ CAN_GET_SELECTED_OPENSSL_GROUP = ssl .OPENSSL_VERSION_INFO >= (3 , 2 )
52+ CAN_GET_AVAILABLE_OPENSSL_GROUPS = ssl .OPENSSL_VERSION_INFO >= (3 , 5 )
5153PY_SSL_DEFAULT_CIPHERS = sysconfig .get_config_var ('PY_SSL_DEFAULT_CIPHERS' )
5254
5355PROTOCOL_TO_TLS_VERSION = {}
@@ -960,14 +962,25 @@ def test_get_ciphers(self):
960962 len (intersection ), 2 , f"\n got: { sorted (names )} \n expected: { sorted (expected )} "
961963 )
962964
963- def test_groups (self ):
965+ def test_set_groups (self ):
964966 ctx = ssl .create_default_context ()
965- self .assertIsNone (ctx .set_groups ('P-256' ))
967+
968+ # Test valid group list
966969 self .assertIsNone (ctx .set_groups ('P-256:X25519' ))
967970
968- if ssl .OPENSSL_VERSION_INFO >= (3 , 5 ):
969- self .assertNotIn ('P-256' , ctx .get_groups ())
970- self .assertIn ('P-256' , ctx .get_groups (include_aliases = True ))
971+ # Test invalid group list
972+ self .assertRaises (ssl .SSLError , ctx .set_groups , 'P-256:xxx' )
973+
974+ @unittest .skipUnless (CAN_GET_AVAILABLE_OPENSSL_GROUPS ,
975+ "OpenSSL version doesn't support getting groups" )
976+ def test_get_groups (self ):
977+ ctx = ssl .create_default_context ()
978+
979+ # P-256 isn't an IANA name, so it shouldn't be returned by default
980+ self .assertNotIn ('P-256' , ctx .get_groups ())
981+
982+ # Aliases like P-256 sbould be returned when include_aliases is set
983+ self .assertIn ('P-256' , ctx .get_groups (include_aliases = True ))
971984
972985 def test_options (self ):
973986 # Test default SSLContext options
@@ -2710,7 +2723,7 @@ def server_params_test(client_context, server_context, indata=b"FOO\n",
27102723 'session_reused' : s .session_reused ,
27112724 'session' : s .session ,
27122725 })
2713- if ssl . OPENSSL_VERSION_INFO >= ( 3 , 2 ) :
2726+ if CAN_GET_SELECTED_OPENSSL_GROUP :
27142727 stats .update ({'group' : s .group ()})
27152728 s .close ()
27162729 stats ['server_alpn_protocols' ] = server .selected_alpn_protocols
@@ -4146,7 +4159,7 @@ def test_groups(self):
41464159 stats = server_params_test (client_context , server_context ,
41474160 chatty = True , connectionchatty = True ,
41484161 sni_name = hostname )
4149- if ssl . OPENSSL_VERSION_INFO >= ( 3 , 2 ) :
4162+ if CAN_GET_SELECTED_OPENSSL_GROUP :
41504163 self .assertEqual (stats ['group' ], "secp384r1" )
41514164
41524165 # server auto, client secp384r1
@@ -4156,7 +4169,7 @@ def test_groups(self):
41564169 stats = server_params_test (client_context , server_context ,
41574170 chatty = True , connectionchatty = True ,
41584171 sni_name = hostname )
4159- if ssl . OPENSSL_VERSION_INFO >= ( 3 , 2 ) :
4172+ if CAN_GET_SELECTED_OPENSSL_GROUP :
41604173 self .assertEqual (stats ['group' ], "secp384r1" )
41614174
41624175 # server / client curve mismatch
0 commit comments