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 #if defined (HAVE_WINCAPI)
00035
00036 #define _WIN32_WINNT 0x0400
00037 #include <wincrypt.h>
00038
00039 class WinCAPICryptoProvider;
00040
00049 class DSIG_EXPORT WinCAPICryptoX509 : public XSECCryptoX509 {
00050
00051 public :
00052
00055
00068 WinCAPICryptoX509(HCRYPTPROV provRSA, HCRYPTPROV provDSS);
00069
00080 WinCAPICryptoX509(PCCERT_CONTEXT pCertContext,
00081 HCRYPTPROV provRSA, HCRYPTPROV provDSS);
00082
00083 virtual ~WinCAPICryptoX509();
00084
00086
00088
00097 virtual XSECCryptoKey::KeyType getPublicKeyType();
00098
00107 virtual XSECCryptoKey * clonePublicKey();
00108
00113 virtual const XMLCh * getProviderName();
00114
00116
00119
00129 virtual void loadX509Base64Bin(const char * buf, unsigned int len);
00130
00137 virtual safeBuffer &getDEREncodingSB(void) {return m_DERX509;}
00138
00140
00141 private:
00142
00143 safeBuffer m_DERX509;
00144 PCCERT_CONTEXT mp_certContext;
00145
00146 HCRYPTPROV m_pRSA;
00147 HCRYPTPROV m_pDSS;
00148
00149 };
00150
00151 #endif
00152 #endif
00153