summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlgarron <lgarron@chromium.org>2015-08-14 11:22:59 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-14 18:23:41 +0000
commit853bea79b5dfc54457be7026e7d4d30e11a40658 (patch)
tree90363c7f450e1895741ee8c2928e46f25d105f9d
parent402517c6677e81adf93d11462aeb1b86bfbf9f8a (diff)
downloadchromium_src-853bea79b5dfc54457be7026e7d4d30e11a40658.zip
chromium_src-853bea79b5dfc54457be7026e7d4d30e11a40658.tar.gz
chromium_src-853bea79b5dfc54457be7026e7d4d30e11a40658.tar.bz2
Implement handler method for DevTools getCertificateDetails.
BUG=502118 Review URL: https://codereview.chromium.org/1258523002 Cr-Commit-Position: refs/heads/master@{#343438}
-rw-r--r--content/browser/devtools/protocol/network_handler.cc33
-rw-r--r--content/browser/devtools/protocol/network_handler.h2
2 files changed, 35 insertions, 0 deletions
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
index 55e9826..66f7bcc 100644
--- a/content/browser/devtools/protocol/network_handler.cc
+++ b/content/browser/devtools/protocol/network_handler.cc
@@ -6,14 +6,18 @@
#include "base/containers/hash_tables.h"
#include "base/strings/stringprintf.h"
+#include "base/time/time.h"
#include "content/browser/frame_host/frame_tree_node.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/cert_store.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/resource_context.h"
#include "content/public/browser/site_instance.h"
#include "content/public/common/content_client.h"
+#include "net/cert/x509_cert_types.h"
+#include "net/cert/x509_certificate.h"
#include "net/cookies/cookie_store.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
@@ -278,6 +282,35 @@ Response NetworkHandler::EmulateNetworkConditions(bool offline,
return Response::FallThrough();
}
+Response NetworkHandler::GetCertificateDetails(
+ int certificate_id,
+ scoped_refptr<CertificateDetails>* result) {
+ scoped_refptr<net::X509Certificate> cert;
+ content::CertStore* cert_store = CertStore::GetInstance();
+ cert_store->RetrieveCert(certificate_id, &cert);
+ if (!cert.get())
+ return Response::InvalidParams("certificateId");
+
+ std::string name(cert->subject().GetDisplayName());
+ std::string issuer(cert->issuer().GetDisplayName());
+ base::Time valid_from = cert->valid_start();
+ base::Time valid_to = cert->valid_expiry();
+
+ std::vector<std::string> dns_names;
+ std::vector<std::string> ip_addrs;
+ cert->GetSubjectAltName(&dns_names, &ip_addrs);
+
+ *result = CertificateDetails::Create()
+ ->set_subject(CertificateSubject::Create()
+ ->set_name(name)
+ ->set_san_dns_names(dns_names)
+ ->set_san_ip_addresses(ip_addrs))
+ ->set_issuer(issuer)
+ ->set_valid_from(valid_from.ToDoubleT())
+ ->set_valid_to(valid_to.ToDoubleT());
+ return Response::OK();
+}
+
} // namespace dom
} // namespace devtools
} // namespace content
diff --git a/content/browser/devtools/protocol/network_handler.h b/content/browser/devtools/protocol/network_handler.h
index d68f520..c1c28f7 100644
--- a/content/browser/devtools/protocol/network_handler.h
+++ b/content/browser/devtools/protocol/network_handler.h
@@ -38,6 +38,8 @@ class NetworkHandler {
double latency,
double download_throughput,
double upload_throughput);
+ Response GetCertificateDetails(int certificate_id,
+ scoped_refptr<CertificateDetails>* result);
private:
void SendGetCookiesResponse(