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 "ClearControl_fp.h" 10 // 11 // 12 // Error Returns Meaning 13 // 14 // TPM_RC_AUTH_FAIL authorization is not properly given 15 // 16 TPM_RC TPM2_ClearControl(ClearControl_In * in)17TPM2_ClearControl( 18 ClearControl_In *in // IN: input parameter list 19 ) 20 { 21 TPM_RC result; 22 23 // The command needs NV update. Check if NV is available. 24 // A TPM_RC_NV_UNAVAILABLE or TPM_RC_NV_RATE error may be returned at 25 // this point 26 result = NvIsAvailable(); 27 if(result != TPM_RC_SUCCESS) return result; 28 29 // Input Validation 30 31 // LockoutAuth may be used to set disableLockoutClear to TRUE but not to FALSE 32 if(in->auth == TPM_RH_LOCKOUT && in->disable == NO) 33 return TPM_RC_AUTH_FAIL; 34 35 // Internal Data Update 36 37 if(in->disable == YES) 38 gp.disableClear = TRUE; 39 else 40 gp.disableClear = FALSE; 41 42 // Record the change to NV 43 NvWriteReserved(NV_DISABLE_CLEAR, &gp.disableClear); 44 45 return TPM_RC_SUCCESS; 46 } 47