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 "DictionaryAttackParameters_fp.h" 10 TPM_RC TPM2_DictionaryAttackParameters(DictionaryAttackParameters_In * in)11TPM2_DictionaryAttackParameters( 12 DictionaryAttackParameters_In *in // IN: input parameter list 13 ) 14 { 15 TPM_RC result; 16 17 // The command needs NV update. Check if NV is available. 18 // A TPM_RC_NV_UNAVAILABLE or TPM_RC_NV_RATE error may be returned at 19 // this point 20 result = NvIsAvailable(); 21 if(result != TPM_RC_SUCCESS) return result; 22 23 // Internal Data Update 24 25 // Set dictionary attack parameters 26 gp.maxTries = in->newMaxTries; 27 gp.recoveryTime = in->newRecoveryTime; 28 gp.lockoutRecovery = in->lockoutRecovery; 29 30 // Set failed tries to 0 31 gp.failedTries = 0; 32 33 // Record the changes to NV 34 NvWriteReserved(NV_FAILED_TRIES, &gp.failedTries); 35 NvWriteReserved(NV_MAX_TRIES, &gp.maxTries); 36 NvWriteReserved(NV_RECOVERY_TIME, &gp.recoveryTime); 37 NvWriteReserved(NV_LOCKOUT_RECOVERY, &gp.lockoutRecovery); 38 39 return TPM_RC_SUCCESS; 40 } 41