00001 #ifndef ESI_PKCS11_MOD_H
00002 #define ESI_PKCS11_MOD_H 1
00003
00004 #include "common.h"
00005
00006 #include "Session.h"
00007 #include "Slot.h"
00008
00009 class Session;
00010 class Slot;
00011
00012
00017 class EsiPkcs11Module
00018 {
00019 public:
00023 EsiPkcs11Module(void);
00027 ~EsiPkcs11Module(void);
00028 string getManufacturerId(void);
00029 string getModuleDescription(void);
00030 int getCryptokiMinorVersion(void);
00034 int getCryptokiMajorVersion(void);
00038 int getLibraryMinorVersion(void);
00042 int getLibraryMajorVersion(void);
00043
00050 CK_RV getInfo(CK_INFO* pInfo);
00051
00056 Session* getSession(CK_SESSION_HANDLE handle);
00061 list<Slot*> getSlotList();
00065 Slot* getSlot(CK_SLOT_ID id);
00066
00074 Session* openSession(CK_SLOT_ID slotID, CK_FLAGS flags, CK_VOID_PTR pApplication, CK_NOTIFY notifyFunc);
00078 void closeSession(CK_SESSION_HANDLE hSession);
00079
00080 template <class Map>
00081 static void deleteMap(Map& someMap);
00082
00083
00084 private:
00088 map<CK_SESSION_HANDLE,Session*> sessions;
00092 map<CK_SLOT_ID,Slot*> slots;
00096 static CK_INFO info;
00100 void loadSlots();
00101
00102 public:
00103 CK_RV openSession(void);
00104 };
00105 #endif