Skip to content

Commit 2b336ed

Browse files
committed
Attempt to fix missing support for setting client sigalgs in AWS-LC
1 parent c045a2c commit 2b336ed

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

Lib/test/test_ssl.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
CAN_GET_SELECTED_OPENSSL_GROUP = ssl.OPENSSL_VERSION_INFO >= (3, 2)
5252
CAN_IGNORE_UNKNOWN_OPENSSL_GROUPS = ssl.OPENSSL_VERSION_INFO >= (3, 3)
5353
CAN_GET_AVAILABLE_OPENSSL_GROUPS = ssl.OPENSSL_VERSION_INFO >= (3, 5)
54+
CAN_SET_CLIENT_SIGALGS = "AWS-LC" not in ssl.OPENSSL_VERSION
5455
CAN_IGNORE_UNKNOWN_OPENSSL_SIGALGS = ssl.OPENSSL_VERSION_INFO >= (3, 3)
5556
CAN_GET_SELECTED_OPENSSL_SIGALG = ssl.OPENSSL_VERSION_INFO >= (3, 5)
5657
PY_SSL_DEFAULT_CIPHERS = sysconfig.get_config_var('PY_SSL_DEFAULT_CIPHERS')
@@ -997,20 +998,30 @@ def test_get_groups(self):
997998
self.assertNotIn('P-256', ctx.get_groups())
998999
self.assertIn('P-256', ctx.get_groups(include_aliases=True))
9991000

1000-
def test_set_sigalgs(self):
1001+
@unittest.skipUnless(CAN_SET_CLIENT_SIGALGS,
1002+
"AWS-LC doesn't support setting client sigalgs")
1003+
def test_set_client_sigalgs(self):
10011004
ctx = ssl.create_default_context()
10021005

10031006
self.assertIsNone(ctx.set_client_sigalgs('rsa_pss_rsae_sha256'))
1004-
self.assertIsNone(ctx.set_server_sigalgs('rsa_pss_rsae_sha256'))
10051007

10061008
self.assertRaises(ssl.SSLError, ctx.set_client_sigalgs,
10071009
'rsa_pss_rsae_sha256:foo')
1010+
1011+
# Ignoring unknown sigalgs is only supported since OpenSSL 3.3.
1012+
if CAN_IGNORE_UNKNOWN_OPENSSL_SIGALGS:
1013+
self.assertIsNone(ctx.set_client_sigalgs('rsa_pss_rsae_sha256:?foo'))
1014+
1015+
def test_set_server_sigalgs(self):
1016+
ctx = ssl.create_default_context()
1017+
1018+
self.assertIsNone(ctx.set_server_sigalgs('rsa_pss_rsae_sha256'))
1019+
10081020
self.assertRaises(ssl.SSLError, ctx.set_server_sigalgs,
10091021
'rsa_pss_rsae_sha256:foo')
10101022

10111023
# Ignoring unknown sigalgs is only supported since OpenSSL 3.3.
10121024
if CAN_IGNORE_UNKNOWN_OPENSSL_SIGALGS:
1013-
self.assertIsNone(ctx.set_client_sigalgs('rsa_pss_rsae_sha256:?foo'))
10141025
self.assertIsNone(ctx.set_server_sigalgs('rsa_pss_rsae_sha256:?foo'))
10151026

10161027
def test_options(self):

Modules/_ssl.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3839,11 +3839,16 @@ _ssl__SSLContext_set_client_sigalgs_impl(PySSLContext *self,
38393839
const char *sigalgslist)
38403840
/*[clinic end generated code: output=f4f5be160a29c7d6 input=500d853ce9fd94ff]*/
38413841
{
3842+
#ifdef OPENSSL_IS_AWSLC
3843+
_setSSLError(get_state_ctx(self), "can't set client sigalgs on AWS-LC", 0, __FILE__, __LINE__);
3844+
return NULL;
3845+
#else
38423846
if (!SSL_CTX_set1_client_sigalgs_list(self->ctx, sigalgslist)) {
38433847
_setSSLError(get_state_ctx(self), "unrecognized signature algorithm", 0, __FILE__, __LINE__);
38443848
return NULL;
38453849
}
38463850
Py_RETURN_NONE;
3851+
#endif
38473852
}
38483853

38493854
/*[clinic input]

0 commit comments

Comments
 (0)