// 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
#ifndef EMBEDDED_MODE
UINT32 s_actionInputBuffer[1024]; // action input buffer
UINT32 s_actionOutputBuffer[1024]; // action output buffer
#endif // EMBEDDED_MODE ^^^ not defined
BYTE s_responseBuffer[MAX_RESPONSE_SIZE];// response buffer
#endif // __IGNORE_STATE__ ^^^ not defined
//
//
// 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
//
#ifndef EMBEDDED_MODE
jmp_buf g_jumpBuffer;
#endif // EMBEDDED_MODE ^^^ not defined
BOOL g_forceFailureMode;
BOOL g_inFailureMode;
UINT32 s_failFunction;
UINT32 s_failLine;
UINT32 s_failCode;