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