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 com-
     mand_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 re-
     sult. 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 guaran-
     teed to not exceed the maximum I/O buffer size. Use the TPMLIB_GetTPMProp-
     erty() API and parameter TPMPROP_TPM_BUFFER_MAX for getting the maximum
     size.  The user must indicate the size of a provided buffer with the resp-
     bufsize 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) TPM-
     LIB_GetTPMProperty(3), TPMLIB_Malloc(3), TPMLIB_Realloc(3)

libtpms 			   2026-01-02		       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+15.1.quarterly>

home | help