//+-------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1996 - 1999 // // File: csldap.h // // Contents: Cert Server wrapper routines // //--------------------------------------------------------------------------- #ifndef __CSLDAP_H__ #define __CSLDAP_H__ #define csecLDAPTIMEOUT (2 * 60) // two minute default search timeout #define wszDSBASECRLATTRIBUTE L"certificateRevocationList" #define wszDSDELTACRLATTRIBUTE L"deltaRevocationList" #define wszDSUSERCERTATTRIBUTE L"userCertificate" #define wszDSCROSSCERTPAIRATTRIBUTE L"crossCertificatePair" #define wszDSKRACERTATTRIBUTE wszDSUSERCERTATTRIBUTE #define wszDSCACERTATTRIBUTE L"cACertificate" #define wszDSBASECRLATTRIBUTE L"certificateRevocationList" #define wszDSAUTHORITYCRLATTRIBUTE L"authorityRevocationList" #define wszDSOBJECTCLASSATTRIBUTE L"objectClass" #define wszDSFLAGSATTRIBUTE L"flags" #define wszDSBASESEARCH L"?base" #define wszDSONESEARCH L"?one" #define wszDSTOPCLASSNAME L"top" #define wszDSPERSONCLASSNAME L"person" #define wszDSORGPERSONCLASSNAME L"organizationalPerson" #define wszDSUSERCLASSNAME L"user" #define wszDSCONTAINERCLASSNAME L"container" #define wszDSENROLLMENTSERVICECLASSNAME L"pKIEnrollmentService" #define wszDSMACHINECLASSNAME L"machine" #define wszDSTEMPLATELASSNAME L"pKICertificateTemplate" #define wszDSKRACLASSNAME L"msPKI-PrivateKeyRecoveryAgent" #define wszDSCDPCLASSNAME L"cRLDistributionPoint" #define wszDSOIDCLASSNAME L"msPKI-Enterprise-Oid" #define wszDSCACLASSNAME L"certificationAuthority" #define wszDSAIACLASSNAME wszDSCACLASSNAME #define wszDSCDPCLASS L"?" wszDSOBJECTCLASSATTRIBUTE L"=" wszDSCDPCLASSNAME #define wszDSCACLASS L"?" wszDSOBJECTCLASSATTRIBUTE L"=" wszDSCACLASSNAME #define wszDSUSERCLASS L"?" wszDSOBJECTCLASSATTRIBUTE L"=*" #define wszDSKRACLASS L"?" wszDSOBJECTCLASSATTRIBUTE L"=" wszDSKRACLASSNAME #define wszDSAIACLASS L"?" wszDSOBJECTCLASSATTRIBUTE L"=" wszDSAIACLASSNAME #define wszDSSEARCHBASECRLATTRIBUTE \ L"?" \ wszDSBASECRLATTRIBUTE \ wszDSBASESEARCH \ wszDSCDPCLASS #define wszDSSEARCHDELTACRLATTRIBUTE \ L"?" \ wszDSDELTACRLATTRIBUTE \ wszDSBASESEARCH \ wszDSCDPCLASS #define wszDSSEARCHUSERCERTATTRIBUTE \ L"?" \ wszDSUSERCERTATTRIBUTE \ wszDSBASESEARCH \ wszDSUSERCLASS #define wszDSSEARCHCACERTATTRIBUTE \ L"?" \ wszDSCACERTATTRIBUTE \ wszDSBASESEARCH \ wszDSCACLASS #define wszDSSEARCHKRACERTATTRIBUTE \ L"?" \ wszDSUSERCERTATTRIBUTE \ wszDSONESEARCH \ wszDSKRACLASS #define wszDSSEARCHCROSSCERTPAIRATTRIBUTE \ L"?" \ wszDSCROSSCERTPAIRATTRIBUTE \ wszDSONESEARCH \ wszDSAIACLASS #define wszDSSEARCHAIACERTATTRIBUTE \ L"?" \ wszDSCACERTATTRIBUTE \ wszDSONESEARCH \ wszDSAIACLASS #define wszDSKRAQUERYTEMPLATE \ L"ldap:///CN=KRA," \ L"CN=Public Key Services," \ L"CN=Services," \ wszFCSAPARM_CONFIGDN \ wszDSSEARCHKRACERTATTRIBUTE #define wszDSAIAQUERYTEMPLATE \ L"ldap:///CN=AIA," \ L"CN=Public Key Services," \ L"CN=Services," \ wszFCSAPARM_CONFIGDN \ wszDSSEARCHAIACERTATTRIBUTE // Default URL Template Values: extern WCHAR const g_wszzLDAPIssuerCertURLTemplate[]; extern WCHAR const g_wszzLDAPKRACertURLTemplate[]; extern WCHAR const g_wszzLDAPRevocationURLTemplate[]; extern WCHAR const g_wszASPRevocationURLTemplate[]; extern WCHAR const g_wszLDAPNTAuthURLTemplate[]; extern WCHAR const g_wszLDAPRootTrustURLTemplate[]; extern WCHAR const g_wszCDPDNTemplate[]; extern WCHAR const g_wszAIADNTemplate[]; extern WCHAR const g_wszKRADNTemplate[]; extern WCHAR const g_wszHTTPRevocationURLTemplate[]; extern WCHAR const g_wszFILERevocationURLTemplate[]; extern WCHAR const g_wszHTTPIssuerCertURLTemplate[]; extern WCHAR const g_wszFILEIssuerCertURLTemplate[]; // Default Server Controls: extern LDAPControl *g_rgLdapControls[]; HRESULT myGetAuthoritativeDomainDn( IN LDAP *pld, OPTIONAL OUT BSTR *pstrDomainDN, OPTIONAL OUT BSTR *pstrConfigDN); HRESULT myDomainFromDn( IN WCHAR const *pwszDN, OUT WCHAR **ppwszDomainDNS); HRESULT myLdapOpen( OUT LDAP **ppld, OPTIONAL OUT BSTR *pstrDomainDN, OPTIONAL OUT BSTR *pstrConfigDN); VOID myLdapClose( OPTIONAL IN LDAP *pld, OPTIONAL IN BSTR strDomainDN, OPTIONAL IN BSTR strConfigDN); BOOL myLdapRebindRequired( IN ULONG ldaperrParm, OPTIONAL IN LDAP *pld); HRESULT myLdapGetDSHostName( IN LDAP *pld, OUT WCHAR **ppwszHostName); HRESULT myLdapCreateContainer( IN LDAP *pld, IN WCHAR const *pwszDN, IN BOOL fSkipObject, // Does the DN contain a leaf object name IN DWORD cMaxLevel, // create this many nested containers as needed IN PSECURITY_DESCRIPTOR pContainerSD, OPTIONAL OUT WCHAR **ppwszError); #define LPC_CAOBJECT 0x00000000 #define LPC_KRAOBJECT 0x00000001 #define LPC_USEROBJECT 0x00000002 #define LPC_MACHINEOBJECT 0x00000003 #define LPC_OBJECTMASK 0x0000000f #define LPC_CREATECONTAINER 0x00000100 #define LPC_CREATEOBJECT 0x00000200 HRESULT myLdapPublishCertToDS( IN LDAP *pld, IN CERT_CONTEXT const *pccPublish, IN WCHAR const *pwszURL, IN WCHAR const *pwszAttribute, IN DWORD dwObjectType, // LPC_* OUT DWORD *pdwDisposition, OPTIONAL OUT WCHAR **ppwszError); HRESULT myLdapPublishCRLToDS( IN LDAP *pld, IN CRL_CONTEXT const *pCRLPublish, IN WCHAR const *pwszURL, IN WCHAR const *pwszAttribute, OUT DWORD *pdwDisposition, OPTIONAL OUT WCHAR **ppwszError); HRESULT myLdapCreateCAObject( IN LDAP *pld, IN WCHAR const *pwszDN, OPTIONAL IN BYTE const *pbCert, IN DWORD cbCert, IN PSECURITY_DESCRIPTOR pSD, OUT DWORD *pdwDisposition, OPTIONAL OUT WCHAR **ppwszError); HRESULT myLdapCreateCDPObject( IN LDAP *pld, IN WCHAR const *pwszDN, IN PSECURITY_DESCRIPTOR pSD, OUT DWORD *pdwDisposition, OPTIONAL OUT WCHAR **ppwszError); HRESULT myLdapCreateUserObject( IN LDAP *pld, IN WCHAR const *pwszDN, OPTIONAL IN BYTE const *pbCert, IN DWORD cbCert, IN PSECURITY_DESCRIPTOR pSD, IN DWORD dwObjectType, // LPC_* (but LPC_CREATE* is ignored) OUT DWORD *pdwDisposition, OPTIONAL OUT WCHAR **ppwszError); HRESULT myLdapCreateOIDObject( IN LDAP *pld, IN WCHAR const *pwszDN, IN DWORD dwType, IN WCHAR const *pwszObjId, OUT DWORD *pdwDisposition, OPTIONAL OUT WCHAR **ppwszError); HRESULT myLdapOIDIsMatchingLangId( IN WCHAR const *pwszDisplayName, IN DWORD dwLanguageId, OUT BOOL *pfLangIdExists); HRESULT myLdapAddOIDDisplayNameToAttribute( IN LDAP *pld, OPTIONAL IN WCHAR **ppwszDisplayNames, IN DWORD dwLanguageId, IN WCHAR const *pwszDisplayName, IN WCHAR const *pwszDN, IN WCHAR const *pwszAttribute, OUT DWORD *pdwDisposition, OPTIONAL OUT WCHAR **ppwszError); HRESULT myHLdapError( OPTIONAL IN LDAP *pld, IN ULONG ldaperrParm, OPTIONAL OUT WCHAR **ppwszError); HRESULT myHLdapError2( OPTIONAL IN LDAP *pld, IN ULONG ldaperrParm, IN ULONG ldaperrParmQuiet, OPTIONAL OUT WCHAR **ppwszError); HRESULT myHLdapError3( OPTIONAL IN LDAP *pld, IN ULONG ldaperrParm, IN ULONG ldaperrParmQuiet, IN ULONG ldaperrParmQuiet2, OPTIONAL OUT WCHAR **ppwszError); HRESULT myHLdapLastError( OPTIONAL IN LDAP *pld, OPTIONAL OUT WCHAR **ppwszError); HRESULT AddCertToAttribute( IN LDAP *pld, IN CERT_CONTEXT const *pccPublish, IN WCHAR const *pwszDN, IN WCHAR const *pwszAttribute, OUT DWORD *pdwDisposition, OPTIONAL OUT WCHAR **ppwszError); HRESULT myLDAPSetStringAttribute( IN LDAP *pld, IN WCHAR const *pwszDN, IN WCHAR const *pwszAttribute, IN WCHAR const *pwszValue, OUT DWORD *pdwDisposition, OPTIONAL OUT WCHAR **ppwszError); #endif // __CSLDAP_H__