diff options
Diffstat (limited to 'src/usr/secureboot/trusted/trustedbootCmds.H')
-rw-r--r-- | src/usr/secureboot/trusted/trustedbootCmds.H | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/src/usr/secureboot/trusted/trustedbootCmds.H b/src/usr/secureboot/trusted/trustedbootCmds.H new file mode 100644 index 000000000..0965b1401 --- /dev/null +++ b/src/usr/secureboot/trusted/trustedbootCmds.H @@ -0,0 +1,120 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/secureboot/trusted/trustedbootCmds.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/** + * @file trustedbootCmds.H + * + * @brief Trustedboot TPM command interfaces + */ + +///////////////////////////////////////////////////////////////// +// NOTE: This file is exportable as TSS-Lite for skiboot/PHYP // +///////////////////////////////////////////////////////////////// + +#ifndef __TRUSTEDBOOTCMDS_H +#define __TRUSTEDBOOTCMDS_H +// ----------------------------------------------- +// Includes +// ----------------------------------------------- +#ifdef __HOSTBOOT_MODULE +#include <secureboot/trustedbootif.H> +#endif +#include "trustedboot.H" +#include "trustedTypes.H" + +#ifdef __cplusplus +namespace TRUSTEDBOOT +{ +#endif + +enum +{ + BUFSIZE = 256, + MAX_TRANSMIT_SIZE = 1024, ///< Maximum send/receive transmit size +}; + +/** + * @brief Transmit the command to the TPM and perform marshaling + * @param[in/out] io_target Current TPM target structure + * @param[in/out] io_buffer Input the command buffer to send, response on exit + * @param[in] i_bufsize Size of io_buffer in bytes + * @return errlHndl_t NULL if successful, otherwise a pointer to the + * error log. + */ +errlHndl_t tpmTransmitCommand(TpmTarget* io_target, + uint8_t* io_buffer, + size_t i_bufsize ); + +/** + * @brief Take structure pointed to by cmd and format for input into TPM + * @param[in] i_cmd Prefilled command input structure + * @param[out] o_outbuf Buffer to place marshalled data + * @param[in] i_bufsize Size of o_outbuf in bytes + * @param[out] o_cmdSize Byte size of io_outbuf data after marshal + * @return errlHndl_t NULL if successful, otherwise a pointer to the + * error log. + */ +errlHndl_t tpmMarshalCommandData(TPM2_BaseIn* i_cmd, + uint8_t* o_outbuf, + size_t i_bufsize, + size_t* o_cmdSize); + +/** + * @brief Take structure pointed to by cmd and format for input into TPM + * @param[in] i_commandCode Command code that was executed on the TPM + * @param[in] i_respBuf Buffer with response data from TPM + * @param[in] i_respBufSize Byte size of respBuf buffer from TPM + * @param[out] o_outBuf Buffer to place formatted response data + * @param[in] i_outBufSize Byte size of o_outBuf buffer + * @return errlHndl_t NULL if successful, otherwise a pointer to the + * error log. + */ +errlHndl_t tpmUnmarshalResponseData(uint32_t i_commandCode, + uint8_t* i_respBuf, + size_t i_respBufSize, + TPM2_BaseOut* o_outBuf, + size_t i_outBufSize); +/** + * @brief Send the TPM_STARTUP command to the targetted TPM + * @param[in/out] io_target Current TPM target structure + * @return errlHndl_t NULL if successful, otherwise a pointer to the + * error log. +*/ +errlHndl_t tpmCmdStartup(TpmTarget* io_target); + +/** + * @brief Send the TPM_GETCAPABILITY command to read FW version from TPM + * @param[in/out] io_target Current TPM target structure + * @return errlHndl_t NULL if successful, otherwise a pointer to the + * error log. +*/ + +errlHndl_t tpmCmdGetCapFwVersion(TpmTarget* io_target); + + +#ifdef __cplusplus +} // end TRUSTEDBOOT namespace +#endif + +#endif |