00001 #ifndef MECHANISM_H 00002 #define MECHANISM_H 00003 00004 #include "common.h" 00005 00006 #include "GenericCryptoObject.h" 00007 #include "CryptoObject.h" 00008 00009 class Session; 00014 class Mechanism : public GenericCryptoObject 00015 { 00016 public: 00020 virtual ~Mechanism(){} 00021 virtual string getName(void) = 0; 00022 virtual CK_RV getInfo(CK_MECHANISM_INFO_PTR infoOut) = 0; 00026 virtual CK_MECHANISM_TYPE getType(void) = 0; 00030 virtual CK_ULONG getMinKeySize(void) = 0; 00034 virtual CK_ULONG getMaxKeySize(void) = 0; 00038 virtual CK_FLAGS getFlags(void) = 0; 00050 virtual CK_ULONG sign(Session* sess,CK_BYTE* in,CK_ULONG inLen,CK_BYTE* out,CK_ULONG* outLen) = 0; 00062 virtual CK_ULONG decrypt(Session* sess,CK_BYTE* in,CK_ULONG inLen,CK_BYTE* out,CK_ULONG* outLen) = 0; 00063 00064 }; 00065 #endif