00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef WINCAPICRYPTOKEYHMAC_INCLUDE
00029 #define WINCAPICRYPTOKEYHMAC_INCLUDE
00030
00031 #include <xsec/enc/XSECCryptoKeyHMAC.hpp>
00032
00033 #if defined (HAVE_WINCAPI)
00034
00035 #if !defined(_WIN32_WINNT)
00036 # define _WIN32_WINNT 0x0400
00037 #endif
00038
00039 #include <wincrypt.h>
00040
00061 class DSIG_EXPORT WinCAPICryptoKeyHMAC : public XSECCryptoKeyHMAC {
00062
00063 public :
00064
00076 WinCAPICryptoKeyHMAC(HCRYPTPROV prov);
00077
00078 virtual ~WinCAPICryptoKeyHMAC() {};
00079
00081
00084
00092 virtual XSECCryptoKey::KeyType getKeyType() {return KEY_HMAC;}
00093
00098 virtual XSECCryptoKey * clone();
00099
00104 virtual const XMLCh * getProviderName() {return DSIGConstants::s_unicodeStrPROVWinCAPI;}
00105
00107
00110
00123 virtual void setKey(unsigned char * inBuf, unsigned int inLength);
00124
00135 virtual unsigned int getKey(safeBuffer &outBuf);
00136
00138
00141
00152 void setWinKey(HCRYPTKEY k);
00153
00163 HCRYPTKEY getWinKey(void);
00164
00174 HCRYPTPROV getWinKeyProv(void);
00175
00177
00178 private:
00179
00180 safeBuffer m_keyBuf;
00181 unsigned int m_keyLen;
00182
00183 HCRYPTKEY m_k;
00184 HCRYPTPROV m_p;
00185 };
00186
00187 #endif
00188 #endif