//+-------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1996 - 1999 // // File: cainfoc.h // // Contents: Declaration of CCAInfo // // History: 16-dec-97 petesk created // //--------------------------------------------------------------------------- #include "cainfop.h" #include ///////////////////////////////////////////////////////////////////////////// // certcli class CCertTypeInfo; class CCAInfo { public: CCAInfo() { m_cRef = 1; m_pNext = NULL; m_pProperties = NULL; m_pCertificate = NULL; m_bstrDN = NULL; m_fNew = TRUE; m_dwExpiration = 1; m_dwExpUnits = CA_UNITS_YEARS; m_pSD = NULL; m_dwFlags = 0; // make sure high 16 bits are clear! } ~CCAInfo(); DWORD Release(); // Perform a search, returning a chain of CCAInfo objects. static HRESULT Find( LPCWSTR wszQuery, LPCWSTR wszScope, DWORD dwFlags, CCAInfo **ppCAInfo ); static HRESULT FindDnsDomain( LPCWSTR wszQuery, LPCWSTR wszDNSDomain, DWORD dwFlags, CCAInfo **ppCAInfo ); // Perform a search, returning a chain of CCAInfo objects. static HRESULT Create(LPCWSTR wszName, LPCWSTR wszScope, CCAInfo **ppCAInfo); static HRESULT CreateDnsDomain(LPCWSTR wszName, LPCWSTR wszDNSDomain, CCAInfo **ppCAInfo); HRESULT Update(VOID); HRESULT Delete(VOID); HRESULT Next(CCAInfo **ppCAInfo); DWORD Count() { if(m_pNext) { return m_pNext->Count()+1; } return 1; } HRESULT GetProperty(LPCWSTR wszPropertyName, LPWSTR **pawszProperties); HRESULT SetProperty(LPCWSTR wszPropertyName, LPWSTR *awszProperties); HRESULT FreeProperty(LPWSTR * awszProperties); DWORD GetFlags(VOID) { return m_dwFlags; } VOID SetFlags(DWORD dwFlags) { m_dwFlags = (m_dwFlags & ~CA_MASK_SETTABLE_FLAGS) | (dwFlags & CA_MASK_SETTABLE_FLAGS); } HRESULT GetCertificate(PCCERT_CONTEXT *ppCert); HRESULT SetCertificate(PCCERT_CONTEXT pCert); HRESULT GetExpiration(DWORD *pdwExpiration, DWORD *pdwUnits); HRESULT SetExpiration(DWORD dwExpiration, DWORD dwUnits); HRESULT EnumSupportedCertTypes(DWORD dwFlags, CCertTypeInfo **ppCertTypes); HRESULT EnumSupportedCertTypesEx(LPCWSTR wszScope, DWORD dwFlags, CCertTypeInfo **ppCertTypes); HRESULT AddCertType(CCertTypeInfo *pCertTypes); HRESULT RemoveCertType(CCertTypeInfo *pCertTypes); HRESULT SetSecurity(IN PSECURITY_DESCRIPTOR pSD); HRESULT GetSecurity(OUT PSECURITY_DESCRIPTOR * ppSD); HRESULT AccessCheck( IN HANDLE ClientToken, IN DWORD dwOption ); LPCWSTR GetDN() { return m_bstrDN; } protected: PCCERT_CONTEXT m_pCertificate; static HRESULT _ProcessFind( LDAP * pld, LPCWSTR wszQuery, LPCWSTR wszScope, DWORD dwFlags, CCAInfo **ppCAInfo); HRESULT _Cleanup(); DWORD AddRef(); CCAProperty * m_pProperties; LONG m_cRef; CCAInfo * m_pNext; CERTSTR m_bstrDN; BOOL m_fNew; DWORD m_dwExpiration; DWORD m_dwExpUnits; DWORD m_dwFlags; PSECURITY_DESCRIPTOR m_pSD; private: }; #define CA_PROP_FLAGS L"flags"