1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef NET_BASE_SSL_INFO_H_ 6#define NET_BASE_SSL_INFO_H_ 7#pragma once 8 9#include <vector> 10 11#include "base/memory/ref_counted.h" 12#include "net/base/net_export.h" 13#include "net/base/x509_cert_types.h" 14 15namespace net { 16 17class X509Certificate; 18 19// SSL connection info. 20// This is really a struct. All members are public. 21class NET_EXPORT SSLInfo { 22 public: 23 SSLInfo(); 24 SSLInfo(const SSLInfo& info); 25 ~SSLInfo(); 26 SSLInfo& operator=(const SSLInfo& info); 27 28 void Reset(); 29 30 bool is_valid() const { return cert != NULL; } 31 32 // Adds the specified |error| to the cert status. 33 void SetCertError(int error); 34 35 // The SSL certificate. 36 scoped_refptr<X509Certificate> cert; 37 38 // Bitmask of status info of |cert|, representing, for example, known errors 39 // and extended validation (EV) status. 40 // See cert_status_flags.h for values. 41 int cert_status; 42 43 // The security strength, in bits, of the SSL cipher suite. 44 // 0 means the connection is not encrypted. 45 // -1 means the security strength is unknown. 46 int security_bits; 47 48 // Information about the SSL connection itself. See 49 // ssl_connection_status_flags.h for values. The protocol version, 50 // ciphersuite, and compression in use are encoded within. 51 int connection_status; 52 53 // If the certificate is valid, then this is true iff it was rooted at a 54 // standard CA root. (As opposed to a user-installed root.) 55 bool is_issued_by_known_root; 56 57 // The hashes of the SubjectPublicKeyInfos from each certificate in the chain. 58 std::vector<SHA1Fingerprint> public_key_hashes; 59}; 60 61} // namespace net 62 63#endif // NET_BASE_SSL_INFO_H_ 64