diff options
author | lgarron <lgarron@chromium.org> | 2015-08-14 11:22:59 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-14 18:23:41 +0000 |
commit | 853bea79b5dfc54457be7026e7d4d30e11a40658 (patch) | |
tree | 90363c7f450e1895741ee8c2928e46f25d105f9d | |
parent | 402517c6677e81adf93d11462aeb1b86bfbf9f8a (diff) | |
download | chromium_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.cc | 33 | ||||
-rw-r--r-- | content/browser/devtools/protocol/network_handler.h | 2 |
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( |