ssl_error_classification.h revision 116680a4aac90f2aa7413d9095a592090648e557
144d362409d5469aed47d19e7908d19bd194493aThomas Graf// Copyright 2014 The Chromium Authors. All rights reserved.
244d362409d5469aed47d19e7908d19bd194493aThomas Graf// Use of this source code is governed by a BSD-style license that can be
344d362409d5469aed47d19e7908d19bd194493aThomas Graf// found in the LICENSE file.
444d362409d5469aed47d19e7908d19bd194493aThomas Graf
544d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifndef CHROME_BROWSER_SSL_SSL_ERROR_CLASSIFICATION_H_
644d362409d5469aed47d19e7908d19bd194493aThomas Graf#define CHROME_BROWSER_SSL_SSL_ERROR_CLASSIFICATION_H_
744d362409d5469aed47d19e7908d19bd194493aThomas Graf
844d362409d5469aed47d19e7908d19bd194493aThomas Graf#include "base/time/time.h"
944d362409d5469aed47d19e7908d19bd194493aThomas Graf#include "net/cert/x509_certificate.h"
1044d362409d5469aed47d19e7908d19bd194493aThomas Graf
1144d362409d5469aed47d19e7908d19bd194493aThomas Graf// This class calculates the severity scores for the different type of SSL
1244d362409d5469aed47d19e7908d19bd194493aThomas Graf// errors.
1344d362409d5469aed47d19e7908d19bd194493aThomas Grafclass SSLErrorClassification {
1444d362409d5469aed47d19e7908d19bd194493aThomas Graf public:
1544d362409d5469aed47d19e7908d19bd194493aThomas Graf  SSLErrorClassification(base::Time current_time,
1644d362409d5469aed47d19e7908d19bd194493aThomas Graf                         const net::X509Certificate& cert);
1744d362409d5469aed47d19e7908d19bd194493aThomas Graf  ~SSLErrorClassification();
1844d362409d5469aed47d19e7908d19bd194493aThomas Graf
1944d362409d5469aed47d19e7908d19bd194493aThomas Graf  // This method checks whether the user clock is in the past or not.
2044d362409d5469aed47d19e7908d19bd194493aThomas Graf  static bool IsUserClockInThePast(base::Time time_now);
2144d362409d5469aed47d19e7908d19bd194493aThomas Graf
2244d362409d5469aed47d19e7908d19bd194493aThomas Graf  // This method checks whether the system time is too far in the future or
2344d362409d5469aed47d19e7908d19bd194493aThomas Graf  // the user is using a version of Chrome which is more than 1 year old.
2444d362409d5469aed47d19e7908d19bd194493aThomas Graf  static bool IsUserClockInTheFuture(base::Time time_now);
2544d362409d5469aed47d19e7908d19bd194493aThomas Graf
2644d362409d5469aed47d19e7908d19bd194493aThomas Graf  // A method which calculates the severity score when the ssl error is
2744d362409d5469aed47d19e7908d19bd194493aThomas Graf  // CERT_DATE_INVALID.
2844d362409d5469aed47d19e7908d19bd194493aThomas Graf  float InvalidDateSeverityScore() const;
2944d362409d5469aed47d19e7908d19bd194493aThomas Graf
3044d362409d5469aed47d19e7908d19bd194493aThomas Graf  static void RecordUMAStatistics(bool overridable);
3144d362409d5469aed47d19e7908d19bd194493aThomas Graf  base::TimeDelta TimePassedSinceExpiry() const;
3244d362409d5469aed47d19e7908d19bd194493aThomas Graf
3344d362409d5469aed47d19e7908d19bd194493aThomas Graf private:
3444d362409d5469aed47d19e7908d19bd194493aThomas Graf  FRIEND_TEST_ALL_PREFIXES(SSLErrorClassification, TestDateInvalidScore);
3544d362409d5469aed47d19e7908d19bd194493aThomas Graf
3644d362409d5469aed47d19e7908d19bd194493aThomas Graf  float CalculateScoreTimePassedSinceExpiry() const;
3744d362409d5469aed47d19e7908d19bd194493aThomas Graf
3844d362409d5469aed47d19e7908d19bd194493aThomas Graf  // This stores the current time.
3944d362409d5469aed47d19e7908d19bd194493aThomas Graf  base::Time current_time_;
4044d362409d5469aed47d19e7908d19bd194493aThomas Graf
4144d362409d5469aed47d19e7908d19bd194493aThomas Graf  // This stores the certificate.
4244d362409d5469aed47d19e7908d19bd194493aThomas Graf  const net::X509Certificate& cert_;
4344d362409d5469aed47d19e7908d19bd194493aThomas Graf};
4444d362409d5469aed47d19e7908d19bd194493aThomas Graf
4544d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif  // CHROME_BROWSER_SSL_SSL_ERROR_CLASSIFICATION_H_
4644d362409d5469aed47d19e7908d19bd194493aThomas Graf