in src/tpm_codec.c [420:448]
TPM_RC TSS_HMAC(
TSS_DEVICE *tpm, // IN/OUT
TSS_SESSION *session, // IN/OUT
TPMI_DH_OBJECT handle, // IN
BYTE *data, // IN
UINT32 dataSize, // IN
TPM2B_DIGEST *outHMAC // OUT
)
{
TPM_RC result;
if (dataSize > MAX_DIGEST_BUFFER)
{
LogError("Invalid data size specified %u", dataSize);
result = TPM_RC_SIZE;
}
else if (tpm == NULL || session == NULL || data == NULL || outHMAC == NULL)
{
LogError("Invalid parameter specified tpm: %p, session: %p, data: %p, outHMAC: %p", tpm, session, data, outHMAC);
result = TPM_RC_FAILURE;
}
else
{
TPM2B_MAX_BUFFER dataBuf;
dataBuf.b.size = (UINT16)dataSize;
MemoryCopy(dataBuf.t.buffer, data, dataSize);
result = TPM2_HMAC(tpm, session, handle, &dataBuf, TPM_ALG_NULL, outHMAC);
}
return result;
}