00001 00009 #ifndef __CAPIRAWCRYPTCONTEXT_H__ 00010 #define __CAPIRAWCRYPTCONTEXT_H__ 00011 00012 #include "PKIFdll.h" 00013 #include "IPKIFRawCryptContext.h" 00014 00015 #include <wincrypt.h> 00016 00017 00018 FD_SMART_PTR(CPKIFBuffer); 00019 struct CPKIFCAPIRawImpl; 00020 00029 class CPKIFCAPIRawCryptContext : 00030 public IPKIFRawCryptContext 00031 { 00032 friend class CPKIFCAPIRaw; 00033 friend struct CPKIFCAPIRawImpl; 00034 friend class CPKIFCNGCAPIRaw; 00035 friend struct CPKIFCNGCAPIRawImpl; 00036 public: 00037 virtual ~CPKIFCAPIRawCryptContext(void); 00038 00039 private: 00041 CPKIFCAPIRawCryptContext& operator=(const CPKIFCAPIRawCryptContext& rhs); //added 4/6/2004 00043 CPKIFCAPIRawCryptContext(void); //disallow creation except by friend class 00044 00045 HCRYPTPROV m_cryptContext; 00046 HCRYPTKEY m_sessionKey; 00047 BCRYPT_HASH_HANDLE m_cngHashHandle; 00048 BCRYPT_KEY_HANDLE m_hKey; 00049 BCRYPT_ALG_HANDLE m_hBCAlg; 00050 unsigned char * m_hKeyBuffer; 00051 CPKIFBufferPtr m_iv; 00052 DWORD m_blockLen; 00053 bool m_bFromCert; 00054 bool m_bNeedsPad; 00055 unsigned char * m_padbuf; 00056 int m_padlen; 00057 00058 }; 00059 00060 #endif