tbs.h (5376B) - Raw
1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 7 #ifndef _TBS_H_ 8 #define _TBS_H_ 9 10 #include <winapifamily.h> 11 12 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) 13 14 #if defined(__cplusplus) 15 extern "C" { 16 #endif 17 18 #if (NTDDI_VERSION >= NTDDI_VISTA) 19 20 #ifndef WINAPI 21 #define WINAPI __stdcall 22 #endif 23 24 #define CONST const 25 26 typedef signed int INT32, *PINT32; 27 typedef const INT32 *PCINT32; 28 typedef unsigned int UINT32, *PUINT32; 29 typedef const UINT32 *PCUINT32; 30 31 #define VOID void 32 typedef VOID *PVOID; 33 typedef const VOID *PCVOID; 34 35 typedef INT32 WINBOOL, *PBOOL; 36 typedef const WINBOOL *PCBOOL; 37 38 typedef UINT8 BYTE, *PBYTE; 39 typedef const BYTE *PCBYTE; 40 41 typedef WINBOOL TBS_BOOL; 42 typedef UINT32 TBS_RESULT; 43 typedef PVOID TBS_HCONTEXT, *PTBS_HCONTEXT; 44 typedef UINT32 TBS_COMMAND_PRIORITY; 45 typedef UINT32 TBS_COMMAND_LOCALITY; 46 typedef UINT32 TBS_OWNERAUTH_TYPE; 47 typedef UINT32 TBS_HANDLE; 48 49 #define TBS_CONTEXT_VERSION_ONE 1 50 51 #define TBS_COMMAND_PRIORITY_LOW 100 52 #define TBS_COMMAND_PRIORITY_NORMAL 200 53 #define TBS_COMMAND_PRIORITY_HIGH 300 54 #define TBS_COMMAND_PRIORITY_SYSTEM 400 55 #define TBS_COMMAND_PRIORITY_MAX 0x80000000 56 57 #define TBS_COMMAND_LOCALITY_ZERO 0 58 #define TBS_COMMAND_LOCALITY_ONE 1 59 #define TBS_COMMAND_LOCALITY_TWO 2 60 #define TBS_COMMAND_LOCALITY_THREE 3 61 #define TBS_COMMAND_LOCALITY_FOUR 4 62 63 #define TBS_SUCCESS 0 64 65 #define TBS_IN_OUT_BUF_SIZE_MAX (256 * 1024) 66 67 #define TBS_OWNERAUTH_TYPE_FULL 1 68 #define TBS_OWNERAUTH_TYPE_ADMIN 2 69 #define TBS_OWNERAUTH_TYPE_USER 3 70 #define TBS_OWNERAUTH_TYPE_ENDORSEMENT 4 71 72 #define TBS_OWNERAUTH_TYPE_ENDORSEMENT_20 12 73 #define TBS_OWNERAUTH_TYPE_STORAGE_20 13 74 75 typedef struct tdTBS_CONTEXT_PARAMS { 76 UINT32 version; 77 } TBS_CONTEXT_PARAMS, *PTBS_CONTEXT_PARAMS; 78 typedef const TBS_CONTEXT_PARAMS *PCTBS_CONTEXT_PARAMS; 79 80 TBS_RESULT WINAPI Tbsi_Context_Create(PCTBS_CONTEXT_PARAMS pContextParams, PTBS_HCONTEXT phContext); 81 TBS_RESULT WINAPI Tbsip_Context_Close(TBS_HCONTEXT hContext); 82 TBS_RESULT WINAPI Tbsip_Submit_Command(TBS_HCONTEXT hContext, TBS_COMMAND_LOCALITY Locality, TBS_COMMAND_PRIORITY Priority, PCBYTE pabCommand, UINT32 cbCommand, PBYTE pabResult, PUINT32 pcbResult); 83 TBS_RESULT WINAPI Tbsip_Cancel_Commands(TBS_HCONTEXT hContext); 84 TBS_RESULT WINAPI Tbsi_Physical_Presence_Command(TBS_HCONTEXT hContext, PCBYTE pabInput, UINT32 cbInput, PBYTE pabOutput, PUINT32 pcbOutput); 85 86 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ 87 88 #if (NTDDI_VERSION >= NTDDI_VISTASP1) 89 90 TBS_RESULT WINAPI Tbsi_Get_TCG_Log(TBS_HCONTEXT hContext, PBYTE pOutputBuf, PUINT32 pOutputBufLen); 91 92 #endif /* _WIN32_WINNT_VISTASP1 */ 93 94 #if (NTDDI_VERSION >= NTDDI_WIN8) 95 96 #define TBS_CONTEXT_VERSION_TWO 2 97 98 typedef struct tdTBS_CONTEXT_PARAMS2 { 99 UINT32 version; 100 __C89_NAMELESS union { 101 __C89_NAMELESS struct { 102 UINT32 requestRaw : 1; 103 UINT32 includeTpm12 : 1; 104 UINT32 includeTpm20 : 1; 105 }; 106 UINT32 asUINT32; 107 }; 108 } TBS_CONTEXT_PARAMS2, *PTBS_CONTEXT_PARAMS2; 109 typedef const TBS_CONTEXT_PARAMS2 *PCTBS_CONTEXT_PARAMS2; 110 111 typedef struct tdTPM_WNF_PROVISIONING { 112 UINT32 status; 113 BYTE message[28]; 114 } TPM_WNF_PROVISIONING; 115 116 #define TPM_WNF_INFO_CLEAR_SUCCESSFUL 0x00000001 117 #define TPM_WNF_INFO_OWNERSHIP_SUCCESSFUL 0x00000002 118 119 #define TPM_WNF_INFO_NO_REBOOT_REQUIRED 1 120 121 #ifndef TPM_VERSION_UNKNOWN 122 123 #define TPM_VERSION_UNKNOWN 0 124 #define TPM_VERSION_12 1 125 #define TPM_VERSION_20 2 126 127 #define TPM_IFTYPE_UNKNOWN 0 128 #define TPM_IFTYPE_1 1 129 #define TPM_IFTYPE_TRUSTZONE 2 130 #define TPM_IFTYPE_HW 3 131 #define TPM_IFTYPE_EMULATOR 4 132 #define TPM_IFTYPE_SPB 5 133 134 typedef struct _TPM_DEVICE_INFO { 135 UINT32 structVersion; 136 UINT32 tpmVersion; 137 UINT32 tpmInterfaceType; 138 UINT32 tpmImpRevision; 139 } TPM_DEVICE_INFO, *PTPM_DEVICE_INFO; 140 typedef const TPM_DEVICE_INFO *PCTPM_DEVICE_INFO; 141 142 #endif /* TPM_VERSION_UNKNOWN */ 143 144 TBS_RESULT WINAPI Tbsi_GetDeviceInfo(UINT32 Size, PVOID Info); 145 TBS_RESULT WINAPI Tbsi_Get_OwnerAuth(TBS_HCONTEXT hContext, TBS_OWNERAUTH_TYPE ownerauthType, PBYTE pOutputBuf, PUINT32 pOutputBufLen); 146 TBS_RESULT WINAPI Tbsi_Revoke_Attestation(void); 147 148 #endif /* (NTDDI_VERSION >= NTDDI_WIN8) */ 149 150 #if (NTDDI_VERSION >= NTDDI_WINBLUE) 151 152 #ifndef _NTDDK_ 153 154 HRESULT GetDeviceID(PBYTE pbWindowsAIK, UINT32 cbWindowsAIK, PUINT32 pcbResult, WINBOOL *pfProtectedByTPM); 155 HRESULT GetDeviceIDString(PWSTR pszWindowsAIK, UINT32 cchWindowsAIK, PUINT32 pcchResult, WINBOOL *pfProtectedByTPM); 156 157 #endif /* ifndef _NTDDK_ */ 158 159 #endif /* (NTDDI_VERSION >= NTDDI_WINBLUE) */ 160 161 #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) 162 163 TBS_RESULT WINAPI Tbsi_Create_Windows_Key(TBS_HANDLE keyHandle); 164 165 #endif /* (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) */ 166 167 #if (NTDDI_VERSION >= NTDDI_WIN10_RS4) 168 169 #define TBS_TCGLOG_SRTM_CURRENT 0 170 #define TBS_TCGLOG_DRTM_CURRENT 1 171 #define TBS_TCGLOG_SRTM_BOOT 2 172 #define TBS_TCGLOG_SRTM_RESUME 3 173 #define TBS_TCGLOG_DRTM_BOOT 4 174 #define TBS_TCGLOG_DRTM_RESUME 5 175 176 TBS_RESULT WINAPI Tbsi_Get_TCG_Log_Ex(UINT32 logType, PBYTE pbOutput, PUINT32 pcbOutput); 177 178 #endif /* (NTDDI_VERSION >= NTDDI_WIN10_RS4) */ 179 180 #if (NTDDI_VERSION >= NTDDI_WIN10_NI) 181 182 WINBOOL WINAPI Tbsi_Is_Tpm_Present(void); 183 184 #endif /* (NTDDI_VERSION >= NTDDI_WIN10_NI) */ 185 186 #if defined(__cplusplus) 187 } 188 #endif 189 190 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ 191 192 #endif /* _TBS_H_ */