123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- .\" Process this file with
- .\" groff -man -Tascii foo.1
- .\"
- .TH Tss2_Tcti_Device_Init 3 "MARCH 2018" "TPM2 Software Stack"
- .SH NAME
- Tss2_Tcti_Device_init \- Initialization function for the device TCTI library.
- .SH SYNOPSIS
- .B #include <tcti/tcti_device.h>
- .sp
- .sp
- .BI "TSS2_RC Tss2_Tcti_Device_Init (TSS2_TCTI_CONTEXT " "*tctiContext" ", size_t " "*size" ", const char " "*conf" ");"
- .sp
- The
- .BR Tss2_Tcti_Device_Init ()
- function initializes a TCTI context used to communicate with the TPM device
- driver.
- .SH DESCRIPTION
- .BR Tss2_Tcti_Device_Init ()
- attempts to initialize a caller allocated
- .I tctiContext
- of size
- .I size
- \&. Since the
- .I 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
- .BR NULL
- for the
- .I tctiContext
- and a non-
- .BR NULL
- .I size
- parameter. The initialization function will then populate the
- .I size
- parameter with the minimum size of the
- .I tctiContext
- buffer. The caller must then allocate a buffer of this size (or larger) and
- call
- .B Tss2_Tcti_Device_Init ()
- again providing the newly allocated
- .I tctiContext
- and the size of this context in the
- .I size
- parameter. This pattern is common to all TCTI initialization functions. We
- provide an example of this pattern using the
- .BR Tss2_Tcti_Device_Init ()
- function in the section titled
- .B EXAMPLE.
- .sp
- The
- .I conf
- parameter is a C string. If this string is
- .BR 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.
- .sp
- 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.
- .sp
- TCG TSS 2.0 TPM Command
- Transmission Interface (TCTI) API
- Specification
- For a more thorough discussion of the TCTI API see the \*(lqTCG TSS 2.0 TPM Command
- Transmission Interface (TCTI) API Specification\*(rq as published by
- the TCG:
- \%https://trustedcomputinggroup.org/wp-content/uploads/TSS_TCTI_Version-1.0_Revision-05_Review_END030918.pdf
- .SH RETURN VALUE
- A successful call to
- .BR Tss2_Tcti_Device_Init ()
- will return
- .B TSS2_RC_SUCCESS.
- An unsuccessful call will produce a response code described in section
- .B ERRORS.
- .SH ERRORS
- .B TSS2_TCTI_RC_BAD_VALUE
- is returned if any parameters contain unexpected values.
- .B TSS2_TCTI_RC_BAD_REFERENCE
- is returned if any parameters are NULL when they should not be.
- .B TSS2_TCTI_RC_BAD_CONTEXT
- is returned if the size of the provided
- .I tctiContext
- is insufficient.
- .SH EXAMPLE
- TCTI initialization fragment:
- .sp
- .nf
- #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 "\n", rc);
- exit (EXIT_FAILURE);
- }
- tcti_context = calloc (1, size);
- if (tcti_context == NULL) {
- fprintf (stderr, "Allocation for TCTI context failed: %s\n",
- 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 "\n", rc);
- free (tcti_context);
- exit (EXIT_FAILURE);
- }
- exit (EXIT_SUCCESS);
- .fi
|