| OLD | NEW |
| 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 "content/public/browser/cert_store.h" | 9 #include "content/public/browser/cert_store.h" |
| 10 #include "grit/chromium_strings.h" | 10 #include "grit/chromium_strings.h" |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 short_description = l10n_util::GetStringUTF16( | 219 short_description = l10n_util::GetStringUTF16( |
| 220 IDS_CERT_ERROR_NAME_CONSTRAINT_VIOLATION_DESCRIPTION); | 220 IDS_CERT_ERROR_NAME_CONSTRAINT_VIOLATION_DESCRIPTION); |
| 221 break; | 221 break; |
| 222 case CERT_PINNED_KEY_MISSING: | 222 case CERT_PINNED_KEY_MISSING: |
| 223 title = l10n_util::GetStringUTF16( | 223 title = l10n_util::GetStringUTF16( |
| 224 IDS_ERRORPAGES_HEADING_PINNING_FAILURE); | 224 IDS_ERRORPAGES_HEADING_PINNING_FAILURE); |
| 225 details = l10n_util::GetStringUTF16( | 225 details = l10n_util::GetStringUTF16( |
| 226 IDS_ERRORPAGES_SUMMARY_PINNING_FAILURE); | 226 IDS_ERRORPAGES_SUMMARY_PINNING_FAILURE); |
| 227 short_description = l10n_util::GetStringUTF16( | 227 short_description = l10n_util::GetStringUTF16( |
| 228 IDS_ERRORPAGES_DETAILS_PINNING_FAILURE); | 228 IDS_ERRORPAGES_DETAILS_PINNING_FAILURE); |
| 229 case CERT_TOO_LONG_VALIDITY: |
| 230 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_TOO_LONG_VALIDITY_TITLE); |
| 231 details = l10n_util::GetStringFUTF16( |
| 232 IDS_CERT_ERROR_TOO_LONG_VALIDITY_DETAILS, |
| 233 UTF8ToUTF16(request_url.host())); |
| 234 short_description = l10n_util::GetStringUTF16( |
| 235 IDS_CERT_ERROR_TOO_LONG_VALIDITY_DESCRIPTION); |
| 236 extra_info.push_back( |
| 237 l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXTRA_INFO_1)); |
| 238 extra_info.push_back( |
| 239 l10n_util::GetStringUTF16( |
| 240 IDS_CERT_ERROR_TOO_LONG_VALIDITY_EXTRA_INFO_2)); |
| 241 break; |
| 229 case UNKNOWN: | 242 case UNKNOWN: |
| 230 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_TITLE); | 243 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_TITLE); |
| 231 details = l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_DETAILS); | 244 details = l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_DETAILS); |
| 232 short_description = | 245 short_description = |
| 233 l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_DESCRIPTION); | 246 l10n_util::GetStringUTF16(IDS_CERT_ERROR_UNKNOWN_ERROR_DESCRIPTION); |
| 234 break; | 247 break; |
| 235 default: | 248 default: |
| 236 NOTREACHED(); | 249 NOTREACHED(); |
| 237 } | 250 } |
| 238 return SSLErrorInfo(title, details, short_description, extra_info); | 251 return SSLErrorInfo(title, details, short_description, extra_info); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 263 case net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM: | 276 case net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM: |
| 264 return CERT_WEAK_SIGNATURE_ALGORITHM; | 277 return CERT_WEAK_SIGNATURE_ALGORITHM; |
| 265 case net::ERR_CERT_WEAK_KEY: | 278 case net::ERR_CERT_WEAK_KEY: |
| 266 return CERT_WEAK_KEY; | 279 return CERT_WEAK_KEY; |
| 267 case net::ERR_CERT_NAME_CONSTRAINT_VIOLATION: | 280 case net::ERR_CERT_NAME_CONSTRAINT_VIOLATION: |
| 268 return CERT_NAME_CONSTRAINT_VIOLATION; | 281 return CERT_NAME_CONSTRAINT_VIOLATION; |
| 269 case net::ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY: | 282 case net::ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY: |
| 270 return CERT_WEAK_KEY_DH; | 283 return CERT_WEAK_KEY_DH; |
| 271 case net::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN: | 284 case net::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN: |
| 272 return CERT_PINNED_KEY_MISSING; | 285 return CERT_PINNED_KEY_MISSING; |
| 286 case net::ERR_CERT_TOO_LONG_VALIDITY: |
| 287 return CERT_TOO_LONG_VALIDITY; |
| 273 default: | 288 default: |
| 274 NOTREACHED(); | 289 NOTREACHED(); |
| 275 return UNKNOWN; | 290 return UNKNOWN; |
| 276 } | 291 } |
| 277 } | 292 } |
| 278 | 293 |
| 279 // static | 294 // static |
| 280 int SSLErrorInfo::GetErrorsForCertStatus(int cert_id, | 295 int SSLErrorInfo::GetErrorsForCertStatus(int cert_id, |
| 281 net::CertStatus cert_status, | 296 net::CertStatus cert_status, |
| 282 const GURL& url, | 297 const GURL& url, |
| 283 std::vector<SSLErrorInfo>* errors) { | 298 std::vector<SSLErrorInfo>* errors) { |
| 284 const net::CertStatus kErrorFlags[] = { | 299 const net::CertStatus kErrorFlags[] = { |
| 285 net::CERT_STATUS_COMMON_NAME_INVALID, | 300 net::CERT_STATUS_COMMON_NAME_INVALID, |
| 286 net::CERT_STATUS_DATE_INVALID, | 301 net::CERT_STATUS_DATE_INVALID, |
| 287 net::CERT_STATUS_AUTHORITY_INVALID, | 302 net::CERT_STATUS_AUTHORITY_INVALID, |
| 288 net::CERT_STATUS_NO_REVOCATION_MECHANISM, | 303 net::CERT_STATUS_NO_REVOCATION_MECHANISM, |
| 289 net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION, | 304 net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION, |
| 290 net::CERT_STATUS_REVOKED, | 305 net::CERT_STATUS_REVOKED, |
| 291 net::CERT_STATUS_INVALID, | 306 net::CERT_STATUS_INVALID, |
| 292 net::CERT_STATUS_WEAK_SIGNATURE_ALGORITHM, | 307 net::CERT_STATUS_WEAK_SIGNATURE_ALGORITHM, |
| 293 net::CERT_STATUS_WEAK_KEY, | 308 net::CERT_STATUS_WEAK_KEY, |
| 294 net::CERT_STATUS_NAME_CONSTRAINT_VIOLATION, | 309 net::CERT_STATUS_NAME_CONSTRAINT_VIOLATION, |
| 310 net::CERT_STATUS_TOO_LONG_VALIDITY |
| 295 }; | 311 }; |
| 296 | 312 |
| 297 const ErrorType kErrorTypes[] = { | 313 const ErrorType kErrorTypes[] = { |
| 298 CERT_COMMON_NAME_INVALID, | 314 CERT_COMMON_NAME_INVALID, |
| 299 CERT_DATE_INVALID, | 315 CERT_DATE_INVALID, |
| 300 CERT_AUTHORITY_INVALID, | 316 CERT_AUTHORITY_INVALID, |
| 301 CERT_NO_REVOCATION_MECHANISM, | 317 CERT_NO_REVOCATION_MECHANISM, |
| 302 CERT_UNABLE_TO_CHECK_REVOCATION, | 318 CERT_UNABLE_TO_CHECK_REVOCATION, |
| 303 CERT_REVOKED, | 319 CERT_REVOKED, |
| 304 CERT_INVALID, | 320 CERT_INVALID, |
| 305 CERT_WEAK_SIGNATURE_ALGORITHM, | 321 CERT_WEAK_SIGNATURE_ALGORITHM, |
| 306 CERT_WEAK_KEY, | 322 CERT_WEAK_KEY, |
| 307 CERT_NAME_CONSTRAINT_VIOLATION, | 323 CERT_NAME_CONSTRAINT_VIOLATION, |
| 324 CERT_TOO_LONG_VALIDITY |
| 308 }; | 325 }; |
| 309 DCHECK(arraysize(kErrorFlags) == arraysize(kErrorTypes)); | 326 DCHECK(arraysize(kErrorFlags) == arraysize(kErrorTypes)); |
| 310 | 327 |
| 311 scoped_refptr<net::X509Certificate> cert = NULL; | 328 scoped_refptr<net::X509Certificate> cert = NULL; |
| 312 int count = 0; | 329 int count = 0; |
| 313 for (size_t i = 0; i < arraysize(kErrorFlags); ++i) { | 330 for (size_t i = 0; i < arraysize(kErrorFlags); ++i) { |
| 314 if (cert_status & kErrorFlags[i]) { | 331 if (cert_status & kErrorFlags[i]) { |
| 315 count++; | 332 count++; |
| 316 if (!cert.get()) { | 333 if (!cert.get()) { |
| 317 bool r = content::CertStore::GetInstance()->RetrieveCert( | 334 bool r = content::CertStore::GetInstance()->RetrieveCert( |
| 318 cert_id, &cert); | 335 cert_id, &cert); |
| 319 DCHECK(r); | 336 DCHECK(r); |
| 320 } | 337 } |
| 321 if (errors) | 338 if (errors) { |
| 322 errors->push_back( | 339 errors->push_back( |
| 323 SSLErrorInfo::CreateError(kErrorTypes[i], cert.get(), url)); | 340 SSLErrorInfo::CreateError(kErrorTypes[i], cert.get(), url)); |
| 341 } |
| 324 } | 342 } |
| 325 } | 343 } |
| 326 return count; | 344 return count; |
| 327 } | 345 } |
| OLD | NEW |