TPM_RC TPM2_HMAC()

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