Define core security token and ACL structures
This commit is contained in:
@@ -119,6 +119,15 @@
|
||||
/* C/C++ specific code */
|
||||
#ifndef __XTOS_ASSEMBLER__
|
||||
|
||||
/* The classification type for a security proxy token */
|
||||
typedef enum _PROXY_CLASS
|
||||
{
|
||||
ProxyFull = 0,
|
||||
ProxyService,
|
||||
ProxyTree,
|
||||
ProxyDirectory
|
||||
} PROXY_CLASS, *PPROXY_CLASS;
|
||||
|
||||
/* Security impersonation levels */
|
||||
typedef enum _SECURITY_IMPERSONATION_LEVEL
|
||||
{
|
||||
@@ -137,6 +146,52 @@ typedef enum _SECURITY_OPERATION_CODE
|
||||
AssignSecurityDescriptor
|
||||
} SECURITY_OPERATION_CODE, *PSECURITY_OPERATION_CODE;
|
||||
|
||||
/* Access token types enumeration list */
|
||||
typedef enum _TOKEN_TYPE
|
||||
{
|
||||
TokenPrimary = 1,
|
||||
TokenImpersonation
|
||||
} TOKEN_TYPE, *PTOKEN_TYPE;
|
||||
|
||||
/* Access Control List structure definition */
|
||||
typedef struct _ACL
|
||||
{
|
||||
UCHAR AclRevision;
|
||||
UCHAR Reserved1;
|
||||
USHORT AclSize;
|
||||
USHORT AceCount;
|
||||
USHORT Reserved2;
|
||||
} ACL, *PACL;
|
||||
|
||||
/* Bitfields for granular security audit policy categories */
|
||||
typedef struct _AUDIT_POLICY_CATEGORIES
|
||||
{
|
||||
UCHAR System:4;
|
||||
UCHAR Logon:4;
|
||||
UCHAR ObjectAccess:4;
|
||||
UCHAR PrivilegeUse:4;
|
||||
UCHAR DetailedTracking:4;
|
||||
UCHAR PolicyChange:4;
|
||||
UCHAR AccountManagement:4;
|
||||
UCHAR DirectoryServiceAccess:4;
|
||||
UCHAR AccountLogon:4;
|
||||
} AUDIT_POLICY_CATEGORIES, *PAUDIT_POLICY_CATEGORIES;
|
||||
|
||||
/* Overlay structure for manipulating audit policy bit masks */
|
||||
typedef struct _AUDIT_POLICY_OVERLAY
|
||||
{
|
||||
ULONGLONG PolicyBits:36;
|
||||
ULONGLONG SetBit:1;
|
||||
} AUDIT_POLICY_OVERLAY, *PAUDIT_POLICY_OVERLAY;
|
||||
|
||||
/* Audit policy structure definition */
|
||||
typedef union _AUDIT_POLICY
|
||||
{
|
||||
AUDIT_POLICY_CATEGORIES PolicyElements;
|
||||
AUDIT_POLICY_OVERLAY PolicyOverlay;
|
||||
ULONGLONG Overlay;
|
||||
} AUDIT_POLICY, *PAUDIT_POLICY;
|
||||
|
||||
/* Generic security mapping structure definition */
|
||||
typedef struct _GENERIC_MAPPING
|
||||
{
|
||||
@@ -197,6 +252,13 @@ typedef struct _SID
|
||||
ULONG SubAuthority[1];
|
||||
} SID, *PSID;
|
||||
|
||||
/* Security Identifier with its corresponding state attributes structure definition */
|
||||
typedef struct _SID_ATTRIBUTES
|
||||
{
|
||||
PSID Sid;
|
||||
ULONG Attributes;
|
||||
} SID_ATTRIBUTES, *PSID_ATTRIBUTES;
|
||||
|
||||
/* Token source structure definition */
|
||||
typedef struct _TOKEN_SOURCE
|
||||
{
|
||||
@@ -242,6 +304,35 @@ typedef struct _SECURITY_SUBJECT_CONTEXT
|
||||
PVOID ProcessAuditId;
|
||||
} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
|
||||
|
||||
/* Per-token audit generation information and access masks structure definition */
|
||||
typedef struct _SECURITY_TOKEN_AUDIT_DATA
|
||||
{
|
||||
ULONG Length;
|
||||
ULONG GrantMask;
|
||||
ULONG DenyMask;
|
||||
} SECURITY_TOKEN_AUDIT_DATA, *PSECURITY_TOKEN_AUDIT_DATA;
|
||||
|
||||
/* Security proxy configuration and constraint data structure definition */
|
||||
typedef struct _SECURITY_TOKEN_PROXY_DATA
|
||||
{
|
||||
ULONG Length;
|
||||
PROXY_CLASS ProxyClass;
|
||||
UNICODE_STRING PathInfo;
|
||||
ULONG ContainerMask;
|
||||
ULONG ObjectMask;
|
||||
} SECURITY_TOKEN_PROXY_DATA, *PSECURITY_TOKEN_PROXY_DATA;
|
||||
|
||||
/* Active references, device mappings, and tokens tracking data structure definition */
|
||||
typedef struct _SESSION_REFERENCES
|
||||
{
|
||||
PSESSION_REFERENCES Next;
|
||||
LUID LogonId;
|
||||
ULONG ReferenceCount;
|
||||
ULONG Flags;
|
||||
PDEVICE_MAP DeviceMap;
|
||||
LIST_ENTRY TokenList;
|
||||
} SESSION_REFERENCES, *PSESSION_REFERENCES;
|
||||
|
||||
/* Access state structure definition */
|
||||
typedef struct _ACCESS_STATE
|
||||
{
|
||||
@@ -267,5 +358,41 @@ typedef struct _ACCESS_STATE
|
||||
UNICODE_STRING ObjectTypeName;
|
||||
} ACCESS_STATE, *PACCESS_STATE;
|
||||
|
||||
/* The core access token structure definition */
|
||||
typedef struct _TOKEN
|
||||
{
|
||||
TOKEN_SOURCE TokenSource;
|
||||
LUID TokenId;
|
||||
LUID AuthenticationId;
|
||||
LUID ParentTokenId;
|
||||
LARGE_INTEGER ExpirationTime;
|
||||
PERESOURCE TokenLock;
|
||||
AUDIT_POLICY AuditPolicy;
|
||||
LUID ModifiedId;
|
||||
ULONG SessionId;
|
||||
ULONG UserAndGroupCount;
|
||||
ULONG RestrictedSidCount;
|
||||
ULONG PrivilegeCount;
|
||||
ULONG VariableLength;
|
||||
ULONG DynamicCharged;
|
||||
ULONG DynamicAvailable;
|
||||
ULONG DefaultOwnerIndex;
|
||||
PSID_ATTRIBUTES UserAndGroups;
|
||||
PSID_ATTRIBUTES RestrictedSids;
|
||||
PSID PrimaryGroup;
|
||||
PLUID_AND_ATTRIBUTES Privileges;
|
||||
PULONG DynamicPart;
|
||||
PACL DefaultDacl;
|
||||
TOKEN_TYPE TokenType;
|
||||
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
|
||||
ULONG TokenFlags;
|
||||
BOOLEAN TokenInUse;
|
||||
PSECURITY_TOKEN_PROXY_DATA ProxyData;
|
||||
PSECURITY_TOKEN_AUDIT_DATA AuditData;
|
||||
PSESSION_REFERENCES LogonSession;
|
||||
LUID OriginatingLogonSession;
|
||||
ULONG VariablePart;
|
||||
} TOKEN, *PTOKEN;
|
||||
|
||||
#endif /* __XTOS_ASSEMBLER__ */
|
||||
#endif /* __XTDK_SETYPES_H */
|
||||
|
||||
@@ -77,6 +77,7 @@ typedef enum _OBJECT_INFORMATION_CLASS OBJECT_INFORMATION_CLASS, *POBJECT_INFORM
|
||||
typedef enum _OBJECT_OPEN_REASON OBJECT_OPEN_REASON, *POBJECT_OPEN_REASON;
|
||||
typedef enum _POWER_ACTION POWER_ACTION, *PPOWER_ACTION;
|
||||
typedef enum _POWER_STATE_TYPE POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
|
||||
typedef enum _PROXY_CLASS PROXY_CLASS, *PPROXY_CLASS;
|
||||
typedef enum _PS_QUOTA_TYPE PS_QUOTA_TYPE, *PPS_QUOTA_TYPE;
|
||||
typedef enum _RTL_BALANCED_NODE_COLOR RTL_BALANCED_NODE_COLOR, *PRTL_BALANCED_NODE_COLOR;
|
||||
typedef enum _RTL_VARIABLE_TYPE RTL_VARIABLE_TYPE, *PRTL_VARIABLE_TYPE;
|
||||
@@ -85,11 +86,13 @@ typedef enum _SECURITY_OPERATION_CODE SECURITY_OPERATION_CODE, *PSECURITY_OPERAT
|
||||
typedef enum _SYSTEM_FIRMWARE_TYPE SYSTEM_FIRMWARE_TYPE, *PSYSTEM_FIRMWARE_TYPE;
|
||||
typedef enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
|
||||
typedef enum _SYSTEM_RESOURCE_TYPE SYSTEM_RESOURCE_TYPE, *PSYSTEM_RESOURCE_TYPE;
|
||||
typedef enum _TOKEN_TYPE TOKEN_TYPE, *PTOKEN_TYPE;
|
||||
typedef enum _WAIT_TYPE WAIT_TYPE, *PWAIT_TYPE;
|
||||
typedef enum _WORK_QUEUE_TYPE WORK_QUEUE_TYPE, *PWORK_QUEUE_TYPE;
|
||||
|
||||
/* Structures forward references */
|
||||
typedef struct _ACCESS_STATE ACCESS_STATE, *PACCESS_STATE;
|
||||
typedef struct _ACL ACL, *PACL;
|
||||
typedef struct _ACPI_CACHE_LIST ACPI_CACHE_LIST, *PACPI_CACHE_LIST;
|
||||
typedef struct _ACPI_DESCRIPTION_HEADER ACPI_DESCRIPTION_HEADER, *PACPI_DESCRIPTION_HEADER;
|
||||
typedef struct _ACPI_FADT ACPI_FADT, *PACPI_FADT;
|
||||
@@ -109,6 +112,8 @@ typedef struct _ACTIVATION_CONTEXT_STACK ACTIVATION_CONTEXT_STACK, *PACTIVATION_
|
||||
typedef struct _ANSI_STRING ANSI_STRING, *PANSI_STRING;
|
||||
typedef struct _ANSI_STRING32 ANSI_STRING32, *PANSI_STRING32;
|
||||
typedef struct _ANSI_STRING64 ANSI_STRING64, *PANSI_STRING64;
|
||||
typedef struct _AUDIT_POLICY_CATEGORIES AUDIT_POLICY_CATEGORIES, *PAUDIT_POLICY_CATEGORIES;
|
||||
typedef struct _AUDIT_POLICY_OVERLAY AUDIT_POLICY_OVERLAY, *PAUDIT_POLICY_OVERLAY;
|
||||
typedef struct _CLIENT_ID CLIENT_ID, *PCLIENT_ID;
|
||||
typedef struct _CM_FULL_RESOURCE_DESCRIPTOR CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
|
||||
typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
|
||||
@@ -454,7 +459,11 @@ typedef struct _SECURITY_CLIENT_CONTEXT SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIE
|
||||
typedef struct _SECURITY_PROCESS_AUDIT_INFO SECURITY_PROCESS_AUDIT_INFO, *PSECURITY_PROCESS_AUDIT_INFO;
|
||||
typedef struct _SECURITY_QUALITY_OF_SERVICE SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE;
|
||||
typedef struct _SECURITY_SUBJECT_CONTEXT SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
|
||||
typedef struct _SECURITY_TOKEN_AUDIT_DATA SECURITY_TOKEN_AUDIT_DATA, *PSECURITY_TOKEN_AUDIT_DATA;
|
||||
typedef struct _SECURITY_TOKEN_PROXY_DATA SECURITY_TOKEN_PROXY_DATA, *PSECURITY_TOKEN_PROXY_DATA;
|
||||
typedef struct _SESSION_REFERENCES SESSION_REFERENCES, *PSESSION_REFERENCES;
|
||||
typedef struct _SID SID, *PSID;
|
||||
typedef struct _SID_ATTRIBUTES SID_ATTRIBUTES, *PSID_ATTRIBUTES;
|
||||
typedef struct _SID_IDENTIFIER_AUTHORITY SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
|
||||
typedef struct _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
|
||||
typedef struct _SMBIOS_TABLE_HEADER SMBIOS_TABLE_HEADER, *PSMBIOS_TABLE_HEADER;
|
||||
@@ -473,6 +482,7 @@ typedef struct _TEB_ACTIVE_FRAME_CONTEXT TEB_ACTIVE_FRAME_CONTEXT, *PTEB_ACTIVE_
|
||||
typedef struct _THREAD_INFORMATION_BLOCK THREAD_INFORMATION_BLOCK, *PTHREAD_INFORMATION_BLOCK;
|
||||
typedef struct _TIME_FIELDS TIME_FIELDS, *PTIME_FIELDS;
|
||||
typedef struct _TIMER_ROUTINES TIMER_ROUTINES, *PTIMER_ROUTINES;
|
||||
typedef struct _TOKEN TOKEN, *PTOKEN;
|
||||
typedef struct _TOKEN_CONTROL TOKEN_CONTROL, *PTOKEN_CONTROL;
|
||||
typedef struct _TOKEN_SOURCE TOKEN_SOURCE, *PTOKEN_SOURCE;
|
||||
typedef struct _UEFI_FIRMWARE_INFORMATION UEFI_FIRMWARE_INFORMATION, *PUEFI_FIRMWARE_INFORMATION;
|
||||
@@ -501,6 +511,7 @@ typedef struct _XTBL_PAGE_MAPPING XTBL_PAGE_MAPPING, *PXTBL_PAGE_MAPPING;
|
||||
typedef struct _XTBL_STATUS XTBL_STATUS, *PXTBL_STATUS;
|
||||
|
||||
/* Unions forward references */
|
||||
typedef union _AUDIT_POLICY AUDIT_POLICY, *PAUDIT_POLICY;
|
||||
typedef union _EFI_DEV_PATH EFI_DEV_PATH, *PEFI_DEV_PATH;
|
||||
typedef union _EFI_DEV_PATH_PTR EFI_DEV_PATH_PTR, *PEFI_DEV_PATH_PTR;
|
||||
typedef union _EFI_FRAMEWORK_MP_HEALTH_FLAGS EFI_FRAMEWORK_MP_HEALTH_FLAGS, *PEFI_FRAMEWORK_MP_HEALTH_FLAGS;
|
||||
|
||||
Reference in New Issue
Block a user