Provided by: libtss2-doc_4.1.3-1.2ubuntu1_all bug

NAME

       Tss2_Tcti_Device_init - Initialization function for the device TCTI library.

SYNOPSIS

       #include <tcti/tcti_device.h>

       TSS2_RC Tss2_Tcti_Device_Init (TSS2_TCTI_CONTEXT *tctiContext, size_t *size, const char *conf);

       The  Tss2_Tcti_Device_Init()  function initializes a TCTI context used to communicate with the TPM device
       driver.

DESCRIPTION

       Tss2_Tcti_Device_Init() attempts to initialize a caller allocated tctiContext of size size  .  Since  the
       tctiContext  must  be  a  caller allocated buffer, the caller needs to know the size required by the TCTI
       library. The minimum size of this context can be discovered by providing NULL for the tctiContext  and  a
       non-  NULL  size  parameter.  The  initialization function will then populate the size parameter with the
       minimum size of the tctiContext buffer. The caller must then allocate a buffer of this size  (or  larger)
       and  call  Tss2_Tcti_Device_Init  () again providing the newly allocated tctiContext and the size of this
       context in the size parameter. This pattern is common to all TCTI initialization functions. We provide an
       example of this pattern using the Tss2_Tcti_Device_Init() function in the section titled EXAMPLE.

       The conf parameter is a C  string.  If  this  string  is  NULL  then  the  library  will  use  a  default
       configuration  string  for the caller.  Alternatively, the caller may provide a configuration string that
       must contain the path to the device node exposed by the TPM device driver.

       Once initialized, the TCTI context returned exposes the Trusted Computing Group (TCG) defined API for the
       lowest level communication with the TPM.  Using this API the caller can exchange (send  /  receive)  TPM2
       command  and  response  buffers  with the TPM device driver. In nearly all cases however, the caller will
       initialize a context using this function before passing the context to a higher level API like the System
       API (SAPI), and then never touch it again.

       TCG TSS 2.0 TPM Command Transmission Interface (TCTI) API Specification

       For a more thorough discussion of the TCTI API see the “TCG TSS 2.0 TPM  Command  Transmission  Interface
       (TCTI)         API         Specification”         as         published         by         the        TCG:
       https://trustedcomputinggroup.org/wp-content/uploads/TSS_TCTI_Version-1.0_Revision-05_Review_END030918.pdf

RETURN VALUE

       A successful call to Tss2_Tcti_Device_Init() will return  TSS2_RC_SUCCESS.   An  unsuccessful  call  will
       produce a response code described in section ERRORS.

ERRORS

       TSS2_TCTI_RC_BAD_VALUE     is     returned    if    any    parameters    contain    unexpected    values.
       TSS2_TCTI_RC_BAD_REFERENCE  is  returned  if  any  parameters  are  NULL  when  they   should   not   be.
       TSS2_TCTI_RC_BAD_CONTEXT is returned if the size of the provided tctiContext is insufficient.

EXAMPLE

       TCTI initialization fragment:

       #include <inttypes.h>
       #include <stdlib.h>
       #include <stdio.h>
       #include <tcti/tcti_device.h>

       TSS2_RC rc;
       TSS2_TCTI_CONTEXT *tcti_context;
       size_t size;
       char *conf = "/dev/tpm0",

       rc = Tss2_Tcti_Device_Init (NULL, &size, NULL);
       if (rc != TSS2_RC_SUCCESS) {
           fprintf (stderr, "Failed to get allocation size for device TCTI "
                    " context: 0x%" PRIx32 "0, rc);
           exit (EXIT_FAILURE);
       }
       tcti_context = calloc (1, size);
       if (tcti_context == NULL) {
           fprintf (stderr, "Allocation for TCTI context failed: %s0,
                    strerror (errno));
           exit (EXIT_FAILURE);
       }
       rc = Tss2_Tcti_Device_Init (&tcti_context, &size, &conf);
       if (rc != TSS2_RC_SUCCESS) {
           fprintf (stderr, "Failed to initialize device TCTI context: "
                    "0x%" PRIx32 "0, rc);
           free (tcti_context);
           exit (EXIT_FAILURE);
       }
       exit (EXIT_SUCCESS);

AUTHOR

       TPM2 Software Project <https://github.com/tpm2-software/tpm2-tss>

SEE ALSO

       Tss2_Tcti_Device_Init(3), Tss2_Tcti_Socket_Init(3), Tss2_TctiLdr_Initialize(3), Tss2_TctiLdr_Finalize(3),
       tcti-device(7), tcti-socket(7), tcti-tabrmd(7), tpm2-abrmd(8)

COLOPHON

       This page is part of release 4.1.3 of Open Source implementation of the TCG TPM2 Software Stack (TSS2). A
       description  of the project, information about reporting bugs, and the latest version of this page can be
       found at https://github.com/tpm2-software/tpm2-tss/.

TPM2 Software Stack                                MARCH 2018                           Tss2_Tcti_Device_Init(3)