Skip to content

Commit 2eaf3d9

Browse files
committed
WIP: Debug usage of NSA vectors for NoDigestInfo tests
1 parent ba25128 commit 2eaf3d9

File tree

1 file changed

+50
-26
lines changed

1 file changed

+50
-26
lines changed

tests/hazmat/primitives/test_rsa.py

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
)
5252
from .utils import (
5353
_check_rsa_private_numbers,
54-
compute_rsa_hash_digest,
54+
# compute_rsa_hash_digest,
5555
generate_rsa_verification_test,
5656
generate_rsa_verification_without_digest_test,
5757
skip_fips_traditional_openssl,
@@ -452,40 +452,64 @@ 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:
467467
with subtests.test():
468+
# TODO Why those not match?
469+
# p, q = rsa.rsa_recover_prime_factors(
470+
# params["modulus"],
471+
# params["public_exponent"],
472+
# params["private_exponent"],
473+
# )
474+
# assert p == params["p"]
475+
# assert q == params["q"]
476+
477+
dmp1 = rsa.rsa_crt_dmp1(
478+
params["private_exponent"], params["p"]
479+
)
480+
dmq1 = rsa.rsa_crt_dmq1(
481+
params["private_exponent"], params["q"]
482+
)
483+
iqmp = rsa.rsa_crt_iqmp(params["p"], params["q"])
484+
468485
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"],
486+
p=params["p"],
487+
q=params["q"],
488+
d=params["private_exponent"],
489+
dmp1=dmp1,
490+
dmq1=dmq1,
491+
iqmp=iqmp,
475492
public_numbers=rsa.RSAPublicNumbers(
476-
e=private["public_exponent"], n=private["modulus"]
493+
e=params["public_exponent"], n=params["modulus"]
477494
),
478495
).private_key(backend, unsafe_skip_rsa_key_validation=True)
496+
# signature = private_key.sign(
497+
# binascii.unhexlify(
498+
# compute_rsa_hash_digest(
499+
# backend, hashes.SHA256(), params["msg"]
500+
# )
501+
# ),
502+
# padding.PKCS1v15(),
503+
# asym_utils.NoDigestInfo(),
504+
# )
505+
506+
# TODO Why even this does not works?
479507
signature = private_key.sign(
480-
binascii.unhexlify(
481-
compute_rsa_hash_digest(
482-
backend, hashes.SHA1(), example["message"]
483-
)
484-
),
508+
binascii.unhexlify(params["msg"]),
485509
padding.PKCS1v15(),
486-
asym_utils.NoDigestInfo(),
510+
hashes.SHA256(),
487511
)
488-
assert binascii.hexlify(signature) == example["signature"]
512+
assert binascii.hexlify(signature) == params["s"]
489513

490514
@pytest.mark.supported(
491515
only_if=lambda backend: backend.rsa_padding_supported(
@@ -1567,12 +1591,12 @@ class TestRSAPKCS1Verification:
15671591
)
15681592
)
15691593

1570-
test_rsa_pkcs1v15_verify_sha1_without_digest = pytest.mark.supported(
1594+
test_rsa_pkcs1v15_verify_sha256_without_digest = pytest.mark.supported(
15711595
only_if=lambda backend: (
1572-
backend.signature_hash_supported(hashes.SHA1())
1596+
backend.signature_hash_supported(hashes.SHA256())
15731597
and backend.rsa_padding_supported(padding.PKCS1v15())
15741598
),
1575-
skip_message="Does not support SHA1 and PKCS1v1.5.",
1599+
skip_message="Does not support SHA256 and PKCS1v1.5.",
15761600
)(
15771601
generate_rsa_verification_without_digest_test(
15781602
load_rsa_nist_vectors,

0 commit comments

Comments
 (0)