Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TPMLIB_Process(3)					     TPMLIB_Process(3)

NAME
       TPMLIB_Process	  - process a TPM command

LIBRARY
       TPM library (libtpms, -ltpms)

SYNOPSIS
       #include	<libtpms/tpm_library.h>

       #include	<libtpms/tpm_error.h>

       TPM_RESULT TPMLIB_Process(unsigned char **respbuffer,
				 uint32_t *resp_size,
				 uint32_t *respbufsize,
				 unsigned char *command,
				 uint32_t command_size);

DESCRIPTION
       The TPMLIB_Process() function is	used to	send TPM commands to the TPM
       and receive the results.

       The command parameter provides the buffer for the TPM command and the
       command_size the	number of valid	TPM command bytes within that buffer.

       The respbuffer is a pointer to a	buffer where the TPM will return its
       result. If no buffer is given (respbuffer is NULL), the TPM will
       allocate	a buffer. The parameter	resp_size 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 TPMLIB_GetTPMProperty() API and parameter TPMPROP_TPM_BUFFER_MAX
       for getting the maximum size.  The user must indicate the size of a
       provided	buffer with the	respbufsize 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 respbufsize. The returned
       buffer is only subject to size restrictions as explained	for
       TPM_Malloc().

ERRORS
       TPM_SUCCESS
	   The function	completed successfully.

       TPM_FAIL
	   General failure.

       For  a complete list of TPM error codes please consult the include file
       libtpms/tpm_error.h

EXAMPLE
	#include <stdio.h>

	#include <libtpms/tpm_types.h>
	#include <libtpms/tpm_library.h>
	#include <libtpms/tpm_error.h>

	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;
	}

SEE ALSO
       TPMLIB_MainInit(3),  TPMLIB_Terminate(3),   TPMLIB_RegisterCallbacks(3)
       TPMLIB_GetTPMProperty(3), TPMLIB_Malloc(3), TPMLIB_Realloc(3)

libtpms				  2023-02-28		     TPMLIB_Process(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=TPMLIB_Process&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help