172 lines
3.9 KiB
C
172 lines
3.9 KiB
C
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
lsaprtl.h
|
|
|
|
Abstract:
|
|
|
|
Local Security Authority - Temporary Rtl Routine Definitions.
|
|
|
|
This file contains definitions for routines used in the LSA that could
|
|
be made into Rtl routines. They have been written in general purpose
|
|
form with this in mind - the only exception to thisa is that their names
|
|
have Lsap prefixes to indicate that they are currently used only by the
|
|
LSA.
|
|
|
|
Scott Birrell (ScottBi) March 26, 1992
|
|
|
|
Environment:
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
// Options for LsapRtlAddPrivileges
|
|
|
|
#define RTL_COMBINE_PRIVILEGE_ATTRIBUTES ((ULONG) 0x00000001L)
|
|
#define RTL_SUPERSEDE_PRIVILEGE_ATTRIBUTES ((ULONG) 0x00000002L)
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // __cplusplus
|
|
|
|
NTSTATUS
|
|
LsapRtlAddPrivileges(
|
|
IN OUT PPRIVILEGE_SET * RunningPrivileges,
|
|
IN OUT PULONG MaxRunningPrivileges,
|
|
IN PPRIVILEGE_SET PrivilegesToAdd,
|
|
IN ULONG Options,
|
|
OUT OPTIONAL BOOLEAN * Changed
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapRtlRemovePrivileges(
|
|
IN OUT PPRIVILEGE_SET ExistingPrivileges,
|
|
IN PPRIVILEGE_SET PrivilegesToRemove
|
|
);
|
|
|
|
PLUID_AND_ATTRIBUTES
|
|
LsapRtlGetPrivilege(
|
|
IN PLUID_AND_ATTRIBUTES Privilege,
|
|
IN PPRIVILEGE_SET Privileges
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapRtlLookupKnownPrivilegeValue(
|
|
IN PSTRING PrivilegeName,
|
|
OUT PLUID Value
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapRtlValidatePrivilegeSet(
|
|
IN PPRIVILEGE_SET Privileges
|
|
);
|
|
|
|
BOOLEAN
|
|
LsapRtlIsValidPrivilege(
|
|
IN PLUID_AND_ATTRIBUTES Privilege
|
|
);
|
|
|
|
BOOLEAN
|
|
LsapRtlPrefixSid(
|
|
IN PSID PrefixSid,
|
|
IN PSID Sid
|
|
);
|
|
|
|
BOOLEAN
|
|
LsapRtlPrefixName(
|
|
IN PUNICODE_STRING PrefixName,
|
|
IN PUNICODE_STRING Name
|
|
);
|
|
|
|
LONG
|
|
LsapRtlFindCharacterInUnicodeString(
|
|
IN PUNICODE_STRING InputString,
|
|
IN PUNICODE_STRING Character,
|
|
IN BOOLEAN CaseInsensitive
|
|
);
|
|
|
|
VOID
|
|
LsapRtlSplitNames(
|
|
IN PUNICODE_STRING Names,
|
|
IN ULONG Count,
|
|
IN PUNICODE_STRING Separator,
|
|
OUT PUNICODE_STRING PrefixNames,
|
|
OUT PUNICODE_STRING SuffixNames
|
|
);
|
|
|
|
VOID
|
|
LsapRtlSetSecurityAccessMask(
|
|
IN SECURITY_INFORMATION SecurityInformation,
|
|
OUT PACCESS_MASK DesiredAccess
|
|
);
|
|
|
|
VOID
|
|
LsapRtlQuerySecurityAccessMask(
|
|
IN SECURITY_INFORMATION SecurityInformation,
|
|
OUT PACCESS_MASK DesiredAccess
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapRtlSidToUnicodeRid(
|
|
IN PSID Sid,
|
|
OUT PUNICODE_STRING UnicodeRid
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapRtlPrivilegeSetToLuidAndAttributes(
|
|
IN OPTIONAL PPRIVILEGE_SET PrivilegeSet,
|
|
OUT PULONG PrivilegeCount,
|
|
OUT PLUID_AND_ATTRIBUTES *LuidAndAttributes
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapRtlWellKnownPrivilegeCheck(
|
|
IN PVOID ObjectHandle,
|
|
IN BOOLEAN ImpersonateClient,
|
|
IN ULONG PrivilegeId,
|
|
IN OPTIONAL PCLIENT_ID ClientId
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapSplitSid(
|
|
IN PSID AccountSid,
|
|
IN OUT PSID *DomainSid,
|
|
OUT ULONG *Rid
|
|
);
|
|
|
|
#define LSAP_ENCRYPTED_AUTH_DATA_FILL 512
|
|
|
|
//
|
|
// This is the individual auth info information stored on, read from, and written to the object
|
|
//
|
|
typedef struct _LSAPR_TRUST_DOMAIN_AUTH_INFO_HALF {
|
|
|
|
ULONG AuthInfos;
|
|
PLSAPR_AUTH_INFORMATION AuthenticationInformation;
|
|
PLSAPR_AUTH_INFORMATION PreviousAuthenticationInformation;
|
|
|
|
} LSAPR_TRUST_DOMAIN_AUTH_INFO_HALF, *PLSAPR_TRUST_DOMAIN_AUTH_INFO_HALF;
|
|
|
|
#define LsapDsAuthHalfFromAuthInfo( authinf, incoming ) \
|
|
((incoming) == TRUE ? \
|
|
(PLSAPR_TRUST_DOMAIN_AUTH_INFO_HALF) (authinf) : \
|
|
(authinf) == NULL ? NULL : \
|
|
(PLSAPR_TRUST_DOMAIN_AUTH_INFO_HALF)((PBYTE) (authinf) + \
|
|
sizeof(LSAPR_TRUST_DOMAIN_AUTH_INFO_HALF)))
|
|
|
|
NTSTATUS
|
|
LsapDsMarshalAuthInfoHalf(
|
|
IN PLSAPR_TRUST_DOMAIN_AUTH_INFO_HALF AuthInfo,
|
|
OUT PULONG Length,
|
|
OUT PBYTE *Buffer
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // __cplusplus
|
|
|