// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_SSL_SSL_ERROR_CLASSIFICATION_H_ #define CHROME_BROWSER_SSL_SSL_ERROR_CLASSIFICATION_H_ #include "base/time/time.h" #include "net/cert/x509_certificate.h" // This class calculates the severity scores for the different type of SSL // errors. class SSLErrorClassification { public: SSLErrorClassification(base::Time current_time, const net::X509Certificate& cert); ~SSLErrorClassification(); // This method checks whether the user clock is in the past or not. static bool IsUserClockInThePast(base::Time time_now); // This method checks whether the system time is too far in the future or // the user is using a version of Chrome which is more than 1 year old. static bool IsUserClockInTheFuture(base::Time time_now); // A method which calculates the severity score when the ssl error is // CERT_DATE_INVALID. float InvalidDateSeverityScore() const; static void RecordUMAStatistics(bool overridable); base::TimeDelta TimePassedSinceExpiry() const; private: FRIEND_TEST_ALL_PREFIXES(SSLErrorClassification, TestDateInvalidScore); float CalculateScoreTimePassedSinceExpiry() const; // This stores the current time. base::Time current_time_; // This stores the certificate. const net::X509Certificate& cert_; }; #endif // CHROME_BROWSER_SSL_SSL_ERROR_CLASSIFICATION_H_