Home | History | Annotate | Download | only in base
      1 // Copyright (c) 2010 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_ANDROID_NETWORK_LIBRARY_H_
      6 #define NET_BASE_ANDROID_NETWORK_LIBRARY_H_
      7 #pragma once
      8 
      9 #include <string>
     10 #include <vector>
     11 
     12 #include "base/basictypes.h"
     13 #include "net/base/net_export.h"
     14 
     15 namespace net {
     16 
     17 class NET_EXPORT AndroidNetworkLibrary {
     18  public:
     19   static void RegisterSharedInstance(AndroidNetworkLibrary* lib);
     20   static void UnregisterSharedInstance();
     21   static AndroidNetworkLibrary* GetSharedInstance();
     22 
     23   enum VerifyResult {
     24     VERIFY_OK,
     25     VERIFY_BAD_HOSTNAME,
     26     VERIFY_NO_TRUSTED_ROOT,
     27     VERIFY_INVOCATION_ERROR,
     28   };
     29   // |cert_chain| is DER encoded chain of certificates, with the server's own
     30   // certificate listed first.
     31   // |hostname| is validated against the supplied cert. |auth_type| is as per
     32   // the Java X509Certificate.checkServerTrusted method.
     33   virtual VerifyResult VerifyX509CertChain(
     34       const std::vector<std::string>& cert_chain,
     35       const std::string& hostname,
     36       const std::string& auth_type) = 0;
     37 
     38  protected:
     39   friend class LibHolder;
     40   AndroidNetworkLibrary();
     41   virtual ~AndroidNetworkLibrary();  // use UnregisterSharedInstance()
     42 
     43   DISALLOW_COPY_AND_ASSIGN(AndroidNetworkLibrary);
     44 };
     45 
     46 }  // namespace net
     47 
     48 #endif  // NET_BASE_ANDROID_NETWORK_LIBRARY_H_
     49