Define core security token and ACL structures
This commit is contained in:
@@ -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 */
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user