summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-09 04:34:01 +0000
committermattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-09 04:34:01 +0000
commit4f4e597baf96e733dc8baf9e3c2de7a3671c6a6b (patch)
treeecfd70be820169d43598b52504a66e84f8a6ced9
parentd0bb61cac50358d878e0e7f91797671a57a7cdca (diff)
downloadchromium_src-4f4e597baf96e733dc8baf9e3c2de7a3671c6a6b.zip
chromium_src-4f4e597baf96e733dc8baf9e3c2de7a3671c6a6b.tar.gz
chromium_src-4f4e597baf96e733dc8baf9e3c2de7a3671c6a6b.tar.bz2
Replace DBC.Advertised with DomainBoundCerts.Support histogram.
BUG=124105 TEST=check about:histograms Review URL: https://chromiumcodereview.appspot.com/10350005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@135983 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--net/socket/ssl_client_socket_nss.cc28
-rw-r--r--net/socket/ssl_client_socket_nss.h4
2 files changed, 28 insertions, 4 deletions
diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc
index 7e56733..b84805e 100644
--- a/net/socket/ssl_client_socket_nss.cc
+++ b/net/socket/ssl_client_socket_nss.cc
@@ -958,14 +958,10 @@ int SSLClientSocketNSS::InitializeSSLOptions() {
#endif
#ifdef SSL_ENABLE_OB_CERTS
- UMA_HISTOGRAM_BOOLEAN("DBC.Advertised",
- ssl_config_.domain_bound_certs_enabled);
rv = SSL_OptionSet(nss_fd_, SSL_ENABLE_OB_CERTS,
ssl_config_.domain_bound_certs_enabled);
if (rv != SECSuccess)
LogFailedNSSFunction(net_log_, "SSL_OptionSet", "SSL_ENABLE_OB_CERTS");
-#else
- UMA_HISTOGRAM_BOOLEAN("DBC.Advertised", false);
#endif
#ifdef SSL_ENCRYPT_CLIENT_CERTS
@@ -2535,6 +2531,29 @@ SECStatus SSLClientSocketNSS::ClientAuthHandler(
}
#endif // NSS_PLATFORM_CLIENT_AUTH
+void SSLClientSocketNSS::RecordDomainBoundCertSupport() const {
+ PRBool last_handshake_resumed;
+ SECStatus ok = SSL_HandshakeResumedSession(nss_fd_, &last_handshake_resumed);
+ if (ok != SECSuccess || last_handshake_resumed)
+ return;
+
+ // Since this enum is used for a histogram, do not change or re-use values.
+ enum {
+ DISABLED = 0,
+ CLIENT_ONLY = 1,
+ CLIENT_AND_SERVER = 2,
+ DOMAIN_BOUND_CERT_USAGE_MAX
+ } supported = DISABLED;
+#ifdef SSL_ENABLE_OB_CERTS
+ if (domain_bound_cert_xtn_negotiated_)
+ supported = CLIENT_AND_SERVER;
+ else if (ssl_config_.domain_bound_certs_enabled)
+ supported = CLIENT_ONLY;
+#endif
+ UMA_HISTOGRAM_ENUMERATION("DomainBoundCerts.Support", supported,
+ DOMAIN_BOUND_CERT_USAGE_MAX);
+}
+
// static
// NSS calls this when handshake is completed.
// After the SSL handshake is finished, use CertVerifier to verify
@@ -2545,6 +2564,7 @@ void SSLClientSocketNSS::HandshakeCallback(PRFileDesc* socket,
that->handshake_callback_called_ = true;
+ that->RecordDomainBoundCertSupport();
that->UpdateServerCert();
that->UpdateConnectionStatus();
}
diff --git a/net/socket/ssl_client_socket_nss.h b/net/socket/ssl_client_socket_nss.h
index b708504..fc937ac 100644
--- a/net/socket/ssl_client_socket_nss.h
+++ b/net/socket/ssl_client_socket_nss.h
@@ -191,6 +191,10 @@ class SSLClientSocketNSS : public SSLClientSocket {
CERTCertificate** result_certificate,
SECKEYPrivateKey** result_private_key);
#endif
+ // Record histograms for DBC support. The histogram will only be updated if
+ // this socket did a full handshake.
+ void RecordDomainBoundCertSupport() const;
+
// NSS calls this when handshake is completed. We pass 'this' as the second
// argument.
static void HandshakeCallback(PRFileDesc* socket, void* arg);