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

Side by Side Diff: components/ssl_errors/error_info.cc

Issue 2868733003: Improve HTTPS error page text when SubjectAltName missing (Closed)
Patch Set: Created 3 years, 7 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
« no previous file with comments | « no previous file | components/ssl_errors_strings.grdp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/ssl_errors/error_info.h" 5 #include "components/ssl_errors/error_info.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/i18n/message_formatter.h" 9 #include "base/i18n/message_formatter.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 20 matching lines...) Expand all
31 const GURL& request_url) { 31 const GURL& request_url) {
32 base::string16 details, short_description; 32 base::string16 details, short_description;
33 switch (error_type) { 33 switch (error_type) {
34 case CERT_COMMON_NAME_INVALID: { 34 case CERT_COMMON_NAME_INVALID: {
35 std::vector<std::string> dns_names; 35 std::vector<std::string> dns_names;
36 cert->GetSubjectAltName(&dns_names, nullptr); 36 cert->GetSubjectAltName(&dns_names, nullptr);
37 37
38 size_t i = 0; 38 size_t i = 0;
39 if (dns_names.empty()) { 39 if (dns_names.empty()) {
40 // The certificate had no DNS names, display an explanatory string. 40 // The certificate had no DNS names, display an explanatory string.
41 // TODO(elawrence): Change the error messsage instead of just the 41 details = l10n_util::GetStringFUTF16(
42 // placeholder string; see https://crbug.com/708268 42 IDS_CERT_ERROR_NO_SUBJECT_ALTERNATIVE_NAMES_DETAILS,
43 dns_names.push_back("[missing_subjectAltName]"); 43 UTF8ToUTF16(request_url.host()));
44 } else { 44 } else {
45 // If the certificate contains multiple DNS names, we choose the most 45 // If the certificate contains multiple DNS names, we choose the most
46 // representative one -- either the DNS name that's also in the subject 46 // representative one -- either the DNS name that's also in the subject
47 // field, or the first one. If this heuristic turns out to be 47 // field, or the first one. If this heuristic turns out to be
48 // inadequate, we can consider choosing the DNS name that is the 48 // inadequate, we can consider choosing the DNS name that is the
49 // "closest match" to the host name in the request URL, or listing all 49 // "closest match" to the host name in the request URL, or listing all
50 // the DNS names with an HTML <ul>. 50 // the DNS names with an HTML <ul>.
51 for (; i < dns_names.size(); ++i) { 51 for (; i < dns_names.size(); ++i) {
52 if (dns_names[i] == cert->subject().common_name) 52 if (dns_names[i] == cert->subject().common_name)
53 break; 53 break;
54 } 54 }
55 if (i == dns_names.size()) 55 if (i == dns_names.size())
56 i = 0; 56 i = 0;
57
58 details = l10n_util::GetStringFUTF16(
59 IDS_CERT_ERROR_COMMON_NAME_INVALID_DETAILS,
60 UTF8ToUTF16(request_url.host()),
61 net::EscapeForHTML(UTF8ToUTF16(dns_names[i])));
57 } 62 }
58 63
59 details = l10n_util::GetStringFUTF16(
60 IDS_CERT_ERROR_COMMON_NAME_INVALID_DETAILS,
61 UTF8ToUTF16(request_url.host()),
62 net::EscapeForHTML(UTF8ToUTF16(dns_names[i])));
63 short_description = l10n_util::GetStringUTF16( 64 short_description = l10n_util::GetStringUTF16(
64 IDS_CERT_ERROR_COMMON_NAME_INVALID_DESCRIPTION); 65 IDS_CERT_ERROR_COMMON_NAME_INVALID_DESCRIPTION);
65 break; 66 break;
66 } 67 }
67 case CERT_DATE_INVALID: 68 case CERT_DATE_INVALID:
68 if (cert->HasExpired()) { 69 if (cert->HasExpired()) {
69 // Make sure to round up to the smallest integer value not less than 70 // Make sure to round up to the smallest integer value not less than
70 // the expiration value (https://crbug.com/476758). 71 // the expiration value (https://crbug.com/476758).
71 int expiration_value = 72 int expiration_value =
72 (base::Time::Now() - cert->valid_expiry()).InDays() + 1; 73 (base::Time::Now() - cert->valid_expiry()).InDays() + 1;
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 261
261 for (size_t i = 0; i < arraysize(kErrorFlags); ++i) { 262 for (size_t i = 0; i < arraysize(kErrorFlags); ++i) {
262 if ((cert_status & kErrorFlags[i]) && errors) { 263 if ((cert_status & kErrorFlags[i]) && errors) {
263 errors->push_back( 264 errors->push_back(
264 ErrorInfo::CreateError(kErrorTypes[i], cert.get(), url)); 265 ErrorInfo::CreateError(kErrorTypes[i], cert.get(), url));
265 } 266 }
266 } 267 }
267 } 268 }
268 269
269 } // namespace ssl_errors 270 } // namespace ssl_errors
OLDNEW
« no previous file with comments | « no previous file | components/ssl_errors_strings.grdp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698