diff --git a/sdk/xtdk/setypes.h b/sdk/xtdk/setypes.h index 0cc0943..7213a63 100644 --- a/sdk/xtdk/setypes.h +++ b/sdk/xtdk/setypes.h @@ -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 */ diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index 7290c8c..218e193 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.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;