1*758e9fbaSOystein Eftevaag /* SPDX-License-Identifier: BSD-2-Clause */ 2*758e9fbaSOystein Eftevaag /******************************************************************************* 3*758e9fbaSOystein Eftevaag * Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG 4*758e9fbaSOystein Eftevaag * All rights reserved. 5*758e9fbaSOystein Eftevaag ******************************************************************************/ 6*758e9fbaSOystein Eftevaag 7*758e9fbaSOystein Eftevaag #ifdef HAVE_CONFIG_H 8*758e9fbaSOystein Eftevaag #include <config.h> 9*758e9fbaSOystein Eftevaag #endif 10*758e9fbaSOystein Eftevaag 11*758e9fbaSOystein Eftevaag #include "tss2_fapi.h" 12*758e9fbaSOystein Eftevaag #include "tss2_esys.h" 13*758e9fbaSOystein Eftevaag #include "tss2_tcti.h" 14*758e9fbaSOystein Eftevaag 15*758e9fbaSOystein Eftevaag #include "fapi_int.h" 16*758e9fbaSOystein Eftevaag #define LOGMODULE fapi 17*758e9fbaSOystein Eftevaag #include "util/log.h" 18*758e9fbaSOystein Eftevaag #include "util/aux_util.h" 19*758e9fbaSOystein Eftevaag 20*758e9fbaSOystein Eftevaag /** One-Call function for Fapi_GetTcti 21*758e9fbaSOystein Eftevaag * 22*758e9fbaSOystein Eftevaag * Fapi_GetTcti returns the TSS2_TCTI_CONTEXT currently used by the provided FAPI_CONTEXT. 23*758e9fbaSOystein Eftevaag * The purpose is to enable advanced access to the TPM that is currently being talked to. 24*758e9fbaSOystein Eftevaag * It is especially useful in combination with Fapi_GetTpmBlobs(). 25*758e9fbaSOystein Eftevaag * 26*758e9fbaSOystein Eftevaag * Note: The application must ensure that this TSS2_TCTI_CONTEXT is not being used in parallel to 27*758e9fbaSOystein Eftevaag * the processing of a FAPI command. 28*758e9fbaSOystein Eftevaag * 29*758e9fbaSOystein Eftevaag * @param[in,out] context The FAPI_CONTEXT 30*758e9fbaSOystein Eftevaag * @param[out] tcti The TSS2_TCTI_CONTEXT used to talk to the current TPM. 31*758e9fbaSOystein Eftevaag * 32*758e9fbaSOystein Eftevaag * @retval TSS2_RC_SUCCESS: if the function call was a success. 33*758e9fbaSOystein Eftevaag * @retval TSS2_FAPI_RC_BAD_REFERENCE: if context, tcti is NULL. 34*758e9fbaSOystein Eftevaag * @retval TSS2_FAPI_RC_BAD_CONTEXT: if context corruption is detected. 35*758e9fbaSOystein Eftevaag * @retval TSS2_FAPI_RC_NO_TPM: if FAPI was started in non-TPM mode. 36*758e9fbaSOystein Eftevaag */ 37*758e9fbaSOystein Eftevaag TSS2_RC Fapi_GetTcti(FAPI_CONTEXT * context,TSS2_TCTI_CONTEXT ** tcti)38*758e9fbaSOystein EftevaagFapi_GetTcti( 39*758e9fbaSOystein Eftevaag FAPI_CONTEXT *context, 40*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT **tcti) 41*758e9fbaSOystein Eftevaag { 42*758e9fbaSOystein Eftevaag LOG_TRACE("called for context:%p", context); 43*758e9fbaSOystein Eftevaag 44*758e9fbaSOystein Eftevaag TSS2_RC r; 45*758e9fbaSOystein Eftevaag 46*758e9fbaSOystein Eftevaag /* Check for NULL parameters */ 47*758e9fbaSOystein Eftevaag check_not_null(context); 48*758e9fbaSOystein Eftevaag check_not_null(tcti); 49*758e9fbaSOystein Eftevaag 50*758e9fbaSOystein Eftevaag /* Check if FAPI was started in a non-TPM mode. */ 51*758e9fbaSOystein Eftevaag if (!context->esys) 52*758e9fbaSOystein Eftevaag return_error(TSS2_FAPI_RC_NO_TPM, "Fapi is running in non-TPM mode"); 53*758e9fbaSOystein Eftevaag 54*758e9fbaSOystein Eftevaag /* Retrieve the TCTI from ESYS. */ 55*758e9fbaSOystein Eftevaag r = Esys_GetTcti(context->esys, tcti); 56*758e9fbaSOystein Eftevaag return_if_error(r, "Esys_GetTcti"); 57*758e9fbaSOystein Eftevaag 58*758e9fbaSOystein Eftevaag LOG_DEBUG("finished"); 59*758e9fbaSOystein Eftevaag return r; 60*758e9fbaSOystein Eftevaag } 61