=head1 NAME TPMLIB_Process - process a TPM command =head1 LIBRARY TPM library (libtpms, -ltpms) =head1 SYNOPSIS B<#include > B<#include > B **IB<, uint32_t> *IB<, uint32_t> *IB<, unsigned char> *IB<, uint32_t> IB<);> =head1 DESCRIPTION The B function is used to send TPM commands to the TPM and receive the results. The I parameter provides the buffer for the TPM command and the I the number of valid TPM command bytes within that buffer. The I is a pointer to a buffer where the TPM will return its result. If no buffer is given (I is NULL), the TPM will allocate a buffer. The parameter I returns the number of valid TPM response bytes in the buffer. The number of valid bytes in the response is guaranteed to not exceed the maximum I/O buffer size. Use the I API and parameter I for getting the maximum size. The user must indicate the size of a provided buffer with the I parameter. If the buffer is not big enough for the response, the TPM will free the provided buffer and allocate one of sufficient size and adapt I. The returned buffer is only subject to size restrictions as explained for I. =head1 ERRORS =over 4 =item B The function completed successfully. =item B General failure. =back For a complete list of TPM error codes please consult the include file B =head1 EXAMPLE #include #include #include #include static unsigned char TPM_Startup_ST_CLEAR[] = { 0x00, 0xC1, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x99, 0x00, TPM_ST_CLEAR }; int main(void) { TPM_RESULT res; unsigned char *respbuffer = NULL; uint32_t resp_size = 0; uint32_t respbufsize = 0; unsigned char *command; uint32_t command_size; [...] if (TPMLIB_MainInit() != TPM_SUCCESS) { fprintf(stderr, "Could not start the TPM.\n"); return 1; } [...] /* build TPM command */ command = TPM_Startup_ST_CLEAR; command_size = sizeof(TPM_Startup_ST_CLEAR); [...] res = TPMLIB_Process(&respbuffer, &resp_size, &respbufsize, command, command_size); [...] TPMLIB_Terminate(); return 0; } =head1 SEE ALSO B(3), B(3), B(3) B(3), B(3), B(3) =cut