| Index: chrome/browser/ui/website_settings/website_settings.cc
|
| diff --git a/chrome/browser/ui/website_settings/website_settings.cc b/chrome/browser/ui/website_settings/website_settings.cc
|
| index df26aea09484c37e76fea5372240fc6e2624ec18..ed0b09a82bcf0caa33640e430b53071d3ca2d8d3 100644
|
| --- a/chrome/browser/ui/website_settings/website_settings.cc
|
| +++ b/chrome/browser/ui/website_settings/website_settings.cc
|
| @@ -401,50 +401,68 @@ void WebsiteSettings::Init(Profile* profile,
|
| } else {
|
| NOTREACHED() << "Need to specify string for this warning";
|
| }
|
| - } else if (ssl.cert_status & net::CERT_STATUS_IS_EV) {
|
| - // EV HTTPS page.
|
| - site_identity_status_ = GetSiteIdentityStatusByCTInfo(
|
| - ssl.signed_certificate_timestamp_ids, true);
|
| - DCHECK(!cert->subject().organization_names.empty());
|
| - organization_name_ = UTF8ToUTF16(cert->subject().organization_names[0]);
|
| - // An EV Cert is required to have a city (localityName) and country but
|
| - // state is "if any".
|
| - DCHECK(!cert->subject().locality_name.empty());
|
| - DCHECK(!cert->subject().country_name.empty());
|
| - base::string16 locality;
|
| - if (!cert->subject().state_or_province_name.empty()) {
|
| - locality = l10n_util::GetStringFUTF16(
|
| - IDS_PAGEINFO_ADDRESS,
|
| - UTF8ToUTF16(cert->subject().locality_name),
|
| - UTF8ToUTF16(cert->subject().state_or_province_name),
|
| - UTF8ToUTF16(cert->subject().country_name));
|
| + } else {
|
| + if (ssl.cert_status & net::CERT_STATUS_IS_EV) {
|
| + // EV HTTPS page.
|
| + site_identity_status_ = GetSiteIdentityStatusByCTInfo(
|
| + ssl.signed_certificate_timestamp_ids, true);
|
| + DCHECK(!cert->subject().organization_names.empty());
|
| + organization_name_ = UTF8ToUTF16(cert->subject().organization_names[0]);
|
| + // An EV Cert is required to have a city (localityName) and country but
|
| + // state is "if any".
|
| + DCHECK(!cert->subject().locality_name.empty());
|
| + DCHECK(!cert->subject().country_name.empty());
|
| + base::string16 locality;
|
| + if (!cert->subject().state_or_province_name.empty()) {
|
| + locality = l10n_util::GetStringFUTF16(
|
| + IDS_PAGEINFO_ADDRESS,
|
| + UTF8ToUTF16(cert->subject().locality_name),
|
| + UTF8ToUTF16(cert->subject().state_or_province_name),
|
| + UTF8ToUTF16(cert->subject().country_name));
|
| + } else {
|
| + locality = l10n_util::GetStringFUTF16(
|
| + IDS_PAGEINFO_PARTIAL_ADDRESS,
|
| + UTF8ToUTF16(cert->subject().locality_name),
|
| + UTF8ToUTF16(cert->subject().country_name));
|
| + }
|
| + DCHECK(!cert->subject().organization_names.empty());
|
| + site_identity_details_.assign(l10n_util::GetStringFUTF16(
|
| + GetSiteIdentityDetailsMessageByCTInfo(
|
| + ssl.signed_certificate_timestamp_ids, true /* is EV */),
|
| + UTF8ToUTF16(cert->subject().organization_names[0]),
|
| + locality,
|
| + UTF8ToUTF16(cert->issuer().GetDisplayName())));
|
| } else {
|
| - locality = l10n_util::GetStringFUTF16(
|
| - IDS_PAGEINFO_PARTIAL_ADDRESS,
|
| - UTF8ToUTF16(cert->subject().locality_name),
|
| - UTF8ToUTF16(cert->subject().country_name));
|
| + // Non-EV OK HTTPS page.
|
| + site_identity_status_ = GetSiteIdentityStatusByCTInfo(
|
| + ssl.signed_certificate_timestamp_ids, false);
|
| + base::string16 issuer_name(
|
| + UTF8ToUTF16(cert->issuer().GetDisplayName()));
|
| + if (issuer_name.empty()) {
|
| + issuer_name.assign(l10n_util::GetStringUTF16(
|
| + IDS_PAGE_INFO_SECURITY_TAB_UNKNOWN_PARTY));
|
| + }
|
| +
|
| + site_identity_details_.assign(l10n_util::GetStringFUTF16(
|
| + GetSiteIdentityDetailsMessageByCTInfo(
|
| + ssl.signed_certificate_timestamp_ids, false /* not EV */),
|
| + issuer_name));
|
| }
|
| - DCHECK(!cert->subject().organization_names.empty());
|
| - site_identity_details_.assign(l10n_util::GetStringFUTF16(
|
| - GetSiteIdentityDetailsMessageByCTInfo(
|
| - ssl.signed_certificate_timestamp_ids, true /* is EV */),
|
| - UTF8ToUTF16(cert->subject().organization_names[0]),
|
| - locality,
|
| - UTF8ToUTF16(cert->issuer().GetDisplayName())));
|
| - } else {
|
| - // Non-EV OK HTTPS page.
|
| - site_identity_status_ = GetSiteIdentityStatusByCTInfo(
|
| - ssl.signed_certificate_timestamp_ids, false);
|
| - base::string16 issuer_name(UTF8ToUTF16(cert->issuer().GetDisplayName()));
|
| - if (issuer_name.empty()) {
|
| - issuer_name.assign(l10n_util::GetStringUTF16(
|
| - IDS_PAGE_INFO_SECURITY_TAB_UNKNOWN_PARTY));
|
| + // The date after which no new SHA-1 certificates may be issued.
|
| + // 2016-01-01 00:00:00 UTC
|
| + static const int64_t kSHA1LastIssuanceDate = INT64_C(13096080000000000);
|
| + if ((ssl.cert_status & net::CERT_STATUS_SHA1_SIGNATURE_PRESENT) &&
|
| + cert->valid_expiry() >
|
| + base::Time::FromInternalValue(kSHA1LastIssuanceDate) &&
|
| + base::FieldTrialList::FindFullName("SHA1IdentityUIWarning") ==
|
| + "Enabled") {
|
| + site_identity_status_ =
|
| + SITE_IDENTITY_STATUS_DEPRECATED_SIGNATURE_ALGORITHM;
|
| + site_identity_details_ +=
|
| + UTF8ToUTF16("\n\n") +
|
| + l10n_util::GetStringUTF16(
|
| + IDS_PAGE_INFO_SECURITY_TAB_DEPRECATED_SIGNATURE_ALGORITHM);
|
| }
|
| -
|
| - site_identity_details_.assign(l10n_util::GetStringFUTF16(
|
| - GetSiteIdentityDetailsMessageByCTInfo(
|
| - ssl.signed_certificate_timestamp_ids, false /* not EV */),
|
| - issuer_name));
|
| }
|
| } else {
|
| // HTTP or HTTPS with errors (not warnings).
|
| @@ -598,7 +616,9 @@ void WebsiteSettings::Init(Profile* profile,
|
| site_connection_status_ == SITE_CONNECTION_STATUS_MIXED_CONTENT ||
|
| site_identity_status_ == SITE_IDENTITY_STATUS_ERROR ||
|
| site_identity_status_ == SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN ||
|
| - site_identity_status_ == SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT)
|
| + site_identity_status_ == SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT ||
|
| + site_identity_status_ ==
|
| + SITE_IDENTITY_STATUS_DEPRECATED_SIGNATURE_ALGORITHM)
|
| tab_id = WebsiteSettingsUI::TAB_ID_CONNECTION;
|
| ui_->SetSelectedTab(tab_id);
|
| }
|
|
|