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 "PolicyPhysicalPresence_fp.h" 10TPM_RC 11TPM2_PolicyPhysicalPresence( 12 PolicyPhysicalPresence_In *in // IN: input parameter list 13 ) 14{ 15 SESSION *session; 16 TPM_CC commandCode = TPM_CC_PolicyPhysicalPresence; 17 HASH_STATE hashState; 18 19// Internal Data Update 20 21 // Get pointer to the session structure 22 session = SessionGet(in->policySession); 23 24 // Update policy hash 25 // policyDigestnew = hash(policyDigestold || TPM_CC_PolicyPhysicalPresence) 26 // Start hash 27 CryptStartHash(session->authHashAlg, &hashState); 28 29 // add old digest 30 CryptUpdateDigest2B(&hashState, &session->u2.policyDigest.b); 31 32 // add commandCode 33 CryptUpdateDigestInt(&hashState, sizeof(TPM_CC), &commandCode); 34 35 // complete the digest 36 CryptCompleteHash2B(&hashState, &session->u2.policyDigest.b); 37 38 // update session attribute 39 session->attributes.isPPRequired = SET; 40 41 return TPM_RC_SUCCESS; 42} 43