Home | History | Annotate | Download | only in tpm2
      1 // This file was extracted from the TCG Published
      2 // Trusted Platform Module Library
      3 // Part 3: Commands
      4 // Family "2.0"
      5 // Level 00 Revision 01.16
      6 // October 30, 2014
      7 
      8 #include "InternalRoutines.h"
      9 #include "FlushContext_fp.h"
     10 //
     11 //
     12 //     Error Returns                     Meaning
     13 //
     14 //     TPM_RC_HANDLE                     flushHandle does not reference a loaded object or session
     15 //
     16 TPM_RC
     17 TPM2_FlushContext(
     18    FlushContext_In       *in                  // IN: input parameter list
     19    )
     20 {
     21 // Internal Data Update
     22 
     23    // Call object or session specific routine to flush
     24    switch(HandleGetType(in->flushHandle))
     25    {
     26    case TPM_HT_TRANSIENT:
     27        if(!ObjectIsPresent(in->flushHandle))
     28            return TPM_RC_HANDLE;
     29        // Flush object
     30        ObjectFlush(in->flushHandle);
     31        break;
     32    case TPM_HT_HMAC_SESSION:
     33    case TPM_HT_POLICY_SESSION:
     34        if(   !SessionIsLoaded(in->flushHandle)
     35           && !SessionIsSaved(in->flushHandle)
     36          )
     37            return TPM_RC_HANDLE;
     38 
     39        // If the session to be flushed is the exclusive audit session, then
     40        // indicate that there is no exclusive audit session any longer.
     41        if(in->flushHandle == g_exclusiveAuditSession)
     42            g_exclusiveAuditSession = TPM_RH_UNASSIGNED;
     43 
     44        // Flush session
     45        SessionFlush(in->flushHandle);
     46        break;
     47    default:
     48        // This command only take object or session handle.              Other handles
     49        // should be filtered out at handle unmarshal
     50        pAssert(FALSE);
     51        break;
     52    }
     53 
     54    return TPM_RC_SUCCESS;
     55 }
     56