Add an enumeration of client certificate modes to quic_types.h. ClientCertMode is used to configure server endpoints. It tells the endpoint whether it should request a client certificate, and whether it should allow "unauthenticated" connections (when the client does not have a certificate). TLS 1.3 supports three modes for the server: - No client certificate requested - Request a client certificate but allow unauthenticated connections - Request a client certificate and reject unauthenticated connections See go/quic-tls-client-certificates for details. gfe-relnote: no change in behavior (new enum definition only). PiperOrigin-RevId: 291452671 Change-Id: Iaab64381451af7ea0cd2a324d3262ae1e46d0bcd
diff --git a/quic/core/quic_types.h b/quic/core/quic_types.h index fd49da2..f149ed3 100644 --- a/quic/core/quic_types.h +++ b/quic/core/quic_types.h
@@ -434,6 +434,15 @@ QUIC_EXPORT_PRIVATE std::string EncryptionLevelToString(EncryptionLevel level); +// Enumeration of whether a server endpoint will request a client certificate, +// and whether that endpoint requires a valid client certificate to establish a +// connection. +enum class ClientCertMode { + kNone, // Do not request a client certificate. Default server behavior. + kRequest, // Request a certificate, but allow unauthenticated connections. + kRequire, // Require clients to provide a valid certificate. +}; + enum AddressChangeType : uint8_t { // IP address and port remain unchanged. NO_CHANGE,