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 // 16 BOOL g_phEnable; 17 const 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 }; 22 TPM_HANDLE g_exclusiveAuditSession; 23 UINT64 g_time; 24 BOOL g_pcrReConfig; 25 TPMI_DH_OBJECT g_DRTMHandle; 26 BOOL g_DrtmPreStartup; 27 BOOL g_StartupLocality3; 28 BOOL g_clearOrderly; 29 TPM_SU g_prevOrderlyState; 30 BOOL g_updateNV; 31 BOOL g_nvOk; 32 TPM2B_AUTH g_platformUniqueDetails; 33 STATE_CLEAR_DATA gc; 34 STATE_RESET_DATA gr; 35 PERSISTENT_DATA gp; 36 ORDERLY_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 // 47 TPM_HANDLE s_sessionHandles[MAX_SESSION_NUM]; 48 TPMA_SESSION s_attributes[MAX_SESSION_NUM]; 49 TPM_HANDLE s_associatedHandles[MAX_SESSION_NUM]; 50 TPM2B_NONCE s_nonceCaller[MAX_SESSION_NUM]; 51 TPM2B_AUTH s_inputAuthValues[MAX_SESSION_NUM]; 52 UINT32 s_encryptSessionIndex; 53 UINT32 s_decryptSessionIndex; 54 UINT32 s_auditSessionIndex; 55 TPM2B_DIGEST s_cpHashForAudit; 56 UINT32 s_sessionNum; 57 #endif // __IGNORE_STATE__ 58 BOOL s_DAPendingOnNV; 59 #ifdef TPM_CC_GetCommandAuditDigest 60 TPM2B_DIGEST s_cpHashForCommandAudit; 61 #endif 62 // 63 // 64 // DA.c 65 // 66 UINT64 s_selfHealTimer; 67 UINT64 s_lockoutTimer; 68 // 69 // 70 // NV.c 71 // 72 UINT32 s_reservedAddr[NV_RESERVE_LAST]; 73 UINT32 s_reservedSize[NV_RESERVE_LAST]; 74 UINT32 s_ramIndexSize; 75 BYTE s_ramIndex[RAM_INDEX_SPACE]; 76 UINT32 s_ramIndexSizeAddr; 77 UINT32 s_ramIndexAddr; 78 UINT32 s_maxCountAddr; 79 UINT32 s_evictNvStart; 80 UINT32 s_evictNvEnd; 81 TPM_RC s_NvStatus; 82 // 83 // 84 // 85 // Object.c 86 // 87 OBJECT_SLOT s_objects[MAX_LOADED_OBJECTS]; 88 // 89 // 90 // PCR.c 91 // 92 PCR s_pcrs[IMPLEMENTATION_PCR]; 93 // 94 // 95 // Session.c 96 // 97 SESSION_SLOT s_sessions[MAX_LOADED_SESSIONS]; 98 UINT32 s_oldestSavedSession; 99 int s_freeSessionSlots; 100 // 101 // 102 // Manufacture.c 103 // 104 BOOL g_manufactured = FALSE; 105 // 106 // 107 // Power.c 108 // 109 BOOL 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 120 UINT32 s_actionInputBuffer[1024]; // action input buffer 121 UINT32 s_actionOutputBuffer[1024]; // action output buffer 122 #endif // EMBEDDED_MODE ^^^ not defined 123 BYTE 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 132 ALGORITHM_VECTOR g_implementedAlgorithms; 133 ALGORITHM_VECTOR g_toTest; 134 #endif 135 // 136 // 137 // TpmFail.c 138 // 139 #ifndef EMBEDDED_MODE 140 jmp_buf g_jumpBuffer; 141 #endif // EMBEDDED_MODE ^^^ not defined 142 BOOL g_forceFailureMode; 143 BOOL g_inFailureMode; 144 UINT32 s_failFunction; 145 UINT32 s_failLine; 146 UINT32 s_failCode; 147