// This file was extracted from the TCG Published // Trusted Platform Module Library // Part 3: Commands // Family "2.0" // Level 00 Revision 01.16 // October 30, 2014 #include "InternalRoutines.h" #include "FlushContext_fp.h" // // // Error Returns Meaning // // TPM_RC_HANDLE flushHandle does not reference a loaded object or session // TPM_RC TPM2_FlushContext( FlushContext_In *in // IN: input parameter list ) { // Internal Data Update // Call object or session specific routine to flush switch(HandleGetType(in->flushHandle)) { case TPM_HT_TRANSIENT: if(!ObjectIsPresent(in->flushHandle)) return TPM_RC_HANDLE; // Flush object ObjectFlush(in->flushHandle); break; case TPM_HT_HMAC_SESSION: case TPM_HT_POLICY_SESSION: if( !SessionIsLoaded(in->flushHandle) && !SessionIsSaved(in->flushHandle) ) return TPM_RC_HANDLE; // If the session to be flushed is the exclusive audit session, then // indicate that there is no exclusive audit session any longer. if(in->flushHandle == g_exclusiveAuditSession) g_exclusiveAuditSession = TPM_RH_UNASSIGNED; // Flush session SessionFlush(in->flushHandle); break; default: // This command only take object or session handle. Other handles // should be filtered out at handle unmarshal pAssert(FALSE); break; } return TPM_RC_SUCCESS; }