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_BASE_CRYPTO_MODULE_H_ 6 #define NET_BASE_CRYPTO_MODULE_H_ 7 #pragma once 8 9 #include <string> 10 #include <vector> 11 12 #include "base/memory/ref_counted.h" 13 14 #if defined(USE_NSS) 15 typedef struct PK11SlotInfoStr PK11SlotInfo; 16 #endif 17 18 namespace net { 19 20 class CryptoModule; 21 22 typedef std::vector<scoped_refptr<CryptoModule> > CryptoModuleList; 23 24 class CryptoModule : public base::RefCountedThreadSafe<CryptoModule> { 25 public: 26 #if defined(USE_NSS) 27 typedef PK11SlotInfo* OSModuleHandle; 28 #else 29 typedef void* OSModuleHandle; 30 #endif 31 32 OSModuleHandle os_module_handle() const { return module_handle_; } 33 34 std::string GetTokenName() const; 35 36 static CryptoModule* CreateFromHandle(OSModuleHandle handle); 37 38 private: 39 friend class base::RefCountedThreadSafe<CryptoModule>; 40 41 explicit CryptoModule(OSModuleHandle handle); 42 ~CryptoModule(); 43 44 OSModuleHandle module_handle_; 45 46 DISALLOW_COPY_AND_ASSIGN(CryptoModule); 47 }; 48 49 } // namespace net 50 51 #endif // NET_BASE_CRYPTO_MODULE_H_ 52