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 WINCAPICRYPTOX509_INCLUDE
00029 #define WINCAPICRYPTOX509_INCLUDE
00030
00031 #include <xsec/framework/XSECDefs.hpp>
00032 #include <xsec/enc/XSECCryptoX509.hpp>
00033
00034 #define _WIN32_WINNT 0x0400
00035 #include <wincrypt.h>
00036
00037 class WinCAPICryptoProvider;
00038
00047 class DSIG_EXPORT WinCAPICryptoX509 : public XSECCryptoX509 {
00048
00049 public :
00050
00053
00066 WinCAPICryptoX509(HCRYPTPROV provRSA, HCRYPTPROV provDSS);
00067 virtual ~WinCAPICryptoX509();
00068
00070
00072
00081 virtual XSECCryptoKey::KeyType getPublicKeyType();
00082
00091 virtual XSECCryptoKey * clonePublicKey();
00092
00097 virtual const XMLCh * getProviderName();
00098
00100
00103
00113 virtual void loadX509Base64Bin(const char * buf, unsigned int len);
00114
00121 virtual safeBuffer &getDEREncodingSB(void) {return m_DERX509;}
00122
00124
00125 private:
00126
00127 safeBuffer m_DERX509;
00128 PCCERT_CONTEXT mp_certContext;
00129
00130 HCRYPTPROV m_pRSA;
00131 HCRYPTPROV m_pDSS;
00132
00133 };
00134
00135
00136 #endif
00137