PivRsaPkcsMechanism.h

00001 #ifndef _PV_RSA_MECHANISM
00002 #define _PV_RSA_MECHANISM
00003 
00004 #include "PivMechanism.h"
00005 #include "KeyContainer.h"
00006 
00007 class Token;
00008 class Session;
00009 
00015 class PivRsaPkcsMechanism : public PivMechanism
00016 {
00017     public:
00024       PivRsaPkcsMechanism(Token* thisToken);
00028       ~PivRsaPkcsMechanism(void);
00034       PIV_RV sign(Session* sess,CK_BYTE* in,CK_ULONG inLen,CK_BYTE* out,CK_ULONG* outLen);
00040       PIV_RV decrypt(Session* sess,CK_BYTE* in,CK_ULONG inLen,CK_BYTE* out,CK_ULONG* outLen);
00041 
00042       
00043     private:
00044       static const CK_MECHANISM_TYPE MY_TYPE; 
00048       static const char MY_DESC[];
00052       static const int ALGO_CODE;
00053       
00057       PIV_RSA_1024_CMD cmd;
00058       
00065       void pkcs1Dot5Encode(int ffPadding,unsigned char* inData,int inDataLen);
00066 
00073       class Stripper {
00074         public:
00082           virtual int strip(unsigned char* in,unsigned char* out,int len) = 0;
00083       };
00087       class SignStripper : public Stripper {
00088         public:
00093           int strip(unsigned char* in,unsigned char* out,int len);      
00094       };
00098       class DecryptStripper : public Stripper {
00099         public:
00104           int strip(unsigned char* in,unsigned char* out,int len);      
00105       };
00115       PIV_RV execute(Session* sess,CK_BYTE* in,CK_ULONG inLen,CK_BYTE* out,CK_ULONG* outLen,Stripper* stripper);
00119       DecryptStripper decryptStripper;
00123       SignStripper signStripper;
00124 };
00125 #endif
00126 
00127 
00128 
00129 
00130 
00131 
00132 
00133 
00134 
00135 
00136 
00137 
00138 

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