windows-nt/Source/XPSP1/NT/ds/security/cryptoapi/ui/wizards/certrequester.h
2020-09-26 16:20:57 +08:00

58 lines
1.7 KiB
C++

#ifndef __CERT_REQUESTER_H__
#define __CERT_REQUESTER_H__ 1
class CertRequester {
public:
CertDSManager * GetDSManager() { return m_pDSManager; }
CertRequesterContext * GetContext() { return m_pContext; }
virtual ~CertRequester()
{
if (NULL != m_pDSManager) { delete m_pDSManager; }
if (NULL != m_pContext) { delete m_pContext; }
}
static HRESULT MakeCertRequester(IN LPCWSTR pwszAccountName,
IN LPCWSTR pwszMachineName,
IN DWORD dwCertOpenStoreFlags,
IN DWORD dwPurpose,
IN CERT_WIZARD_INFO *pCertWizardInfo,
OUT CertRequester **ppCertRequester,
OUT UINT *pIDS);
protected:
CertRequester();
CertRequester(CERT_WIZARD_INFO * pCertWizardInfo) : m_pCertWizardInfo(pCertWizardInfo),
m_pDSManager(NULL), m_pContext(NULL) {
if (NULL != pCertWizardInfo) { pCertWizardInfo->hRequester = (HCERTREQUESTER)this; }
}
private:
// FIXME: does pContext need to be refcounted?
void SetContext(CertRequesterContext * pContext) { m_pContext = pContext; }
void SetDSManager(CertDSManager * pDSManager) { m_pDSManager = pDSManager; }
CERT_WIZARD_INFO *m_pCertWizardInfo;
CertDSManager *m_pDSManager;
CertRequesterContext *m_pContext;
};
class EnrollmentCertRequester : public CertRequester {
public:
EnrollmentCertRequester(CERT_WIZARD_INFO * pCertWizardInfo) : CertRequester(pCertWizardInfo)
{ }
};
class RenewalCertRequester : public CertRequester {
public:
RenewalCertRequester(CERT_WIZARD_INFO * pCertWizardInfo) : CertRequester(pCertWizardInfo)
{ }
};
#endif // #ifndef __CERT_REQUESTER_H__