1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file. 4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef NET_BASE_CRYPTO_MODULE_H_ 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define NET_BASE_CRYPTO_MODULE_H_ 7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#pragma once 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include <string> 10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include <vector> 11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted.h" 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#if defined(USE_NSS) 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsentypedef struct PK11SlotInfoStr PK11SlotInfo; 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif 17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 18dc0f95d653279beabeb9817299e2902918ba123eKristian Monsennamespace net { 19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass CryptoModule; 21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsentypedef std::vector<scoped_refptr<CryptoModule> > CryptoModuleList; 23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass CryptoModule : public base::RefCountedThreadSafe<CryptoModule> { 25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public: 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#if defined(USE_NSS) 27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen typedef PK11SlotInfo* OSModuleHandle; 28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#else 29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen typedef void* OSModuleHandle; 30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen OSModuleHandle os_module_handle() const { return module_handle_; } 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen std::string GetTokenName() const; 35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen static CryptoModule* CreateFromHandle(OSModuleHandle handle); 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen private: 39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen friend class base::RefCountedThreadSafe<CryptoModule>; 40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen explicit CryptoModule(OSModuleHandle handle); 42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ~CryptoModule(); 43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen OSModuleHandle module_handle_; 45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen DISALLOW_COPY_AND_ASSIGN(CryptoModule); 47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}; 48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 49dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} // namespace net 50dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif // NET_BASE_CRYPTO_MODULE_H_ 52