|
|
//+-----------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (c) Microsoft Corporation 1992 - 1996
//
// File: kerb.h
//
// Contents: precompiled global include file for Kerberos security package
//
//
// History: 14-Jan-1997 Created MikeSw
//
//------------------------------------------------------------------------
#ifndef __KERB_H__
#define __KERB_H__
//
// All global variables declared as EXTERN will be allocated in the file
// that defines KERBP_ALLOCATE
//
#include "krbprgma.h"
#ifndef WIN32_CHICAGO
#ifndef UNICODE
#define UNICODE
#endif // UNICODE
#endif // WIN32_CHICAGO
#ifdef __cplusplus
extern "C" { #endif // __cplusplus
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#ifndef WIN32_CHICAGO
#include <ntlsa.h>
#include <ntsam.h>
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif // WIN32_LEAN_AND_MEAN
#endif // WIN32_CHICAGO
#include <windows.h>
#include <minmax.h>
#ifndef WIN32_CHICAGO
#ifndef RPC_NO_WINDOWS_H
#define RPC_NO_WINDOWS_H
#endif // RPC_NO_WINDOWS_H
#include <rpc.h>
#endif // WIN32_CHICAGO
#ifndef SECURITY_WIN32
#define SECURITY_WIN32
#endif // SECURITY_WIN32
#define SECURITY_PACKAGE
#define SECURITY_KERBEROS
#ifdef WIN32_CHICAGO
typedef LONG NTSTATUS, *PNTSTATUS; #define STATUS_SUCCESS ((NTSTATUS)0x00000000L) // ntsubauth
#define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L)
#define STATUS_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC000009AL) // ntsubauth
#define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000DL)
#define STATUS_OBJECT_NAME_NOT_FOUND ((NTSTATUS)0xC0000034L)
#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023L)
#define STATUS_INVALID_PARAMETER_2 ((NTSTATUS)0xC00000F0L)
#define STATUS_BUFFER_OVERFLOW ((NTSTATUS)0x80000005L)
#define STATUS_NOT_SUPPORTED ((NTSTATUS)0xC00000BBL)
#define STATUS_INVALID_SERVER_STATE ((NTSTATUS)0xC00000DCL)
#define STATUS_INTERNAL_ERROR ((NTSTATUS)0xC00000E5L)
#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L)
#define STATUS_NO_SUCH_LOGON_SESSION ((NTSTATUS)0xC000005FL)
#define STATUS_NETLOGON_NOT_STARTED ((NTSTATUS)0xC0000192L)
#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND ((NTSTATUS)0xC0000233L)
#define STATUS_NO_LOGON_SERVERS ((NTSTATUS)0xC000005EL)
#define STATUS_NO_SUCH_DOMAIN ((NTSTATUS)0xC00000DFL)
#define STATUS_PRIVILEGE_NOT_HELD ((NTSTATUS)0xC0000061L)
#define STATUS_INVALID_HANDLE ((NTSTATUS)0xC0000008L) // winnt
#define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006DL) // ntsubauth
#define STATUS_NO_SUCH_USER ((NTSTATUS)0xC0000064L) // ntsubauth
#define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072L) // ntsubauth
#define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006EL) // ntsubauth
#define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234L) // ntsubauth
#define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006AL) // ntsubauth
#define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193L) // ntsubauth
#define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071L) // ntsubauth
#define STATUS_ILL_FORMED_PASSWORD ((NTSTATUS)0xC000006BL)
#define STATUS_NOT_COMMITTED ((NTSTATUS)0xC000002DL)
#define STATUS_INVALID_INFO_CLASS ((NTSTATUS)0xC0000003L) // ntsubauth
#define STATUS_INVALID_LOGON_TYPE ((NTSTATUS)0xC000010BL)
#define STATUS_INVALID_LOGON_HOURS ((NTSTATUS)0xC000006FL) // ntsubauth
#define STATUS_INVALID_WORKSTATION ((NTSTATUS)0xC0000070L) // ntsubauth
#define STATUS_TIME_DIFFERENCE_AT_DC ((NTSTATUS)0xC0000133L)
// from net\inc\ssi.h
#define SSI_ACCOUNT_NAME_POSTFIX_CHAR L'$'
typedef UNICODE_STRING *PUNICODE_STRING; #define UNICODE_NULL ((WCHAR)0) // winnt
typedef ULONG CLONG; typedef short CSHORT;
typedef STRING ANSI_STRING; typedef PSTRING PANSI_STRING; #endif // WIN32_CHICAGO
#include <security.h>
#include <wincred.h>
#include <secint.h>
#include <lsasecpk.h>
#ifndef WIN32_CHICAGO
#include <dsysdbg.h>
#endif // !WIN32_CHICAGO
#include <lmcons.h>
#include <dsgetdc.h>
#include <wincrypt.h>
#include <dns.h>
#include <winsock2.h>
#ifndef WIN32_CHICAGO
#include <lsarpc.h>
#include <lsaisrv.h>
#include <lsaitf.h>
#include <lmapibuf.h>
#include <dnsapi.h>
#include <lmcons.h>
#include <lmerr.h>
#include <dnssrv.h>
#include <crypt.h>
#include <cryptdll.h>
#include <ntmsv1_0.h>
#include <logonmsv.h>
#include <align.h>
#include <netlib.h>
#include <netlibnt.h> // NetpApiStatusToNtStatus
#include <config.h> // NetpXXXConfigXXX
#include <ssi.h> // SSI_ACCOUNT_NAME_POSTFIX_CHAR
#include <lmsname.h>
#define _AVOID_REPL_API
#include <nlrepl.h>
#undef _AVOID_REPL_API
#else // WIN32_CHICAGO
#include <assert.h> // C run-time definitions
#include <limits.h>
#endif // !WIN32_CHICAGO
#include <sclogon.h>
#include <sclogon2.h>
#include <fileno.h>
#ifdef __cplusplus
} #endif // __cplusplus
#ifdef WIN32_CHICAGO
#define DsysAssert(exp) assert(exp)
// from ntrtl.h
// #define RtlOffsetToPointer(B,O) ((PCHAR)( ((PCHAR)(B)) + ((ULONG)(O)) ))
#define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length)))
// #define RtlEqualLuid(L1, L2) (((L1)->HighPart == (L2)->HighPart) && ((L1)->LowPart == (L2)->LowPart))
//
// Time conversion routines
//
typedef TIME_FIELDS *PTIME_FIELDS;
//
//
// A time field record (Weekday ignored) -> 64 bit Time value
//
BOOLEAN MyRtlTimeFieldsToTime ( PTIME_FIELDS TimeFields, PLARGE_INTEGER Time );
#define RtlTimeFieldsToTime(x, y) MyRtlTimeFieldsToTime(x, y)
VOID MyRtlTimeToTimeFields ( PLARGE_INTEGER Time, PTIME_FIELDS TimeFields );
#define RtlTimeToTimeFields(x, y) MyRtlTimeToTimeFields(x, y)
VOID MyRtlFreeUnicodeString( PUNICODE_STRING UnicodeString );
#define RtlFreeUnicodeString(x) MyRtlFreeUnicodeString(x)
LONG MyRtlCompareUnicodeString( PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive );
#define RtlCompareUnicodeString(x, y, z) MyRtlCompareUnicodeString(x, y, z)
VOID MyRtlInitString( PSTRING DestinationString, PCSTR SourceString ); #define RtlInitString(x, y) MyRtlInitString(x, y)
VOID MyRtlInitAnsiString( PANSI_STRING DestinationString, PCSTR SourceString ); #define RtlInitAnsiString(x, y) MyRtlInitAnsiString(x, y)
VOID MyRtlFreeAnsiString( PANSI_STRING AnsiString );
#define RtlFreeAnsiString(x) MyRtlFreeAnsiString(x)
NTSTATUS MyRtlUnicodeStringToAnsiString( PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString );
#define RtlUnicodeStringToAnsiString(x, y, z) MyRtlUnicodeStringToAnsiString(x, y, z)
NTSTATUS MyRtlAnsiStringToUnicodeString( PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString );
#define RtlAnsiStringToUnicodeString(x, y, z) MyRtlAnsiStringToUnicodeString(x, y, z)
NTSYSAPI VOID NTAPI RtlRunDecodeUnicodeString( UCHAR Seed, PUNICODE_STRING String );
BOOLEAN MyRtlEqualDomainName( IN PUNICODE_STRING String1, IN PUNICODE_STRING String2 );
#define RtlEqualDomainName(x, y) MyRtlEqualDomainName(x, y)
#ifdef __cplusplus // cause it's called from passwd.c !!
extern "C" { #endif // __cplusplus
VOID MyRtlInitUnicodeString( PUNICODE_STRING DestinationString, PCWSTR SourceString );
#define RtlInitUnicodeString(x,y) MyRtlInitUnicodeString(x, y)
BOOLEAN MyRtlEqualUnicodeString( PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive );
#define RtlEqualUnicodeString(x, y, z) MyRtlEqualUnicodeString(x, y, z)
NTSTATUS MyRtlUpcaseUnicodeString( PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString );
#define RtlUpcaseUnicodeString(x, y, z) MyRtlUpcaseUnicodeString(x, y, z)
NTSTATUS NTAPI MyRtlConvertSidToUnicodeString( PUNICODE_STRING UnicodeString, PSID Sid, BOOLEAN AllocateDestinationString );
#define RtlConvertSidToUnicodeString(x, y, z) MyRtlConvertSidToUnicodeString(x, y, z)
#ifdef __cplusplus
} #endif // __cplusplus
NTSTATUS RtlDowncaseUnicodeString( OUT PUNICODE_STRING DestinationString, IN PUNICODE_STRING SourceString, IN BOOLEAN AllocateDestinationString );
NTSYSAPI ULONG NTAPI RtlLengthSid ( PSID Sid );
NTSYSAPI // ntifs
NTSTATUS // ntifs
NTAPI // ntifs
RtlCreateAcl ( // ntifs
PACL Acl, // ntifs
ULONG AclLength, // ntifs
ULONG AclRevision // ntifs
); // ntifs
NTSYSAPI // ntifs
NTSTATUS // ntifs
NTAPI // ntifs
RtlAddAccessAllowedAce ( // ntifs
PACL Acl, // ntifs
ULONG AceRevision, // ntifs
ACCESS_MASK AccessMask, // ntifs
PSID Sid // ntifs
); // ntifs
NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptor ( PSECURITY_DESCRIPTOR SecurityDescriptor, ULONG Revision );
NTSYSAPI NTSTATUS NTAPI RtlSetDaclSecurityDescriptor ( PSECURITY_DESCRIPTOR SecurityDescriptor, BOOLEAN DaclPresent, PACL Dacl, BOOLEAN DaclDefaulted );
// from ntexapi.h
NTSTATUS MyNtQuerySystemTime ( OUT PTimeStamp SystemTime );
#define NtQuerySystemTime(x) MyNtQuerySystemTime(x)
NTSTATUS MyNtAllocateLocallyUniqueId( OUT PLUID Luid );
#define NtAllocateLocallyUniqueId(x) MyNtAllocateLocallyUniqueId(x)
// from ntobapi.h
NTSYSAPI NTSTATUS NTAPI NtClose( IN HANDLE Handle );
NTSYSAPI NTSTATUS NTAPI NtSetSecurityObject( IN HANDLE Handle, IN SECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor );
// from ntseapi.h
//
// used for password manipulations
//
NTSYSAPI NTSTATUS NTAPI NtOpenProcessToken( IN HANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, OUT PHANDLE TokenHandle );
// from ntpsapi.h
#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 )
// from ntdef.h
#define MAXUSHORT 0xffff
BOOLEAN MyRtlCreateUnicodeStringFromAsciiz( OUT PUNICODE_STRING DestinationString, IN PCSTR SourceString );
#define RtlCreateUnicodeStringFromAsciiz(x, y) MyRtlCreateUnicodeStringFromAsciiz(x, y)
#define RtlInitializeCriticalSection(x) (InitializeCriticalSection(x),0)
#define RtlDeleteCriticalSection(x) (DeleteCriticalSection(x),0)
#define RtlEnterCriticalSection(x) (EnterCriticalSection(x),0)
#define RtlLeaveCriticalSection(x) (LeaveCriticalSection(x),0)
#define RtlInitializeResource(x) (InitializeCriticalSection(x),0)
#define RtlDeleteResource(x) (DeleteCriticalSection(x))
#endif // WIN32_CHICAGO
#include <kerbcomm.h>
#include <kdcexp.h>
#define INITGUID
#include "kerbtrace.h"
#endif // __KERB_H__
|