Blame winpr/include/winpr/security.h

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