| 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/string_number_conversions.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 9 #include "content/public/browser/cert_store.h" | 10 #include "content/public/browser/cert_store.h" |
| 10 #include "grit/chromium_strings.h" | 11 #include "grit/chromium_strings.h" |
| 11 #include "grit/generated_resources.h" | 12 #include "grit/generated_resources.h" |
| 12 #include "net/base/escape.h" | 13 #include "net/base/escape.h" |
| 13 #include "net/base/net_errors.h" | 14 #include "net/base/net_errors.h" |
| 14 #include "net/cert/cert_status_flags.h" | 15 #include "net/cert/cert_status_flags.h" |
| 15 #include "net/ssl/ssl_info.h" | 16 #include "net/ssl/ssl_info.h" |
| 16 #include "ui/base/l10n/l10n_util.h" | 17 #include "ui/base/l10n/l10n_util.h" |
| 17 #include "url/gurl.h" | 18 #include "url/gurl.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 for (; i < dns_names.size(); ++i) { | 52 for (; i < dns_names.size(); ++i) { |
| 52 if (dns_names[i] == cert->subject().common_name) | 53 if (dns_names[i] == cert->subject().common_name) |
| 53 break; | 54 break; |
| 54 } | 55 } |
| 55 if (i == dns_names.size()) | 56 if (i == dns_names.size()) |
| 56 i = 0; | 57 i = 0; |
| 57 details = | 58 details = |
| 58 l10n_util::GetStringFUTF16(IDS_CERT_ERROR_COMMON_NAME_INVALID_DETAILS, | 59 l10n_util::GetStringFUTF16(IDS_CERT_ERROR_COMMON_NAME_INVALID_DETAILS, |
| 59 UTF8ToUTF16(request_url.host()), | 60 UTF8ToUTF16(request_url.host()), |
| 60 net::EscapeForHTML( | 61 net::EscapeForHTML( |
| 61 UTF8ToUTF16(dns_names[i])), | 62 UTF8ToUTF16(dns_names[i]))); |
| 62 UTF8ToUTF16(request_url.host())); | |
| 63 short_description = l10n_util::GetStringUTF16( | 63 short_description = l10n_util::GetStringUTF16( |
| 64 IDS_CERT_ERROR_COMMON_NAME_INVALID_DESCRIPTION); | 64 IDS_CERT_ERROR_COMMON_NAME_INVALID_DESCRIPTION); |
| 65 extra_info.push_back( | 65 extra_info.push_back( |
| 66 l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXTRA_INFO_1)); | 66 l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXTRA_INFO_1)); |
| 67 extra_info.push_back( | 67 extra_info.push_back( |
| 68 l10n_util::GetStringFUTF16( | 68 l10n_util::GetStringFUTF16( |
| 69 IDS_CERT_ERROR_COMMON_NAME_INVALID_EXTRA_INFO_2, | 69 IDS_CERT_ERROR_COMMON_NAME_INVALID_EXTRA_INFO_2, |
| 70 net::EscapeForHTML(UTF8ToUTF16(cert->subject().common_name)), | 70 net::EscapeForHTML(UTF8ToUTF16(cert->subject().common_name)), |
| 71 UTF8ToUTF16(request_url.host()))); | 71 UTF8ToUTF16(request_url.host()))); |
| 72 break; | 72 break; |
| 73 } | 73 } |
| 74 case CERT_DATE_INVALID: | 74 case CERT_DATE_INVALID: |
| 75 extra_info.push_back( | 75 extra_info.push_back( |
| 76 l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXTRA_INFO_1)); | 76 l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXTRA_INFO_1)); |
| 77 if (cert->HasExpired()) { | 77 if (cert->HasExpired()) { |
| 78 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXPIRED_TITLE); | 78 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXPIRED_TITLE); |
| 79 details = l10n_util::GetStringFUTF16( | 79 details = l10n_util::GetStringFUTF16( |
| 80 IDS_CERT_ERROR_EXPIRED_DETAILS, | 80 IDS_CERT_ERROR_EXPIRED_DETAILS, |
| 81 UTF8ToUTF16(request_url.host()), | 81 UTF8ToUTF16(request_url.host()), |
| 82 UTF8ToUTF16(request_url.host()), | 82 base::IntToString16( |
| 83 base::TimeFormatFriendlyDateAndTime(base::Time::Now())); | 83 (base::Time::Now() - cert->valid_expiry()).InDays()), |
| 84 base::TimeFormatFriendlyDate(base::Time::Now())); |
| 84 short_description = | 85 short_description = |
| 85 l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXPIRED_DESCRIPTION); | 86 l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXPIRED_DESCRIPTION); |
| 86 extra_info.push_back(l10n_util::GetStringUTF16( | 87 extra_info.push_back(l10n_util::GetStringUTF16( |
| 87 IDS_CERT_ERROR_EXPIRED_DETAILS_EXTRA_INFO_2)); | 88 IDS_CERT_ERROR_EXPIRED_DETAILS_EXTRA_INFO_2)); |
| 88 } else { | 89 } else { |
| 89 // Then it must be not yet valid. We don't check that it is not yet | 90 // Then it must be not yet valid. We don't check that it is not yet |
| 90 // valid as there is still a very unlikely chance that the cert might | 91 // valid as there is still a very unlikely chance that the cert might |
| 91 // have become valid since the error occurred. | 92 // have become valid since the error occurred. |
| 92 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_NOT_YET_VALID_TITLE); | 93 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_NOT_YET_VALID_TITLE); |
| 93 details = l10n_util::GetStringFUTF16( | 94 details = l10n_util::GetStringFUTF16( |
| 94 IDS_CERT_ERROR_NOT_YET_VALID_DETAILS, | 95 IDS_CERT_ERROR_NOT_YET_VALID_DETAILS, |
| 95 UTF8ToUTF16(request_url.host()), | 96 UTF8ToUTF16(request_url.host()), |
| 96 UTF8ToUTF16(request_url.host()), | 97 base::IntToString16( |
| 97 base::TimeFormatFriendlyDateAndTime(base::Time::Now())); | 98 (cert->valid_start() - base::Time::Now()).InDays())); |
| 98 short_description = | 99 short_description = |
| 99 l10n_util::GetStringUTF16(IDS_CERT_ERROR_NOT_YET_VALID_DESCRIPTION); | 100 l10n_util::GetStringUTF16(IDS_CERT_ERROR_NOT_YET_VALID_DESCRIPTION); |
| 100 extra_info.push_back( | 101 extra_info.push_back( |
| 101 l10n_util::GetStringUTF16( | 102 l10n_util::GetStringUTF16( |
| 102 IDS_CERT_ERROR_NOT_YET_VALID_DETAILS_EXTRA_INFO_2)); | 103 IDS_CERT_ERROR_NOT_YET_VALID_DETAILS_EXTRA_INFO_2)); |
| 103 } | 104 } |
| 104 break; | 105 break; |
| 105 case CERT_AUTHORITY_INVALID: | 106 case CERT_AUTHORITY_INVALID: |
| 106 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_AUTHORITY_INVALID_TITLE); | 107 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_AUTHORITY_INVALID_TITLE); |
| 107 details = l10n_util::GetStringFUTF16( | 108 details = l10n_util::GetStringFUTF16( |
| (...skipping 28 matching lines...) Expand all Loading... |
| 136 break; | 137 break; |
| 137 case CERT_NO_REVOCATION_MECHANISM: | 138 case CERT_NO_REVOCATION_MECHANISM: |
| 138 title = l10n_util::GetStringUTF16( | 139 title = l10n_util::GetStringUTF16( |
| 139 IDS_CERT_ERROR_NO_REVOCATION_MECHANISM_TITLE); | 140 IDS_CERT_ERROR_NO_REVOCATION_MECHANISM_TITLE); |
| 140 details = l10n_util::GetStringUTF16( | 141 details = l10n_util::GetStringUTF16( |
| 141 IDS_CERT_ERROR_NO_REVOCATION_MECHANISM_DETAILS); | 142 IDS_CERT_ERROR_NO_REVOCATION_MECHANISM_DETAILS); |
| 142 short_description = l10n_util::GetStringUTF16( | 143 short_description = l10n_util::GetStringUTF16( |
| 143 IDS_CERT_ERROR_NO_REVOCATION_MECHANISM_DESCRIPTION); | 144 IDS_CERT_ERROR_NO_REVOCATION_MECHANISM_DESCRIPTION); |
| 144 break; | 145 break; |
| 145 case CERT_UNABLE_TO_CHECK_REVOCATION: | 146 case CERT_UNABLE_TO_CHECK_REVOCATION: |
| 146 title = l10n_util::GetStringUTF16( | 147 // TODO(felt): Hasn't this been deprecated? |
| 147 IDS_CERT_ERROR_UNABLE_TO_CHECK_REVOCATION_TITLE); | 148 title = l10n_util::GetStringFUTF16( |
| 149 IDS_CERT_ERROR_UNABLE_TO_CHECK_REVOCATION_TITLE, |
| 150 UTF8ToUTF16(request_url.host())); |
| 148 details = l10n_util::GetStringUTF16( | 151 details = l10n_util::GetStringUTF16( |
| 149 IDS_CERT_ERROR_UNABLE_TO_CHECK_REVOCATION_DETAILS); | 152 IDS_CERT_ERROR_UNABLE_TO_CHECK_REVOCATION_DETAILS); |
| 150 short_description = l10n_util::GetStringUTF16( | 153 short_description = l10n_util::GetStringUTF16( |
| 151 IDS_CERT_ERROR_UNABLE_TO_CHECK_REVOCATION_DESCRIPTION); | 154 IDS_CERT_ERROR_UNABLE_TO_CHECK_REVOCATION_DESCRIPTION); |
| 152 break; | 155 break; |
| 153 case CERT_REVOKED: | 156 case CERT_REVOKED: |
| 154 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_REVOKED_CERT_TITLE); | 157 title = l10n_util::GetStringUTF16(IDS_CERT_ERROR_REVOKED_CERT_TITLE); |
| 155 details = l10n_util::GetStringFUTF16(IDS_CERT_ERROR_REVOKED_CERT_DETAILS, | 158 details = l10n_util::GetStringFUTF16(IDS_CERT_ERROR_REVOKED_CERT_DETAILS, |
| 156 UTF8ToUTF16(request_url.host())); | 159 UTF8ToUTF16(request_url.host())); |
| 157 short_description = | 160 short_description = |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 cert_id, &cert); | 320 cert_id, &cert); |
| 318 DCHECK(r); | 321 DCHECK(r); |
| 319 } | 322 } |
| 320 if (errors) | 323 if (errors) |
| 321 errors->push_back( | 324 errors->push_back( |
| 322 SSLErrorInfo::CreateError(kErrorTypes[i], cert.get(), url)); | 325 SSLErrorInfo::CreateError(kErrorTypes[i], cert.get(), url)); |
| 323 } | 326 } |
| 324 } | 327 } |
| 325 return count; | 328 return count; |
| 326 } | 329 } |
| OLD | NEW |