/* SPDX-License-Identifier: BSD-2-Clause */ /******************************************************************************* * Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG * All rights reserved. ******************************************************************************/ #ifdef HAVE_CONFIG_H #include #endif #include "tss2_fapi.h" #include "tss2_esys.h" #include "tss2_tcti.h" #include "fapi_int.h" #define LOGMODULE fapi #include "util/log.h" #include "util/aux_util.h" /** One-Call function for Fapi_GetTcti * * Fapi_GetTcti returns the TSS2_TCTI_CONTEXT currently used by the provided FAPI_CONTEXT. * The purpose is to enable advanced access to the TPM that is currently being talked to. * It is especially useful in combination with Fapi_GetTpmBlobs(). * * Note: The application must ensure that this TSS2_TCTI_CONTEXT is not being used in parallel to * the processing of a FAPI command. * * @param[in,out] context The FAPI_CONTEXT * @param[out] tcti The TSS2_TCTI_CONTEXT used to talk to the current TPM. * * @retval TSS2_RC_SUCCESS: if the function call was a success. * @retval TSS2_FAPI_RC_BAD_REFERENCE: if context, tcti is NULL. * @retval TSS2_FAPI_RC_BAD_CONTEXT: if context corruption is detected. * @retval TSS2_FAPI_RC_NO_TPM: if FAPI was started in non-TPM mode. */ TSS2_RC Fapi_GetTcti( FAPI_CONTEXT *context, TSS2_TCTI_CONTEXT **tcti) { LOG_TRACE("called for context:%p", context); TSS2_RC r; /* Check for NULL parameters */ check_not_null(context); check_not_null(tcti); /* Check if FAPI was started in a non-TPM mode. */ if (!context->esys) return_error(TSS2_FAPI_RC_NO_TPM, "Fapi is running in non-TPM mode"); /* Retrieve the TCTI from ESYS. */ r = Esys_GetTcti(context->esys, tcti); return_if_error(r, "Esys_GetTcti"); LOG_DEBUG("finished"); return r; }