Skip to content

Commit e47bf81

Browse files
committed
Use NSA vectors (with SHA256) for NoDigestInfo tests
Instead of relying on outdated vectors that uses SHA1
1 parent ba25128 commit e47bf81

File tree

1 file changed

+30
-20
lines changed

1 file changed

+30
-20
lines changed

tests/hazmat/primitives/test_rsa.py

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -452,40 +452,50 @@ def test_pkcs1v15_signing(self, backend, subtests):
452452
)
453453
@pytest.mark.supported(
454454
only_if=lambda backend: backend.signature_hash_supported(
455-
hashes.SHA1()
455+
hashes.SHA256()
456456
),
457-
skip_message="Does not support SHA1 signature.",
457+
skip_message="Does not support SHA256 signature.",
458458
)
459459
def test_pkcs1v15_signing_without_digest(self, backend, subtests):
460-
vectors = _flatten_pkcs1_examples(
461-
load_vectors_from_file(
462-
os.path.join("asymmetric", "RSA", "pkcs1v15sign-vectors.txt"),
463-
load_pkcs1_vectors,
464-
)
460+
vectors = load_vectors_from_file(
461+
os.path.join(
462+
"asymmetric", "RSA", "FIPS_186-2", "SigVer15_186-3.rsp"
463+
),
464+
load_rsa_nist_vectors,
465465
)
466-
for private, public, example in vectors:
466+
for params in vectors:
467+
if params["fail"] or params["algorithm"] != "SHA256":
468+
continue
467469
with subtests.test():
470+
dmp1 = rsa.rsa_crt_dmp1(
471+
params["private_exponent"], params["p"]
472+
)
473+
dmq1 = rsa.rsa_crt_dmq1(
474+
params["private_exponent"], params["q"]
475+
)
476+
iqmp = rsa.rsa_crt_iqmp(params["p"], params["q"])
477+
468478
private_key = rsa.RSAPrivateNumbers(
469-
p=private["p"],
470-
q=private["q"],
471-
d=private["private_exponent"],
472-
dmp1=private["dmp1"],
473-
dmq1=private["dmq1"],
474-
iqmp=private["iqmp"],
479+
p=params["p"],
480+
q=params["q"],
481+
d=params["private_exponent"],
482+
dmp1=dmp1,
483+
dmq1=dmq1,
484+
iqmp=iqmp,
475485
public_numbers=rsa.RSAPublicNumbers(
476-
e=private["public_exponent"], n=private["modulus"]
486+
e=params["public_exponent"], n=params["modulus"]
477487
),
478488
).private_key(backend, unsafe_skip_rsa_key_validation=True)
479489
signature = private_key.sign(
480490
binascii.unhexlify(
481491
compute_rsa_hash_digest(
482-
backend, hashes.SHA1(), example["message"]
492+
backend, hashes.SHA256(), params["msg"]
483493
)
484494
),
485495
padding.PKCS1v15(),
486496
asym_utils.NoDigestInfo(),
487497
)
488-
assert binascii.hexlify(signature) == example["signature"]
498+
assert binascii.hexlify(signature) == params["s"]
489499

490500
@pytest.mark.supported(
491501
only_if=lambda backend: backend.rsa_padding_supported(
@@ -1567,12 +1577,12 @@ class TestRSAPKCS1Verification:
15671577
)
15681578
)
15691579

1570-
test_rsa_pkcs1v15_verify_sha1_without_digest = pytest.mark.supported(
1580+
test_rsa_pkcs1v15_verify_sha256_without_digest = pytest.mark.supported(
15711581
only_if=lambda backend: (
1572-
backend.signature_hash_supported(hashes.SHA1())
1582+
backend.signature_hash_supported(hashes.SHA256())
15731583
and backend.rsa_padding_supported(padding.PKCS1v15())
15741584
),
1575-
skip_message="Does not support SHA1 and PKCS1v1.5.",
1585+
skip_message="Does not support SHA256 and PKCS1v1.5.",
15761586
)(
15771587
generate_rsa_verification_without_digest_test(
15781588
load_rsa_nist_vectors,

0 commit comments

Comments
 (0)