/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #ifndef _TBS_H_ #define _TBS_H_ #include #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if defined(__cplusplus) extern "C" { #endif #if (NTDDI_VERSION >= NTDDI_VISTA) #ifndef WINAPI #define WINAPI __stdcall #endif #define CONST const typedef signed int INT32, *PINT32; typedef const INT32 *PCINT32; typedef unsigned int UINT32, *PUINT32; typedef const UINT32 *PCUINT32; #define VOID void typedef VOID *PVOID; typedef const VOID *PCVOID; typedef INT32 WINBOOL, *PBOOL; typedef const WINBOOL *PCBOOL; typedef UINT8 BYTE, *PBYTE; typedef const BYTE *PCBYTE; typedef WINBOOL TBS_BOOL; typedef UINT32 TBS_RESULT; typedef PVOID TBS_HCONTEXT, *PTBS_HCONTEXT; typedef UINT32 TBS_COMMAND_PRIORITY; typedef UINT32 TBS_COMMAND_LOCALITY; typedef UINT32 TBS_OWNERAUTH_TYPE; typedef UINT32 TBS_HANDLE; #define TBS_CONTEXT_VERSION_ONE 1 #define TBS_COMMAND_PRIORITY_LOW 100 #define TBS_COMMAND_PRIORITY_NORMAL 200 #define TBS_COMMAND_PRIORITY_HIGH 300 #define TBS_COMMAND_PRIORITY_SYSTEM 400 #define TBS_COMMAND_PRIORITY_MAX 0x80000000 #define TBS_COMMAND_LOCALITY_ZERO 0 #define TBS_COMMAND_LOCALITY_ONE 1 #define TBS_COMMAND_LOCALITY_TWO 2 #define TBS_COMMAND_LOCALITY_THREE 3 #define TBS_COMMAND_LOCALITY_FOUR 4 #define TBS_SUCCESS 0 #define TBS_IN_OUT_BUF_SIZE_MAX (256 * 1024) #define TBS_OWNERAUTH_TYPE_FULL 1 #define TBS_OWNERAUTH_TYPE_ADMIN 2 #define TBS_OWNERAUTH_TYPE_USER 3 #define TBS_OWNERAUTH_TYPE_ENDORSEMENT 4 #define TBS_OWNERAUTH_TYPE_ENDORSEMENT_20 12 #define TBS_OWNERAUTH_TYPE_STORAGE_20 13 typedef struct tdTBS_CONTEXT_PARAMS { UINT32 version; } TBS_CONTEXT_PARAMS, *PTBS_CONTEXT_PARAMS; typedef const TBS_CONTEXT_PARAMS *PCTBS_CONTEXT_PARAMS; TBS_RESULT WINAPI Tbsi_Context_Create(PCTBS_CONTEXT_PARAMS pContextParams, PTBS_HCONTEXT phContext); TBS_RESULT WINAPI Tbsip_Context_Close(TBS_HCONTEXT hContext); 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); TBS_RESULT WINAPI Tbsip_Cancel_Commands(TBS_HCONTEXT hContext); TBS_RESULT WINAPI Tbsi_Physical_Presence_Command(TBS_HCONTEXT hContext, PCBYTE pabInput, UINT32 cbInput, PBYTE pabOutput, PUINT32 pcbOutput); #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ #if (NTDDI_VERSION >= NTDDI_VISTASP1) TBS_RESULT WINAPI Tbsi_Get_TCG_Log(TBS_HCONTEXT hContext, PBYTE pOutputBuf, PUINT32 pOutputBufLen); #endif /* _WIN32_WINNT_VISTASP1 */ #if (NTDDI_VERSION >= NTDDI_WIN8) #define TBS_CONTEXT_VERSION_TWO 2 typedef struct tdTBS_CONTEXT_PARAMS2 { UINT32 version; __C89_NAMELESS union { __C89_NAMELESS struct { UINT32 requestRaw : 1; UINT32 includeTpm12 : 1; UINT32 includeTpm20 : 1; }; UINT32 asUINT32; }; } TBS_CONTEXT_PARAMS2, *PTBS_CONTEXT_PARAMS2; typedef const TBS_CONTEXT_PARAMS2 *PCTBS_CONTEXT_PARAMS2; typedef struct tdTPM_WNF_PROVISIONING { UINT32 status; BYTE message[28]; } TPM_WNF_PROVISIONING; #define TPM_WNF_INFO_CLEAR_SUCCESSFUL 0x00000001 #define TPM_WNF_INFO_OWNERSHIP_SUCCESSFUL 0x00000002 #define TPM_WNF_INFO_NO_REBOOT_REQUIRED 1 #ifndef TPM_VERSION_UNKNOWN #define TPM_VERSION_UNKNOWN 0 #define TPM_VERSION_12 1 #define TPM_VERSION_20 2 #define TPM_IFTYPE_UNKNOWN 0 #define TPM_IFTYPE_1 1 #define TPM_IFTYPE_TRUSTZONE 2 #define TPM_IFTYPE_HW 3 #define TPM_IFTYPE_EMULATOR 4 #define TPM_IFTYPE_SPB 5 typedef struct _TPM_DEVICE_INFO { UINT32 structVersion; UINT32 tpmVersion; UINT32 tpmInterfaceType; UINT32 tpmImpRevision; } TPM_DEVICE_INFO, *PTPM_DEVICE_INFO; typedef const TPM_DEVICE_INFO *PCTPM_DEVICE_INFO; #endif /* TPM_VERSION_UNKNOWN */ TBS_RESULT WINAPI Tbsi_GetDeviceInfo(UINT32 Size, PVOID Info); TBS_RESULT WINAPI Tbsi_Get_OwnerAuth(TBS_HCONTEXT hContext, TBS_OWNERAUTH_TYPE ownerauthType, PBYTE pOutputBuf, PUINT32 pOutputBufLen); TBS_RESULT WINAPI Tbsi_Revoke_Attestation(void); #endif /* (NTDDI_VERSION >= NTDDI_WIN8) */ #if (NTDDI_VERSION >= NTDDI_WINBLUE) #ifndef _NTDDK_ HRESULT GetDeviceID(PBYTE pbWindowsAIK, UINT32 cbWindowsAIK, PUINT32 pcbResult, WINBOOL *pfProtectedByTPM); HRESULT GetDeviceIDString(PWSTR pszWindowsAIK, UINT32 cchWindowsAIK, PUINT32 pcchResult, WINBOOL *pfProtectedByTPM); #endif /* ifndef _NTDDK_ */ #endif /* (NTDDI_VERSION >= NTDDI_WINBLUE) */ #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) TBS_RESULT WINAPI Tbsi_Create_Windows_Key(TBS_HANDLE keyHandle); #endif /* (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) */ #if (NTDDI_VERSION >= NTDDI_WIN10_RS4) #define TBS_TCGLOG_SRTM_CURRENT 0 #define TBS_TCGLOG_DRTM_CURRENT 1 #define TBS_TCGLOG_SRTM_BOOT 2 #define TBS_TCGLOG_SRTM_RESUME 3 #define TBS_TCGLOG_DRTM_BOOT 4 #define TBS_TCGLOG_DRTM_RESUME 5 TBS_RESULT WINAPI Tbsi_Get_TCG_Log_Ex(UINT32 logType, PBYTE pbOutput, PUINT32 pcbOutput); #endif /* (NTDDI_VERSION >= NTDDI_WIN10_RS4) */ #if (NTDDI_VERSION >= NTDDI_WIN10_NI) WINBOOL WINAPI Tbsi_Is_Tpm_Present(void); #endif /* (NTDDI_VERSION >= NTDDI_WIN10_NI) */ #if defined(__cplusplus) } #endif #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* _TBS_H_ */