| OLD | NEW |
| 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 "chrome/browser/net/certificate_error_reporter.h" | 5 #include "chrome/browser/net/certificate_error_reporter.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/metrics/field_trial.h" |
| 10 #include "chrome/browser/net/encrypted_cert_logger.pb.h" | 11 #include "chrome/browser/net/encrypted_cert_logger.pb.h" |
| 11 | 12 |
| 12 #if defined(USE_OPENSSL) | 13 #if defined(USE_OPENSSL) |
| 13 #include "crypto/aead_openssl.h" | 14 #include "crypto/aead_openssl.h" |
| 14 #endif | 15 #endif |
| 15 | 16 |
| 16 #include "crypto/curve25519.h" | 17 #include "crypto/curve25519.h" |
| 17 #include "crypto/hkdf.h" | 18 #include "crypto/hkdf.h" |
| 18 #include "crypto/random.h" | 19 #include "crypto/random.h" |
| 19 #include "net/base/elements_upload_data_stream.h" | 20 #include "net/base/elements_upload_data_stream.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 chrome_browser_net::EncryptedCertLoggerRequest:: | 78 chrome_browser_net::EncryptedCertLoggerRequest:: |
| 78 AEAD_ECDH_AES_128_CTR_HMAC_SHA256); | 79 AEAD_ECDH_AES_128_CTR_HMAC_SHA256); |
| 79 return true; | 80 return true; |
| 80 } | 81 } |
| 81 #endif | 82 #endif |
| 82 | 83 |
| 83 } // namespace | 84 } // namespace |
| 84 | 85 |
| 85 namespace chrome_browser_net { | 86 namespace chrome_browser_net { |
| 86 | 87 |
| 88 // Constants for the Finch trial that controls whether the |
| 89 // CertificateErrorReporter supports HTTP uploads. |
| 90 const char kHttpCertificateUploadExperiment[] = |
| 91 "ReportCertificateErrorsOverHttp"; |
| 92 const char kHttpCertificateUploadGroup[] = "UploadReportsOverHttp"; |
| 93 |
| 87 CertificateErrorReporter::CertificateErrorReporter( | 94 CertificateErrorReporter::CertificateErrorReporter( |
| 88 net::URLRequestContext* request_context, | 95 net::URLRequestContext* request_context, |
| 89 const GURL& upload_url, | 96 const GURL& upload_url, |
| 90 CookiesPreference cookies_preference) | 97 CookiesPreference cookies_preference) |
| 91 : CertificateErrorReporter(request_context, | 98 : CertificateErrorReporter(request_context, |
| 92 upload_url, | 99 upload_url, |
| 93 cookies_preference, | 100 cookies_preference, |
| 94 kServerPublicKey, | 101 kServerPublicKey, |
| 95 kServerPublicKeyVersion) { | 102 kServerPublicKeyVersion) { |
| 96 } | 103 } |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 context->CreateRequest(upload_url_, net::DEFAULT_PRIORITY, this); | 174 context->CreateRequest(upload_url_, net::DEFAULT_PRIORITY, this); |
| 168 if (cookies_preference_ != SEND_COOKIES) { | 175 if (cookies_preference_ != SEND_COOKIES) { |
| 169 request->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | | 176 request->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | |
| 170 net::LOAD_DO_NOT_SAVE_COOKIES); | 177 net::LOAD_DO_NOT_SAVE_COOKIES); |
| 171 } | 178 } |
| 172 return request.Pass(); | 179 return request.Pass(); |
| 173 } | 180 } |
| 174 | 181 |
| 175 bool CertificateErrorReporter::IsHttpUploadUrlSupported() { | 182 bool CertificateErrorReporter::IsHttpUploadUrlSupported() { |
| 176 #if defined(USE_OPENSSL) | 183 #if defined(USE_OPENSSL) |
| 177 return true; | 184 return base::FieldTrialList::FindFullName(kHttpCertificateUploadExperiment) == |
| 185 kHttpCertificateUploadGroup; |
| 178 #else | 186 #else |
| 179 return false; | 187 return false; |
| 180 #endif | 188 #endif |
| 181 } | 189 } |
| 182 | 190 |
| 183 // Used only by tests. | 191 // Used only by tests. |
| 184 #if defined(USE_OPENSSL) | 192 #if defined(USE_OPENSSL) |
| 185 bool CertificateErrorReporter::DecryptCertificateErrorReport( | 193 bool CertificateErrorReporter::DecryptCertificateErrorReport( |
| 186 const uint8 server_private_key[32], | 194 const uint8 server_private_key[32], |
| 187 const EncryptedCertLoggerRequest& encrypted_report, | 195 const EncryptedCertLoggerRequest& encrypted_report, |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 } | 240 } |
| 233 | 241 |
| 234 void CertificateErrorReporter::RequestComplete(net::URLRequest* request) { | 242 void CertificateErrorReporter::RequestComplete(net::URLRequest* request) { |
| 235 std::set<net::URLRequest*>::iterator i = inflight_requests_.find(request); | 243 std::set<net::URLRequest*>::iterator i = inflight_requests_.find(request); |
| 236 DCHECK(i != inflight_requests_.end()); | 244 DCHECK(i != inflight_requests_.end()); |
| 237 scoped_ptr<net::URLRequest> url_request(*i); | 245 scoped_ptr<net::URLRequest> url_request(*i); |
| 238 inflight_requests_.erase(i); | 246 inflight_requests_.erase(i); |
| 239 } | 247 } |
| 240 | 248 |
| 241 } // namespace chrome_browser_net | 249 } // namespace chrome_browser_net |
| OLD | NEW |