Esys_HMAC_Start(3)

πŸ’– Esys_HMAC_Start(3) πŸ’–

okay bestie, so this is a page from the Library Functions Manual, and it's literally all about Esys_HMAC_Start β€” the ESAPI function for the TPM2_HMAC_Start command. TPM crypto content, no cap. Let's get into it 🫢


✨ NAME ✨

Esys_HMAC_Start β€” the ESAPI function for the TPM2_HMAC_Start command. That's the whole vibe. It starts an HMAC sequence on your TPM, and this is the pretty ESAPI wrapper that does it for you πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions

so there's a whole little trio of functions here, and here's exactly what they look like:

TSS2_RC Esys_HMAC_Start_Async (ESYS_CONTEXT *esysContext, ESYS_TR
    handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const
    TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg)
TSS2_RC Esys_HMAC_Start (ESYS_CONTEXT *esysContext, ESYS_TR handle,
    ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const
    TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg, ESYS_TR *sequenceHandle)
TSS2_RC Esys_HMAC_Start_Finish (ESYS_CONTEXT *esysContext, ESYS_TR
    *sequenceHandle)

🌸 Detailed Description 🌸

This is an ESAPI function that lets you invoke the TPM2_HMAC_Start command β€” and the iconique part is you can do it either as a one-call situation or in an asynchronous manner. Choose your fighter ✨


πŸ‘‘ Function Documentation πŸ‘‘

πŸ’œ TSS2_RC Esys_HMAC_Start (ESYS_CONTEXT * esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH * auth, TPMI_ALG_HASH hashAlg, ESYS_TR * sequenceHandle)

One-Call function for TPM2_HMAC_Start β€” the "just do it and let me know when it's done" version, main character energy fr.

This function invokes the TPM2_HMAC_Start command in a one-call variant. Translation: the function will block until the TPM response is available β€” it literally waits, no cutting corners. All input parameters are const. And the memory for non-simple output parameters is allocated by the function implementation, so you don't have to do the malloc dance yourself 😌

Parameters

  • esysContext β€” The ESYS_CONTEXT.
  • handle β€” Handle of an HMAC key.
  • shandle1 β€” Session handle for authorization of handle
  • shandle2 β€” Second session handle.
  • shandle3 β€” Third session handle.
  • auth β€” Authorization value for subsequent use of the sequence.
  • hashAlg β€” The hash algorithm to use for the HMAC.
  • sequenceHandle β€” ESYS_TR handle of ESYS resource for TPMI_DH_OBJECT.

Return values

  • TSS2_RC_SUCCESS if the function call was a success. slay ✨
  • TSS2_ESYS_RC_BAD_REFERENCE if the esysContext or required input pointers or required output handle references are NULL.
  • TSS2_ESYS_RC_BAD_CONTEXT if esysContext corruption is detected.
  • TSS2_ESYS_RC_MEMORY if the ESAPI cannot allocate enough memory for internal operations or return parameters.
  • TSS2_ESYS_RC_BAD_SEQUENCE if the context has an asynchronous operation already pending.
  • TSS2_ESYS_RC_INSUFFICIENT_RESPONSE if the TPM's response does not at least contain the tag, response length, and response code.
  • TSS2_ESYS_RC_MALFORMED_RESPONSE if the TPM's response is corrupted.
  • TSS2_ESYS_RC_RSP_AUTH_FAILED if the response HMAC from the TPM did not verify.
  • TSS2_ESYS_RC_MULTIPLE_DECRYPT_SESSIONS if more than one session has the 'decrypt' attribute bit set.
  • TSS2_ESYS_RC_MULTIPLE_ENCRYPT_SESSIONS if more than one session has the 'encrypt' attribute bit set.
  • TSS2_ESYS_RC_BAD_TR if any of the ESYS_TR objects are unknown to the ESYS_CONTEXT or are of the wrong type or if required ESYS_TR objects are ESYS_TR_NONE.
  • TSS2_ESYS_RC_NO_ENCRYPT_PARAM if one of the sessions has the 'encrypt' attribute set and the command does not support encryption of the first response parameter.
  • TSS2_RCs produced by lower layers of the software stack may be returned to the caller unaltered unless handled internally.

🧚 TSS2_RC Esys_HMAC_Start_Async (ESYS_CONTEXT * esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH * auth, TPMI_ALG_HASH hashAlg)

Asynchronous function for TPM2_HMAC_Start β€” the "I'm sending it, don't wait up" variant πŸ’Œ

This function invokes the TPM2_HMAC_Start command in a asynchronous variant. That means the function will return as soon as the command has been sent downwards the stack to the TPM β€” like dropping a text and immediately locking your phone. All input parameters are const. In order to retrieve the TPM's response, call Esys_HMAC_Start_Finish. iykyk 🐚

Parameters

  • esysContext β€” The ESYS_CONTEXT.
  • handle β€” Handle of an HMAC key.
  • shandle1 β€” Session handle for authorization of handle
  • shandle2 β€” Second session handle.
  • shandle3 β€” Third session handle.
  • auth β€” Authorization value for subsequent use of the sequence.
  • hashAlg β€” The hash algorithm to use for the HMAC.

Return values

  • ESYS_RC_SUCCESS if the function call was a success.
  • TSS2_ESYS_RC_BAD_REFERENCE if the esysContext or required input pointers or required output handle references are NULL.
  • TSS2_ESYS_RC_BAD_CONTEXT if esysContext corruption is detected.
  • TSS2_ESYS_RC_MEMORY if the ESAPI cannot allocate enough memory for internal operations or return parameters.
  • TSS2_RCs produced by lower layers of the software stack may be returned to the caller unaltered unless handled internally.
  • TSS2_ESYS_RC_MULTIPLE_DECRYPT_SESSIONS if more than one session has the 'decrypt' attribute bit set.
  • TSS2_ESYS_RC_MULTIPLE_ENCRYPT_SESSIONS if more than one session has the 'encrypt' attribute bit set.
  • TSS2_ESYS_RC_BAD_TR if any of the ESYS_TR objects are unknown to the ESYS_CONTEXT or are of the wrong type or if required ESYS_TR objects are ESYS_TR_NONE.
  • TSS2_ESYS_RC_NO_ENCRYPT_PARAM if one of the sessions has the 'encrypt' attribute set and the command does not support encryption of the first response parameter.

πŸŽ€ TSS2_RC Esys_HMAC_Start_Finish (ESYS_CONTEXT * esysContext, ESYS_TR * sequenceHandle)

Asynchronous finish function for TPM2_HMAC_Start β€” the "okay I'm back, here's what happened" moment 🎬

This function returns the results of a TPM2_HMAC_Start command invoked via Esys_HMAC_Start_Finish. All non-simple output parameters are allocated by the function's implementation. And bestie, NULL can be passed for every output parameter if the value is not required β€” so you can lowkey ghost any output you don't care about πŸ™ˆ

Parameters

  • esysContext β€” The ESYS_CONTEXT.
  • sequenceHandle β€” ESYS_TR handle of ESYS resource for TPMI_DH_OBJECT.

Return values

  • TSS2_RC_SUCCESS on success
  • ESYS_RC_SUCCESS if the function call was a success.
  • TSS2_ESYS_RC_BAD_REFERENCE if the esysContext or required input pointers or required output handle references are NULL.
  • TSS2_ESYS_RC_BAD_CONTEXT if esysContext corruption is detected.
  • TSS2_ESYS_RC_MEMORY if the ESAPI cannot allocate enough memory for internal operations or return parameters.
  • TSS2_ESYS_RC_BAD_SEQUENCE if the context has an asynchronous operation already pending.
  • TSS2_ESYS_RC_TRY_AGAIN if the timeout counter expires before the TPM response is received.
  • TSS2_ESYS_RC_INSUFFICIENT_RESPONSE if the TPM's response does not at least contain the tag, response length, and response code.
  • TSS2_ESYS_RC_RSP_AUTH_FAILED if the response HMAC from the TPM did not verify.
  • TSS2_ESYS_RC_MALFORMED_RESPONSE if the TPM's response is corrupted.
  • TSS2_RCs produced by lower layers of the software stack may be returned to the caller unaltered unless handled internally.

πŸ’« Author πŸ’«

Generated automatically by Doxygen for tpm2-tss from the source code. not a human, just a bot doing its thing πŸ€–πŸ’–


and that's the whole page, bestie!! sign-off time: this gorgeousness came from tpm2-tss, Version 4.1.5, and it's dated the Esys_HMAC_Start(3) way πŸ¦‹β­πŸ’œ go forth and HMAC responsibly πŸŽ€

πŸ“¦ where this page comes from