in src/tpm_codec.c [391:418]
TPM_RC TPM2_HMAC(
TSS_DEVICE *tpm, // IN/OUT
TSS_SESSION *session, // IN/OUT
TPMI_DH_OBJECT handle, // IN
TPM2B_MAX_BUFFER *buffer, // IN
TPMI_ALG_HASH hashAlg, // IN
TPM2B_DIGEST *outHMAC // OUT
)
{
TSS_CMD_CONTEXT CmdCtx;
TPM_RC result;
if (tpm == NULL || session == NULL || buffer == NULL || outHMAC == NULL)
{
LogError("Invalid parameter specified tpm: %p, session: %p, buffer: %p, outHMAC: %p", tpm, session, buffer, outHMAC);
result = TPM_RC_FAILURE;
}
else
{
result = TPM_RC_SUCCESS;
BEGIN_CMD();
TSS_MARSHAL_OPT2B(TPM2B_MAX_BUFFER, buffer);
TSS_MARSHAL(TPMI_ALG_HASH, &hashAlg);
DISPATCH_CMD(HMAC, &handle, 1, &session, 1);
TSS_UNMARSHAL(TPM2B_DIGEST, outHMAC);
END_CMD();
}
return result;
}