summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ssl/connection_security_helper.h
blob: 68ddd1b230910b36c898552a0d52dd48be16f299 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Copyright 2015 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_CONNECTION_SECURITY_HELPER_H_
#define CHROME_BROWSER_SSL_CONNECTION_SECURITY_HELPER_H_

#include "base/macros.h"

namespace content {
class WebContents;
}  // namespace content

// This class is responsible for computing the security level of a page.
class ConnectionSecurityHelper {
 public:
  // TODO(wtc): unify this enum with SecurityStyle.  We
  // don't need two sets of security UI levels.  SECURITY_STYLE_AUTHENTICATED
  // needs to be refined into three levels: warning, standard, and EV.
  // See crbug.com/425728
  //
  // If you reorder, add, or delete values from this enum, you must also
  // update the UI icons in ToolbarModelImpl::GetIconForSecurityLevel.
  //
  // A Java counterpart will be generated for this enum.
  // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.ssl
  // GENERATED_JAVA_CLASS_NAME_OVERRIDE: ConnectionSecurityHelperSecurityLevel
  enum SecurityLevel {
    // HTTP/no URL
    NONE,

    // HTTPS with valid EV cert
    EV_SECURE,

    // HTTPS (non-EV)
    SECURE,

    // HTTPS, but unable to check certificate revocation status or with insecure
    // content on the page
    SECURITY_WARNING,

    // HTTPS, but the certificate verification chain is anchored on a
    // certificate that was installed by the system administrator
    SECURITY_POLICY_WARNING,

    // Attempted HTTPS and failed, page not authenticated
    SECURITY_ERROR,
  };

  // Returns a security level describing the overall security state of
  // the given |WebContents|.
  static SecurityLevel GetSecurityLevelForWebContents(
      content::WebContents* web_contents);

 private:
  DISALLOW_IMPLICIT_CONSTRUCTORS(ConnectionSecurityHelper);
};

#endif  // CHROME_BROWSER_SSL_CONNECTION_SECURITY_HELPER_H_