TPM_RC TSS_HMAC()

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;
}