// Copyright (c) 2010 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 NET_BASE_ANDROID_NETWORK_LIBRARY_H_ #define NET_BASE_ANDROID_NETWORK_LIBRARY_H_ #pragma once #include <string> #include <vector> #include "base/basictypes.h" #include "net/base/net_export.h" namespace net { class NET_EXPORT AndroidNetworkLibrary { public: static void RegisterSharedInstance(AndroidNetworkLibrary* lib); static void UnregisterSharedInstance(); static AndroidNetworkLibrary* GetSharedInstance(); enum VerifyResult { VERIFY_OK, VERIFY_BAD_HOSTNAME, VERIFY_NO_TRUSTED_ROOT, VERIFY_INVOCATION_ERROR, }; // |cert_chain| is DER encoded chain of certificates, with the server's own // certificate listed first. // |hostname| is validated against the supplied cert. |auth_type| is as per // the Java X509Certificate.checkServerTrusted method. virtual VerifyResult VerifyX509CertChain( const std::vector<std::string>& cert_chain, const std::string& hostname, const std::string& auth_type) = 0; protected: friend class LibHolder; AndroidNetworkLibrary(); virtual ~AndroidNetworkLibrary(); // use UnregisterSharedInstance() DISALLOW_COPY_AND_ASSIGN(AndroidNetworkLibrary); }; } // namespace net #endif // NET_BASE_ANDROID_NETWORK_LIBRARY_H_