Index: net/quic/crypto/quic_crypto_server_config.cc |
diff --git a/net/quic/crypto/quic_crypto_server_config.cc b/net/quic/crypto/quic_crypto_server_config.cc |
index e5b51dd14ebda3a50bc899aa0f3da201dfc9caa0..4f0e11440d4b664b959138fe0d87473335e16170 100644 |
--- a/net/quic/crypto/quic_crypto_server_config.cc |
+++ b/net/quic/crypto/quic_crypto_server_config.cc |
@@ -604,6 +604,10 @@ QuicErrorCode QuicCryptoServerConfig::ProcessClientHello( |
bool x509_supported = false; |
bool x509_ecdsa_supported = false; |
ParseProofDemand(client_hello, &x509_supported, &x509_ecdsa_supported); |
+ if (!x509_supported && FLAGS_quic_require_x509) { |
+ *error_details = "Missing or invalid PDMD"; |
+ return QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER; |
+ } |
DCHECK(proof_source_.get()); |
string chlo_hash; |
CryptoUtils::HashHandshakeMessage(client_hello, &chlo_hash); |
@@ -1254,7 +1258,8 @@ void QuicCryptoServerConfig::BuildRejection( |
bool x509_supported = false; |
ParseProofDemand(client_hello, &x509_supported, |
¶ms->x509_ecdsa_supported); |
- if (!x509_supported) { |
+ if (!x509_supported && FLAGS_quic_require_x509) { |
+ QUIC_BUG << "x509 certificates not supported in proof demand"; |
return; |
} |