diff --git a/src/cryptography/hazmat/primitives/asymmetric/types.py b/src/cryptography/hazmat/primitives/asymmetric/types.py
--- a/src/cryptography/hazmat/primitives/asymmetric/types.py
+++ b/src/cryptography/hazmat/primitives/asymmetric/types.py
@@ -10,6 +10,8 @@
     ed25519,
     ed448,
     rsa,
+    x25519,
+    x448,
 )
 
 
@@ -27,3 +29,12 @@
     dsa.DSAPrivateKey,
     ec.EllipticCurvePrivateKey,
 ]
+CERTIFICATE_PUBLIC_KEY_TYPES = typing.Union[
+    dsa.DSAPublicKey,
+    rsa.RSAPublicKey,
+    ec.EllipticCurvePublicKey,
+    ed25519.Ed25519PublicKey,
+    ed448.Ed448PublicKey,
+    x25519.X25519PublicKey,
+    x448.X448PublicKey,
+]
diff --git a/src/cryptography/x509/base.py b/src/cryptography/x509/base.py
--- a/src/cryptography/x509/base.py
+++ b/src/cryptography/x509/base.py
@@ -17,8 +17,11 @@
     ed25519,
     ed448,
     rsa,
+    x25519,
+    x448,
 )
 from cryptography.hazmat.primitives.asymmetric.types import (
+    CERTIFICATE_PUBLIC_KEY_TYPES,
     PRIVATE_KEY_TYPES as PRIVATE_KEY_TYPES,
     PUBLIC_KEY_TYPES as PUBLIC_KEY_TYPES,
 )
@@ -101,7 +104,7 @@ def version(self) -> Version:
         """
 
     @abc.abstractmethod
-    def public_key(self) -> PUBLIC_KEY_TYPES:
+    def public_key(self) -> CERTIFICATE_PUBLIC_KEY_TYPES:
         """
         Returns the public key
         """
@@ -578,7 +581,7 @@ def __init__(
         self,
         issuer_name: typing.Optional[Name] = None,
         subject_name: typing.Optional[Name] = None,
-        public_key: typing.Optional[PUBLIC_KEY_TYPES] = None,
+        public_key: typing.Optional[CERTIFICATE_PUBLIC_KEY_TYPES] = None,
         serial_number: typing.Optional[int] = None,
         not_valid_before: typing.Optional[datetime.datetime] = None,
         not_valid_after: typing.Optional[datetime.datetime] = None,
@@ -631,7 +634,7 @@ def subject_name(self, name: Name) -> "CertificateBuilder":
 
     def public_key(
         self,
-        key: PUBLIC_KEY_TYPES,
+        key: CERTIFICATE_PUBLIC_KEY_TYPES,
     ) -> "CertificateBuilder":
         """
         Sets the requestor's public key (as found in the signing request).
@@ -644,12 +647,15 @@ def public_key(
                 ec.EllipticCurvePublicKey,
                 ed25519.Ed25519PublicKey,
                 ed448.Ed448PublicKey,
+                x25519.X25519PublicKey,
+                x448.X448PublicKey,
             ),
         ):
             raise TypeError(
                 "Expecting one of DSAPublicKey, RSAPublicKey,"
-                " EllipticCurvePublicKey, Ed25519PublicKey or"
-                " Ed448PublicKey."
+                " EllipticCurvePublicKey, Ed25519PublicKey,"
+                " Ed448PublicKey, X25519PublicKey, or "
+                "X448PublicKey."
             )
         if self._public_key is not None:
             raise ValueError("The public key may only be set once.")

diff --git a/tests/x509/test_x509.py b/tests/x509/test_x509.py
--- a/tests/x509/test_x509.py
+++ b/tests/x509/test_x509.py
@@ -27,6 +27,8 @@
     ed448,
     padding,
     rsa,
+    x25519,
+    x448,
 )
 from cryptography.hazmat.primitives.asymmetric.utils import (
     decode_dss_signature,
@@ -2968,6 +2970,56 @@ def test_build_cert_with_public_ed448_rsa_sig(self, backend):
         assert isinstance(cert.signature_hash_algorithm, hashes.SHA256)
         assert isinstance(cert.public_key(), ed448.Ed448PublicKey)
 
+    @pytest.mark.supported(
+        only_if=lambda backend: (
+            backend.x25519_supported() and backend.x448_supported()
+        ),
+        skip_message="Requires OpenSSL with x25519 & x448 support",
+    )
+    @pytest.mark.parametrize(
+        ("priv_key_cls", "pub_key_cls"),
+        [
+            (x25519.X25519PrivateKey, x25519.X25519PublicKey),
+            (x448.X448PrivateKey, x448.X448PublicKey),
+        ],
+    )
+    def test_build_cert_with_public_x25519_x448_rsa_sig(
+        self, priv_key_cls, pub_key_cls, backend
+    ):
+        issuer_private_key = RSA_KEY_2048.private_key(backend)
+        subject_private_key = priv_key_cls.generate()
+
+        not_valid_before = datetime.datetime(2002, 1, 1, 12, 1)
+        not_valid_after = datetime.datetime(2030, 12, 31, 8, 30)
+
+        builder = (
+            x509.CertificateBuilder()
+            .serial_number(777)
+            .issuer_name(
+                x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")])
+            )
+            .subject_name(
+                x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")])
+            )
+            .public_key(subject_private_key.public_key())
+            .not_valid_before(not_valid_before)
+            .not_valid_after(not_valid_after)
+        )
+
+        cert = builder.sign(issuer_private_key, hashes.SHA256(), backend)
+        assert cert.signature_hash_algorithm is not None
+        issuer_private_key.public_key().verify(
+            cert.signature,
+            cert.tbs_certificate_bytes,
+            padding.PKCS1v15(),
+            cert.signature_hash_algorithm,
+        )
+        assert cert.signature_algorithm_oid == (
+            SignatureAlgorithmOID.RSA_WITH_SHA256
+        )
+        assert isinstance(cert.signature_hash_algorithm, hashes.SHA256)
+        assert isinstance(cert.public_key(), pub_key_cls)
+
     def test_build_cert_with_rsa_key_too_small(self, backend):
         issuer_private_key = RSA_KEY_512.private_key(backend)
         subject_private_key = RSA_KEY_512.private_key(backend)

X25519 certificates
I'd like to equip entities with X25519 keys and certificates, so they can verify each others' identity as being inside my PKI hierarchy (Noise for IoT, kinda).

It turns out to be possible to do this with openssl using `-force_pubkey` (yes, lovely ^^):
```
# generate CSR with an auxiliary key, e.g. Ed255
openssl req -new -key tmp-ed255-privkey.pem -out ed255-signed.csr
# then sign this CSR, replacing the public key
openssl x509 -req -in ed255-signed.csr -CAkey ca-privkey.pem -CA ca-cert.pem -force_pubkey x255-pubkey.pem -out x255-cert.pem -CAcreateserial
```

Would implementing this potentially be in scope here? It would be a little hacky presumably :) But if that's acceptable, I could try and prepare a PR.

FWIW, simply allowing X25519PublicKey (and X448PublicKey) in `cryptography.x509.CertificateBuilder.public_key` does the trick for me.
Is there official standard/RFC for X25519 in X.509?
RFC 8410
This is both easier and harder now. Easier in that we now independently do signing and generate all the ASN.1 ourselves in rust. Harder in that to support this we'd need to expand the X25519/X448 APIs to support signing, which is a bit weird. I think if we're going to do this we need to be able to strongly articulate why in documentation. e.g. the normal model is ed25519 is for signing and x25519 is for kex, why would x25519 for signing be desirable (and if it's fine to use it, why ever use ed25519?).
I believe there is a misunderstanding.

First, there are no X25519 signatures in standard cryptography (and the pyca shouldn't invent them). There are ways to convert between Ed25519 and X25519 keys (since they're on a birationally equivalent curve), and it's _probably_ OK to use one key for both signing and key exchange (there are some preprints on this), but also _likely_ not a good idea (general principles are to separate identity/signing from key exchange, e.g. due to different lifecycles).

That's not what this issue is about though: It asks for the possibility of certifying an X25519 key exchange key. With a separate signing key of any type (RSA, Ed25519, ...).

Operationally, this "just' means putting the X25519 public key in the SPKI of the cert and signing over it with the signing key. It's useful for the usual reasons: extend a third party's trust in a signing key to the certified key exchange key. This may or may not be a niche use case (establishing secure channels via key exchange against a closed-universe of X25519 recipients) - it's definitely a legitimate use case, but I'd understand if pyca/cryptography prefers not so support it.

The openssl snippet at the top was maybe confusing: In openssl, there must always be a CSR. This is just how its API works, and not an intrinsic requirement about X.509 certificates. For certificates for signing keys, the CSR is possible, and done to prove that the certificate is awarded to someone holding the private key. However, creating a certificate should really (additionally or mainly) mean that the certifier somehow legitimises the public key in its certificates. As a CA, I don't just sign any CSR, I inspect the public key and check that I want to extend it a certificate (I also review the other parameters of the certificate such as key uses, validity, extensions, etc.).

Since there is precedent for non-signing keys in the openssl universe, the `-force_pubkey` flag was added as a hacky way to work around the "CSR only" API (some ancillary discussion can be found here: https://groups.google.com/g/mailing.openssl.users/c/1QuxCKPZ_-o). The snippet shows how to do this (use a fake Ed255 key to create a CSR and swap out the public key for the X255 key of interest ant certificate generation time), but this is not how things ideally should work.

I don't think pyca/cryptography needs to follow the openssl API. In an ideal (from my perspective) world, there would be an API to create certificates for any algorithm's public keys (with either requester or granter choice of other parameters such as key uses, validity, extensions etc.), and an optional (additional) API that supports CSRs à la openssl (for signing keys only), implemented in terms of the more general API.

Makes sense?


tests/x509/test_x509.py::TestRSACertificate::test_generalized_time_not_before_cert tests/x509/test_x509.py::TestRSACertificate::test_load_legacy_pem_header tests/x509/test_x509.py::TestCertificateRevocationList::test_tbs_certlist_bytes tests/x509/test_x509.py::TestCertificateRevocationList::test_load_pem_crl tests/x509/test_x509.py::TestRSACertificate::test_generalized_time_not_after_cert tests/x509/test_x509.py::TestCertificateRevocationList::test_load_der_crl tests/x509/test_x509.py::TestRSACertificate::test_load_with_other_sections tests/x509/test_x509.py::TestCertificateRevocationList::test_public_bytes_pem tests/x509/test_x509.py::TestRSACertificate::test_invalid_version_cert tests/x509/test_x509.py::TestCertificateRevocationList::test_empty_crl_no_sequence tests/x509/test_x509.py::TestCertificateRevocationList::test_invalid_pem tests/x509/test_x509.py::TestCertificateRevocationList::test_public_bytes_der tests/x509/test_x509.py::TestRSACertificate::test_load_multiple_sections tests/x509/test_x509.py::TestRSACertificate::test_eq tests/x509/test_x509.py::TestCertificateRevocationList::test_invalid_der tests/x509/test_x509.py::TestRSACertificate::test_ne tests/x509/test_x509.py::TestCertificateRevocationList::test_invalid_time tests/x509/test_x509.py::TestCertificateRevocationList::test_public_bytes_match[x509/custom/crl_all_reasons.pem-load_pem_x509_crl-Encoding.PEM] tests/x509/test_x509.py::TestRSACertificate::test_negative_serial_number tests/x509/test_x509.py::TestRSACertificate::test_alternate_rsa_with_sha1_oid tests/x509/test_x509.py::TestCertificateRevocationList::test_public_bytes_match[x509/PKITS_data/crls/GoodCACRL.crl-load_der_x509_crl-Encoding.DER] tests/x509/test_x509.py::TestRSACertificate::test_ordering_unsupported tests/x509/test_x509.py::TestCertificateRevocationList::test_unknown_signature_algorithm tests/x509/test_x509.py::TestCertificateRevocationList::test_issuer tests/x509/test_x509.py::TestRSACertificate::test_load_bmpstring_explicittext tests/x509/test_x509.py::TestCertificateRevocationList::test_public_bytes_invalid_encoding tests/x509/test_x509.py::TestRSACertificate::test_load_der_cert tests/x509/test_x509.py::TestCertificateRevocationList::test_equality tests/x509/test_x509.py::TestRSACertificate::test_hash tests/x509/test_x509.py::TestRSACertificate::test_version_1_cert tests/x509/test_x509.py::TestCertificateRevocationList::test_verify_bad tests/x509/test_x509.py::TestRSACertificate::test_signature tests/x509/test_x509.py::TestRSACertificate::test_invalid_pem tests/x509/test_x509.py::TestCertificateRevocationList::test_verify_good tests/x509/test_x509.py::TestCertificateRevocationList::test_comparison tests/x509/test_x509.py::TestCertificateRevocationList::test_update_dates tests/x509/test_x509.py::TestRSACertificate::test_invalid_der tests/x509/test_x509.py::TestCertificateRevocationList::test_verify_argument_must_be_a_public_key tests/x509/test_x509.py::TestRSACertificate::test_tbs_certificate_bytes tests/x509/test_x509.py::TestRSACertificate::test_unsupported_signature_hash_algorithm_cert tests/x509/test_x509.py::TestCertificateRevocationList::test_no_next_update tests/x509/test_x509.py::TestCertificateRevocationList::test_unrecognized_extension tests/x509/test_x509.py::TestRSACertificate::test_issuer tests/x509/test_x509.py::TestRSACertificate::test_public_bytes_pem tests/x509/test_x509.py::TestRevokedCertificate::test_revoked_basics tests/x509/test_x509.py::TestRSACertificate::test_all_issuer_name_types tests/x509/test_x509.py::TestCertificateRevocationList::test_revoked_cert_retrieval tests/x509/test_x509.py::TestCertificateRevocationList::test_get_revoked_certificate_by_serial_number tests/x509/test_x509.py::TestRSACertificate::test_subject tests/x509/test_x509.py::TestRSACertificate::test_public_bytes_der tests/x509/test_x509.py::TestRSACertificate::test_public_bytes_invalid_encoding tests/x509/test_x509.py::TestRevokedCertificate::test_revoked_extensions tests/x509/test_x509.py::TestRSACertificate::test_unicode_name tests/x509/test_x509.py::TestCertificateRevocationList::test_revoked_cert_retrieval_retain_only_revoked tests/x509/test_x509.py::TestRevokedCertificate::test_no_revoked_certs tests/x509/test_x509.py::TestRSACertificate::test_public_bytes_match[x509/v1_cert.pem-load_pem_x509_certificate-Encoding.PEM] tests/x509/test_x509.py::TestRSACertificate::test_public_bytes_match[x509/PKITS_data/certs/GoodCACert.crt-load_der_x509_certificate-Encoding.DER] tests/x509/test_x509.py::TestRSACertificate::test_non_ascii_dns_name tests/x509/test_x509.py::TestRevokedCertificate::test_duplicate_entry_ext tests/x509/test_x509.py::TestCertificateRevocationList::test_extensions tests/x509/test_x509.py::TestCertificateRevocationList::test_delta_crl_indicator tests/x509/test_x509.py::TestRevokedCertificate::test_unsupported_crit_entry_ext tests/x509/test_x509.py::TestRSACertificate::test_certificate_repr tests/x509/test_x509.py::TestCertificateRevocationList::test_signature tests/x509/test_x509.py::TestRevokedCertificate::test_unsupported_reason tests/x509/test_x509.py::TestRSACertificate::test_all_subject_name_types tests/x509/test_x509.py::TestRSACertificate::test_load_good_ca_cert tests/x509/test_x509.py::TestRSACertificateRequest::test_load_rsa_certificate_request[x509/requests/rsa_sha1.der-load_der_x509_csr] tests/x509/test_x509.py::TestRSACertificate::test_parse_tls_feature_extension tests/x509/test_x509.py::TestRevokedCertificate::test_invalid_cert_issuer_ext tests/x509/test_x509.py::TestRSACertificate::test_utc_pre_2000_not_before_cert tests/x509/test_x509.py::TestRSACertificateRequest::test_load_legacy_pem_header tests/x509/test_x509.py::TestRSACertificate::test_pre_2000_utc_not_after_cert tests/x509/test_x509.py::TestRSACertificateRequest::test_load_rsa_certificate_request[x509/requests/rsa_sha1.pem-load_pem_x509_csr] tests/x509/test_x509.py::TestRevokedCertificate::test_indexing tests/x509/test_x509.py::TestRSACertificateRequest::test_invalid_pem tests/x509/test_x509.py::TestRSACertificateRequest::test_subject_alt_name tests/x509/test_x509.py::TestRSACertificateRequest::test_get_attribute_for_oid_challenge tests/x509/test_x509.py::TestRSACertificate::test_post_2000_utc_cert tests/x509/test_x509.py::TestRSACertificateRequest::test_public_bytes_pem tests/x509/test_x509.py::TestRSACertificateRequest::test_get_attribute_for_oid_multiple tests/x509/test_x509.py::TestRSACertificateRequest::test_invalid_attribute_for_oid tests/x509/test_x509.py::TestRSACertificateRequest::test_public_bytes_der tests/x509/test_x509.py::TestRSACertificateRequest::test_challenge_multivalued tests/x509/test_x509.py::TestRSACertificateRequest::test_signature tests/x509/test_x509.py::TestRSACertificateRequest::test_no_challenge_password tests/x509/test_x509.py::TestRSACertificateRequest::test_tbs_certrequest_bytes tests/x509/test_x509.py::TestRSACertificateRequest::test_invalid_certificate_request[load_pem_x509_csr] tests/x509/test_x509.py::TestRSACertificateRequest::test_public_bytes_invalid_encoding tests/x509/test_x509.py::TestRSACertificateRequest::test_invalid_certificate_request[load_der_x509_csr] tests/x509/test_x509.py::TestRSACertificateRequest::test_unsupported_signature_hash_algorithm_request tests/x509/test_x509.py::TestRSACertificateRequest::test_signature_invalid tests/x509/test_x509.py::TestRSACertificateRequest::test_signature_valid tests/x509/test_x509.py::TestRSACertificateRequest::test_duplicate_extension tests/x509/test_x509.py::TestRSACertificateRequest::test_public_bytes_match[x509/requests/rsa_sha1.pem-load_pem_x509_csr-Encoding.PEM] tests/x509/test_x509.py::TestRSACertificateRequest::test_unsupported_critical_extension tests/x509/test_x509.py::TestRSACertificateRequest::test_public_bytes_match[x509/requests/rsa_sha1.der-load_der_x509_csr-Encoding.DER] tests/x509/test_x509.py::TestRSACertificateRequest::test_unsupported_extension tests/x509/test_x509.py::TestRSACertificateRequest::test_eq tests/x509/test_x509.py::TestRSACertificateRequest::test_no_extension_with_other_attributes tests/x509/test_x509.py::TestRSACertificateRequest::test_ne tests/x509/test_x509.py::TestRSACertificateRequest::test_request_basic_constraints tests/x509/test_x509.py::TestRSACertificateRequest::test_ordering_unsupported tests/x509/test_x509.py::TestCertificateBuilder::test_serial_number_must_be_non_negative tests/x509/test_x509.py::TestCertificateBuilder::test_serial_number_must_be_positive tests/x509/test_x509.py::TestRSACertificateRequest::test_hash tests/x509/test_x509.py::TestRevokedCertificate::test_get_revoked_certificate_doesnt_reorder tests/x509/test_x509.py::TestRSACertificate::test_load_pem_cert tests/x509/test_x509.py::TestCertificateBuilder::test_minimal_serial_number tests/x509/test_x509.py::TestRSACertificateRequest::test_build_cert[SHA224-hashalg_oid1] tests/x509/test_x509.py::TestCertificateBuilder::test_no_public_key tests/x509/test_x509.py::TestRSACertificateRequest::test_build_cert[SHA1-hashalg_oid0] tests/x509/test_x509.py::TestCertificateBuilder::test_not_valid_before_may_only_be_set_once tests/x509/test_x509.py::TestCertificateBuilder::test_biggest_serial_number tests/x509/test_x509.py::TestCertificateBuilder::test_serial_number_must_be_less_than_160_bits_long tests/x509/test_x509.py::TestCertificateBuilder::test_add_extension_checks_for_duplicates tests/x509/test_x509.py::TestCertificateBuilder::test_add_invalid_extension_type tests/x509/test_x509.py::TestCertificateBuilder::test_serial_number_may_only_be_set_once tests/x509/test_x509.py::TestCertificateBuilder::test_no_not_valid_before tests/x509/test_x509.py::TestCertificateBuilder::test_sign_with_unsupported_hash[algorithm0] tests/x509/test_x509.py::TestRSACertificateRequest::test_build_cert[SHA256-hashalg_oid2] tests/x509/test_x509.py::TestCertificateBuilder::test_no_not_valid_after tests/x509/test_x509.py::TestCertificateBuilder::test_aware_not_valid_after tests/x509/test_x509.py::TestCertificateBuilder::test_sign_with_unsupported_hash[None] tests/x509/test_x509.py::TestCertificateBuilder::test_sign_with_unsupported_hash_ed25519 tests/x509/test_x509.py::TestCertificateBuilder::test_sign_with_unsupported_hash_ed448 tests/x509/test_x509.py::TestCertificateBuilder::test_no_serial_number tests/x509/test_x509.py::TestCertificateBuilder::test_issuer_name_must_be_a_name_type tests/x509/test_x509.py::TestCertificateBuilder::test_issuer_name_may_only_be_set_once tests/x509/test_x509.py::TestCertificateBuilder::test_earliest_time tests/x509/test_x509.py::TestCertificateBuilder::test_subject_name_must_be_a_name_type tests/x509/test_x509.py::TestCertificateBuilder::test_invalid_not_valid_after tests/x509/test_x509.py::TestCertificateBuilder::test_subject_name_may_only_be_set_once tests/x509/test_x509.py::TestCertificateBuilder::test_not_valid_after_may_only_be_set_once tests/x509/test_x509.py::TestCertificateBuilder::test_not_valid_before_after_not_valid_after tests/x509/test_x509.py::TestCertificateBuilder::test_not_valid_after_before_not_valid_before tests/x509/test_x509.py::TestCertificateBuilder::test_sign_rsa_with_md5 tests/x509/test_x509.py::TestCertificateBuilder::test_sign_dsa_with_md5 tests/x509/test_x509.py::TestCertificateBuilder::test_sign_ec_with_md5 tests/x509/test_x509.py::TestRSACertificateRequest::test_build_cert[SHA384-hashalg_oid3] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_dsa_private_key[SHA1-hashalg_oid0] tests/x509/test_x509.py::TestCertificateBuilder::test_public_key_must_be_public_key tests/x509/test_x509.py::TestCertificateBuilder::test_aware_not_valid_before tests/x509/test_x509.py::TestCertificateBuilder::test_invalid_not_valid_before tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_dsa_private_key[SHA224-hashalg_oid1] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_ed448 tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_dsa_private_key[SHA256-hashalg_oid2] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_dsa_private_key[SHA384-hashalg_oid3] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_dsa_private_key[SHA512-hashalg_oid4] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_ec_private_key[SHA1-hashalg_oid0] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_ec_private_key[SHA224-hashalg_oid1] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_ec_private_key[SHA256-hashalg_oid2] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_ec_private_key[SHA384-hashalg_oid3] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_ec_private_key[SHA512-hashalg_oid4] tests/x509/test_x509.py::TestCertificateBuilder::test_public_key_may_only_be_set_once tests/x509/test_x509.py::TestCertificateBuilder::test_serial_number_must_be_an_integer_type tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_public_ed448_rsa_sig tests/x509/test_x509.py::TestRSACertificateRequest::test_build_cert[SHA512-hashalg_oid4] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_bmpstring_universalstring_name tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_ed25519 tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext5] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_public_ed25519_rsa_sig tests/x509/test_x509.py::TestRSACertificateRequest::test_build_cert_private_type_encoding tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext6] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext14] tests/x509/test_x509.py::TestRSACertificateRequest::test_build_cert_printable_string_country_name tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_rsa_key_too_small tests/x509/test_x509.py::TestCertificateBuilder::test_checks_for_unsupported_extensions tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext7] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext15] tests/x509/test_x509.py::TestCertificateBuilder::test_encode_nonstandard_aia tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext0] tests/x509/test_x509.py::TestCertificateBuilder::test_encode_nonstandard_sia tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext8] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext16] tests/x509/test_x509.py::TestCertificateBuilder::test_subject_dn_asn1_types tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext1] tests/x509/test_x509.py::TestCertificateBuilder::test_extreme_times[not_valid_before0-not_valid_after0] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext9] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext17] tests/x509/test_x509.py::TestCertificateBuilder::test_extreme_times[not_valid_before1-not_valid_after1] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext2] tests/x509/test_x509.py::TestCertificateBuilder::test_no_subject_name tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext10] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext18] tests/x509/test_x509.py::TestCertificateBuilder::test_no_issuer_name tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext3] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext11] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext19] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext31] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext4] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext12] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext20] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext32] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext23] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext13] tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_request_with_unsupported_hash_ed25519 tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_request_with_unsupported_hash_ed448 tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext21] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext33] tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_sign_rsa_with_md5 tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_sign_dsa_with_md5 tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_sign_ec_with_md5 tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext24] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext22] tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_no_subject_name tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext34] tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_build_ca_request_with_unicode tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_build_ca_request_with_rsa tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_build_ca_request_with_dsa tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_add_duplicate_extension tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_set_invalid_subject tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_add_invalid_extension_type tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext25] tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_subject_dn_asn1_types tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_add_unsupported_extension tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[SubjectKeyIdentifier] tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_build_ca_request_with_multivalue_rdns tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_add_two_extensions tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext26] tests/x509/test_x509.py::TestCertificateBuilder::test_build_ca_request_with_path_length_none tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_build_nonca_request_with_rsa tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_build_ca_request_with_ec tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_extensions[add_ext1] tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_build_ca_request_with_ed25519 tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_build_ca_request_with_ed448 tests/x509/test_x509.py::TestDSACertificate::test_load_dsa_cert tests/x509/test_x509.py::TestDSACertificate::test_signature tests/x509/test_x509.py::TestDSACertificate::test_tbs_certificate_bytes tests/x509/test_x509.py::TestDSACertificateRequest::test_load_dsa_request[x509/requests/dsa_sha1.pem-load_pem_x509_csr] tests/x509/test_x509.py::TestCertificateBuilder::test_unrecognized_extension[unrecognized0] tests/x509/test_x509.py::TestDSACertificateRequest::test_load_dsa_request[x509/requests/dsa_sha1.der-load_der_x509_csr] tests/x509/test_x509.py::TestDSACertificateRequest::test_signature tests/x509/test_x509.py::TestDSACertificateRequest::test_tbs_certrequest_bytes tests/x509/test_x509.py::TestGOSTCertificate::test_numeric_string_x509_name_entry tests/x509/test_x509.py::TestECDSACertificate::test_load_ecdsa_cert tests/x509/test_x509.py::TestECDSACertificate::test_signature tests/x509/test_x509.py::TestECDSACertificate::test_tbs_certificate_bytes tests/x509/test_x509.py::TestECDSACertificate::test_load_ecdsa_no_named_curve tests/x509/test_x509.py::TestECDSACertificateRequest::test_load_ecdsa_certificate_request[x509/requests/ec_sha256.pem-load_pem_x509_csr] tests/x509/test_x509.py::TestECDSACertificateRequest::test_load_ecdsa_certificate_request[x509/requests/ec_sha256.der-load_der_x509_csr] tests/x509/test_x509.py::TestECDSACertificateRequest::test_signature tests/x509/test_x509.py::TestECDSACertificateRequest::test_tbs_certrequest_bytes tests/x509/test_x509.py::TestOtherCertificate::test_unsupported_subject_public_key_info tests/x509/test_x509.py::TestOtherCertificate::test_bad_time_in_validity tests/x509/test_x509.py::TestNameAttribute::test_default_types tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_extensions[add_ext2] tests/x509/test_x509.py::TestNameAttribute::test_alternate_type tests/x509/test_x509.py::TestNameAttribute::test_init_bad_oid tests/x509/test_x509.py::TestNameAttribute::test_init_bad_value tests/x509/test_x509.py::TestNameAttribute::test_init_none_value tests/x509/test_x509.py::TestNameAttribute::test_init_bad_country_code_value tests/x509/test_x509.py::TestNameAttribute::test_invalid_type tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext27] tests/x509/test_x509.py::TestNameAttribute::test_eq tests/x509/test_x509.py::TestNameAttribute::test_ne tests/x509/test_x509.py::TestNameAttribute::test_repr tests/x509/test_x509.py::TestNameAttribute::test_distinguished_name tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_sign_invalid_hash_algorithm tests/x509/test_x509.py::TestNameAttribute::test_distinguished_name_custom_attrs tests/x509/test_x509.py::TestNameAttribute::test_empty_value tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_add_attributes tests/x509/test_x509.py::TestRelativeDistinguishedName::test_init_empty tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_add_attributes_non_utf8 tests/x509/test_x509.py::TestRelativeDistinguishedName::test_init_not_nameattribute tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_add_attribute_bad_types tests/x509/test_x509.py::TestRelativeDistinguishedName::test_init_duplicate_attribute tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_duplicate_attribute tests/x509/test_x509.py::TestRelativeDistinguishedName::test_hash tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_set_subject_twice tests/x509/test_x509.py::TestRelativeDistinguishedName::test_eq tests/x509/test_x509.py::TestRelativeDistinguishedName::test_ne tests/x509/test_x509.py::TestObjectIdentifier::test_ne tests/x509/test_x509.py::TestObjectIdentifier::test_repr tests/x509/test_x509.py::TestObjectIdentifier::test_name_property tests/x509/test_x509.py::TestObjectIdentifier::test_too_short tests/x509/test_x509.py::TestObjectIdentifier::test_invalid_input tests/x509/test_x509.py::TestObjectIdentifier::test_invalid_node1 tests/x509/test_x509.py::TestObjectIdentifier::test_invalid_node2 tests/x509/test_x509.py::TestObjectIdentifier::test_valid tests/x509/test_x509.py::TestName::test_eq tests/x509/test_x509.py::TestName::test_ne tests/x509/test_x509.py::TestName::test_hash tests/x509/test_x509.py::TestName::test_iter_input tests/x509/test_x509.py::TestName::test_rdns tests/x509/test_x509.py::TestName::test_repr[cryptography.io-PyCA-<Name(CN=cryptography.io,O=PyCA)>] tests/x509/test_x509.py::TestName::test_repr[Certificaci\xf3n-Certificaci\xf3n-<Name(CN=Certificaci\xf3n,O=Certificaci\xf3n)>] tests/x509/test_x509.py::TestName::test_rfc4514_attribute_name tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_extensions[add_ext3] tests/x509/test_x509.py::TestName::test_rfc4514_string tests/x509/test_x509.py::TestName::test_rfc4514_string_empty_values tests/x509/test_x509.py::TestName::test_not_nameattribute tests/x509/test_x509.py::TestName::test_bytes tests/x509/test_x509.py::TestName::test_bmpstring_bytes tests/x509/test_x509.py::TestName::test_universalstring_bytes tests/x509/test_x509.py::TestEd25519Certificate::test_load_pem_cert tests/x509/test_x509.py::TestEd25519Certificate::test_deepcopy tests/x509/test_x509.py::TestEd448Certificate::test_load_pem_cert tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_extensions[add_ext0] tests/x509/test_x509.py::TestRelativeDistinguishedName::test_iter_input tests/x509/test_x509.py::TestRelativeDistinguishedName::test_get_attributes_for_oid tests/x509/test_x509.py::TestObjectIdentifier::test_eq tests/x509/test_x509.py::TestSignatureRejection::test_crl_signing_check tests/x509/test_x509.py::test_random_serial_number tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_invalid_asn1_othername tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext28] tests/x509/test_x509.py::TestSignatureRejection::test_crt_signing_check tests/x509/test_x509.py::TestSignatureRejection::test_csr_signing_check tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_subject_alt_name_unsupported_general_name tests/x509/test_x509.py::TestCertificateSigningRequestBuilder::test_rsa_key_too_small tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext29] tests/x509/test_x509.py::TestCertificateBuilder::test_extensions[add_ext30]
tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_public_x25519_x448_rsa_sig[X25519PrivateKey-X25519PublicKey] tests/x509/test_x509.py::TestCertificateBuilder::test_build_cert_with_public_x25519_x448_rsa_sig[X448PrivateKey-X448PublicKey]