aboutsummaryrefslogtreecommitdiffstats
path: root/tests/hazmat/primitives/test_rsa.py
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2015-03-10 18:37:28 -0400
committerAlex Gaynor <alex.gaynor@gmail.com>2015-03-10 18:37:28 -0400
commitb9287cac82a06fde4e474d88ee1989efd7144dff (patch)
tree1f6b2cdb7c0501ee8a9810b118fadf11f4bdb4b8 /tests/hazmat/primitives/test_rsa.py
parenta66cb11b6abdd5a77f09c7bf8adbd424c701bb2b (diff)
parenta2c48659274fb25a07fbffca3a74d11c6a49f131 (diff)
downloadcryptography-b9287cac82a06fde4e474d88ee1989efd7144dff.tar.gz
cryptography-b9287cac82a06fde4e474d88ee1989efd7144dff.tar.bz2
cryptography-b9287cac82a06fde4e474d88ee1989efd7144dff.zip
Merge pull request #1741 from reaperhulk/serialize-der-public-keys
support DER serialization of public keys
Diffstat (limited to 'tests/hazmat/primitives/test_rsa.py')
-rw-r--r--tests/hazmat/primitives/test_rsa.py56
1 files changed, 35 insertions, 21 deletions
diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py
index d79d9320..ab7cc3ad 100644
--- a/tests/hazmat/primitives/test_rsa.py
+++ b/tests/hazmat/primitives/test_rsa.py
@@ -1865,30 +1865,44 @@ class TestRSAPEMPrivateKeySerialization(object):
@pytest.mark.requires_backend_interface(interface=RSABackend)
@pytest.mark.requires_backend_interface(interface=PEMSerializationBackend)
class TestRSAPEMPublicKeySerialization(object):
- def test_public_bytes_unencrypted_pem(self, backend):
- key_bytes = load_vectors_from_file(
- os.path.join("asymmetric", "PKCS8", "unenc-rsa-pkcs8.pub.pem"),
- lambda pemfile: pemfile.read().encode()
- )
- key = serialization.load_pem_public_key(key_bytes, backend)
- _skip_if_no_serialization(key, backend)
- serialized = key.public_bytes(
- serialization.Encoding.PEM,
- serialization.PublicFormat.SubjectPublicKeyInfo,
- )
- assert serialized == key_bytes
-
- def test_public_bytes_pkcs1_unencrypted_pem(self, backend):
+ @pytest.mark.parametrize(
+ ("key_path", "loader_func", "encoding", "format"),
+ [
+ (
+ os.path.join("asymmetric", "public", "PKCS1", "rsa.pub.pem"),
+ serialization.load_pem_public_key,
+ serialization.Encoding.PEM,
+ serialization.PublicFormat.PKCS1,
+ ), (
+ os.path.join("asymmetric", "public", "PKCS1", "rsa.pub.der"),
+ serialization.load_der_public_key,
+ serialization.Encoding.DER,
+ serialization.PublicFormat.PKCS1,
+ ), (
+ os.path.join("asymmetric", "PKCS8", "unenc-rsa-pkcs8.pub.pem"),
+ serialization.load_pem_public_key,
+ serialization.Encoding.PEM,
+ serialization.PublicFormat.SubjectPublicKeyInfo,
+ ), (
+ os.path.join(
+ "asymmetric",
+ "DER_Serialization",
+ "unenc-rsa-pkcs8.pub.der"
+ ),
+ serialization.load_der_public_key,
+ serialization.Encoding.DER,
+ serialization.PublicFormat.SubjectPublicKeyInfo,
+ )
+ ]
+ )
+ def test_public_bytes_match(self, key_path, loader_func, encoding, format,
+ backend):
key_bytes = load_vectors_from_file(
- os.path.join("asymmetric", "public", "PKCS1", "rsa.pub.pem"),
- lambda pemfile: pemfile.read().encode()
+ key_path, lambda pemfile: pemfile.read(), mode="rb"
)
- key = serialization.load_pem_public_key(key_bytes, backend)
+ key = loader_func(key_bytes, backend)
_skip_if_no_serialization(key, backend)
- serialized = key.public_bytes(
- serialization.Encoding.PEM,
- serialization.PublicFormat.PKCS1,
- )
+ serialized = key.public_bytes(encoding, format)
assert serialized == key_bytes
def test_public_bytes_invalid_encoding(self, backend):