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

Side by Side Diff: components/certificate_reporting/error_reporter.cc

Issue 2120683002: Fix up certificate error reporting histograms (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove unused ios certificate_reporting dependency Created 4 years, 5 months 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/certificate_reporting/error_reporter.h" 5 #include "components/certificate_reporting/error_reporter.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/memory/ptr_util.h" 13 #include "base/memory/ptr_util.h"
14 #include "base/metrics/histogram_macros.h"
15 #include "base/metrics/sparse_histogram.h"
14 #include "components/certificate_reporting/encrypted_cert_logger.pb.h" 16 #include "components/certificate_reporting/encrypted_cert_logger.pb.h"
15 #include "crypto/aead.h" 17 #include "crypto/aead.h"
16 #include "crypto/curve25519.h" 18 #include "crypto/curve25519.h"
17 #include "crypto/hkdf.h" 19 #include "crypto/hkdf.h"
18 #include "crypto/random.h" 20 #include "crypto/random.h"
19 #include "net/url_request/report_sender.h" 21 #include "net/url_request/report_sender.h"
20 22
21 namespace certificate_reporting { 23 namespace certificate_reporting {
22 24
23 namespace { 25 namespace {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 93
92 encrypted_report->set_encrypted_report(ciphertext); 94 encrypted_report->set_encrypted_report(ciphertext);
93 encrypted_report->set_server_public_key_version(server_public_key_version); 95 encrypted_report->set_server_public_key_version(server_public_key_version);
94 encrypted_report->set_client_public_key(reinterpret_cast<char*>(public_key), 96 encrypted_report->set_client_public_key(reinterpret_cast<char*>(public_key),
95 sizeof(public_key)); 97 sizeof(public_key));
96 encrypted_report->set_algorithm( 98 encrypted_report->set_algorithm(
97 EncryptedCertLoggerRequest::AEAD_ECDH_AES_128_CTR_HMAC_SHA256); 99 EncryptedCertLoggerRequest::AEAD_ECDH_AES_128_CTR_HMAC_SHA256);
98 return true; 100 return true;
99 } 101 }
100 102
103 // Records an UMA histogram of the net errors when certificate reports
104 // fail to send.
105 void RecordUMAOnFailure(const GURL& report_uri, int net_error) {
106 UMA_HISTOGRAM_SPARSE_SLOWLY("SSL.CertificateErrorReportFailure", -net_error);
107 }
108
101 } // namespace 109 } // namespace
102 110
103 ErrorReporter::ErrorReporter( 111 ErrorReporter::ErrorReporter(
104 net::URLRequestContext* request_context, 112 net::URLRequestContext* request_context,
105 const GURL& upload_url, 113 const GURL& upload_url,
106 net::ReportSender::CookiesPreference cookies_preference) 114 net::ReportSender::CookiesPreference cookies_preference)
107 : ErrorReporter( 115 : ErrorReporter(upload_url,
108 upload_url, 116 kServerPublicKey,
109 kServerPublicKey, 117 kServerPublicKeyVersion,
110 kServerPublicKeyVersion, 118 base::WrapUnique(new net::ReportSender(
111 base::WrapUnique( 119 request_context,
112 new net::ReportSender(request_context, cookies_preference))) {} 120 cookies_preference,
121 base::Bind(RecordUMAOnFailure)))) {}
113 122
114 ErrorReporter::ErrorReporter( 123 ErrorReporter::ErrorReporter(
115 const GURL& upload_url, 124 const GURL& upload_url,
116 const uint8_t server_public_key[/* 32 */], 125 const uint8_t server_public_key[/* 32 */],
117 const uint32_t server_public_key_version, 126 const uint32_t server_public_key_version,
118 std::unique_ptr<net::ReportSender> certificate_report_sender) 127 std::unique_ptr<net::ReportSender> certificate_report_sender)
119 : certificate_report_sender_(std::move(certificate_report_sender)), 128 : certificate_report_sender_(std::move(certificate_report_sender)),
120 upload_url_(upload_url), 129 upload_url_(upload_url),
121 server_public_key_(server_public_key), 130 server_public_key_(server_public_key),
122 server_public_key_version_(server_public_key_version) { 131 server_public_key_version_(server_public_key_version) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 aead.Init(&key); 169 aead.Init(&key);
161 170
162 // Use an all-zero nonce because the key is random per-message. 171 // Use an all-zero nonce because the key is random per-message.
163 std::string nonce(aead.NonceLength(), 0); 172 std::string nonce(aead.NonceLength(), 0);
164 173
165 return aead.Open(encrypted_report.encrypted_report(), nonce, std::string(), 174 return aead.Open(encrypted_report.encrypted_report(), nonce, std::string(),
166 decrypted_serialized_report); 175 decrypted_serialized_report);
167 } 176 }
168 177
169 } // namespace certificate_reporting 178 } // namespace certificate_reporting
OLDNEW
« no previous file with comments | « components/certificate_reporting/DEPS ('k') | components/certificate_reporting/error_reporter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698