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

Side by Side Diff: chrome/browser/ssl/ssl_error_info.cc

Issue 20628006: Reject certificates that are valid for too long. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ssl/ssl_error_info.h" 5 #include "chrome/browser/ssl/ssl_error_info.h"
6 6
7 #include "base/i18n/time_formatting.h" 7 #include "base/i18n/time_formatting.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/common/time_format.h" 9 #include "chrome/common/time_format.h"
10 #include "content/public/browser/cert_store.h" 10 #include "content/public/browser/cert_store.h"
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 details = l10n_util::GetStringFUTF16( 192 details = l10n_util::GetStringFUTF16(
193 IDS_CERT_ERROR_WEAK_KEY_DETAILS, UTF8ToUTF16(request_url.host())); 193 IDS_CERT_ERROR_WEAK_KEY_DETAILS, UTF8ToUTF16(request_url.host()));
194 short_description = l10n_util::GetStringUTF16( 194 short_description = l10n_util::GetStringUTF16(
195 IDS_CERT_ERROR_WEAK_KEY_DESCRIPTION); 195 IDS_CERT_ERROR_WEAK_KEY_DESCRIPTION);
196 extra_info.push_back( 196 extra_info.push_back(
197 l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXTRA_INFO_1)); 197 l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXTRA_INFO_1));
198 extra_info.push_back( 198 extra_info.push_back(
199 l10n_util::GetStringUTF16( 199 l10n_util::GetStringUTF16(
200 IDS_CERT_ERROR_WEAK_KEY_EXTRA_INFO_2)); 200 IDS_CERT_ERROR_WEAK_KEY_EXTRA_INFO_2));
201 break; 201 break;
202 case CERT_TOO_LONG_VALIDITY:
203 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_TOO_LONG_VALIDITY_TITLE);
204 details = l10n_util::GetStringFUTF16(
205 IDS_CERT_ERROR_TOO_LONG_VALIDITY_DETAILS,
206 UTF8ToUTF16(request_url.host()));
207 short_description = l10n_util::GetStringUTF16(
208 IDS_CERT_ERROR_TOO_LONG_VALIDITY_DESCRIPTION);
209 extra_info.push_back(
210 l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXTRA_INFO_1));
211 extra_info.push_back(
212 l10n_util::GetStringUTF16(
213 IDS_CERT_ERROR_TOO_LONG_VALIDITY_EXTRA_INFO_2));
214 break;
202 case UNKNOWN: 215 case UNKNOWN:
203 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_TITLE); 216 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_TITLE);
204 details = l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_DETAILS); 217 details = l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_DETAILS);
205 short_description = 218 short_description =
206 l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_DESCRIPTION); 219 l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_DESCRIPTION);
207 break; 220 break;
208 default: 221 default:
209 NOTREACHED(); 222 NOTREACHED();
210 } 223 }
211 return SSLErrorInfo(title, details, short_description, extra_info); 224 return SSLErrorInfo(title, details, short_description, extra_info);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 std::vector<SSLErrorInfo>* errors) { 263 std::vector<SSLErrorInfo>* errors) {
251 const net::CertStatus kErrorFlags[] = { 264 const net::CertStatus kErrorFlags[] = {
252 net::CERT_STATUS_COMMON_NAME_INVALID, 265 net::CERT_STATUS_COMMON_NAME_INVALID,
253 net::CERT_STATUS_DATE_INVALID, 266 net::CERT_STATUS_DATE_INVALID,
254 net::CERT_STATUS_AUTHORITY_INVALID, 267 net::CERT_STATUS_AUTHORITY_INVALID,
255 net::CERT_STATUS_NO_REVOCATION_MECHANISM, 268 net::CERT_STATUS_NO_REVOCATION_MECHANISM,
256 net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION, 269 net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION,
257 net::CERT_STATUS_REVOKED, 270 net::CERT_STATUS_REVOKED,
258 net::CERT_STATUS_INVALID, 271 net::CERT_STATUS_INVALID,
259 net::CERT_STATUS_WEAK_SIGNATURE_ALGORITHM, 272 net::CERT_STATUS_WEAK_SIGNATURE_ALGORITHM,
260 net::CERT_STATUS_WEAK_KEY 273 net::CERT_STATUS_WEAK_KEY,
274 net::CERT_STATUS_TOO_LONG_VALIDITY
261 }; 275 };
262 276
263 const ErrorType kErrorTypes[] = { 277 const ErrorType kErrorTypes[] = {
264 CERT_COMMON_NAME_INVALID, 278 CERT_COMMON_NAME_INVALID,
265 CERT_DATE_INVALID, 279 CERT_DATE_INVALID,
266 CERT_AUTHORITY_INVALID, 280 CERT_AUTHORITY_INVALID,
267 CERT_NO_REVOCATION_MECHANISM, 281 CERT_NO_REVOCATION_MECHANISM,
268 CERT_UNABLE_TO_CHECK_REVOCATION, 282 CERT_UNABLE_TO_CHECK_REVOCATION,
269 CERT_REVOKED, 283 CERT_REVOKED,
270 CERT_INVALID, 284 CERT_INVALID,
271 CERT_WEAK_SIGNATURE_ALGORITHM, 285 CERT_WEAK_SIGNATURE_ALGORITHM,
272 CERT_WEAK_KEY 286 CERT_WEAK_KEY,
287 CERT_TOO_LONG_VALIDITY
273 }; 288 };
274 DCHECK(arraysize(kErrorFlags) == arraysize(kErrorTypes)); 289 DCHECK(arraysize(kErrorFlags) == arraysize(kErrorTypes));
275 290
276 scoped_refptr<net::X509Certificate> cert = NULL; 291 scoped_refptr<net::X509Certificate> cert = NULL;
277 int count = 0; 292 int count = 0;
278 for (size_t i = 0; i < arraysize(kErrorFlags); ++i) { 293 for (size_t i = 0; i < arraysize(kErrorFlags); ++i) {
279 if (cert_status & kErrorFlags[i]) { 294 if (cert_status & kErrorFlags[i]) {
280 count++; 295 count++;
281 if (!cert.get()) { 296 if (!cert.get()) {
282 bool r = content::CertStore::GetInstance()->RetrieveCert( 297 bool r = content::CertStore::GetInstance()->RetrieveCert(
283 cert_id, &cert); 298 cert_id, &cert);
284 DCHECK(r); 299 DCHECK(r);
285 } 300 }
286 if (errors) 301 if (errors) {
287 errors->push_back( 302 errors->push_back(
288 SSLErrorInfo::CreateError(kErrorTypes[i], cert.get(), url)); 303 SSLErrorInfo::CreateError(kErrorTypes[i], cert.get(), url));
304 }
289 } 305 }
290 } 306 }
291 return count; 307 return count;
292 } 308 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698