aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2014-03-29 12:27:46 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2014-04-20 16:53:02 -0500
commit16b953a22abf2092f6d428f04141f3e5c9513ce9 (patch)
treed7a3b1c5976c9287614d1c4b305ad05361dc5f9d /tests
parent8f70f8c94739b0fe9719fc8c1a21f2bcf07a6e13 (diff)
downloadcryptography-16b953a22abf2092f6d428f04141f3e5c9513ce9.tar.gz
cryptography-16b953a22abf2092f6d428f04141f3e5c9513ce9.tar.bz2
cryptography-16b953a22abf2092f6d428f04141f3e5c9513ce9.zip
prelim OAEP and PKCS1v15 for openssl 1.0.0+ and 0.9.8. decryption only
Diffstat (limited to 'tests')
-rw-r--r--tests/hazmat/primitives/test_rsa.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py
index 84d0f805..70ae20dc 100644
--- a/tests/hazmat/primitives/test_rsa.py
+++ b/tests/hazmat/primitives/test_rsa.py
@@ -1225,3 +1225,66 @@ class TestMGF1(object):
mgf = padding.MGF1(algorithm, padding.MGF1.MAX_LENGTH)
assert mgf._algorithm == algorithm
assert mgf._salt_length == padding.MGF1.MAX_LENGTH
+
+
+@pytest.mark.rsa
+class TestRSADecryption(object):
+ @pytest.mark.parametrize(
+ "vector",
+ _flatten_pkcs1_examples(load_vectors_from_file(
+ os.path.join(
+ "asymmetric", "RSA", "pkcs-1v2-1d2-vec", "oaep-vect.txt"),
+ load_pkcs1_vectors
+ ))
+ )
+ def test_decrypt_oaep_vectors(self, vector, backend):
+ private, public, example = vector
+ skey = rsa.RSAPrivateKey(
+ p=private["p"],
+ q=private["q"],
+ private_exponent=private["private_exponent"],
+ dmp1=private["dmp1"],
+ dmq1=private["dmq1"],
+ iqmp=private["iqmp"],
+ public_exponent=private["public_exponent"],
+ modulus=private["modulus"]
+ )
+ message = backend.rsa_decrypt(
+ skey,
+ binascii.unhexlify(example["encryption"]),
+ # TODO: handle MGF1 here
+ padding.OAEP(
+ padding.MGF1(
+ algorithm=hashes.SHA1(),
+ salt_length=padding.MGF1.MAX_LENGTH
+ )
+ )
+ )
+ assert message == binascii.unhexlify(example["message"])
+
+ @pytest.mark.parametrize(
+ "vector",
+ _flatten_pkcs1_examples(load_vectors_from_file(
+ os.path.join(
+ "asymmetric", "RSA", "pkcs1v15crypt-vectors.txt"),
+ load_pkcs1_vectors
+ ))
+ )
+ def test_decrypt_pkcs1v15_vectors(self, vector, backend):
+ private, public, example = vector
+ skey = rsa.RSAPrivateKey(
+ p=private["p"],
+ q=private["q"],
+ private_exponent=private["private_exponent"],
+ dmp1=private["dmp1"],
+ dmq1=private["dmq1"],
+ iqmp=private["iqmp"],
+ public_exponent=private["public_exponent"],
+ modulus=private["modulus"]
+ )
+ message = backend.rsa_decrypt(
+ skey,
+ binascii.unhexlify(example["encryption"]),
+ padding.PKCS1v15()
+ )
+ assert message == binascii.unhexlify(example["message"])