// Copyright (c) 2011 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_CRYPTO_MODULE_H_ #define NET_BASE_CRYPTO_MODULE_H_ #include #include #include "base/macros.h" #include "base/memory/ref_counted.h" #include "net/base/net_export.h" #if defined(USE_NSS_CERTS) typedef struct PK11SlotInfoStr PK11SlotInfo; #endif namespace net { class CryptoModule; typedef std::vector > CryptoModuleList; class NET_EXPORT CryptoModule : public base::RefCountedThreadSafe { public: #if defined(USE_NSS_CERTS) typedef PK11SlotInfo* OSModuleHandle; #else typedef void* OSModuleHandle; #endif OSModuleHandle os_module_handle() const { return module_handle_; } std::string GetTokenName() const; static CryptoModule* CreateFromHandle(OSModuleHandle handle); private: friend class base::RefCountedThreadSafe; explicit CryptoModule(OSModuleHandle handle); ~CryptoModule(); OSModuleHandle module_handle_; DISALLOW_COPY_AND_ASSIGN(CryptoModule); }; } // namespace net #endif // NET_BASE_CRYPTO_MODULE_H_