|
|
//+--------------------------------------------------------------------------
//
// 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 <certca.h>
/////////////////////////////////////////////////////////////////////////////
// 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"
|