windows-nt/Source/XPSP1/NT/ds/security/cryptoapi/pkitrust/common/ccert.hxx
2020-09-26 16:20:57 +08:00

70 lines
2.4 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: ccert.hxx
//
// Contents: Microsoft Internet Security Certificate Class
//
// History: 15-Aug-1997 pberkman created
//
//--------------------------------------------------------------------------
#ifndef CCERT_HXX
#define CCERT_HXX
#define CCERT_MAXSTORES 5
class CCert_
{
public:
CCert_(PCCERT_CONTEXT pCertContext);
virtual ~CCert_(void);
WCHAR *PublisherName(void);
WCHAR *AgencyName(void);
WCHAR *ProviderName(void);
DWORD ProviderType(void);
WCHAR *PrivateKeyContainer(void);
PCCERT_CONTEXT CertContext(void) { return(m_pCertContext); }
BOOL BuildChain(FILETIME *psftVerifyAsOf = NULL);
CCert_ *IssuerCCert_(void) { return(m_pCCert_Issuer); } // build the chain first!
DWORD IssuersConfidence(void) { return(m_dwConfidence); }
protected:
BOOL ExtractCommonNameExt(WCHAR **pwszRet);
BOOL ExtractCommonNameAttr(WCHAR **pwszRet);
private:
HCERTSTORE m_pahStores[CCERT_MAXSTORES];
DWORD m_chStores;
PCCERT_CONTEXT m_pCertContext;
CCert_ *m_pCCert_Issuer;
WCHAR *m_pwszPublisherName;
WCHAR *m_pwszAgencyName;
DWORD m_dwConfidence;
BOOL m_fTriedPrivateKey;
WCHAR *m_pwszProvider; // if signing cert
DWORD m_dwProviderType;
WCHAR *m_pwszKeyContainer; // if signing cert
WCHAR *GetRDNAttr(char *pszObjId, PCERT_NAME_BLOB pNameBlob);
void OpenStores(void);
BOOL BuildChainPrivate(DWORD chStores, HCERTSTORE *pahStores, FILETIME *psftVerifyAsOf);
BOOL FindPrivateKey(void);
BOOL EnumContainer(HCRYPTPROV *phProv, DWORD dwIndex, DWORD dwProvType,
WCHAR *pwszProv, WCHAR **ppwszContainer);
BOOL CheckContainerForKey(WCHAR *pwszProv, DWORD dwProvType, WCHAR *pwszContainer);
};
#endif // CCERT_HXX