|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 1999
//
// File: scrdenr.h
//
//--------------------------------------------------------------------------
// SCrdEnr.h : Declaration of the CSCrdEnr
#ifndef __SCRDENR_H_
#define __SCRDENR_H_
#include <certca.h>
#include "xenroll.h"
#include "resource.h" // main symbols
#include "objsel.h"
/////////////////////////////////////////////////////////////////////////////
// SCrdEnroll_CSP_INFO
typedef struct _SCrdEnroll_CSP_INFO { DWORD dwCSPType; LPWSTR pwszCSPName; }SCrdEnroll_CSP_INFO, *PSCrdEnroll_CSP_INFO;
/////////////////////////////////////////////////////////////////////////////
// SCrdEnroll_CA_INFO
typedef struct _SCrdEnroll_CA_INFO { LPWSTR pwszCAName; LPWSTR pwszCALocation; LPWSTR pwszCADisplayName; }SCrdEnroll_CA_INFO, *PSCrdEnroll_CA_INFO;
/////////////////////////////////////////////////////////////////////////////
// SCrdEnroll_CT_INFO
typedef struct _SCrdEnroll_CT_INFO { LPWSTR pwszCTName; LPWSTR pwszCTDisplayName; PCERT_EXTENSIONS pCertTypeExtensions; DWORD dwKeySpec; DWORD dwGenKeyFlags; DWORD dwRASignature; BOOL fCAInfo; DWORD dwCAIndex; DWORD dwCACount; SCrdEnroll_CA_INFO *rgCAInfo; BOOL fMachine; DWORD dwEnrollmentFlags; DWORD dwSubjectNameFlags; DWORD dwPrivateKeyFlags; DWORD dwGeneralFlags; LPWSTR *rgpwszSupportedCSPs; DWORD dwCurrentCSP; } SCrdEnroll_CT_INFO, *PSCrdEnroll_CT_INFO;
////////////////////////////////////////////////////////////////////////
//
// Prototypes for functions loaded at runtime.
//
////////////////////////////////////////////////////////////////////////
HRESULT WINAPI MyCAGetCertTypeFlagsEx (IN HCERTTYPE hCertType, IN DWORD dwOption, OUT DWORD * pdwFlags);
HRESULT WINAPI MyCAGetCertTypePropertyEx (IN HCERTTYPE hCertType, IN LPCWSTR wszPropertyName, OUT LPVOID pPropertyValue);
IEnroll4 * WINAPI MyPIEnroll4GetNoCOM();
void InitializeThunks();
/////////////////////////////////////////////////////////////////////////////
// CSCrdEnr
class ATL_NO_VTABLE CSCrdEnr : public CComObjectRootEx<CComSingleThreadModel>, public CComCoClass<CSCrdEnr, &CLSID_SCrdEnr>, public IDispatchImpl<ISCrdEnr, &IID_ISCrdEnr, &LIBID_SCRDENRLLib> { public:
DECLARE_REGISTRY_RESOURCEID(IDR_SCRDENR)
BEGIN_COM_MAP(CSCrdEnr) COM_INTERFACE_ENTRY(ISCrdEnr) COM_INTERFACE_ENTRY(IDispatch) END_COM_MAP()
// ISCrdEnr
public:
CSCrdEnr();
virtual ~CSCrdEnr();
STDMETHOD(getCertTemplateCount) (/* [in] */ DWORD dwFlags, /* [retval][out] */ long *pdwCertTemplateCount);
STDMETHOD(setCertTemplateName) (/* [in] */ DWORD dwFlags, /* [in] */ BSTR bstrCertTemplateName);
STDMETHOD(getCertTemplateName) (/* [in] */ DWORD dwFlags, /* [retval][out] */ BSTR *pbstrCertTemplateName);
STDMETHOD(enumCSPName) (/* [in] */ DWORD dwIndex, /* [in] */ DWORD dwFlags, /* [retval][out] */ BSTR *pbstrCSPName);
STDMETHOD(enumCertTemplateName) (/* [in] */ DWORD dwIndex, /* [in] */ DWORD dwFlags, /* [retval][out] */ BSTR *pbstrCertTemplateName);
STDMETHOD(getCertTemplateInfo) (/* [in] */ BSTR bstrCertTemplateName, /* [in] */ LONG lType, /* [retval][out] */ VARIANT *pvarCertTemplateInfo);
STDMETHOD(setUserName) (/* [in] */ DWORD dwFlags, /* [in] */ BSTR bstrUserName);
STDMETHOD(getUserName) (/* [in] */ DWORD dwFlags, /* [retval][out] */ BSTR *pbstrUserName);
STDMETHOD(getCACount) (/* [in] */ BSTR bstrCertTemplateName, /* [retval][out] */ long *pdwCACount);
STDMETHOD(setCAName) (/* [in] */ DWORD dwFlags, /* [in] */ BSTR bstrCertTemplateName, /* [in] */ BSTR bstrCAName);
STDMETHOD(getCAName) (/* [in] */ DWORD dwFlags, /* [in] */ BSTR bstrCertTemplateName, /* [retval][out] */ BSTR *pbstrCAName);
STDMETHOD(enumCAName) (/* [in] */ DWORD dwIndex, /* [in] */ DWORD dwFlags, /* [in] */ BSTR bstrCertTemplateName, /* [retval][out] */ BSTR *pbstrCAName);
STDMETHOD(resetUser)();
STDMETHOD(selectSigningCertificate) (/* [in] */ DWORD dwFlags, /* [in] */ BSTR bstrCertTemplateName);
STDMETHOD(setSigningCertificate) (/* [in] */ DWORD dwFlags, /* [in] */ BSTR bstrCertTemplateName);
STDMETHOD(getSigningCertificateName) (/* [in] */ DWORD dwFlags, /* [retval][out] */ BSTR *pbstrSigningCertName);
STDMETHOD(getEnrolledCertificateName) (/*[in] */ DWORD dwFlags, /* [retval][out] */ BSTR *pBstrCertName);
STDMETHOD(enroll) (/* [in] */ DWORD dwFlags);
STDMETHOD(selectUserName) (/* [in] */ DWORD dwFlags);
STDMETHOD(get_CSPName) (/*[out, retval]*/ BSTR *pVal);
STDMETHOD(put_CSPName) (/*[in]*/ BSTR newVal);
STDMETHOD(get_CSPCount) (/*[out, retval]*/ long *pVal);
STDMETHOD(get_EnrollmentStatus) (/*[retval][out] */ LONG * plEnrollmentStatus);
private: HRESULT GetCAExchangeCertificate(IN BSTR bstrCAQualifiedName, PCCERT_CONTEXT *ppCert); HRESULT _getCertTemplateExtensionInfo( IN CERT_EXTENSIONS *pCertTypeExtensions, IN LONG lType, OUT VOID *pExtInfo); HRESULT _getStrCertTemplateCSPList( IN DWORD dwIndex, IN DWORD dwFlag, OUT WCHAR **ppwszSupportedCSP); HRESULT CertTemplateCountOrName( IN DWORD dwIndex, IN DWORD dwFlags, OUT long *pdwCertTemplateCount, OUT BSTR *pbstrCertTemplateName);
DWORD m_dwCTCount; DWORD m_dwCTIndex; SCrdEnroll_CT_INFO *m_rgCTInfo; DWORD m_dwCSPCount; DWORD m_dwCSPIndex; SCrdEnroll_CSP_INFO *m_rgCSPInfo; LPWSTR m_pwszUserUPN; //the UPN name of the user
LPWSTR m_pwszUserSAM; //the SAM name of the user
PCCERT_CONTEXT m_pSigningCert; PCCERT_CONTEXT m_pEnrolledCert; CRITICAL_SECTION m_cSection; BOOL m_fInitializedCriticalSection; // true if m_cSection is initialized, otherwise false
BOOL m_fInitialize; LONG m_lEnrollmentStatus; BOOL m_fSCardSigningCert; //whether the signing certificate is on a smart card
LPSTR m_pszCSPNameSigningCert; //the CSP name of the signing certificate
DWORD m_dwCSPTypeSigningCert; //the CSP type of the signing certificate
LPSTR m_pszContainerSigningCert; //the container name of the signing certificate
IDsObjectPicker *m_pDsObjectPicker; //pointer to the object selection dialogue
CERT_EXTENSIONS *m_pCachedCTEs; //point to cert extensions
WCHAR *m_pwszCachedCTEOid; CERT_TEMPLATE_EXT *m_pCachedCTE; };
#endif //__SCRDENR_H_
|