| // This file was extracted from the TCG Published |
| // Trusted Platform Module Library |
| // Part 4: Supporting Routines |
| // Family "2.0" |
| // Level 00 Revision 01.16 |
| // October 30, 2014 |
| |
| #define GLOBAL_C |
| #include "InternalRoutines.h" |
| // |
| // |
| // Global Data Values |
| // |
| // These values are visible across multiple modules. |
| // |
| BOOL g_phEnable; |
| const UINT16 g_rcIndex[15] = {TPM_RC_1, TPM_RC_2, TPM_RC_3, TPM_RC_4, |
| TPM_RC_5, TPM_RC_6, TPM_RC_7, TPM_RC_8, |
| TPM_RC_9, TPM_RC_A, TPM_RC_B, TPM_RC_C, |
| TPM_RC_D, TPM_RC_E, TPM_RC_F |
| }; |
| TPM_HANDLE g_exclusiveAuditSession; |
| UINT64 g_time; |
| BOOL g_pcrReConfig; |
| TPMI_DH_OBJECT g_DRTMHandle; |
| BOOL g_DrtmPreStartup; |
| BOOL g_StartupLocality3; |
| BOOL g_clearOrderly; |
| TPM_SU g_prevOrderlyState; |
| BOOL g_updateNV; |
| BOOL g_nvOk; |
| TPM2B_AUTH g_platformUniqueDetails; |
| STATE_CLEAR_DATA gc; |
| STATE_RESET_DATA gr; |
| PERSISTENT_DATA gp; |
| ORDERLY_DATA go; |
| // |
| // |
| // Private Values |
| // |
| // SessionProcess.c |
| // |
| #ifndef __IGNORE_STATE__ // DO NOT DEFINE THIS VALUE |
| // |
| // These values do not need to be retained between commands. |
| // |
| TPM_HANDLE s_sessionHandles[MAX_SESSION_NUM]; |
| TPMA_SESSION s_attributes[MAX_SESSION_NUM]; |
| TPM_HANDLE s_associatedHandles[MAX_SESSION_NUM]; |
| TPM2B_NONCE s_nonceCaller[MAX_SESSION_NUM]; |
| TPM2B_AUTH s_inputAuthValues[MAX_SESSION_NUM]; |
| UINT32 s_encryptSessionIndex; |
| UINT32 s_decryptSessionIndex; |
| UINT32 s_auditSessionIndex; |
| TPM2B_DIGEST s_cpHashForAudit; |
| UINT32 s_sessionNum; |
| #endif // __IGNORE_STATE__ |
| BOOL s_DAPendingOnNV; |
| #ifdef TPM_CC_GetCommandAuditDigest |
| TPM2B_DIGEST s_cpHashForCommandAudit; |
| #endif |
| // |
| // |
| // DA.c |
| // |
| UINT64 s_selfHealTimer; |
| UINT64 s_lockoutTimer; |
| // |
| // |
| // NV.c |
| // |
| UINT32 s_reservedAddr[NV_RESERVE_LAST]; |
| UINT32 s_reservedSize[NV_RESERVE_LAST]; |
| UINT32 s_ramIndexSize; |
| BYTE s_ramIndex[RAM_INDEX_SPACE]; |
| UINT32 s_ramIndexSizeAddr; |
| UINT32 s_ramIndexAddr; |
| UINT32 s_maxCountAddr; |
| UINT32 s_evictNvStart; |
| UINT32 s_evictNvEnd; |
| TPM_RC s_NvStatus; |
| // |
| // |
| // |
| // Object.c |
| // |
| OBJECT_SLOT s_objects[MAX_LOADED_OBJECTS]; |
| // |
| // |
| // PCR.c |
| // |
| PCR s_pcrs[IMPLEMENTATION_PCR]; |
| // |
| // |
| // Session.c |
| // |
| SESSION_SLOT s_sessions[MAX_LOADED_SESSIONS]; |
| UINT32 s_oldestSavedSession; |
| int s_freeSessionSlots; |
| // |
| // |
| // Manufacture.c |
| // |
| BOOL g_manufactured = FALSE; |
| // |
| // |
| // Power.c |
| // |
| BOOL s_initialized = FALSE; |
| // |
| // |
| // MemoryLib.c |
| // |
| // The s_actionOutputBuffer should not be modifiable by the host system until the TPM has returned a |
| // response code. The s_actionOutputBuffer should not be accessible until response parameter encryption, |
| // if any, is complete. This memory is not used between commands |
| // |
| #ifndef __IGNORE_STATE__ // DO NOT DEFINE THIS VALUE |
| UINT32 s_actionInputBuffer[1024]; // action input buffer |
| UINT32 s_actionOutputBuffer[1024]; // action output buffer |
| BYTE s_responseBuffer[MAX_RESPONSE_SIZE];// response buffer |
| #endif |
| // |
| // |
| // SelfTest.c |
| // |
| // Define these values here if the AlgorithmTests() project is not used |
| // |
| #ifndef SELF_TEST |
| ALGORITHM_VECTOR g_implementedAlgorithms; |
| ALGORITHM_VECTOR g_toTest; |
| #endif |
| // |
| // |
| // TpmFail.c |
| // |
| jmp_buf g_jumpBuffer; |
| BOOL g_forceFailureMode; |
| BOOL g_inFailureMode; |
| UINT32 s_failFunction; |
| UINT32 s_failLine; |
| UINT32 s_failCode; |