Session.h

00001 #ifndef SESSION_H
00002 #define SESSION_H 1
00003 
00004 #include "common.h"
00005 #include "CryptoObject.h"
00006 #include "Pkcs11Exception.h"
00007 #include "Slot.h"
00008 #include "Token.h"
00009 
00010 class Slot;
00011 class Token;
00012 
00017 class Session
00018 {
00019   public:
00027     Session(Slot* slot,Token* token,CK_VOID_PTR data, CK_NOTIFY notifyFunc);
00034     Session(Session* other);
00038     ~Session(void);
00044     CK_RV getInfo(CK_SESSION_INFO* info);
00053     CK_RV login(CK_USER_TYPE userType, const char* pin);
00061     CK_RV login();
00066     CK_RV logout(void);
00067     
00078     CK_RV findObjects(CK_ATTRIBUTE_PTR  attributes,CK_ULONG ulCount);
00079     
00085     list<CryptoObject*> getSearchResults(CK_ULONG maxToFetch);
00090     UTILCardHandle getHandle();
00095     CK_SESSION_HANDLE getId();
00101     CryptoObject* getObjectFromToken(CK_OBJECT_HANDLE handle);
00105     bool isLoggedIn();
00111     bool isNotLoggedIn();
00112     
00123     CK_RV sign(CK_BYTE* in,CK_ULONG inLen,CK_BYTE* out,CK_ULONG* outLen);
00134     CK_RV decrypt(CK_BYTE* in,CK_ULONG inLen,CK_BYTE* out,CK_ULONG* outLen);
00140     void activate(CK_MECHANISM_TYPE mechanism,CK_OBJECT_HANDLE privKeyId);
00144     Token* getToken();
00148     void clearSearchResults();
00152     CK_OBJECT_HANDLE getActiveObj();
00156     CK_MECHANISM_TYPE getActiveMechanism();
00157   private:
00164     void init(Slot* slot,CK_VOID_PTR data, CK_NOTIFY notifyFunc);
00168     CK_SESSION_INFO info;
00172     CK_FLAGS flags;
00176     CK_VOID_PTR data;
00181     CK_NOTIFY notifyFunc;
00185     CK_MECHANISM_TYPE activeMech;
00189     CK_OBJECT_HANDLE activeObj;
00190     
00194     Token* token;
00198     Slot* slot;
00202     static char cachedPin[32];
00207     PIV_Byte loginData[15];
00211     list<CryptoObject*> searchResults;
00217     list<CryptoObject*>::iterator resultCursor;
00223     static CK_SESSION_HANDLE uniqueId;
00228     CK_SESSION_HANDLE myId;
00234     static UTILCardHandle hSession;
00238     UTILCardHandle connectToCard(); 
00239 };
00240 #endif

Generated on Fri Jan 12 15:48:41 2007 for NIST_PKCS11 by doxygen 1.3.1 using KingsTools