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

Side by Side Diff: chrome/browser/ui/website_settings/website_settings.cc

Issue 27026002: CT: Adding preliminary Certificate Transparency support to Chromium. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Distinguish between SCTs from unknown logs and unverified ones Created 7 years, 1 month 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/ui/website_settings/website_settings.h" 5 #include "chrome/browser/ui/website_settings/website_settings.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 content::CertStore* cert_store) 82 content::CertStore* cert_store)
83 : TabSpecificContentSettings::SiteDataObserver( 83 : TabSpecificContentSettings::SiteDataObserver(
84 tab_specific_content_settings), 84 tab_specific_content_settings),
85 ui_(ui), 85 ui_(ui),
86 infobar_service_(infobar_service), 86 infobar_service_(infobar_service),
87 show_info_bar_(false), 87 show_info_bar_(false),
88 site_url_(url), 88 site_url_(url),
89 site_identity_status_(SITE_IDENTITY_STATUS_UNKNOWN), 89 site_identity_status_(SITE_IDENTITY_STATUS_UNKNOWN),
90 cert_id_(0), 90 cert_id_(0),
91 site_connection_status_(SITE_CONNECTION_STATUS_UNKNOWN), 91 site_connection_status_(SITE_CONNECTION_STATUS_UNKNOWN),
92 cert_transparency_status_(CERT_TRANSPARENCY_STATUS_UNKNOWN),
92 cert_store_(cert_store), 93 cert_store_(cert_store),
93 content_settings_(profile->GetHostContentSettingsMap()) { 94 content_settings_(profile->GetHostContentSettingsMap()) {
94 Init(profile, url, ssl); 95 Init(profile, url, ssl);
95 96
96 HistoryService* history_service = HistoryServiceFactory::GetForProfile( 97 HistoryService* history_service = HistoryServiceFactory::GetForProfile(
97 profile, Profile::EXPLICIT_ACCESS); 98 profile, Profile::EXPLICIT_ACCESS);
98 if (history_service) { 99 if (history_service) {
99 history_service->GetVisibleVisitCountToHost( 100 history_service->GetVisibleVisitCountToHost(
100 site_url_, 101 site_url_,
101 &visit_count_request_consumer_, 102 &visit_count_request_consumer_,
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 site_identity_details_ += errors[i].short_description(); 356 site_identity_details_ += errors[i].short_description();
356 } 357 }
357 358
358 if (ssl.cert_status & net::CERT_STATUS_NON_UNIQUE_NAME) { 359 if (ssl.cert_status & net::CERT_STATUS_NON_UNIQUE_NAME) {
359 site_identity_details_ += ASCIIToUTF16("\n\n"); 360 site_identity_details_ += ASCIIToUTF16("\n\n");
360 site_identity_details_ += l10n_util::GetStringUTF16( 361 site_identity_details_ += l10n_util::GetStringUTF16(
361 IDS_PAGE_INFO_SECURITY_TAB_NON_UNIQUE_NAME); 362 IDS_PAGE_INFO_SECURITY_TAB_NON_UNIQUE_NAME);
362 } 363 }
363 } 364 }
364 365
366
367 // Certificate Transparency: Priority for indicators:
368 // 1. Has valid SCT from known log.
369 // 2. Has SCT which could not be verified from a known log.
370 // 3. Has SCT(s) from unknown logs
371 // 4. No CT information
372 if (ssl.cert_id) {
373 if (ssl.cert_status & net::CERT_STATUS_HAS_VALID_SCT) {
374 cert_transparency_status_ = CERT_TRANSPARENCY_STATUS_HAS_VALID_SCT;
375 cert_transparency_details_.assign(l10n_util::GetStringUTF16(
376 IDS_PAGE_INFO_SECURITY_TAB_CT_VERIFIED));
377 } else if (ssl.cert_status & net::CERT_STATUS_HAS_SCT_FROM_KNOWN_LOG) {
378 cert_transparency_status_ = CERT_TRANSPARENCY_STATUS_HAS_SCT;
379 cert_transparency_details_.assign(l10n_util::GetStringUTF16(
380 IDS_PAGE_INFO_SECURITY_TAB_CT_NOT_VERIFIED));
381 } else if (ssl.cert_status & net::CERT_STATUS_HAS_ANY_SCT) {
382 cert_transparency_status_ = CERT_TRANSPARENCY_STATUS_HAS_SCT;
383 cert_transparency_details_.assign(l10n_util::GetStringUTF16(
384 IDS_PAGE_INFO_SECURITY_TAB_CT_HAS_SCT));
385 } else {
386 // No CT information
387 cert_transparency_status_ = CERT_TRANSPARENCY_STATUS_UNKNOWN;
388 cert_transparency_details_.assign(l10n_util::GetStringUTF16(
389 IDS_PAGE_INFO_SECURITY_TAB_CT_NO_SCT));
390 }
391 }
392
365 // Site Connection 393 // Site Connection
366 // We consider anything less than 80 bits encryption to be weak encryption. 394 // We consider anything less than 80 bits encryption to be weak encryption.
367 // TODO(wtc): Bug 1198735: report mixed/unsafe content for unencrypted and 395 // TODO(wtc): Bug 1198735: report mixed/unsafe content for unencrypted and
368 // weakly encrypted connections. 396 // weakly encrypted connections.
369 site_connection_status_ = SITE_CONNECTION_STATUS_UNKNOWN; 397 site_connection_status_ = SITE_CONNECTION_STATUS_UNKNOWN;
370 398
371 if (!ssl.cert_id) { 399 if (!ssl.cert_id) {
372 // Not HTTPS. 400 // Not HTTPS.
373 DCHECK_EQ(ssl.security_style, content::SECURITY_STYLE_UNAUTHENTICATED); 401 DCHECK_EQ(ssl.security_style, content::SECURITY_STYLE_UNAUTHENTICATED);
374 if (ssl.security_style == content::SECURITY_STYLE_UNAUTHENTICATED) 402 if (ssl.security_style == content::SECURITY_STYLE_UNAUTHENTICATED)
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 else 613 else
586 info.site_identity = site_url_.host(); 614 info.site_identity = site_url_.host();
587 615
588 info.connection_status = site_connection_status_; 616 info.connection_status = site_connection_status_;
589 info.connection_status_description = 617 info.connection_status_description =
590 UTF16ToUTF8(site_connection_details_); 618 UTF16ToUTF8(site_connection_details_);
591 info.identity_status = site_identity_status_; 619 info.identity_status = site_identity_status_;
592 info.identity_status_description = 620 info.identity_status_description =
593 UTF16ToUTF8(site_identity_details_); 621 UTF16ToUTF8(site_identity_details_);
594 info.cert_id = cert_id_; 622 info.cert_id = cert_id_;
623
624 info.cert_transparency_status = cert_transparency_status_;
625 info.cert_transparency_description = UTF16ToUTF8(cert_transparency_details_);
626
595 ui_->SetIdentityInfo(info); 627 ui_->SetIdentityInfo(info);
596 } 628 }
597 629
598 void WebsiteSettings::PresentHistoryInfo(base::Time first_visit) { 630 void WebsiteSettings::PresentHistoryInfo(base::Time first_visit) {
599 if (first_visit == base::Time()) { 631 if (first_visit == base::Time()) {
600 ui_->SetFirstVisit(string16()); 632 ui_->SetFirstVisit(string16());
601 return; 633 return;
602 } 634 }
603 635
604 bool visited_before_today = false; 636 bool visited_before_today = false;
605 base::Time today = base::Time::Now().LocalMidnight(); 637 base::Time today = base::Time::Now().LocalMidnight();
606 base::Time first_visit_midnight = first_visit.LocalMidnight(); 638 base::Time first_visit_midnight = first_visit.LocalMidnight();
607 visited_before_today = (first_visit_midnight < today); 639 visited_before_today = (first_visit_midnight < today);
608 640
609 string16 first_visit_text; 641 string16 first_visit_text;
610 if (visited_before_today) { 642 if (visited_before_today) {
611 first_visit_text = l10n_util::GetStringFUTF16( 643 first_visit_text = l10n_util::GetStringFUTF16(
612 IDS_PAGE_INFO_SECURITY_TAB_VISITED_BEFORE_TODAY, 644 IDS_PAGE_INFO_SECURITY_TAB_VISITED_BEFORE_TODAY,
613 base::TimeFormatShortDate(first_visit)); 645 base::TimeFormatShortDate(first_visit));
614 } else { 646 } else {
615 first_visit_text = l10n_util::GetStringUTF16( 647 first_visit_text = l10n_util::GetStringUTF16(
616 IDS_PAGE_INFO_SECURITY_TAB_FIRST_VISITED_TODAY); 648 IDS_PAGE_INFO_SECURITY_TAB_FIRST_VISITED_TODAY);
617 649
618 } 650 }
619 ui_->SetFirstVisit(first_visit_text); 651 ui_->SetFirstVisit(first_visit_text);
620 } 652 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/website_settings/website_settings.h ('k') | chrome/browser/ui/website_settings/website_settings_ui.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698