|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1993.
//
// File: protos.h
//
// Contents:
//
// Classes:
//
// Functions:
//
// History: 9-21-94 RichardW Created
//
//----------------------------------------------------------------------------
#ifndef __PROTOS_H__
#define __PROTOS_H__
BOOL AddPackageToRegistry( PSECURITY_STRING Package );
NTSTATUS LoadParameters( VOID );
NTSTATUS LoadPackage( PUNICODE_STRING pName, ULONG_PTR dwPackageID, PSECPKG_PARAMETERS pParameters );
NTSTATUS LoadOldPackage( PUNICODE_STRING pName, ULONG_PTR dwPackageID );
void UnloadPackages( void );
VOID LsapShutdownInprocDll( VOID );
BOOL SpConsoleHandler( ULONG dwCtrlType );
NTSTATUS ServerStop( void );
NTSTATUS StopRPC( void );
void TimeStampToString( PTimeStamp, PUNICODE_STRING );
//
// Control constants for LsapBuildSD
//
#define BUILD_KSEC_SD 0
#define BUILD_LPC_SD 1
NTSTATUS LsapBuildSD( IN ULONG dwType, OUT PSECURITY_DESCRIPTOR *ppSD OPTIONAL );
NTSTATUS StartLpcThread( void );
NTSTATUS StopLpcThread( void );
HANDLE SpmCreateEvent( LPSECURITY_ATTRIBUTES lpsa, BOOL fManualReset, BOOL fInitialState, LPWSTR pszEventName );
HANDLE SpmOpenEvent( ACCESS_MASK DesiredAccess, BOOL fInherit, LPWSTR pszEventName );
BOOLEAN SpmpIsSetupPass( VOID );
BOOLEAN SpmpIsMiniSetupPass( VOID );
NTSTATUS SPException( NTSTATUS Status, ULONG_PTR PackageId );
void ScavengerThread();
BOOL LsapInitializeScavenger( VOID );
BOOLEAN NTAPI LsapEventNotify( ULONG Class, ULONG Flags, ULONG EventSize, PVOID Event);
BOOL SpmpInitializePackageControl( VOID );
BOOL SpmpLoadDll( PWSTR pszDll, PSECPKG_PARAMETERS pParameters);
BOOL SpmpLoadAuthPkgDll( PWSTR pszDll);
BOOL SpmpLoadBuiltinAuthPkg( PSECPKG_FUNCTION_TABLE pTable);
PLSAP_SECURITY_PACKAGE SpmpValidRequest( ULONG_PTR PackageHandle, ULONG ApiCode);
PLSAP_SECURITY_PACKAGE SpmpValidateHandle( ULONG_PTR PackageHandle);
PLSAP_SECURITY_PACKAGE SpmpLocatePackage( ULONG_PTR PackageId);
PLSAP_SECURITY_PACKAGE SpmpLookupPackage( PUNICODE_STRING pszPackageName);
PLSAP_SECURITY_PACKAGE SpmpLookupPackageByRpcId( ULONG RpcId);
PLSAP_SECURITY_PACKAGE SpmpLookupPackageAndRequest( PUNICODE_STRING pszPackageName, ULONG ApiCode);
PLSAP_SECURITY_PACKAGE SpmpIteratePackages( PLSAP_SECURITY_PACKAGE pInitialPackage);
PLSAP_SECURITY_PACKAGE SpmpIteratePackagesByRequest( PLSAP_SECURITY_PACKAGE pInitialPackage, ULONG ApiCode);
ULONG SpmpCurrentPackageCount( VOID);
NTSTATUS SpmpBootAuthPackage( PLSAP_SECURITY_PACKAGE pPackage);
BOOL SpmpLoadBuiltin( ULONG Flags, PSECPKG_FUNCTION_TABLE pTable, PSECPKG_PARAMETERS pParameters);
VOID LsapAddPackageHandle( ULONG_PTR PackageId, BOOL IsContext );
VOID LsapDelPackageHandle( PLSAP_SECURITY_PACKAGE Package, BOOL IsContext );
BOOL IsValidApi(ULONG ApiNum, ULONG_PTR dwPackageId);
BOOL UnloadPackage(ULONG_PTR dwPackageId);
NTSTATUS CreateMsvEntry();
NTSTATUS SpmpInitPolicyFiltering();
void SpmpCleanupPolicyFiltering();
void SpmpPurgeEntriesByPackage(ULONG_PTR dwPackageId);
void InitFastMem(void);
ULONG RegisterFastMem(ULONG cBytes);
void * AllocFastMem(ULONG FastMemKey);
void FreeFastMem(ULONG Key, PVOID pMem);
PVOID WaitAllocFastMem(ULONG Key, ULONG Retry);
ULONG FastMemScavenger(PVOID pvIgnored);
//
// NOTE: NOT FOR EXPORT TO SECURITY PACKAGES!
//
PVOID LsapAssignThread(LPTHREAD_START_ROUTINE pFunction, PVOID pvParameter, PSession pSession, BOOLEAN fUrgent);
BOOL CreateSubordinateQueue( PSession pSession, PLSAP_TASK_QUEUE pOriginalQueue);
BOOL DeleteSubordinateQueue( PLSAP_TASK_QUEUE pQueue, ULONG Flags );
#define DELETEQ_SYNC_DRAIN 0x00000001
PKSEC_LSA_MEMORY_HEADER LsapCreateKsecBuffer( SIZE_T InitialSize );
PVOID LsapAllocateFromKsecBuffer( PKSEC_LSA_MEMORY_HEADER Header, ULONG Size );
BOOL LsapChangeHandle( SECHANDLE_OPS HandleOp, PSecHandle OldHandle, PSecHandle NewHandle );
NTSTATUS LsapChangeBuffer( PSecBuffer Old, PSecBuffer New );
// Worker functions:
NTSTATUS WLsaEstablishCreds(PUNICODE_STRING, PUNICODE_STRING, ULONG, PBYTE, PCredHandle, PTimeStamp); NTSTATUS WLsaLogonUser(PUNICODE_STRING, ULONG, PBYTE, ULONG, ULONG *, PBYTE, NTSTATUS *); NTSTATUS WLsaAcquireCredHandle(PUNICODE_STRING, PUNICODE_STRING, ULONG, PLUID, PVOID, PVOID, PVOID, PCredHandle, PTimeStamp); NTSTATUS WLsaInitContext(PCredHandle, PCtxtHandle, PUNICODE_STRING, ULONG, ULONG, ULONG, PSecBufferDesc, ULONG, PCtxtHandle, PSecBufferDesc, ULONG *, PTimeStamp, PBOOLEAN, PSecBuffer); NTSTATUS WLsaAcceptContext(PCredHandle, PCtxtHandle, PSecBufferDesc, ULONG, ULONG, PCtxtHandle, PSecBufferDesc, ULONG *, PTimeStamp, PBOOLEAN, PSecBuffer); NTSTATUS WLsaControlFunction(PUNICODE_STRING, ULONG, PSecBuffer, PSecBuffer); NTSTATUS WLsaFreeCredHandle(PCredHandle phCred); NTSTATUS WLsaDeleteContext(PCtxtHandle phContext );
NTSTATUS WLsaGetSecurityUserInfo(PLUID pLogonId, ULONG fFlags, PSecurityUserData * pUserInfo); NTSTATUS WLsaSaveSupplementalCredentials(PCredHandle phCred, PSecBuffer pCredentials); NTSTATUS WLsaGetSupplementalCredentials(PCredHandle phCred, PSecBuffer pCredentials); NTSTATUS WLsaDeleteSupplementalCredentials(PCredHandle phCred, PSecBuffer pKey);
NTSTATUS WLsaGetBinding( ULONG_PTR dwPackageID, PSEC_PACKAGE_BINDING_INFO BindingInfo, PULONG TotalSize, PWSTR * Base);
NTSTATUS WLsaFindPackage(PUNICODE_STRING pssName, PULONG_PTR pulPackageId); NTSTATUS WLsaEnumeratePackages(PULONG pcPackages, PSecPkgInfo * ppPackageInfo); NTSTATUS WLsaApplyControlToken(PCtxtHandle phContext, PSecBufferDesc pInput); NTSTATUS WLsaQueryPackageInfo(PUNICODE_STRING pssPackageName, PSecPkgInfo * ppPackageInfo); NTSTATUS WLsaDeletePackage( PSECURITY_STRING PackageName);
NTSTATUS WLsaAddPackage( PSECURITY_STRING PackageName, PSECURITY_PACKAGE_OPTIONS Options);
NTSTATUS WLsaQueryContextAttributes( PCtxtHandle, ULONG, PVOID );
NTSTATUS WLsaSetContextAttributes( PCtxtHandle phContext, ULONG ulAttribute, PVOID pvBuffer, ULONG cbBuffer );
NTSTATUS WLsaLogonUser2( IN PSTRING pOriginName, IN ULONG AuthPkg, IN SECURITY_LOGON_TYPE LogonType, IN PVOID AuthInfo, IN ULONG AuthInfoLength, IN PTOKEN_GROUPS pTokenGroups, IN PTOKEN_SOURCE pSourceContext, IN BOOLEAN CallLicenseServer, OUT PVOID * ProfileBuffer, OUT PULONG ProfileBufferLength, OUT PLUID LogonId, OUT PNTSTATUS SubStatus, OUT PHANDLE phToken, OUT PQUOTA_LIMITS pQuota );
NTSTATUS WLsaQueryCredAttributes( PCredHandle phCredentials, ULONG ulAttribute, PVOID pBuffer);
NTSTATUS WLsaAddCredentials( PCredHandle phCredential, PSECURITY_STRING pPrincipal, PSECURITY_STRING pSecPackage, DWORD fCredentialUse, PVOID pvAuthData, PVOID pvGetKeyFn, PVOID pvGetKeyArgument, PTimeStamp ptsExpiry);
NTSTATUS WLsaEnumerateLogonSession( PULONG Count, PLUID * Sessions );
NTSTATUS WLsaGetLogonSessionData( PLUID LogonId, PVOID * LogonData );
NTSTATUS LsapSetSessionOptions( ULONG Request, ULONG_PTR Argument, PULONG_PTR Resonse );
LSA_DISPATCH_FN DispatchAPIDirect; extern PLSA_DISPATCH_FN DllCallbackHandler ;
NTSTATUS GetRegistryString(HKEY hKey, PWSTR pwszSubKey, PWSTR pwszValue, PWSTR pwszData, PULONG pdwCount);
BOOL InitializeThreadPool( void );
NTSTATUS SpmBuildNtToken( IN PLUID LogonId, IN PTOKEN_SOURCE TokenSource, IN SECURITY_LOGON_TYPE LogonType, IN LSA_TOKEN_INFORMATION_TYPE TokenInformationType, IN PVOID TokenInformation, IN PTOKEN_GROUPS LocalGroups, IN PUNICODE_STRING AccountName, IN PUNICODE_STRING AuthorityName, OUT PHANDLE Token, OUT PSID * UserSid, OUT PNTSTATUS SubStatus );
BOOLEAN LsapIsEncryptionPermitted( VOID );
NTSTATUS LsapGetExtendedPackageInfo( PLSAP_SECURITY_PACKAGE Package, SECPKG_EXTENDED_INFORMATION_CLASS Class, PSECPKG_EXTENDED_INFORMATION * Info );
NTSTATUS LsapSetExtendedPackageInfo( PLSAP_SECURITY_PACKAGE Package, SECPKG_EXTENDED_INFORMATION_CLASS Class, PSECPKG_EXTENDED_INFORMATION Info );
#ifdef __cplusplus
extern "C" #endif
NTSTATUS LsapDuplicateSid( OUT PSID * DestinationSid, IN PSID SourceSid );
#ifdef __cplusplus
extern "C" #endif
NTSTATUS LsapDuplicateSid2( OUT PSID * DestinationSid, IN PSID SourceSid );
#ifdef __cplusplus
extern "C" #endif
PSID LsapMakeDomainRelativeSid( IN PSID DomainId, IN ULONG RelativeId );
#ifdef __cplusplus
extern "C" #endif
PSID LsapMakeDomainRelativeSid2( IN PSID DomainId, IN ULONG RelativeId );
//
// Debug helpers to track down bogus handle use
//
#if DBG > 0
#define SpmSetEvent(hHandle) ASSERT(SetEvent(hHandle))
#define SpmCloseHandle(hHandle) ASSERT(CloseHandle(hHandle))
#else
#define SpmSetEvent(hHandle) SetEvent(hHandle)
#define SpmCloseHandle(hHandle) CloseHandle(hHandle)
#endif
VOID InitScavengerControl(VOID);
ULONG SpmpReportEvent( IN BOOL Unicode, IN WORD EventType, IN ULONG EventId, IN ULONG Category, IN ULONG SizeOfRawData, IN PVOID RawData, IN ULONG NumberOfStrings, ... );
ULONG SpmpReportEventU( IN WORD EventType, IN ULONG EventId, IN ULONG Category, IN ULONG SizeOfRawData, IN PVOID RawData, IN ULONG NumberOfStrings, ... );
#endif // __PROTOS_H__
|