blob: 57af8cff6e571b4ba29c78949c0fb14f1d505ffc [file] [log] [blame]
Vadim Bendebury56797522015-05-20 10:32:25 -07001// 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 "PolicyAuthValue_fp.h"
10#include "Policy_spt_fp.h"
11TPM_RC
12TPM2_PolicyAuthValue(
13 PolicyAuthValue_In *in // IN: input parameter list
14 )
15{
16 SESSION *session;
17 TPM_CC commandCode = TPM_CC_PolicyAuthValue;
18 HASH_STATE hashState;
19
20// Internal Data Update
21
22 // Get pointer to the session structure
23 session = SessionGet(in->policySession);
24
25 // Update policy hash
26 // policyDigestnew = hash(policyDigestold || TPM_CC_PolicyAuthValue)
27 // Start hash
28 CryptStartHash(session->authHashAlg, &hashState);
29
30 // add old digest
31 CryptUpdateDigest2B(&hashState, &session->u2.policyDigest.b);
32
33 // add commandCode
34 CryptUpdateDigestInt(&hashState, sizeof(TPM_CC), &commandCode);
35
36 // complete the hash and get the results
37 CryptCompleteHash2B(&hashState, &session->u2.policyDigest.b);
38
39 // update isAuthValueNeeded bit in the session context
40 session->attributes.isAuthValueNeeded = SET;
41 session->attributes.isPasswordNeeded = CLEAR;
42
43 return TPM_RC_SUCCESS;
44}