• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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