Index: net/quic/chromium/quic_chromium_client_session.cc |
diff --git a/net/quic/chromium/quic_chromium_client_session.cc b/net/quic/chromium/quic_chromium_client_session.cc |
index c27a35b640e4949ec28f504d848f7b183b739deb..527abf88a607dedaac42a842152e23777236a06a 100644 |
--- a/net/quic/chromium/quic_chromium_client_session.cc |
+++ b/net/quic/chromium/quic_chromium_client_session.cc |
@@ -4,6 +4,8 @@ |
#include "net/quic/chromium/quic_chromium_client_session.h" |
+#include <openssl/ssl.h> |
+ |
#include <utility> |
#include "base/callback_helpers.h" |
@@ -548,10 +550,24 @@ bool QuicChromiumClientSession::GetSSLInfo(SSLInfo* ssl_info) const { |
return false; |
} |
int ssl_connection_status = 0; |
- ssl_connection_status |= cipher_suite; |
- ssl_connection_status |= |
- (SSL_CONNECTION_VERSION_QUIC & SSL_CONNECTION_VERSION_MASK) |
- << SSL_CONNECTION_VERSION_SHIFT; |
+ SSLConnectionStatusSetCipherSuite(cipher_suite, &ssl_connection_status); |
+ SSLConnectionStatusSetVersion(SSL_CONNECTION_VERSION_QUIC, |
+ &ssl_connection_status); |
+ |
+ // Report the QUIC key exchange as the corresponding TLS curve. |
+ uint16_t curve; |
+ switch (crypto_stream_->crypto_negotiated_params().key_exchange) { |
+ case kP256: |
+ curve = SSL_CURVE_SECP256R1; |
+ break; |
+ case kC255: |
+ curve = SSL_CURVE_X25519; |
+ break; |
+ default: |
+ NOTREACHED(); |
+ return false; |
+ } |
+ ssl_info->key_exchange_info = curve; |
ssl_info->public_key_hashes = cert_verify_result_->public_key_hashes; |
ssl_info->is_issued_by_known_root = |