| /** |
| * 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 <winapifamily.h> |
| |
| #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_ */ |