Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: extensions/browser/api/web_request/web_request_event_details.cc

Issue 2156763003: Extend the webRequest.onCompleted event details object with TLS/SSL information Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Trim more fields and use composed cipher suite name Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/browser/api/web_request/web_request_event_details.h" 5 #include "extensions/browser/api/web_request/web_request_event_details.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "content/public/browser/browser_thread.h" 9 #include "content/public/browser/browser_thread.h"
10 #include "content/public/browser/render_frame_host.h" 10 #include "content/public/browser/render_frame_host.h"
11 #include "content/public/browser/resource_request_info.h" 11 #include "content/public/browser/resource_request_info.h"
12 #include "content/public/common/child_process_host.h" 12 #include "content/public/common/child_process_host.h"
13 #include "extensions/browser/api/web_request/upload_data_presenter.h" 13 #include "extensions/browser/api/web_request/upload_data_presenter.h"
14 #include "extensions/browser/api/web_request/web_request_api_constants.h" 14 #include "extensions/browser/api/web_request/web_request_api_constants.h"
15 #include "extensions/browser/api/web_request/web_request_api_helpers.h" 15 #include "extensions/browser/api/web_request/web_request_api_helpers.h"
16 #include "ipc/ipc_message.h" 16 #include "ipc/ipc_message.h"
17 #include "net/base/auth.h" 17 #include "net/base/auth.h"
18 #include "net/base/upload_data_stream.h" 18 #include "net/base/upload_data_stream.h"
19 #include "net/http/http_request_headers.h" 19 #include "net/http/http_request_headers.h"
20 #include "net/http/http_response_headers.h" 20 #include "net/http/http_response_headers.h"
21 #include "net/ssl/ssl_cipher_suite_names.h"
22 #include "net/ssl/ssl_connection_status_flags.h"
21 #include "net/url_request/url_request.h" 23 #include "net/url_request/url_request.h"
22 24
23 using extension_web_request_api_helpers::ExtraInfoSpec; 25 using extension_web_request_api_helpers::ExtraInfoSpec;
24 26
25 namespace helpers = extension_web_request_api_helpers; 27 namespace helpers = extension_web_request_api_helpers;
26 namespace keys = extension_web_request_api_constants; 28 namespace keys = extension_web_request_api_constants;
27 29
28 namespace extensions { 30 namespace extensions {
29 31
30 WebRequestEventDetails::WebRequestEventDetails(const net::URLRequest* request, 32 WebRequestEventDetails::WebRequestEventDetails(const net::URLRequest* request,
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 : extra_info_spec_(0), render_process_id_(0), render_frame_id_(0) {} 231 : extra_info_spec_(0), render_process_id_(0), render_frame_id_(0) {}
230 232
231 void WebRequestEventDetails::OnDeterminedFrameData( 233 void WebRequestEventDetails::OnDeterminedFrameData(
232 std::unique_ptr<WebRequestEventDetails> self, 234 std::unique_ptr<WebRequestEventDetails> self,
233 const DeterminedFrameDataCallback& callback, 235 const DeterminedFrameDataCallback& callback,
234 const ExtensionApiFrameIdMap::FrameData& frame_data) { 236 const ExtensionApiFrameIdMap::FrameData& frame_data) {
235 SetFrameData(frame_data); 237 SetFrameData(frame_data);
236 callback.Run(std::move(self)); 238 callback.Run(std::move(self));
237 } 239 }
238 240
241 void WebRequestEventDetails::SetSSLInfo(const net::URLRequest* request) {
242 const net::SSLInfo ssl_info = request->ssl_info();
243 base::DictionaryValue* info_dict = new base::DictionaryValue();
244
245 const char* ssl_version;
246 net::SSLVersionToString(&ssl_version, net::SSLConnectionStatusToVersion(
247 ssl_info.connection_status));
248 if (strncmp(ssl_version, "?", 1) == 0)
249 ssl_version = "UNKNOWN";
250 info_dict->SetString(keys::kSSLVersionKey, ssl_version);
251
252 uint16_t cipher_suite =
253 net::SSLConnectionStatusToCipherSuite(ssl_info.connection_status);
254 std::string cipher_str = net::SSLCipherSuiteToComposedString(cipher_suite);
255 info_dict->SetString(keys::kCipherSuiteKey, cipher_str);
256
257 base::DictionaryValue* built_dict = new base::DictionaryValue();
258 built_dict->SetBoolean(keys::kCertificateIssuedByKnownRootKey,
259 ssl_info.is_issued_by_known_root);
260 built_dict->Set(keys::kChainKey,
261 helpers::ExtractCertificateChain(ssl_info.cert));
262
263 base::ListValue* errors =
264 helpers::ParseCertificateStatusErrors(ssl_info.cert_status);
265 built_dict->SetBoolean(keys::kCertificateValidKey,
266 ssl_info.is_valid() && errors->GetSize() == 0);
267 if (errors->GetSize() != 0)
268 built_dict->Set(keys::kErrorsKey, errors);
269
270 built_dict->SetBoolean(keys::kEVCertificateKey,
271 (ssl_info.cert_status & net::CERT_STATUS_IS_EV));
272
273 info_dict->Set(keys::kBuiltChainKey, built_dict);
274 info_dict->Set(keys::kSentChainKey,
275 helpers::ExtractCertificateChain(ssl_info.unverified_cert));
276
277 dict_.Set(keys::kSSLInfoKey, info_dict);
278 }
279
239 } // namespace extensions 280 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698