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
00078 WinCAPICryptoX509(PCCERT_CONTEXT pCertContext,
00079 HCRYPTPROV provRSA, HCRYPTPROV provDSS);
00080
00081 virtual ~WinCAPICryptoX509();
00082
00084
00086
00095 virtual XSECCryptoKey::KeyType getPublicKeyType();
00096
00105 virtual XSECCryptoKey * clonePublicKey();
00106
00111 virtual const XMLCh * getProviderName();
00112
00114
00117
00127 virtual void loadX509Base64Bin(const char * buf, unsigned int len);
00128
00135 virtual safeBuffer &getDEREncodingSB(void) {return m_DERX509;}
00136
00138
00139 private:
00140
00141 safeBuffer m_DERX509;
00142 PCCERT_CONTEXT mp_certContext;
00143
00144 HCRYPTPROV m_pRSA;
00145 HCRYPTPROV m_pDSS;
00146
00147 };
00148
00149
00150 #endif
00151