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β TheESYS_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 theesysContextor required input pointers or required output handle references areNULL.TSS2_ESYS_RC_BAD_CONTEXTβ ifesysContextcorruption 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β TheESYS_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 theesysContextor required input pointers or required output handle references areNULL.TSS2_ESYS_RC_BAD_CONTEXTβ ifesysContextcorruption 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β TheESYS_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 theesysContextor required input pointers or required output handle references areNULL.TSS2_ESYS_RC_BAD_CONTEXTβ ifesysContextcorruption 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_GetRandomlistsTSS2_RC_SUCCESSfor its success return, butEsys_GetRandom_AsynclistsESYS_RC_SUCCESS. that's literally what the page says, so i'm not touching it. also onlyEsys_GetRandomandEsys_GetRandom_FinishmentionTSS2_ESYS_RC_BAD_SEQUENCE, and only_FinishhasTSS2_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
- fedora 44: tpm2-tss-devel 4.1.5-1.fc44 Β· BSD-2-Clause
- fedora 44: tpm2-tss-devel 4.1.5-1.fc44 Β· BSD-2-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms