Esys_GetRandom(3)

✨ Esys_GetRandom(3) ✨

okay bestie so real quick β€” this is a page from the Library Functions Manual for tpm2-tss, and it's literally the ESAPI function for the TPM2_GetRandom command πŸ’– random bytes from your TPM, no cap. come sit with me, i'll walk you through it 🫢


🌸 NAME 🌸

Esys_GetRandom β€” The ESAPI function for the TPM2_GetRandom command.


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions

TSS2_RC Esys_GetRandom_Async (ESYS_CONTEXT *esysContext, ESYS_TR
    shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 bytesRequested)
TSS2_RC Esys_GetRandom (ESYS_CONTEXT *esysContext, ESYS_TR shandle1,
    ESYS_TR shandle2, ESYS_TR shandle3, UINT16 bytesRequested,
    TPM2B_DIGEST **randomBytes)
TSS2_RC Esys_GetRandom_Finish (ESYS_CONTEXT *esysContext, TPM2B_DIGEST
    **randomBytes)

🧚 Detailed Description 🧚

so this here is the ESAPI function to invoke the TPM2_GetRandom command β€” and you've got two vibes to pick from: either as a one-call (blocking, one and done, main character energy πŸ‘‘) or in an asynchronous manner (send it off and come back for the results later, lowkey efficient ✨).


πŸ’… Function Documentation πŸ’…

TSS2_RC Esys_GetRandom (ESYS_CONTEXT * esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 bytesRequested, TPM2B_DIGEST ** randomBytes)

One-Call function for TPM2_GetRandom πŸ”₯

This function invokes the TPM2_GetRandom command in a one-call variant. Translation? The function will block until the TPM response is available β€” it literally sits there waiting, so dramatic 😭. All input parameters are const. The memory for non-simple output parameters is allocated by the function implementation (not you, bestie β€” it's handled 🫢).

Parameters

  • esysContext β€” The ESYS_CONTEXT.
  • shandle1 β€” First session handle.
  • shandle2 β€” Second session handle.
  • shandle3 β€” Third session handle.
  • bytesRequested β€” Number of octets to return.
  • randomBytes β€” The random octets. (callee-allocated)

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_NO_DECRYPT_PARAM β€” if one of the sessions has the 'decrypt' attribute set and the command does not support encryption of the first command parameter.
  • TSS2_RCs produced by lower layers of the software stack may be returned to the caller unaltered unless handled internally. (iykyk πŸŒ€)

TSS2_RC Esys_GetRandom_Async (ESYS_CONTEXT * esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 bytesRequested)

Asynchronous function for TPM2_GetRandom πŸ¦‹

This function invokes the TPM2_GetRandom command in a asynchronous variant. It's giving "sent, not read" β€” the function will return as soon as the command has been sent downwards the stack to the TPM ✨. All input parameters are const. In order to retrieve the TPM's response, call Esys_GetRandom_Finish (that's the part where you actually get your goodies back 🎁).

Parameters

  • esysContext β€” The ESYS_CONTEXT.
  • shandle1 β€” First session handle.
  • shandle2 β€” Second session handle.
  • shandle3 β€” Third session handle.
  • bytesRequested β€” Number of octets to return.

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_NO_DECRYPT_PARAM β€” if one of the sessions has the 'decrypt' attribute set and the command does not support encryption of the first command parameter.

TSS2_RC Esys_GetRandom_Finish (ESYS_CONTEXT * esysContext, TPM2B_DIGEST ** randomBytes)

Asynchronous finish function for TPM2_GetRandom 🌈

This function returns the results of a TPM2_GetRandom command invoked via Esys_GetRandom_Finish (yes, the page literally says that β€” quoting it exactly, bestie, don't @ me πŸ™ˆ). All non-simple output parameters are allocated by the function's implementation. And good news: NULL can be passed for every output parameter if the value is not required β€” flex that freedom πŸ’….

Parameters

  • esysContext β€” The ESYS_CONTEXT.
  • randomBytes β€” The random octets. (callee-allocated)

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.
bestie note πŸŽ€ β€” Esys_GetRandom lists TSS2_RC_SUCCESS for its success return, but Esys_GetRandom_Async lists ESYS_RC_SUCCESS. that's literally what the page says, so i'm not touching it. also only Esys_GetRandom and Esys_GetRandom_Finish mention TSS2_ESYS_RC_BAD_SEQUENCE, and only _Finish has TSS2_ESYS_RC_TRY_AGAIN. no cap, read the lists πŸ’œ

πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for tpm2-tss from the source code. (the robots wrote it, we just gave it ✨flavor✨)


and that's the whole page, bestie πŸ“ go get those random octets.

tpm2-tss β€” Version 4.1.5 β€” Esys_GetRandom(3) πŸ’œπŸ¦‹πŸŽ€ mwah, see u in the next manpage πŸ’…

πŸ“¦ where this page comes from