aboutsummaryrefslogtreecommitdiffstats
path: root/tests/hazmat/primitives/test_dsa.py
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2015-03-05 21:17:45 -0600
committerPaul Kehrer <paul.l.kehrer@gmail.com>2015-03-08 17:25:28 -0500
commita5515c7cdd535b0a2d09ac472c4bb4758491cf4e (patch)
treed432e69a52c41986a1d447bb7c19ffe9dfb34b60 /tests/hazmat/primitives/test_dsa.py
parent785cb422767cb7a99fa71d28e2e2e13b16f35c90 (diff)
downloadcryptography-a5515c7cdd535b0a2d09ac472c4bb4758491cf4e.tar.gz
cryptography-a5515c7cdd535b0a2d09ac472c4bb4758491cf4e.tar.bz2
cryptography-a5515c7cdd535b0a2d09ac472c4bb4758491cf4e.zip
DSA public key serialization
Diffstat (limited to 'tests/hazmat/primitives/test_dsa.py')
-rw-r--r--tests/hazmat/primitives/test_dsa.py45
1 files changed, 44 insertions, 1 deletions
diff --git a/tests/hazmat/primitives/test_dsa.py b/tests/hazmat/primitives/test_dsa.py
index 19ca0794..112818f4 100644
--- a/tests/hazmat/primitives/test_dsa.py
+++ b/tests/hazmat/primitives/test_dsa.py
@@ -31,7 +31,10 @@ from ...utils import (
def _skip_if_no_serialization(key, backend):
- if not isinstance(key, dsa.DSAPrivateKeyWithSerialization):
+ if not isinstance(
+ key,
+ (dsa.DSAPrivateKeyWithSerialization, dsa.DSAPublicKeyWithSerialization)
+ ):
pytest.skip(
"{0} does not support DSA key serialization".format(backend)
)
@@ -936,3 +939,43 @@ class TestDSASerialization(object):
serialization.PrivateFormat.TraditionalOpenSSL,
DummyKeyEncryption()
)
+
+
+@pytest.mark.requires_backend_interface(interface=DSABackend)
+@pytest.mark.requires_backend_interface(interface=PEMSerializationBackend)
+class TestDSAPEMPublicKeySerialization(object):
+ def test_public_bytes_unencrypted_pem(self, backend):
+ key_bytes = load_vectors_from_file(
+ os.path.join("asymmetric", "PKCS8", "unenc-dsa-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_invalid_encoding(self, backend):
+ key = DSA_KEY_2048.private_key(backend).public_key()
+ _skip_if_no_serialization(key, backend)
+ with pytest.raises(TypeError):
+ key.public_bytes(
+ "notencoding",
+ serialization.PublicFormat.SubjectPublicKeyInfo
+ )
+
+ def test_public_bytes_invalid_format(self, backend):
+ key = DSA_KEY_2048.private_key(backend).public_key()
+ _skip_if_no_serialization(key, backend)
+ with pytest.raises(TypeError):
+ key.public_bytes(serialization.Encoding.PEM, "invalidformat")
+
+ def test_public_bytes_pkcs1_unsupported(self, backend):
+ key = DSA_KEY_2048.private_key(backend).public_key()
+ _skip_if_no_serialization(key, backend)
+ with pytest.raises(ValueError):
+ key.public_bytes(
+ serialization.Encoding.PEM, serialization.PublicFormat.PKCS1
+ )