Blame winpr/include/winpr/security.h

Packit Service fa4841
/**
Packit Service fa4841
 * WinPR: Windows Portable Runtime
Packit Service fa4841
 * Security Definitions
Packit Service fa4841
 *
Packit Service fa4841
 * Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit Service fa4841
 *
Packit Service fa4841
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit Service fa4841
 * you may not use this file except in compliance with the License.
Packit Service fa4841
 * You may obtain a copy of the License at
Packit Service fa4841
 *
Packit Service fa4841
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit Service fa4841
 *
Packit Service fa4841
 * Unless required by applicable law or agreed to in writing, software
Packit Service fa4841
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit Service fa4841
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit Service fa4841
 * See the License for the specific language governing permissions and
Packit Service fa4841
 * limitations under the License.
Packit Service fa4841
 */
Packit Service fa4841
Packit Service fa4841
#ifndef WINPR_SECURITY_H
Packit Service fa4841
#define WINPR_SECURITY_H
Packit Service fa4841
Packit Service fa4841
#include <winpr/winpr.h>
Packit Service fa4841
#include <winpr/wtypes.h>
Packit Service fa4841
Packit Service fa4841
/**
Packit Service fa4841
 * Windows Integrity Mechanism Design:
Packit Service fa4841
 * http://msdn.microsoft.com/en-us/library/bb625963.aspx
Packit Service fa4841
 */
Packit Service fa4841
Packit Service fa4841
#ifndef _WIN32
Packit Service fa4841
Packit Service fa4841
#include <winpr/nt.h>
Packit Service fa4841
Packit Service b1ea74
#define ANYSIZE_ARRAY 1
Packit Service fa4841
Packit Service fa4841
typedef enum _SECURITY_IMPERSONATION_LEVEL
Packit Service fa4841
{
Packit Service fa4841
	SecurityAnonymous,
Packit Service fa4841
	SecurityIdentification,
Packit Service fa4841
	SecurityImpersonation,
Packit Service fa4841
	SecurityDelegation
Packit Service b1ea74
} SECURITY_IMPERSONATION_LEVEL,
Packit Service b1ea74
    *PSECURITY_IMPERSONATION_LEVEL;
Packit Service b1ea74
Packit Service b1ea74
#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
Packit Service b1ea74
#define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous
Packit Service b1ea74
#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
Packit Service b1ea74
#define VALID_IMPERSONATION_LEVEL(L) \
Packit Service b1ea74
	(((L) >= SECURITY_MIN_IMPERSONATION_LEVEL) && ((L) <= SECURITY_MAX_IMPERSONATION_LEVEL))
Packit Service b1ea74
Packit Service b1ea74
#define TOKEN_ASSIGN_PRIMARY (0x0001)
Packit Service b1ea74
#define TOKEN_DUPLICATE (0x0002)
Packit Service b1ea74
#define TOKEN_IMPERSONATE (0x0004)
Packit Service b1ea74
#define TOKEN_QUERY (0x0008)
Packit Service b1ea74
#define TOKEN_QUERY_SOURCE (0x0010)
Packit Service b1ea74
#define TOKEN_ADJUST_PRIVILEGES (0x0020)
Packit Service b1ea74
#define TOKEN_ADJUST_GROUPS (0x0040)
Packit Service b1ea74
#define TOKEN_ADJUST_DEFAULT (0x0080)
Packit Service b1ea74
#define TOKEN_ADJUST_SESSIONID (0x0100)
Packit Service b1ea74
Packit Service b1ea74
#define TOKEN_ALL_ACCESS_P                                                                   \
Packit Service b1ea74
	(STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | \
Packit Service b1ea74
	 TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS |      \
Packit Service b1ea74
	 TOKEN_ADJUST_DEFAULT)
Packit Service b1ea74
Packit Service b1ea74
#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID)
Packit Service b1ea74
Packit Service b1ea74
#define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY)
Packit Service b1ea74
Packit Service b1ea74
#define TOKEN_WRITE \
Packit Service b1ea74
	(STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT)
Packit Service b1ea74
Packit Service b1ea74
#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE)
Packit Service b1ea74
Packit Service b1ea74
#define TOKEN_MANDATORY_POLICY_OFF 0x0
Packit Service b1ea74
#define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1
Packit Service b1ea74
#define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2
Packit Service b1ea74
Packit Service b1ea74
#define TOKEN_MANDATORY_POLICY_VALID_MASK \
Packit Service b1ea74
	(TOKEN_MANDATORY_POLICY_NO_WRITE_UP | TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN)
Packit Service b1ea74
Packit Service b1ea74
#define POLICY_AUDIT_SUBCATEGORY_COUNT (56)
Packit Service b1ea74
Packit Service b1ea74
#define TOKEN_SOURCE_LENGTH 8
Packit Service b1ea74
Packit Service b1ea74
#define SID_REVISION (1)
Packit Service b1ea74
#define SID_MAX_SUB_AUTHORITIES (15)
Packit Service b1ea74
#define SID_RECOMMENDED_SUB_AUTHORITIES (1)
Packit Service b1ea74
Packit Service b1ea74
#define SID_HASH_SIZE 32
Packit Service b1ea74
Packit Service b1ea74
#define SECURITY_MANDATORY_UNTRUSTED_RID 0x0000
Packit Service b1ea74
#define SECURITY_MANDATORY_LOW_RID 0x1000
Packit Service b1ea74
#define SECURITY_MANDATORY_MEDIUM_RID 0x2000
Packit Service b1ea74
#define SECURITY_MANDATORY_HIGH_RID 0x3000
Packit Service b1ea74
#define SECURITY_MANDATORY_SYSTEM_RID 0x4000
Packit Service b1ea74
Packit Service b1ea74
#define SECURITY_NULL_SID_AUTHORITY \
Packit Service b1ea74
	{                               \
Packit Service b1ea74
		0, 0, 0, 0, 0, 0            \
Packit Service b1ea74
	}
Packit Service b1ea74
#define SECURITY_WORLD_SID_AUTHORITY \
Packit Service b1ea74
	{                                \
Packit Service b1ea74
		0, 0, 0, 0, 0, 1             \
Packit Service b1ea74
	}
Packit Service b1ea74
#define SECURITY_LOCAL_SID_AUTHORITY \
Packit Service b1ea74
	{                                \
Packit Service b1ea74
		0, 0, 0, 0, 0, 2             \
Packit Service b1ea74
	}
Packit Service b1ea74
#define SECURITY_CREATOR_SID_AUTHORITY \
Packit Service b1ea74
	{                                  \
Packit Service b1ea74
		0, 0, 0, 0, 0, 3               \
Packit Service b1ea74
	}
Packit Service b1ea74
#define SECURITY_NON_UNIQUE_AUTHORITY \
Packit Service b1ea74
	{                                 \
Packit Service b1ea74
		0, 0, 0, 0, 0, 4              \
Packit Service b1ea74
	}
Packit Service b1ea74
#define SECURITY_RESOURCE_MANAGER_AUTHORITY \
Packit Service b1ea74
	{                                       \
Packit Service b1ea74
		0, 0, 0, 0, 0, 9                    \
Packit Service b1ea74
	}
Packit Service b1ea74
Packit Service b1ea74
#define SECURITY_NULL_RID (0x00000000L)
Packit Service b1ea74
#define SECURITY_WORLD_RID (0x00000000L)
Packit Service b1ea74
#define SECURITY_LOCAL_RID (0x00000000L)
Packit Service b1ea74
#define SECURITY_LOCAL_LOGON_RID (0x00000001L)
Packit Service b1ea74
Packit Service b1ea74
#define SECURITY_CREATOR_OWNER_RID (0x00000000L)
Packit Service b1ea74
#define SECURITY_CREATOR_GROUP_RID (0x00000001L)
Packit Service b1ea74
#define SECURITY_CREATOR_OWNER_SERVER_RID (0x00000002L)
Packit Service b1ea74
#define SECURITY_CREATOR_GROUP_SERVER_RID (0x00000003L)
Packit Service b1ea74
#define SECURITY_CREATOR_OWNER_RIGHTS_RID (0x00000004L)
Packit Service fa4841
Packit Service fa4841
typedef PVOID PACCESS_TOKEN;
Packit Service fa4841
typedef PVOID PCLAIMS_BLOB;
Packit Service fa4841
Packit Service fa4841
typedef struct _LUID_AND_ATTRIBUTES
Packit Service fa4841
{
Packit Service fa4841
	LUID Luid;
Packit Service fa4841
	DWORD Attributes;
Packit Service fa4841
} LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
Packit Service fa4841
typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
Packit Service fa4841
typedef LUID_AND_ATTRIBUTES_ARRAY* PLUID_AND_ATTRIBUTES_ARRAY;
Packit Service fa4841
Packit Service fa4841
typedef struct _SID_IDENTIFIER_AUTHORITY
Packit Service fa4841
{
Packit Service b1ea74
	BYTE Value[6];
Packit Service fa4841
} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
Packit Service fa4841
Packit Service fa4841
typedef struct _SID
Packit Service fa4841
{
Packit Service b1ea74
	BYTE Revision;
Packit Service b1ea74
	BYTE SubAuthorityCount;
Packit Service fa4841
	SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
Packit Service fa4841
	DWORD SubAuthority[ANYSIZE_ARRAY];
Packit Service fa4841
} SID, *PISID;
Packit Service fa4841
Packit Service fa4841
typedef enum _SID_NAME_USE
Packit Service fa4841
{
Packit Service fa4841
	SidTypeUser = 1,
Packit Service fa4841
	SidTypeGroup,
Packit Service fa4841
	SidTypeDomain,
Packit Service fa4841
	SidTypeAlias,
Packit Service fa4841
	SidTypeWellKnownGroup,
Packit Service fa4841
	SidTypeDeletedAccount,
Packit Service fa4841
	SidTypeInvalid,
Packit Service fa4841
	SidTypeUnknown,
Packit Service fa4841
	SidTypeComputer,
Packit Service fa4841
	SidTypeLabel
Packit Service b1ea74
} SID_NAME_USE,
Packit Service b1ea74
    *PSID_NAME_USE;
Packit Service fa4841
Packit Service fa4841
typedef struct _SID_AND_ATTRIBUTES
Packit Service fa4841
{
Packit Service fa4841
	PSID Sid;
Packit Service fa4841
	DWORD Attributes;
Packit Service b1ea74
} SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
Packit Service fa4841
Packit Service fa4841
typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
Packit Service fa4841
typedef SID_AND_ATTRIBUTES_ARRAY* PSID_AND_ATTRIBUTES_ARRAY;
Packit Service fa4841
Packit Service fa4841
typedef ULONG_PTR SID_HASH_ENTRY, *PSID_HASH_ENTRY;
Packit Service fa4841
Packit Service fa4841
typedef struct _SID_AND_ATTRIBUTES_HASH
Packit Service fa4841
{
Packit Service fa4841
	DWORD SidCount;
Packit Service fa4841
	PSID_AND_ATTRIBUTES SidAttr;
Packit Service fa4841
	SID_HASH_ENTRY Hash[SID_HASH_SIZE];
Packit Service fa4841
} SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH;
Packit Service fa4841
Packit Service fa4841
typedef enum _TOKEN_TYPE
Packit Service fa4841
{
Packit Service fa4841
	TokenPrimary = 1,
Packit Service fa4841
	TokenImpersonation
Packit Service fa4841
} TOKEN_TYPE;
Packit Service fa4841
typedef TOKEN_TYPE* PTOKEN_TYPE;
Packit Service fa4841
Packit Service fa4841
typedef enum _TOKEN_ELEVATION_TYPE
Packit Service fa4841
{
Packit Service fa4841
	TokenElevationTypeDefault = 1,
Packit Service fa4841
	TokenElevationTypeFull,
Packit Service fa4841
	TokenElevationTypeLimited
Packit Service b1ea74
} TOKEN_ELEVATION_TYPE,
Packit Service b1ea74
    *PTOKEN_ELEVATION_TYPE;
Packit Service fa4841
Packit Service fa4841
typedef enum _TOKEN_INFORMATION_CLASS
Packit Service fa4841
{
Packit Service fa4841
	TokenUser = 1,
Packit Service fa4841
	TokenGroups,
Packit Service fa4841
	TokenPrivileges,
Packit Service fa4841
	TokenOwner,
Packit Service fa4841
	TokenPrimaryGroup,
Packit Service fa4841
	TokenDefaultDacl,
Packit Service fa4841
	TokenSource,
Packit Service fa4841
	TokenType,
Packit Service fa4841
	TokenImpersonationLevel,
Packit Service fa4841
	TokenStatistics,
Packit Service fa4841
	TokenRestrictedSids,
Packit Service fa4841
	TokenSessionId,
Packit Service fa4841
	TokenGroupsAndPrivileges,
Packit Service fa4841
	TokenSessionReference,
Packit Service fa4841
	TokenSandBoxInert,
Packit Service fa4841
	TokenAuditPolicy,
Packit Service fa4841
	TokenOrigin,
Packit Service fa4841
	TokenElevationType,
Packit Service fa4841
	TokenLinkedToken,
Packit Service fa4841
	TokenElevation,
Packit Service fa4841
	TokenHasRestrictions,
Packit Service fa4841
	TokenAccessInformation,
Packit Service fa4841
	TokenVirtualizationAllowed,
Packit Service fa4841
	TokenVirtualizationEnabled,
Packit Service fa4841
	TokenIntegrityLevel,
Packit Service fa4841
	TokenUIAccess,
Packit Service fa4841
	TokenMandatoryPolicy,
Packit Service fa4841
	TokenLogonSid,
Packit Service fa4841
	TokenIsAppContainer,
Packit Service fa4841
	TokenCapabilities,
Packit Service fa4841
	TokenAppContainerSid,
Packit Service fa4841
	TokenAppContainerNumber,
Packit Service fa4841
	TokenUserClaimAttributes,
Packit Service fa4841
	TokenDeviceClaimAttributes,
Packit Service fa4841
	TokenRestrictedUserClaimAttributes,
Packit Service fa4841
	TokenRestrictedDeviceClaimAttributes,
Packit Service fa4841
	TokenDeviceGroups,
Packit Service fa4841
	TokenRestrictedDeviceGroups,
Packit Service fa4841
	TokenSecurityAttributes,
Packit Service fa4841
	TokenIsRestricted,
Packit Service fa4841
	MaxTokenInfoClass
Packit Service b1ea74
} TOKEN_INFORMATION_CLASS,
Packit Service b1ea74
    *PTOKEN_INFORMATION_CLASS;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_USER
Packit Service fa4841
{
Packit Service fa4841
	SID_AND_ATTRIBUTES User;
Packit Service fa4841
} TOKEN_USER, *PTOKEN_USER;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_GROUPS
Packit Service fa4841
{
Packit Service fa4841
	DWORD GroupCount;
Packit Service fa4841
	SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
Packit Service fa4841
} TOKEN_GROUPS, *PTOKEN_GROUPS;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_PRIVILEGES
Packit Service fa4841
{
Packit Service fa4841
	DWORD PrivilegeCount;
Packit Service fa4841
	LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
Packit Service fa4841
} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_OWNER
Packit Service fa4841
{
Packit Service fa4841
	PSID Owner;
Packit Service fa4841
} TOKEN_OWNER, *PTOKEN_OWNER;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_PRIMARY_GROUP
Packit Service fa4841
{
Packit Service fa4841
	PSID PrimaryGroup;
Packit Service fa4841
} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_DEFAULT_DACL
Packit Service fa4841
{
Packit Service fa4841
	PACL DefaultDacl;
Packit Service fa4841
} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_USER_CLAIMS
Packit Service fa4841
{
Packit Service fa4841
	PCLAIMS_BLOB UserClaims;
Packit Service fa4841
} TOKEN_USER_CLAIMS, *PTOKEN_USER_CLAIMS;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_DEVICE_CLAIMS
Packit Service fa4841
{
Packit Service fa4841
	PCLAIMS_BLOB DeviceClaims;
Packit Service fa4841
} TOKEN_DEVICE_CLAIMS, *PTOKEN_DEVICE_CLAIMS;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_GROUPS_AND_PRIVILEGES
Packit Service fa4841
{
Packit Service fa4841
	DWORD SidCount;
Packit Service fa4841
	DWORD SidLength;
Packit Service fa4841
	PSID_AND_ATTRIBUTES Sids;
Packit Service fa4841
	DWORD RestrictedSidCount;
Packit Service fa4841
	DWORD RestrictedSidLength;
Packit Service fa4841
	PSID_AND_ATTRIBUTES RestrictedSids;
Packit Service fa4841
	DWORD PrivilegeCount;
Packit Service fa4841
	DWORD PrivilegeLength;
Packit Service fa4841
	PLUID_AND_ATTRIBUTES Privileges;
Packit Service fa4841
	LUID AuthenticationId;
Packit Service fa4841
} TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_LINKED_TOKEN
Packit Service fa4841
{
Packit Service fa4841
	HANDLE LinkedToken;
Packit Service fa4841
} TOKEN_LINKED_TOKEN, *PTOKEN_LINKED_TOKEN;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_ELEVATION
Packit Service fa4841
{
Packit Service fa4841
	DWORD TokenIsElevated;
Packit Service fa4841
} TOKEN_ELEVATION, *PTOKEN_ELEVATION;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_MANDATORY_LABEL
Packit Service fa4841
{
Packit Service fa4841
	SID_AND_ATTRIBUTES Label;
Packit Service fa4841
} TOKEN_MANDATORY_LABEL, *PTOKEN_MANDATORY_LABEL;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_MANDATORY_POLICY
Packit Service fa4841
{
Packit Service fa4841
	DWORD Policy;
Packit Service fa4841
} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_ACCESS_INFORMATION
Packit Service fa4841
{
Packit Service fa4841
	PSID_AND_ATTRIBUTES_HASH SidHash;
Packit Service fa4841
	PSID_AND_ATTRIBUTES_HASH RestrictedSidHash;
Packit Service fa4841
	PTOKEN_PRIVILEGES Privileges;
Packit Service fa4841
	LUID AuthenticationId;
Packit Service fa4841
	TOKEN_TYPE TokenType;
Packit Service fa4841
	SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
Packit Service fa4841
	TOKEN_MANDATORY_POLICY MandatoryPolicy;
Packit Service fa4841
	DWORD Flags;
Packit Service fa4841
	DWORD AppContainerNumber;
Packit Service fa4841
	PSID PackageSid;
Packit Service fa4841
	PSID_AND_ATTRIBUTES_HASH CapabilitiesHash;
Packit Service fa4841
} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_AUDIT_POLICY
Packit Service fa4841
{
Packit Service fa4841
	BYTE PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1];
Packit Service fa4841
} TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_SOURCE
Packit Service fa4841
{
Packit Service fa4841
	CHAR SourceName[TOKEN_SOURCE_LENGTH];
Packit Service fa4841
	LUID SourceIdentifier;
Packit Service fa4841
} TOKEN_SOURCE, *PTOKEN_SOURCE;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_STATISTICS
Packit Service fa4841
{
Packit Service fa4841
	LUID TokenId;
Packit Service fa4841
	LUID AuthenticationId;
Packit Service fa4841
	LARGE_INTEGER ExpirationTime;
Packit Service fa4841
	TOKEN_TYPE TokenType;
Packit Service fa4841
	SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
Packit Service fa4841
	DWORD DynamicCharged;
Packit Service fa4841
	DWORD DynamicAvailable;
Packit Service fa4841
	DWORD GroupCount;
Packit Service fa4841
	DWORD PrivilegeCount;
Packit Service fa4841
	LUID ModifiedId;
Packit Service fa4841
} TOKEN_STATISTICS, *PTOKEN_STATISTICS;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_CONTROL
Packit Service fa4841
{
Packit Service fa4841
	LUID TokenId;
Packit Service fa4841
	LUID AuthenticationId;
Packit Service fa4841
	LUID ModifiedId;
Packit Service fa4841
	TOKEN_SOURCE TokenSource;
Packit Service fa4841
} TOKEN_CONTROL, *PTOKEN_CONTROL;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_ORIGIN
Packit Service fa4841
{
Packit Service fa4841
	LUID OriginatingLogonSession;
Packit Service fa4841
} TOKEN_ORIGIN, *PTOKEN_ORIGIN;
Packit Service fa4841
Packit Service fa4841
typedef enum _MANDATORY_LEVEL
Packit Service fa4841
{
Packit Service fa4841
	MandatoryLevelUntrusted = 0,
Packit Service fa4841
	MandatoryLevelLow,
Packit Service fa4841
	MandatoryLevelMedium,
Packit Service fa4841
	MandatoryLevelHigh,
Packit Service fa4841
	MandatoryLevelSystem,
Packit Service fa4841
	MandatoryLevelSecureProcess,
Packit Service fa4841
	MandatoryLevelCount
Packit Service b1ea74
} MANDATORY_LEVEL,
Packit Service b1ea74
    *PMANDATORY_LEVEL;
Packit Service fa4841
Packit Service fa4841
typedef struct _TOKEN_APPCONTAINER_INFORMATION
Packit Service fa4841
{
Packit Service fa4841
	PSID TokenAppContainer;
Packit Service fa4841
} TOKEN_APPCONTAINER_INFORMATION, *PTOKEN_APPCONTAINER_INFORMATION;
Packit Service fa4841
Packit Service fa4841
#ifdef __cplusplus
Packit Service b1ea74
extern "C"
Packit Service b1ea74
{
Packit Service fa4841
#endif
Packit Service fa4841
Packit Service b1ea74
	WINPR_API BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service b1ea74
	                                            DWORD dwRevision);
Packit Service b1ea74
	WINPR_API DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR pSecurityDescriptor);
Packit Service b1ea74
	WINPR_API BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor);
Packit Service b1ea74
Packit Service b1ea74
	WINPR_API BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service b1ea74
	                                            PSECURITY_DESCRIPTOR_CONTROL pControl,
Packit Service b1ea74
	                                            LPDWORD lpdwRevision);
Packit Service b1ea74
	WINPR_API BOOL SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service b1ea74
	                                            SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
Packit Service b1ea74
	                                            SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet);
Packit Service b1ea74
Packit Service b1ea74
	WINPR_API BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service b1ea74
	                                         LPBOOL lpbDaclPresent, PACL* pDacl,
Packit Service b1ea74
	                                         LPBOOL lpbDaclDefaulted);
Packit Service b1ea74
	WINPR_API BOOL SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service b1ea74
	                                         BOOL bDaclPresent, PACL pDacl, BOOL bDaclDefaulted);
Packit Service b1ea74
Packit Service b1ea74
	WINPR_API BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service b1ea74
	                                          PSID* pGroup, LPBOOL lpbGroupDefaulted);
Packit Service b1ea74
	WINPR_API BOOL SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID pGroup,
Packit Service b1ea74
	                                          BOOL bGroupDefaulted);
Packit Service b1ea74
Packit Service b1ea74
	WINPR_API BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service b1ea74
	                                          PSID* pOwner, LPBOOL lpbOwnerDefaulted);
Packit Service b1ea74
	WINPR_API BOOL SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID pOwner,
Packit Service b1ea74
	                                          BOOL bOwnerDefaulted);
Packit Service b1ea74
Packit Service b1ea74
	WINPR_API DWORD GetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
Packit Service b1ea74
	                                               PUCHAR RMControl);
Packit Service b1ea74
	WINPR_API DWORD SetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
Packit Service b1ea74
	                                               PUCHAR RMControl);
Packit Service b1ea74
Packit Service b1ea74
	WINPR_API BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service b1ea74
	                                         LPBOOL lpbSaclPresent, PACL* pSacl,
Packit Service b1ea74
	                                         LPBOOL lpbSaclDefaulted);
Packit Service b1ea74
	WINPR_API BOOL SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service b1ea74
	                                         BOOL bSaclPresent, PACL pSacl, BOOL bSaclDefaulted);
Packit Service fa4841
Packit Service fa4841
#ifdef __cplusplus
Packit Service fa4841
}
Packit Service fa4841
#endif
Packit Service fa4841
Packit Service fa4841
#endif
Packit Service fa4841
Packit Service fa4841
#endif /* WINPR_SECURITY_H */