Fapi_GetRandom(3)

πŸ’… Fapi_GetRandom(3) ✨

okay so this is a page from the Library Functions Manual, bestie β€” yes, a real manpage, and yes it's about grabbing random bytes from your TPM. it's giving "crypto snack time". let's go πŸŽ€


🌸 NAME 🌸

Fapi_GetRandom β€” literally just Fapi_GetRandom. that's the whole name. iconic minimalism, no notes πŸ’…


✨ SYNOPSIS ✨

πŸ¦‹ Functions

TSS2_RC Fapi_GetRandom (FAPI_CONTEXT *context, size_t numBytes, uint8_t
    **data)
TSS2_RC Fapi_GetRandom_Async (FAPI_CONTEXT *context, size_t numBytes)
TSS2_RC Fapi_GetRandom_Finish (FAPI_CONTEXT *context, uint8_t **data)

🌈 Detailed Description 🌈

so these are the FAPI functions that invoke GetRandom β€” and you can do it either as a one-call (easy mode, one and done, slay) or in an asynchronous manner (the "start it, come back later" main-character route). pick your vibe 🫢


πŸ‘‘ Function Documentation πŸ‘‘

πŸ’– TSS2_RC Fapi_GetRandom (FAPI_CONTEXT * context, size_t numBytes, uint8_t ** data)

the one-call function for Fapi_GetRandom β€” bestie, this is the whole thing in one go ✨

it creates an array with a specified number of bytes. and here's the tea: it may execute the underlying TPM command multiple times if the requested number of bytes is too big. like, the TPM's not gonna do it all in one breath, so it just... keeps asking. no cap πŸ”₯

πŸ“ Parameters

  • context β€” the FAPI_CONTEXT
  • numBytes β€” the number of bytes requested from the TPM
  • data β€” the array of random bytes returned from the TPM

πŸ’€ Return values

  • TSS2_RC_SUCCESS if the function call was a success.
  • TSS2_FAPI_RC_BAD_REFERENCE if context or data is NULL.
  • TSS2_FAPI_RC_BAD_CONTEXT if context corruption is detected.
  • TSS2_FAPI_RC_BAD_VALUE if numBytes is 0.
  • TSS2_FAPI_RC_BAD_SEQUENCE if the context has an asynchronous operation already pending.
  • TSS2_FAPI_RC_IO_ERROR if the data cannot be saved.
  • TSS2_FAPI_RC_MEMORY if the FAPI cannot allocate enough memory for internal operations or return parameters.
  • TSS2_FAPI_RC_NO_TPM if FAPI was initialized in no-TPM-mode via its config file.
  • TSS2_FAPI_RC_PATH_NOT_FOUND if a FAPI object path was not found during authorization.
  • TSS2_FAPI_RC_KEY_NOT_FOUND if a key was not found.
  • TSS2_FAPI_RC_TRY_AGAIN if an I/O operation is not finished yet and this function needs to be called again.
  • TSS2_FAPI_RC_GENERAL_FAILURE if an internal error occurred.
  • TSS2_FAPI_RC_AUTHORIZATION_UNKNOWN if a required authorization callback is not set.
  • TSS2_FAPI_RC_AUTHORIZATION_FAILED if the authorization attempt fails.
  • TSS2_FAPI_RC_POLICY_UNKNOWN if policy search for a certain policy digest was not successful.
  • TSS2_ESYS_RC_* possible error codes of ESAPI.
  • TSS2_FAPI_RC_NOT_PROVISIONED FAPI was not provisioned.
  • TSS2_FAPI_RC_BAD_PATH if the path is used in inappropriate context or contains illegal characters.

🧚 TSS2_RC Fapi_GetRandom_Async (FAPI_CONTEXT * context, size_t numBytes)

the asynchronous function for Fapi_GetRandom. same energy, but you're not waiting around for it 🌸

it creates an array with a specified number of bytes, and yeah β€” it may execute the underlying TPM command multiple times if the requested number of bytes is too big. same deal as before, fr fr.

πŸ’‘ call Fapi_GetRandom_Finish to finish the execution of this command. don't leave it hanging, bestie 😭

πŸ“ Parameters

  • context β€” the FAPI_CONTEXT
  • numBytes β€” the number of bytes requested from the TPM

πŸ’€ Return values

  • TSS2_RC_SUCCESS if the function call was a success.
  • TSS2_FAPI_RC_BAD_REFERENCE if context is NULL.
  • TSS2_FAPI_RC_BAD_CONTEXT if context corruption is detected.
  • TSS2_FAPI_RC_BAD_VALUE if numBytes is 0.
  • TSS2_FAPI_RC_BAD_SEQUENCE if the context has an asynchronous operation already pending.
  • TSS2_FAPI_RC_IO_ERROR if the data cannot be saved.
  • TSS2_FAPI_RC_MEMORY if the FAPI cannot allocate enough memory for internal operations or return parameters.
  • TSS2_FAPI_RC_NO_TPM if FAPI was initialized in no-TPM-mode via its config file.
  • TSS2_FAPI_RC_PATH_NOT_FOUND if a FAPI object path was not found during authorization.
  • TSS2_FAPI_RC_KEY_NOT_FOUND if a key was not found.
  • TSS2_FAPI_RC_NOT_PROVISIONED FAPI was not provisioned.
  • TSS2_FAPI_RC_BAD_PATH if the path is used in inappropriate context or contains illegal characters.

πŸŽ€ TSS2_RC Fapi_GetRandom_Finish (FAPI_CONTEXT * context, uint8_t ** data)

the asynchronous finish function for Fapi_GetRandom β€” the part where you come back and collect your little gift 🎁

🫢 this function should be called after a previous Fapi_GetRandom_Async. like, that's the whole point, okay?

πŸ“ Parameters

  • context β€” the FAPI_CONTEXT
  • data β€” the array of random bytes returned from the TPM

πŸ’€ Return values

  • TSS2_RC_SUCCESS if the function call was a success.
  • TSS2_FAPI_RC_BAD_REFERENCE if context or data is NULL.
  • TSS2_FAPI_RC_BAD_CONTEXT if context corruption is detected.
  • TSS2_FAPI_RC_BAD_SEQUENCE if the context has an asynchronous operation already pending.
  • TSS2_FAPI_RC_IO_ERROR if the data cannot be saved.
  • TSS2_FAPI_RC_MEMORY if the FAPI cannot allocate enough memory for internal operations or return parameters.
  • TSS2_FAPI_RC_TRY_AGAIN if the asynchronous operation is not yet complete. Call this function again later.
  • TSS2_FAPI_RC_GENERAL_FAILURE if an internal error occurred.
  • TSS2_FAPI_RC_BAD_VALUE if an invalid value was passed into the function.
  • TSS2_FAPI_RC_PATH_NOT_FOUND if a FAPI object path was not found during authorization.
  • TSS2_FAPI_RC_KEY_NOT_FOUND if a key was not found.
  • TSS2_FAPI_RC_AUTHORIZATION_UNKNOWN if a required authorization callback is not set.
  • TSS2_FAPI_RC_AUTHORIZATION_FAILED if the authorization attempt fails.
  • TSS2_FAPI_RC_POLICY_UNKNOWN if policy search for a certain policy digest was not successful.
  • TSS2_ESYS_RC_* possible error codes of ESAPI.
  • TSS2_FAPI_RC_NOT_PROVISIONED FAPI was not provisioned.
  • TSS2_FAPI_RC_BAD_PATH if the path is used in inappropriate context or contains illegal characters.

πŸ¦‹ Author πŸ¦‹

Generated automatically by Doxygen for tpm2-tss from the source code. not me being auto-generated by Doxygen 😭 she's literally built different πŸ’…


and that's the page, bestie 🫢 mwah πŸ’–

this masterpiece of automated documentation is served up courtesy of tpm2-tss β€” Version 4.1.5 β€” dated on the Fapi_GetRandom(3) page, periodt βœ¨πŸ’œ

πŸ“¦ where this page comes from