diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_x509.py | 89 | 
1 files changed, 89 insertions, 0 deletions
diff --git a/tests/test_x509.py b/tests/test_x509.py index ba35f64d..668a3bad 100644 --- a/tests/test_x509.py +++ b/tests/test_x509.py @@ -1119,6 +1119,95 @@ class TestCertificateBuilder(object):          with pytest.raises(ValueError):              builder.sign(issuer_private_key, hashes.SHA512(), backend) +    @pytest.mark.requires_backend_interface(interface=RSABackend) +    @pytest.mark.requires_backend_interface(interface=X509Backend) +    def test_extended_key_usage(self, backend): +        issuer_private_key = RSA_KEY_2048.private_key(backend) +        subject_private_key = RSA_KEY_2048.private_key(backend) + +        not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) +        not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) + +        cert = x509.CertificateBuilder().subject_name( +            x509.Name([x509.NameAttribute(x509.OID_COUNTRY_NAME, u'US')]) +        ).issuer_name( +            x509.Name([x509.NameAttribute(x509.OID_COUNTRY_NAME, u'US')]) +        ).not_valid_before( +            not_valid_before +        ).not_valid_after( +            not_valid_after +        ).public_key( +            subject_private_key.public_key() +        ).serial_number( +            123 +        ).add_extension( +            x509.ExtendedKeyUsage([ +                x509.OID_CLIENT_AUTH, +                x509.OID_SERVER_AUTH, +                x509.OID_CODE_SIGNING, +            ]), critical=False +        ).sign(issuer_private_key, hashes.SHA256(), backend) + +        eku = cert.extensions.get_extension_for_oid( +            x509.OID_EXTENDED_KEY_USAGE +        ) +        assert eku.critical is False +        assert eku.value == x509.ExtendedKeyUsage([ +            x509.OID_CLIENT_AUTH, +            x509.OID_SERVER_AUTH, +            x509.OID_CODE_SIGNING, +        ]) + +    @pytest.mark.requires_backend_interface(interface=RSABackend) +    @pytest.mark.requires_backend_interface(interface=X509Backend) +    def test_key_usage(self, backend): +        issuer_private_key = RSA_KEY_2048.private_key(backend) +        subject_private_key = RSA_KEY_2048.private_key(backend) + +        not_valid_before = datetime.datetime(2002, 1, 1, 12, 1) +        not_valid_after = datetime.datetime(2030, 12, 31, 8, 30) + +        cert = x509.CertificateBuilder().subject_name( +            x509.Name([x509.NameAttribute(x509.OID_COUNTRY_NAME, u'US')]) +        ).issuer_name( +            x509.Name([x509.NameAttribute(x509.OID_COUNTRY_NAME, u'US')]) +        ).not_valid_before( +            not_valid_before +        ).not_valid_after( +            not_valid_after +        ).public_key( +            subject_private_key.public_key() +        ).serial_number( +            123 +        ).add_extension( +            x509.KeyUsage( +                digital_signature=True, +                content_commitment=True, +                key_encipherment=False, +                data_encipherment=False, +                key_agreement=False, +                key_cert_sign=True, +                crl_sign=False, +                encipher_only=False, +                decipher_only=False +            ), +            critical=False +        ).sign(issuer_private_key, hashes.SHA256(), backend) + +        ext = cert.extensions.get_extension_for_oid(x509.OID_KEY_USAGE) +        assert ext.critical is False +        assert ext.value == x509.KeyUsage( +            digital_signature=True, +            content_commitment=True, +            key_encipherment=False, +            data_encipherment=False, +            key_agreement=False, +            key_cert_sign=True, +            crl_sign=False, +            encipher_only=False, +            decipher_only=False +        ) +  @pytest.mark.requires_backend_interface(interface=X509Backend)  class TestCertificateSigningRequestBuilder(object):  | 
