From 45ed1b34d3e4a149b4e95cf70b64a238da295888 Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Sat, 17 Aug 2024 15:20:25 -0400 Subject: [PATCH 1/2] Remove unnecessary test dependencies on RSA-512 test_unsupported_hash and test_prehashed_digest_mismatch work just fine with realistic RSA key sizes. (They also, as written, silently test nothing when the backend rejects RSA-512. As a reminder, RSA-512 was broken since 1999.) test_rsa_fips_small_key wants a small key, but I assume RSA-1024 is fine. --- tests/hazmat/primitives/test_rsa.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py index ddd1dad5c41f..a1e633aa5ca8 100644 --- a/tests/hazmat/primitives/test_rsa.py +++ b/tests/hazmat/primitives/test_rsa.py @@ -821,8 +821,8 @@ def test_prehashed_digest_length( ), skip_message="Does not support PSS.", ) - def test_unsupported_hash(self, rsa_key_512: rsa.RSAPrivateKey, backend): - private_key = rsa_key_512 + def test_unsupported_hash(self, rsa_key_2048: rsa.RSAPrivateKey, backend): + private_key = rsa_key_2048 message = b"one little message" pss = padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=0) with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_HASH): @@ -850,9 +850,9 @@ def test_unsupported_hash_pss_mgf1(self, rsa_key_2048: rsa.RSAPrivateKey): skip_message="Does not support PSS.", ) def test_prehashed_digest_mismatch( - self, rsa_key_512: rsa.RSAPrivateKey, backend + self, rsa_key_2048: rsa.RSAPrivateKey, backend ): - private_key = rsa_key_512 + private_key = rsa_key_2048 message = b"one little message" h = hashes.Hash(hashes.SHA512(), backend) h.update(message) @@ -2136,9 +2136,12 @@ def test_rsa_encrypt_key_too_small(self, key_data, pad, backend): only_if=lambda backend: backend._fips_enabled, skip_message="Requires FIPS", ) - def test_rsa_fips_small_key(self, rsa_key_512: rsa.RSAPrivateKey, backend): + def test_rsa_fips_small_key(self, backend): + rsa_key_1024 = RSA_KEY_1024.private_key( + backend, unsafe_skip_rsa_key_validation=True + ) with pytest.raises(ValueError): - rsa_key_512.sign(b"somedata", padding.PKCS1v15(), hashes.SHA512()) + rsa_key_1024.sign(b"somedata", padding.PKCS1v15(), hashes.SHA512()) def test_unsupported_padding( self, rsa_key_2048: rsa.RSAPrivateKey, backend From bbdc241baaf73998a017840140a187108898625e Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Sat, 17 Aug 2024 15:39:39 -0400 Subject: [PATCH 2/2] Keep using RSA-512 for test_rsa_fips_small_key as a RHEL-8 accommodation --- tests/hazmat/primitives/test_rsa.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py index a1e633aa5ca8..2f4783cd92fd 100644 --- a/tests/hazmat/primitives/test_rsa.py +++ b/tests/hazmat/primitives/test_rsa.py @@ -2136,12 +2136,11 @@ def test_rsa_encrypt_key_too_small(self, key_data, pad, backend): only_if=lambda backend: backend._fips_enabled, skip_message="Requires FIPS", ) - def test_rsa_fips_small_key(self, backend): - rsa_key_1024 = RSA_KEY_1024.private_key( - backend, unsafe_skip_rsa_key_validation=True - ) + def test_rsa_fips_small_key(self, rsa_key_512: rsa.RSAPrivateKey, backend): + # Ideally this would use a larger disallowed key like RSA-1024, but + # RHEL-8 thinks that RSA-1024 is allowed by FIPS. with pytest.raises(ValueError): - rsa_key_1024.sign(b"somedata", padding.PKCS1v15(), hashes.SHA512()) + rsa_key_512.sign(b"somedata", padding.PKCS1v15(), hashes.SHA512()) def test_unsupported_padding( self, rsa_key_2048: rsa.RSAPrivateKey, backend