Home | History | Annotate | Download | only in cert
      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_CERT_CERT_VERIFY_RESULT_H_
      6 #define NET_CERT_CERT_VERIFY_RESULT_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/memory/ref_counted.h"
     11 #include "net/base/net_export.h"
     12 #include "net/cert/cert_status_flags.h"
     13 #include "net/cert/x509_cert_types.h"
     14 
     15 namespace net {
     16 
     17 class X509Certificate;
     18 
     19 // The result of certificate verification.
     20 class NET_EXPORT CertVerifyResult {
     21  public:
     22   CertVerifyResult();
     23   ~CertVerifyResult();
     24 
     25   void Reset();
     26 
     27   // Copies from |other| to |this|.
     28   void CopyFrom(const CertVerifyResult& other) {
     29     *this = other;
     30   }
     31 
     32   // The certificate and chain that was constructed during verification.
     33   // Note that the though the verified certificate will match the originally
     34   // supplied certificate, the intermediate certificates stored within may
     35   // be substantially different. In the event of a verification failure, this
     36   // will contain the chain as supplied by the server. This may be NULL if
     37   // running within the sandbox.
     38   scoped_refptr<X509Certificate> verified_cert;
     39 
     40   // Bitmask of CERT_STATUS_* from net/base/cert_status_flags.h. Note that
     41   // these status flags apply to the certificate chain returned in
     42   // |verified_cert|, rather than the originally supplied certificate
     43   // chain.
     44   CertStatus cert_status;
     45 
     46   // Properties of the certificate chain.
     47   bool has_md5;
     48   bool has_md2;
     49   bool has_md4;
     50 
     51   // If the certificate was successfully verified then this contains the
     52   // hashes, in several hash algorithms, of the SubjectPublicKeyInfos of the
     53   // chain.
     54   HashValueVector public_key_hashes;
     55 
     56   // is_issued_by_known_root is true if we recognise the root CA as a standard
     57   // root.  If it isn't then it's probably the case that this certificate was
     58   // generated by a MITM proxy whose root has been installed locally. This is
     59   // meaningless if the certificate was not trusted.
     60   bool is_issued_by_known_root;
     61 
     62   // is_issued_by_additional_trust_anchor is true if the root CA used for this
     63   // verification came from the list of additional trust anchors.
     64   bool is_issued_by_additional_trust_anchor;
     65 
     66   // True if a fallback to the common name was used when matching the host
     67   // name, rather than using the subjectAltName.
     68   bool common_name_fallback_used;
     69 };
     70 
     71 }  // namespace net
     72 
     73 #endif  // NET_CERT_CERT_VERIFY_RESULT_H_
     74