diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/hazmat/backends/test_multibackend.py | 6 | ||||
| -rw-r--r-- | tests/test_x509.py | 71 | 
2 files changed, 77 insertions, 0 deletions
| diff --git a/tests/hazmat/backends/test_multibackend.py b/tests/hazmat/backends/test_multibackend.py index 5a8891c4..40305387 100644 --- a/tests/hazmat/backends/test_multibackend.py +++ b/tests/hazmat/backends/test_multibackend.py @@ -197,6 +197,9 @@ class DummyX509Backend(object):      def load_der_x509_certificate(self, data):          pass +    def load_pem_x509_csr(self, data): +        pass +  class TestMultiBackend(object):      def test_ciphers(self): @@ -472,9 +475,12 @@ class TestMultiBackend(object):          backend.load_pem_x509_certificate(b"certdata")          backend.load_der_x509_certificate(b"certdata") +        backend.load_pem_x509_csr(b"reqdata")          backend = MultiBackend([])          with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_X509):              backend.load_pem_x509_certificate(b"certdata")          with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_X509):              backend.load_der_x509_certificate(b"certdata") +        with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_X509): +            backend.load_pem_x509_csr(b"reqdata") diff --git a/tests/test_x509.py b/tests/test_x509.py index 2a472686..22b93f61 100644 --- a/tests/test_x509.py +++ b/tests/test_x509.py @@ -340,6 +340,38 @@ class TestRSACertificate(object):          with pytest.raises(UnsupportedAlgorithm):              cert.signature_hash_algorithm +    def test_load_rsa_certificate_request(self, backend): +        request = _load_cert( +            os.path.join("x509", "requests", "rsa_sha1.pem"), +            x509.load_pem_x509_csr, +            backend +        ) +        assert isinstance(request.signature_hash_algorithm, hashes.SHA1) +        public_key = request.public_key() +        assert isinstance(public_key, rsa.RSAPublicKey) +        subject = request.subject +        assert isinstance(subject, x509.Name) +        assert list(subject) == [ +            x509.NameAttribute(x509.OID_COUNTRY_NAME, 'US'), +            x509.NameAttribute(x509.OID_STATE_OR_PROVINCE_NAME, 'Texas'), +            x509.NameAttribute(x509.OID_LOCALITY_NAME, 'Austin'), +            x509.NameAttribute(x509.OID_ORGANIZATION_NAME, 'PyCA'), +            x509.NameAttribute(x509.OID_COMMON_NAME, 'cryptography.io'), +        ] + +    def test_invalid_certificate_request_pem(self, backend): +        with pytest.raises(ValueError): +            x509.load_pem_x509_csr(b"notacsr", backend) + +    def test_unsupported_signature_hash_algorithm_request(self, backend): +        request = _load_cert( +            os.path.join("x509", "requests", "rsa_md4.pem"), +            x509.load_pem_x509_csr, +            backend +        ) +        with pytest.raises(UnsupportedAlgorithm): +            request.signature_hash_algorithm +  @pytest.mark.requires_backend_interface(interface=DSABackend)  @pytest.mark.requires_backend_interface(interface=X509Backend) @@ -392,6 +424,25 @@ class TestDSACertificate(object):                  "822ff5d234e073b901cf5941f58e1f538e71d40d", 16              ) +    def test_load_dsa_request(self, backend): +        request = _load_cert( +            os.path.join("x509", "requests", "dsa_sha1.pem"), +            x509.load_pem_x509_csr, +            backend +        ) +        assert isinstance(request.signature_hash_algorithm, hashes.SHA1) +        public_key = request.public_key() +        assert isinstance(public_key, dsa.DSAPublicKey) +        subject = request.subject +        assert isinstance(subject, x509.Name) +        assert list(subject) == [ +            x509.NameAttribute(x509.OID_COMMON_NAME, 'cryptography.io'), +            x509.NameAttribute(x509.OID_ORGANIZATION_NAME, 'PyCA'), +            x509.NameAttribute(x509.OID_COUNTRY_NAME, 'US'), +            x509.NameAttribute(x509.OID_STATE_OR_PROVINCE_NAME, 'Texas'), +            x509.NameAttribute(x509.OID_LOCALITY_NAME, 'Austin'), +        ] +  @pytest.mark.requires_backend_interface(interface=EllipticCurveBackend)  @pytest.mark.requires_backend_interface(interface=X509Backend) @@ -428,6 +479,26 @@ class TestECDSACertificate(object):          with pytest.raises(NotImplementedError):              cert.public_key() +    def test_load_ecdsa_certificate_request(self, backend): +        _skip_curve_unsupported(backend, ec.SECP384R1()) +        request = _load_cert( +            os.path.join("x509", "requests", "ec_sha256.pem"), +            x509.load_pem_x509_csr, +            backend +        ) +        assert isinstance(request.signature_hash_algorithm, hashes.SHA256) +        public_key = request.public_key() +        assert isinstance(public_key, ec.EllipticCurvePublicKey) +        subject = request.subject +        assert isinstance(subject, x509.Name) +        assert list(subject) == [ +            x509.NameAttribute(x509.OID_COMMON_NAME, 'cryptography.io'), +            x509.NameAttribute(x509.OID_ORGANIZATION_NAME, 'PyCA'), +            x509.NameAttribute(x509.OID_COUNTRY_NAME, 'US'), +            x509.NameAttribute(x509.OID_STATE_OR_PROVINCE_NAME, 'Texas'), +            x509.NameAttribute(x509.OID_LOCALITY_NAME, 'Austin'), +        ] +  class TestNameAttribute(object):      def test_init_bad_oid(self): | 
