Skip to content

Commit d8911ce

Browse files
committed
fix AWS-LC compatibility
1 parent 8cc1861 commit d8911ce

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

Lib/test/test_ssl.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,13 @@
4848

4949
PROTOCOLS = sorted(ssl._PROTOCOL_NAMES)
5050
HOST = socket_helper.HOST
51+
IS_AWS_LC = "AWS-LC" in ssl.OPENSSL_VERSION
5152
IS_OPENSSL_3_0_0 = ssl.OPENSSL_VERSION_INFO >= (3, 0, 0)
5253
CAN_GET_SELECTED_OPENSSL_GROUP = ssl.OPENSSL_VERSION_INFO >= (3, 2)
5354
CAN_IGNORE_UNKNOWN_OPENSSL_GROUPS = ssl.OPENSSL_VERSION_INFO >= (3, 3)
5455
CAN_GET_AVAILABLE_OPENSSL_GROUPS = ssl.OPENSSL_VERSION_INFO >= (3, 5)
5556
CAN_GET_AVAILABLE_OPENSSL_SIGALGS = ssl.OPENSSL_VERSION_INFO >= (3, 4)
56-
CAN_SET_CLIENT_SIGALGS = "AWS-LC" not in ssl.OPENSSL_VERSION
57+
CAN_SET_CLIENT_SIGALGS = not IS_AWS_LC
5758
CAN_IGNORE_UNKNOWN_OPENSSL_SIGALGS = ssl.OPENSSL_VERSION_INFO >= (3, 3)
5859
CAN_GET_SELECTED_OPENSSL_SIGALG = ssl.OPENSSL_VERSION_INFO >= (3, 5)
5960
PY_SSL_DEFAULT_CIPHERS = sysconfig.get_config_var('PY_SSL_DEFAULT_CIPHERS')
@@ -1579,10 +1580,18 @@ def sni_callback(sock, servername, ctx): pass
15791580
# Try to continue the server's handshake by directly using
15801581
# the internal SSL object. The latter is a weak reference
15811582
# stored in the server context and has now a dead owner.
1582-
with self.assertRaisesRegex(ssl.SSLError, "callback failed") as cm:
1583+
with self.assertRaises(ssl.SSLError) as cm:
15831584
server_impl.do_handshake()
15841585
# The SNI C callback raised an exception before calling our callback.
15851586
sni_callback.assert_not_called()
1587+
1588+
# In AWS-LC, any handshake failures reports SSL_R_PARSE_TLSEXT,
1589+
# while OpenSSL uses SSL_R_CALLBACK_FAILED on SNI callback failures.
1590+
if IS_AWS_LC:
1591+
libssl_error_reason = "PARSE_TLSEXT"
1592+
else:
1593+
libssl_error_reason = "callback failed"
1594+
self.assertIn(libssl_error_reason, str(cm.exception))
15861595
self.assertEqual(cm.exception.errno, ssl.SSL_ERROR_SSL)
15871596

15881597
def test_sni_callback_refcycle(self):

0 commit comments

Comments
 (0)