Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

298 lines
6.0 KiB

///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation
//
// SYNOPSIS
//
// Declares the private wrapper around LSA/SAM.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef IASLSA_H
#define IASLSA_H
#pragma once
#include <dsgetdc.h>
#include <lmcons.h>
#include <mprapi.h>
#ifndef _ASSERT
#define _ASSERT(f) !(f) ? DebugBreak() : ((void)0)
#endif // _ASSERT
#ifdef __cplusplus
extern "C" {
#endif
//////////
// These are defined here to avoid dependencies on the NT headers.
//////////
#define _MSV1_0_CHALLENGE_LENGTH 8
#define _NT_RESPONSE_LENGTH 24
#define _LM_RESPONSE_LENGTH 24
#define _MSV1_0_USER_SESSION_KEY_LENGTH 16
#define _MSV1_0_LANMAN_SESSION_KEY_LENGTH 8
#define _ENCRYPTED_LM_OWF_PASSWORD_LENGTH 16
#define _ENCRYPTED_NT_OWF_PASSWORD_LENGTH 16
#define _SAMPR_ENCRYPTED_USER_PASSWORD_LENGTH 516
#define _MAX_ARAP_USER_NAMELEN 32
#define _AUTHENTICATOR_RESPONSE_LENGTH 20
#define _CHAP_RESPONSE_SIZE 16
DWORD
WINAPI
IASLsaInitialize( VOID );
VOID
WINAPI
IASLsaUninitialize( VOID );
typedef struct _IAS_PAP_PROFILE {
LARGE_INTEGER KickOffTime;
} IAS_PAP_PROFILE , *PIAS_PAP_PROFILE ;
DWORD
WINAPI
IASLogonPAP(
IN PCWSTR UserName,
IN PCWSTR Domain,
IN PCSTR Password,
OUT PHANDLE Token,
OUT PIAS_PAP_PROFILE Profile
);
typedef struct _IAS_CHAP_PROFILE {
LARGE_INTEGER KickOffTime;
} IAS_CHAP_PROFILE, *PIAS_CHAP_PROFILE;
DWORD
WINAPI
IASLogonCHAP(
IN PCWSTR UserName,
IN PCWSTR Domain,
IN BYTE ChallengeID,
IN PBYTE Challenge,
IN DWORD ChallengeLength,
IN PBYTE Response,
OUT PHANDLE Token,
OUT PIAS_CHAP_PROFILE Profile
);
typedef struct _IAS_MSCHAP_PROFILE {
WCHAR LogonDomainName[DNLEN + 1];
UCHAR UserSessionKey[_MSV1_0_USER_SESSION_KEY_LENGTH];
UCHAR LanmanSessionKey[_MSV1_0_LANMAN_SESSION_KEY_LENGTH];
LARGE_INTEGER KickOffTime;
} IAS_MSCHAP_PROFILE, *PIAS_MSCHAP_PROFILE;
DWORD
WINAPI
IASLogonMSCHAP(
IN PCWSTR UserName,
IN PCWSTR Domain,
IN PBYTE Challenge,
IN PBYTE NtResponse,
IN PBYTE LmResponse,
OUT PIAS_MSCHAP_PROFILE Profile,
OUT PHANDLE Token
);
DWORD
WINAPI
IASChangePassword1(
IN PCWSTR UserName,
IN PCWSTR Domain,
IN PBYTE Challenge,
IN PBYTE LmOldPassword,
IN PBYTE LmNewPassword,
IN PBYTE NtOldPassword,
IN PBYTE NtNewPassword,
IN DWORD NewLmPasswordLength,
IN BOOL NtPresent,
OUT PBYTE NewNtResponse,
OUT PBYTE NewLmResponse
);
DWORD
WINAPI
IASChangePassword2(
IN PCWSTR UserName,
IN PCWSTR Domain,
IN PBYTE OldNtHash,
IN PBYTE OldLmHash,
IN PBYTE NtEncPassword,
IN PBYTE LmEncPassword,
IN BOOL LmPresent
);
typedef struct _IAS_MSCHAP_V2_PROFILE {
WCHAR LogonDomainName[DNLEN + 1];
UCHAR AuthResponse[_AUTHENTICATOR_RESPONSE_LENGTH];
UCHAR RecvSessionKey[_MSV1_0_USER_SESSION_KEY_LENGTH];
UCHAR SendSessionKey[_MSV1_0_USER_SESSION_KEY_LENGTH];
LARGE_INTEGER KickOffTime;
} IAS_MSCHAP_V2_PROFILE, *PIAS_MSCHAP_V2_PROFILE;
DWORD
WINAPI
IASLogonMSCHAPv2(
IN PCWSTR UserName,
IN PCWSTR Domain,
IN PCSTR HashUserName,
IN PBYTE Challenge,
IN DWORD ChallengeLength,
IN PBYTE Response,
IN PBYTE PeerChallenge,
OUT PIAS_MSCHAP_V2_PROFILE Profile,
OUT PHANDLE Token
);
DWORD
WINAPI
IASChangePassword3(
IN PCWSTR UserName,
IN PCWSTR Domain,
IN PBYTE EncHash,
IN PBYTE EncPassword
);
typedef struct _IAS_LOGON_HOURS {
USHORT UnitsPerWeek;
PUCHAR LogonHours;
} IAS_LOGON_HOURS, *PIAS_LOGON_HOURS;
DWORD
WINAPI
IASCheckAccountRestrictions(
IN PLARGE_INTEGER AccountExpires,
IN PIAS_LOGON_HOURS LogonHours,
OUT PLARGE_INTEGER KickOffTime
);
typedef PVOID (WINAPI *PIAS_LSA_ALLOC)(
IN SIZE_T uBytes
);
DWORD
WINAPI
IASGetAliasMembership(
IN PSID UserSid,
IN PTOKEN_GROUPS GlobalGroups,
IN PIAS_LSA_ALLOC Allocator,
OUT PTOKEN_GROUPS *Groups,
OUT PDWORD ReturnLength
);
DWORD
WINAPI
IASGetGroupsForUser(
IN PCWSTR UserName,
IN PCWSTR Domain,
IN PIAS_LSA_ALLOC Allocator,
OUT PTOKEN_GROUPS *Groups,
OUT PDWORD ReturnLength,
OUT PLARGE_INTEGER SessionTimeout
);
DWORD
WINAPI
IASGetRASUserInfo(
IN PCWSTR UserName,
IN PCWSTR Domain,
OUT PRAS_USER_0 RasUser0
);
DWORD
WINAPI
IASGetUserParameters(
IN PCWSTR UserName,
IN PCWSTR Domain,
OUT PWSTR *UserParameters
);
typedef enum _IAS_DIALIN_PRIVILEGE {
IAS_DIALIN_DENY,
IAS_DIALIN_POLICY,
IAS_DIALIN_ALLOW
} IAS_DIALIN_PRIVILEGE, *PIAS_DIALIN_PRIVILEGE;
DWORD
WINAPI
IASQueryDialinPrivilege(
IN PCWSTR UserName,
IN PCWSTR Domain,
OUT PIAS_DIALIN_PRIVILEGE pfPrivilege
);
DWORD
WINAPI
IASValidateUserName(
IN PCWSTR UserName,
IN PCWSTR Domain
);
PCWSTR
WINAPI
IASGetDefaultDomain( VOID );
DWORD
WINAPI
IASGetDnsDomainName(LPWSTR buffer, LPDWORD bufferByteSize);
BOOL
WINAPI
IASIsDomainLocal(
IN PCWSTR Domain
);
typedef enum _IAS_ROLE {
IAS_ROLE_STANDALONE,
IAS_ROLE_MEMBER,
IAS_ROLE_DC
} IAS_ROLE;
IAS_ROLE
WINAPI
IASGetRole( VOID );
typedef enum _IAS_PRODUCT_TYPE {
IAS_PRODUCT_WORKSTATION,
IAS_PRODUCT_SERVER
} IAS_PRODUCT_TYPE;
IAS_PRODUCT_TYPE
WINAPI
IASGetProductType( VOID );
DWORD
WINAPI
IASGetGuestAccountName(
OUT PWSTR GuestAccount
);
HRESULT
WINAPI
IASMapWin32Error(
DWORD dwError,
HRESULT hrDefault
);
DWORD
WINAPI
IASGetDcName(
IN LPCWSTR DomainName,
IN ULONG Flags,
OUT PDOMAIN_CONTROLLER_INFOW *DomainControllerInfo
);
DWORD
WINAPI
IASPurgeTicketCache( VOID );
#ifdef __cplusplus
}
#endif
#endif // IASLSA_H