Define core security token and ACL structures
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in 30s
Builds / ExectOS (amd64, release) (push) Successful in 33s
Builds / ExectOS (i686, release) (push) Successful in 39s
Builds / ExectOS (i686, debug) (push) Successful in 37s

This commit is contained in:
2026-08-18 21:40:19 +02:00
parent f9008510f5
commit 61218ad742
2 changed files with 138 additions and 0 deletions

View File

@@ -119,6 +119,15 @@
/* C/C++ specific code */ /* C/C++ specific code */
#ifndef __XTOS_ASSEMBLER__ #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 */ /* Security impersonation levels */
typedef enum _SECURITY_IMPERSONATION_LEVEL typedef enum _SECURITY_IMPERSONATION_LEVEL
{ {
@@ -137,6 +146,52 @@ typedef enum _SECURITY_OPERATION_CODE
AssignSecurityDescriptor AssignSecurityDescriptor
} SECURITY_OPERATION_CODE, *PSECURITY_OPERATION_CODE; } 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 */ /* Generic security mapping structure definition */
typedef struct _GENERIC_MAPPING typedef struct _GENERIC_MAPPING
{ {
@@ -197,6 +252,13 @@ typedef struct _SID
ULONG SubAuthority[1]; ULONG SubAuthority[1];
} SID, *PSID; } 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 */ /* Token source structure definition */
typedef struct _TOKEN_SOURCE typedef struct _TOKEN_SOURCE
{ {
@@ -242,6 +304,35 @@ typedef struct _SECURITY_SUBJECT_CONTEXT
PVOID ProcessAuditId; PVOID ProcessAuditId;
} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT; } 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 */ /* Access state structure definition */
typedef struct _ACCESS_STATE typedef struct _ACCESS_STATE
{ {
@@ -267,5 +358,41 @@ typedef struct _ACCESS_STATE
UNICODE_STRING ObjectTypeName; UNICODE_STRING ObjectTypeName;
} ACCESS_STATE, *PACCESS_STATE; } 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 /* __XTOS_ASSEMBLER__ */
#endif /* __XTDK_SETYPES_H */ #endif /* __XTDK_SETYPES_H */

View File

@@ -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 _OBJECT_OPEN_REASON OBJECT_OPEN_REASON, *POBJECT_OPEN_REASON;
typedef enum _POWER_ACTION POWER_ACTION, *PPOWER_ACTION; typedef enum _POWER_ACTION POWER_ACTION, *PPOWER_ACTION;
typedef enum _POWER_STATE_TYPE POWER_STATE_TYPE, *PPOWER_STATE_TYPE; 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 _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_BALANCED_NODE_COLOR RTL_BALANCED_NODE_COLOR, *PRTL_BALANCED_NODE_COLOR;
typedef enum _RTL_VARIABLE_TYPE RTL_VARIABLE_TYPE, *PRTL_VARIABLE_TYPE; 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_FIRMWARE_TYPE SYSTEM_FIRMWARE_TYPE, *PSYSTEM_FIRMWARE_TYPE;
typedef enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE; typedef enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
typedef enum _SYSTEM_RESOURCE_TYPE SYSTEM_RESOURCE_TYPE, *PSYSTEM_RESOURCE_TYPE; 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 _WAIT_TYPE WAIT_TYPE, *PWAIT_TYPE;
typedef enum _WORK_QUEUE_TYPE WORK_QUEUE_TYPE, *PWORK_QUEUE_TYPE; typedef enum _WORK_QUEUE_TYPE WORK_QUEUE_TYPE, *PWORK_QUEUE_TYPE;
/* Structures forward references */ /* Structures forward references */
typedef struct _ACCESS_STATE ACCESS_STATE, *PACCESS_STATE; 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_CACHE_LIST ACPI_CACHE_LIST, *PACPI_CACHE_LIST;
typedef struct _ACPI_DESCRIPTION_HEADER ACPI_DESCRIPTION_HEADER, *PACPI_DESCRIPTION_HEADER; typedef struct _ACPI_DESCRIPTION_HEADER ACPI_DESCRIPTION_HEADER, *PACPI_DESCRIPTION_HEADER;
typedef struct _ACPI_FADT ACPI_FADT, *PACPI_FADT; 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_STRING ANSI_STRING, *PANSI_STRING;
typedef struct _ANSI_STRING32 ANSI_STRING32, *PANSI_STRING32; typedef struct _ANSI_STRING32 ANSI_STRING32, *PANSI_STRING32;
typedef struct _ANSI_STRING64 ANSI_STRING64, *PANSI_STRING64; 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 _CLIENT_ID CLIENT_ID, *PCLIENT_ID;
typedef struct _CM_FULL_RESOURCE_DESCRIPTOR CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR; 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; 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_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_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_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 SID, *PSID;
typedef struct _SID_ATTRIBUTES SID_ATTRIBUTES, *PSID_ATTRIBUTES;
typedef struct _SID_IDENTIFIER_AUTHORITY SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY; typedef struct _SID_IDENTIFIER_AUTHORITY SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
typedef struct _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY; typedef struct _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
typedef struct _SMBIOS_TABLE_HEADER SMBIOS_TABLE_HEADER, *PSMBIOS_TABLE_HEADER; 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 _THREAD_INFORMATION_BLOCK THREAD_INFORMATION_BLOCK, *PTHREAD_INFORMATION_BLOCK;
typedef struct _TIME_FIELDS TIME_FIELDS, *PTIME_FIELDS; typedef struct _TIME_FIELDS TIME_FIELDS, *PTIME_FIELDS;
typedef struct _TIMER_ROUTINES TIMER_ROUTINES, *PTIMER_ROUTINES; typedef struct _TIMER_ROUTINES TIMER_ROUTINES, *PTIMER_ROUTINES;
typedef struct _TOKEN TOKEN, *PTOKEN;
typedef struct _TOKEN_CONTROL TOKEN_CONTROL, *PTOKEN_CONTROL; typedef struct _TOKEN_CONTROL TOKEN_CONTROL, *PTOKEN_CONTROL;
typedef struct _TOKEN_SOURCE TOKEN_SOURCE, *PTOKEN_SOURCE; typedef struct _TOKEN_SOURCE TOKEN_SOURCE, *PTOKEN_SOURCE;
typedef struct _UEFI_FIRMWARE_INFORMATION UEFI_FIRMWARE_INFORMATION, *PUEFI_FIRMWARE_INFORMATION; 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; typedef struct _XTBL_STATUS XTBL_STATUS, *PXTBL_STATUS;
/* Unions forward references */ /* 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 EFI_DEV_PATH, *PEFI_DEV_PATH;
typedef union _EFI_DEV_PATH_PTR EFI_DEV_PATH_PTR, *PEFI_DEV_PATH_PTR; 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; typedef union _EFI_FRAMEWORK_MP_HEALTH_FLAGS EFI_FRAMEWORK_MP_HEALTH_FLAGS, *PEFI_FRAMEWORK_MP_HEALTH_FLAGS;