123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- .\" Process this file with
- .\" groff -man -Tascii foo.1
- .\"
- .TH Tss2_Tcti_Cmd_Init 3 "MAY 2020" "TPM2 Software Stack"
- .SH NAME
- Tss2_Tcti_Cmd_Init \- Initialization function for the Cmd TCTI library.
- .SH SYNOPSIS
- .B #include <tss2/tss2_tcti_cmd.h>
- .sp
- .BI "TSS2_RC Tss2_Tcti_Cmd_Init (TSS2_TCTI_CONTEXT " "*tctiContext" ", size_t " "*contextSize" ", const char " "*conf" ");"
- .sp
- The
- .BR Tss2_Tcti_Cmd_Init ()
- function initializes a TCTI context used to communicate with a subprocess specified in the conf string.
- TCTI send and receives utilize the sub-process's stdio and stdout respectively.
- .SH DESCRIPTION
- .BR Tss2_Tcti_Cmd_Init ()
- attempts to initialize a caller allocated
- .I tcti_context
- of size
- .I size
- using caller provided configuration string
- .I conf
- \&. Since the
- .I tcti_context
- must be a caller allocated buffer, the caller needs to know the buffer size
- required by the TCTI library. The minimum size of this context can be
- discovered by providing
- .BR NULL
- for the
- .I tcti_context
- 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 tcti_context
- buffer. The caller must then allocate a buffer of this size (or larger) and
- call
- .B Tss2_Tcti_Cmd_Init ()
- again providing the newly allocated
- .I tcti_context
- 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_Cmd_Init ()
- function in the section titled
- .B EXAMPLE.
- .sp
- The
- .I conf
- parameter is a C string used to configure the TCTI context. This
- configuration string is the command used for popen(3). The conf string
- cannot be NULL for this TCTI.
- .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 a service that can excahnge TPM2 command and response
- buffers. 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), Enhanced System API (ESAPI) or Feature API (FAPI)
- and then never touch it again.
- .sp
- For a more thorough discussion of the TCTI API see the \*(lqTSS System Level
- API and TPM Command Transmission Interface Specification\*(rq as published by
- the TCG:
- \%https://trustedcomputinggroup.org/tss-system-level-api-tpm-command-transmission-interface-specification/
- .SH RETURN VALUE
- A successful call to
- .BR Tss2_Tcti_Cmd_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 both the
- .I tcti_context
- and the
- .I size
- parameters are NULL, or if the
- .I config
- parameter is NULL.
- .SH EXAMPLE
- .sp
- TCTI initialization fragment:
- .sp
- .nf
- #include <inttypes.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <tcti/tcti_mssim.h>
- TSS2_RC rc;
- TSS2_TCTI_CONTEXT *tcti_context;
- size_t size;
- const char *conf = "XXX TODO SAMPLE"
- rc = Tss2_Tcti_Cmd_Init (NULL, &size, NULL);
- if (rc != TSS2_RC_SUCCESS) {
- fprintf (stderr, "Failed to get allocation size for mssim 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_Cmd_Init (&tcti_context, &size, conf);
- if (rc != TSS2_RC_SUCCESS) {
- fprintf (stderr, "Failed to initialize mssim TCTI context: "
- "0x%" PRIx32 "\n", rc);
- free (tcti_context);
- exit (EXIT_FAILURE);
- }
- .fi
|