1// This file was extracted from the TCG Published 2// Trusted Platform Module Library 3// Part 4: Supporting Routines 4// Family "2.0" 5// Level 00 Revision 01.16 6// October 30, 2014 7 8#define GLOBAL_C 9#include "InternalRoutines.h" 10// 11// 12// Global Data Values 13// 14// These values are visible across multiple modules. 15// 16BOOL g_phEnable; 17const UINT16 g_rcIndex[15] = {TPM_RC_1, TPM_RC_2, TPM_RC_3, TPM_RC_4, 18 TPM_RC_5, TPM_RC_6, TPM_RC_7, TPM_RC_8, 19 TPM_RC_9, TPM_RC_A, TPM_RC_B, TPM_RC_C, 20 TPM_RC_D, TPM_RC_E, TPM_RC_F 21 }; 22TPM_HANDLE g_exclusiveAuditSession; 23UINT64 g_time; 24BOOL g_pcrReConfig; 25TPMI_DH_OBJECT g_DRTMHandle; 26BOOL g_DrtmPreStartup; 27BOOL g_StartupLocality3; 28BOOL g_clearOrderly; 29TPM_SU g_prevOrderlyState; 30BOOL g_updateNV; 31BOOL g_nvOk; 32TPM2B_AUTH g_platformUniqueDetails; 33STATE_CLEAR_DATA gc; 34STATE_RESET_DATA gr; 35PERSISTENT_DATA gp; 36ORDERLY_DATA go; 37// 38// 39// Private Values 40// 41// SessionProcess.c 42// 43#ifndef __IGNORE_STATE__ // DO NOT DEFINE THIS VALUE 44// 45// These values do not need to be retained between commands. 46// 47TPM_HANDLE s_sessionHandles[MAX_SESSION_NUM]; 48TPMA_SESSION s_attributes[MAX_SESSION_NUM]; 49TPM_HANDLE s_associatedHandles[MAX_SESSION_NUM]; 50TPM2B_NONCE s_nonceCaller[MAX_SESSION_NUM]; 51TPM2B_AUTH s_inputAuthValues[MAX_SESSION_NUM]; 52UINT32 s_encryptSessionIndex; 53UINT32 s_decryptSessionIndex; 54UINT32 s_auditSessionIndex; 55TPM2B_DIGEST s_cpHashForAudit; 56UINT32 s_sessionNum; 57#endif // __IGNORE_STATE__ 58BOOL s_DAPendingOnNV; 59#ifdef TPM_CC_GetCommandAuditDigest 60TPM2B_DIGEST s_cpHashForCommandAudit; 61#endif 62// 63// 64// DA.c 65// 66UINT64 s_selfHealTimer; 67UINT64 s_lockoutTimer; 68// 69// 70// NV.c 71// 72UINT32 s_reservedAddr[NV_RESERVE_LAST]; 73UINT32 s_reservedSize[NV_RESERVE_LAST]; 74UINT32 s_ramIndexSize; 75BYTE s_ramIndex[RAM_INDEX_SPACE]; 76UINT32 s_ramIndexSizeAddr; 77UINT32 s_ramIndexAddr; 78UINT32 s_maxCountAddr; 79UINT32 s_evictNvStart; 80UINT32 s_evictNvEnd; 81TPM_RC s_NvStatus; 82// 83// 84// 85// Object.c 86// 87OBJECT_SLOT s_objects[MAX_LOADED_OBJECTS]; 88// 89// 90// PCR.c 91// 92PCR s_pcrs[IMPLEMENTATION_PCR]; 93// 94// 95// Session.c 96// 97SESSION_SLOT s_sessions[MAX_LOADED_SESSIONS]; 98UINT32 s_oldestSavedSession; 99int s_freeSessionSlots; 100// 101// 102// Manufacture.c 103// 104BOOL g_manufactured = FALSE; 105// 106// 107// Power.c 108// 109BOOL s_initialized = FALSE; 110// 111// 112// MemoryLib.c 113// 114// The s_actionOutputBuffer should not be modifiable by the host system until the TPM has returned a 115// response code. The s_actionOutputBuffer should not be accessible until response parameter encryption, 116// if any, is complete. This memory is not used between commands 117// 118#ifndef __IGNORE_STATE__ // DO NOT DEFINE THIS VALUE 119#ifndef EMBEDDED_MODE 120UINT32 s_actionInputBuffer[1024]; // action input buffer 121UINT32 s_actionOutputBuffer[1024]; // action output buffer 122#endif // EMBEDDED_MODE ^^^ not defined 123BYTE s_responseBuffer[MAX_RESPONSE_SIZE];// response buffer 124#endif // __IGNORE_STATE__ ^^^ not defined 125// 126// 127// SelfTest.c 128// 129// Define these values here if the AlgorithmTests() project is not used 130// 131#ifndef SELF_TEST 132ALGORITHM_VECTOR g_implementedAlgorithms; 133ALGORITHM_VECTOR g_toTest; 134#endif 135// 136// 137// TpmFail.c 138// 139#ifndef EMBEDDED_MODE 140jmp_buf g_jumpBuffer; 141#endif // EMBEDDED_MODE ^^^ not defined 142BOOL g_forceFailureMode; 143BOOL g_inFailureMode; 144UINT32 s_failFunction; 145UINT32 s_failLine; 146UINT32 s_failCode; 147