//+----------------------------------------------------------------------- // // File: kdcsvr.hxx // // Contents: KDC Private definitions // // // History: RichardW Created // 16-Jan-93 WadeR Converted to C++ // //------------------------------------------------------------------------ #ifndef _INC_KDCSVR_HXX_ #define _INC_KDCSVR_HXX_ #include extern "C" { #include #include #include #include // SamIFree_XXX #include #include // LsaIFree_XXX #include #include #include #include #include #include // for WinVerifyTrust and wincrypt.h } #include #include #include #include // whack this soon #include #include #include // // Global typedefs // typedef struct _KDC_TICKET_INFO { UNICODE_STRING AccountName; UNICODE_STRING TrustedForest; LARGE_INTEGER PasswordExpires; ULONG fTicketOpts; ULONG UserAccountControl; ULONG UserId; ULONG TrustAttributes; PKERB_STORED_CREDENTIAL Passwords; PKERB_STORED_CREDENTIAL OldPasswords; PSID TrustSid; } KDC_TICKET_INFO, *PKDC_TICKET_INFO; typedef enum { Unknown, Inbound, Outbound } KDC_DOMAIN_INFO_DIRECTION, *PKDC_DOMAIN_INFO_DIRECTION; #include "debug.hxx" #include "secdata.hxx" #include "tktutil.hxx" #include "pkserv.h" #define KdcLsaIAuditKdcEvent(_a_, _b_, _c_, _d_, _e_, _f_, _g_, _h_, _i_, _j_, _k_, _l_ ) \ LsaIAuditKdcEvent(_a_, _b_, _c_, _d_, _e_, _f_, _g_, _h_, _i_, _j_, _k_, _l_ ) // // Global prototypes: // void ServiceMain( ULONG ArgC, LPSTR * ArgV ); NTSTATUS ShutDown( LPTSTR String ); BOOLEAN UpdateStatus( ULONG Status ); extern "C" BOOLEAN InitializeChangeNotify( VOID ); // // Global data defn's // typedef enum { Stopped, Starting, Running } KDC_STATE; extern TimeStamp tsInfinity; extern KDC_STATE KdcState; extern LARGE_INTEGER SkewTime; extern BOOLEAN fStopKDC; extern HANDLE hKdcHandles[]; extern CRITICAL_SECTION ApiCriticalSection; extern ULONG CurrentApiCallers; extern UNICODE_STRING GlobalDomainName; extern UNICODE_STRING GlobalKerberosName; extern UNICODE_STRING GlobalKdcName; extern BOOL KdcGlobalAvoidPdcOnWan; extern UNICODE_STRING KdcForestRootDomainName; extern BOOLEAN KdcIsGc; extern BOOLEAN KdcForestRoot; extern BOOLEAN KdcCrossForestEnabled; extern LIST_ENTRY KdcReferralCache; extern PKERB_INTERNAL_NAME GlobalKpasswdName; extern PSID GlobalDomainSid; extern SAMPR_HANDLE GlobalAccountDomainHandle; extern LSAPR_HANDLE GlobalPolicyHandle; extern BYTE GlobalLocalhostAddress[4]; #define GET_CLIENT_ADDRESS(_x_) \ (((_x_) != NULL ) ? \ ((PBYTE) (&((struct sockaddr_in *)(_x_))->sin_addr.S_un.S_addr)) : \ GlobalLocalhostAddress) // // KDC handle definitions // #define hKdcShutdownEvent hKdcHandles[0] #define MAX_KDC_HANDLE 1 // class CAuthenticatorList; extern CAuthenticatorList * Authenticators; extern CAuthenticatorList * FailedRequests; class CSecurityData; extern CSecurityData SecData; // // Global constants // const ULONG ulInfinity = 0xFFFFFFFF; const ULONG ulTsPerSecond = 10000000L; // Number of creds supplied in DS for LM_OWF but no NT_OWF support #define CRED_ONLY_LM_OWF 1 // // Global macros // #define _str_(a) #a #define _xstr_(a) _str_(a) #define DIAGNOSTIC(num, txt) message(__FILE__ "(" _xstr_(__LINE__) \ ") : diagnostic V" _xstr_(num) " : "#txt) #define MEMO(txt) message( __FILE__ "(" _xstr_(__LINE__) ") : Memo : " #txt ) #define KdcGetTime(_x_) ((_x_).QuadPart) #define MAX_EXPR_LEN 50 #define MAX_SID_LEN (sizeof(SID) + sizeof(ULONG) * SID_MAX_SUB_AUTHORITIES) #define KdcMakeAccountSid( _buffer_, _rid_) \ { \ PSID TempSid = (PSID) _buffer_; \ RtlCopyMemory( _buffer_, GlobalDomainSid, RtlLengthSid(GlobalDomainSid)); \ *RtlSubAuthoritySid(TempSid, *RtlSubAuthorityCountSid(TempSid)) = _rid_; \ *RtlSubAuthorityCountSid(TempSid) += 1; \ } #define KdcFreeEncodedData(_x_) MIDL_user_free(_x_) // // Global inline functions. // #endif // _INC_KDCSVR_HXX_