//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1998 - 1999 // // File: scrdenr.h // //-------------------------------------------------------------------------- // SCrdEnr.h : Declaration of the CSCrdEnr #ifndef __SCRDENR_H_ #define __SCRDENR_H_ #include #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, public CComCoClass, public IDispatchImpl { 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_