You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.4 KiB
46 lines
1.4 KiB
// This file was extracted from the TCG Published |
|
// Trusted Platform Module Library |
|
// Part 3: Commands |
|
// Family "2.0" |
|
// Level 00 Revision 01.16 |
|
// October 30, 2014 |
|
|
|
#include "InternalRoutines.h" |
|
#include "Platform.h" |
|
#include "PCR_fp.h" |
|
// |
|
// This function is called to process a _TPM_Hash_Data() indication. |
|
// |
|
void |
|
_TPM_Hash_Data( |
|
UINT32 dataSize, // IN: size of data to be extend |
|
BYTE *data // IN: data buffer |
|
) |
|
{ |
|
UINT32 i; |
|
HASH_OBJECT *hashObject; |
|
TPMI_DH_PCR pcrHandle = TPMIsStarted() |
|
? PCR_FIRST + DRTM_PCR : PCR_FIRST + HCRTM_PCR; |
|
|
|
// If there is no DRTM sequence object, then _TPM_Hash_Start |
|
// was not called so this function returns without doing |
|
// anything. |
|
if(g_DRTMHandle == TPM_RH_UNASSIGNED) |
|
return; |
|
|
|
hashObject = (HASH_OBJECT *)ObjectGet(g_DRTMHandle); |
|
pAssert(hashObject->attributes.eventSeq); |
|
|
|
// For each of the implemented hash algorithms, update the digest with the |
|
// data provided. |
|
for(i = 0; i < HASH_COUNT; i++) |
|
{ |
|
// make sure that the PCR is implemented for this algorithm |
|
if(PcrIsAllocated(pcrHandle, |
|
hashObject->state.hashState[i].state.hashAlg)) |
|
// Update sequence object |
|
CryptUpdateDigest(&hashObject->state.hashState[i], dataSize, data); |
|
} |
|
|
|
return; |
|
}
|
|
|