/** @file | |
Public API for the Tcg Core library to perform the lowest level TCG Data encoding. | |
(TCG Storage Architecture Core Specification, Version 2.01, Revision 1.00, | |
https://trustedcomputinggroup.org/tcg-storage-architecture-core-specification/) | |
Check http://trustedcomputinggroup.org for latest specification updates. | |
Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef _TCG_CORE_H_ | |
#define _TCG_CORE_H_ | |
#include <IndustryStandard/TcgStorageCore.h> | |
#define ERROR_CHECK(arg) \ | |
{ \ | |
TCG_RESULT ret = (arg); \ | |
if (ret != TcgResultSuccess) { \ | |
DEBUG ((DEBUG_INFO, "ERROR_CHECK failed at %a:%u\n", __FILE__, DEBUG_LINE_NUMBER)); \ | |
return ret; \ | |
} \ | |
} | |
#define METHOD_STATUS_ERROR_CHECK(arg, failRet) \ | |
if ((arg) != TCG_METHOD_STATUS_CODE_SUCCESS) { \ | |
DEBUG ((DEBUG_INFO, "Method Status error: 0x%02X (%a)\n", arg, TcgMethodStatusString(arg))); \ | |
return (failRet); \ | |
} | |
#define NULL_CHECK(arg) \ | |
do { \ | |
if ((arg) == NULL) { \ | |
DEBUG ((DEBUG_INFO, "NULL_CHECK(%a) failed at %a:%u\n", #arg, __FILE__, DEBUG_LINE_NUMBER)); \ | |
return TcgResultFailureNullPointer; \ | |
} \ | |
} while (0) | |
#pragma pack(1) | |
/** | |
Tcg result codes. | |
The result code indicates if the Tcg function call was successful or not | |
**/ | |
typedef enum { | |
// | |
// This is the return result upon successful completion of a Tcg function call | |
// | |
TcgResultSuccess, | |
// | |
// This is the return "catchall" result for the failure of a Tcg function call | |
// | |
TcgResultFailure, | |
// | |
// This is the return result if a required parameter was Null for a Tcg function call | |
// | |
TcgResultFailureNullPointer, | |
// | |
// This is the return result if a required buffersize was 0 for a Tcg function call | |
// | |
TcgResultFailureZeroSize, | |
// | |
// This is the return result if a Tcg function call was executed out of order. | |
// For instance, starting a Tcg subpacket before starting its Tcg packet. | |
// | |
TcgResultFailureInvalidAction, | |
// | |
// This is the return result if the buffersize provided is not big enough to add a requested Tcg encoded item. | |
// | |
TcgResultFailureBufferTooSmall, | |
// | |
// This is the return result for a Tcg parse function if the end of the parsed Buffer is reached, yet Data is still attempted to be retrieved. | |
// For instance, attempting to retrieve another Tcg token from the Buffer after it has reached the end of the Tcg subpacket payload. | |
// | |
TcgResultFailureEndBuffer, | |
// | |
// This is the return result for a Tcg parse function if the Tcg Token item requested is not the expected type. | |
// For instance, the caller requested to receive an integer and the Tcg token was a byte sequence. | |
// | |
TcgResultFailureInvalidType, | |
} TCG_RESULT; | |
// | |
// Structure that is used to build the Tcg ComPacket. It contains the start Buffer pointer and the current position of the | |
// Tcg ComPacket, current Tcg Packet and Tcg SubPacket. This structure must be initialized | |
// by calling tcgInitTcgCreateStruct before it is used as parameter to any other Tcg function. | |
// This structure should NOT be directly modified by the client of this library. | |
// | |
// NOTE: WE MAY MAKE THIS AN ABSTRACT STRUCTURE WITH A DEFINED SIZE AND KEEP THE VARIABLES | |
// INTERNAL AND ONLY KNOWN TO THE TCG LIBRARY | |
// | |
// tcgInitTcgCreateStruct | |
// | |
typedef struct { | |
// | |
// Buffer allocated and freed by the client of the Tcg library. | |
// This is the Buffer that shall contain the final Tcg encoded compacket. | |
// | |
VOID *Buffer; | |
// | |
// Size of the Buffer provided. | |
// | |
UINT32 BufferSize; | |
// | |
//Pointer to the start of the Tcg ComPacket. It should point to a location within Buffer. | |
// | |
TCG_COM_PACKET *ComPacket; | |
// | |
// Current Tcg Packet that is being created. It should point to a location within Buffer. | |
// | |
TCG_PACKET *CurPacket; | |
// | |
// Current Tcg SubPacket that is being created. It should point to a location within Buffer. | |
// | |
TCG_SUB_PACKET *CurSubPacket; | |
// | |
// Flag used to indicate if the Buffer of the structure should be filled out. | |
// This is intended to be used to support a use-case where the client of library | |
// can perform all the desired tcg calls to determine what the actual Size of the final compacket will be. | |
// Then the client can allocate the required Buffer Size and re-run the tcg calls. | |
// THIS MAY NOT BE IMPLEMENTED... REQUIRES MORE THOUGHT BECAUSE YOU CANNOT SOLVE ISSUE FOR RECEIVE | |
// | |
BOOLEAN DryRun; | |
} TCG_CREATE_STRUCT; | |
// | |
// Structure that is used to parse the Tcg response received. It contains the response Buffer pointer | |
// and the current position of the Tcg ComPacket, current Tcg Packet and Tcg SubPacket being parsed. | |
// This structure must be initialized by calling tcgInitTcgParseStruct before it is used as parameter to any other Tcg parse function. | |
// This structure should NOT be directly modified by the client of this library. | |
// | |
// NOTE: WE MAY MAKE THIS AN ABSTRACT STRUCTURE WITH A DEFINED SIZE AND KEEP THE VARIABLES | |
// INTERNAL AND ONLY KNOWN TO THE TCG LIBRARY | |
// | |
// @sa tcgInitTcgParseStruct | |
// | |
typedef struct { | |
// | |
// Buffer allocated and freed by the client of the Tcg library. | |
// This is the Buffer that contains the Tcg response to decode/parse. | |
// | |
const VOID* Buffer; | |
// | |
//Size of the Buffer provided. | |
// | |
UINT32 BufferSize; | |
// | |
// Pointer to the start of the Tcg ComPacket. It should point to a location within Buffer. | |
// | |
TCG_COM_PACKET *ComPacket; | |
// | |
// Current Tcg Packet that is being created. It should point to a location within Buffer. | |
// | |
TCG_PACKET *CurPacket; | |
// | |
// Current Tcg SubPacket that is being created. It should point to a location within Buffer. | |
// | |
TCG_SUB_PACKET *CurSubPacket; | |
// | |
// Current pointer within the current subpacket payload. | |
// | |
UINT8 *CurPtr; | |
} TCG_PARSE_STRUCT ; | |
// | |
// Structure that is used to represent a Tcg Token that is retrieved by Tcg parse functions. | |
// | |
typedef struct { | |
// | |
// Describes the type of Tcg token the Hdr start points to. | |
// | |
TCG_TOKEN_TYPE Type; | |
// | |
// Pointer to the beginning of the Header of the Tcg token | |
// | |
UINT8 *HdrStart; | |
} TCG_TOKEN ; | |
/** | |
Required to be called before calling any other Tcg functions with the TCG_CREATE_STRUCT. | |
Initializes the packet variables to NULL. Additionally, the buffer will be memset. | |
@param[in/out] CreateStruct Structure to initialize | |
@param[in] Buffer Buffer allocated by client of library. It will contain the Tcg encoded packet. This cannot be null. | |
@param[in] BufferSize Size of buffer provided. It cannot be 0. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgInitTcgCreateStruct( | |
TCG_CREATE_STRUCT *CreateStruct, | |
VOID *Buffer, | |
UINT32 BufferSize | |
); | |
/** | |
Encodes the ComPacket header to the data structure. | |
@param[in/out] CreateStruct Structure to initialize | |
@param[in] ComId ComID of the Tcg ComPacket. | |
@param[in] ComIdExtension ComID Extension of the Tcg ComPacket. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgStartComPacket( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT16 ComId, | |
UINT16 ComIdExtension | |
); | |
/** | |
Starts a new ComPacket in the Data structure. | |
@param[in/out] CreateStruct Structure used to add Tcg Packet | |
@param[in] Tsn Packet Tper session number | |
@param[in] Hsn Packet Host session number | |
@param[in] SeqNumber Packet Sequence Number | |
@param[in] AckType Packet Acknowledge Type | |
@param[in] Ack Packet Acknowledge | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgStartPacket( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT32 Tsn, | |
UINT32 Hsn, | |
UINT32 SeqNumber, | |
UINT16 AckType, | |
UINT32 Ack | |
); | |
/** | |
Starts a new SubPacket in the Data structure. | |
@param[in/out] CreateStruct Structure used to start Tcg SubPacket | |
@param[in] Kind SubPacket kind | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgStartSubPacket( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT16 Kind | |
); | |
/** | |
Ends the current SubPacket in the Data structure. This function will also perform the 4-byte padding | |
required for Subpackets. | |
@param[in/out] CreateStruct Structure used to end the current Tcg SubPacket | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgEndSubPacket( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Ends the current Packet in the Data structure. | |
@param[in/out] CreateStruct Structure used to end the current Tcg Packet | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgEndPacket( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Ends the ComPacket in the Data structure and ret | |
@param[in/out] CreateStruct Structure used to end the Tcg ComPacket | |
@param[in/out] Size Describes the Size of the entire ComPacket (Header and payload). Filled out by function. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgEndComPacket( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT32 *Size | |
); | |
/** | |
Adds a single raw token byte to the Data structure. | |
@param[in/out] CreateStruct Structure used to add the byte | |
@param [in] Byte Byte to add | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddRawByte( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT8 Byte | |
); | |
/** | |
Adds the Data parameter as a byte sequence to the Data structure. | |
@param [in/out] CreateStruct Structure used to add the byte sequence | |
@param[in] Data Byte sequence that will be encoded and copied into Data structure | |
@param[in] DataSize Length of Data provided | |
@param[in] Continued TRUE if byte sequence is continued or | |
FALSE if the Data contains the entire byte sequence to be encoded | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddByteSequence( | |
TCG_CREATE_STRUCT *CreateStruct, | |
const VOID *Data, | |
UINT32 DataSize, | |
BOOLEAN Continued | |
); | |
/** | |
Adds an arbitrary-Length integer to the Data structure. | |
The integer will be encoded using the shortest possible atom. | |
@param[in/out] CreateStruct Structure used to add the integer | |
@param[in] Data Integer in host byte order that will be encoded and copied into Data structure | |
@param[in] DataSize Length in bytes of the Data provided | |
@param[in] SignedInteger TRUE if the integer is signed or FALSE if the integer is unsigned | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddInteger( | |
TCG_CREATE_STRUCT *CreateStruct, | |
const VOID *Data, | |
UINT32 DataSize, | |
BOOLEAN SignedInteger | |
); | |
/** | |
Adds an 8-bit unsigned integer to the Data structure. | |
@param[in/out] CreateStruct Structure used to add the integer | |
@param[in] Value Integer Value to add | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddUINT8( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT8 Value | |
); | |
/** | |
Adds a 16-bit unsigned integer to the Data structure. | |
@param[in/out] CreateStruct Structure used to add the integer | |
@param[in] Value Integer Value to add | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddUINT16 ( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT16 Value | |
); | |
/** | |
Adds a 32-bit unsigned integer to the Data structure. | |
@param[in/out] CreateStruct Structure used to add the integer | |
@param[in] Value Integer Value to add | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddUINT32( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT32 Value | |
); | |
/** | |
Adds a 64-bit unsigned integer to the Data structure. | |
@param[in/out] CreateStruct Structure used to add the integer | |
@param[in] Value Integer Value to add | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddUINT64( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT64 Value | |
); | |
/** | |
Adds a BOOLEAN to the Data structure. | |
@param[in/out] CreateStruct Structure used to add the integer | |
@param[in] Value BOOLEAN Value to add | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddBOOLEAN( | |
TCG_CREATE_STRUCT *CreateStruct, | |
BOOLEAN Value | |
); | |
/** | |
Add tcg uid info. | |
@param [in/out] CreateStruct Structure used to add the integer | |
@param Uid Input uid info. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddTcgUid( | |
TCG_CREATE_STRUCT *CreateStruct, | |
TCG_UID Uid | |
); | |
/** | |
Adds a Start List token to the Data structure. | |
@param[in/out] CreateStruct Structure used to add the token | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddStartList( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds an End List token to the Data structure. | |
@param [in/out] CreateStruct Structure used to add the token | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddEndList( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds a Start Name token to the Data structure. | |
@param[in/out] CreateStruct Structure used to add the token | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddStartName( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds an End Name token to the Data structure. | |
@param [in/out] CreateStruct Structure used to add the token | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddEndName( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds a Call token to the Data structure. | |
@param [in/out] CreateStruct Structure used to add the token | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddCall( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds an End of Data token to the Data structure. | |
@param[in/out] CreateStruct Structure used to add the token | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddEndOfData( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds an End of Session token to the Data structure. | |
@param [in/out] CreateStruct Structure used to add the token | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddEndOfSession( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds a Start Transaction token to the Data structure. | |
@param [in/out] CreateStruct Structure used to add the token | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddStartTransaction( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds an End Transaction token to the Data structure. | |
@param[in/out] CreateStruct Structure used to add the token | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgAddEndTransaction( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Initial the tcg parse structure. | |
@param ParseStruct Input parse structure. | |
@param Buffer Input buffer data. | |
@param BufferSize Input buffer size. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgInitTcgParseStruct( | |
TCG_PARSE_STRUCT *ParseStruct, | |
const VOID *Buffer, | |
UINT32 BufferSize | |
); | |
/** | |
Get next token info. | |
@param ParseStruct Input parse structure info. | |
@param TcgToken return the tcg token info. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextToken( | |
TCG_PARSE_STRUCT *ParseStruct, | |
TCG_TOKEN *TcgToken | |
); | |
/** | |
Get next token Type. | |
@param ParseStruct Input parse structure. | |
@param Type Input the type need to check. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextTokenType( | |
TCG_PARSE_STRUCT *ParseStruct, | |
TCG_TOKEN_TYPE Type | |
); | |
/** | |
Get atom info. | |
@param TcgToken Input token info. | |
@param HeaderLength return the header length. | |
@param DataLength return the data length. | |
@param ByteOrInt return the atom Type. | |
@param SignOrCont return the sign or count info. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetAtomInfo( | |
const TCG_TOKEN *TcgToken, | |
UINT32 *HeaderLength, | |
UINT32 *DataLength, | |
UINT8 *ByteOrInt, | |
UINT8 *SignOrCont | |
); | |
/** | |
Get token byte sequence. | |
@param TcgToken Input token info. | |
@param Length Input the length info. | |
@retval Return the value data. | |
**/ | |
UINT8* | |
EFIAPI | |
TcgGetTokenByteSequence( | |
const TCG_TOKEN *TcgToken, | |
UINT32 *Length | |
); | |
/** | |
Get token specified value. | |
@param TcgToken Input token info. | |
@param Value return the value. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetTokenUINT64( | |
const TCG_TOKEN *TcgToken, | |
UINT64 *Value | |
); | |
/** | |
Get next specify value. | |
@param ParseStruct Input parse structure. | |
@param Value Return value. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextUINT8( | |
TCG_PARSE_STRUCT *ParseStruct, | |
UINT8 *Value | |
); | |
/** | |
Get next specify value. | |
@param ParseStruct Input parse structure. | |
@param Value Return value. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextUINT16( | |
TCG_PARSE_STRUCT *ParseStruct, | |
UINT16 *Value | |
); | |
/** | |
Get next specify value. | |
@param ParseStruct Input parse structure. | |
@param Value Return value. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextUINT32( | |
TCG_PARSE_STRUCT *ParseStruct, | |
UINT32 *Value | |
); | |
/** | |
Get next specify value. | |
@param ParseStruct Input parse structure. | |
@param Value Return value. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextUINT64( | |
TCG_PARSE_STRUCT *ParseStruct, | |
UINT64 *Value | |
); | |
/** | |
Get next specify value. | |
@param ParseStruct Input parse structure. | |
@param Value Return value. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextBOOLEAN( | |
TCG_PARSE_STRUCT *ParseStruct, | |
BOOLEAN *Value | |
); | |
/** | |
Get next tcg uid info. | |
@param ParseStruct Input parse structure. | |
@param Uid Get the uid info. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextTcgUid( | |
TCG_PARSE_STRUCT *ParseStruct, | |
TCG_UID *Uid | |
); | |
/** | |
Get next byte sequence. | |
@param ParseStruct Input parse structure. | |
@param Data return the data. | |
@param Length return the length. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextByteSequence( | |
TCG_PARSE_STRUCT *ParseStruct, | |
const VOID **Data, | |
UINT32 *Length | |
); | |
/** | |
Get next start list. | |
@param ParseStruct Input parse structure. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextStartList( | |
TCG_PARSE_STRUCT *ParseStruct | |
); | |
/** | |
Get next end list. | |
@param ParseStruct Input parse structure. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextEndList( | |
TCG_PARSE_STRUCT *ParseStruct | |
); | |
/** | |
Get next start name. | |
@param ParseStruct Input parse structure. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextStartName( | |
TCG_PARSE_STRUCT *ParseStruct | |
); | |
/** | |
Get next end name. | |
@param ParseStruct Input parse structure. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextEndName( | |
TCG_PARSE_STRUCT *ParseStruct | |
); | |
/** | |
Get next call. | |
@param ParseStruct Input parse structure. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextCall( | |
TCG_PARSE_STRUCT *ParseStruct | |
); | |
/** | |
Get next end data. | |
@param ParseStruct Input parse structure. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextEndOfData( | |
TCG_PARSE_STRUCT *ParseStruct | |
); | |
/** | |
Get next end of session. | |
@param ParseStruct Input parse structure. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextEndOfSession( | |
TCG_PARSE_STRUCT *ParseStruct | |
); | |
/** | |
Get next start transaction. | |
@param ParseStruct Input parse structure. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextStartTransaction( | |
TCG_PARSE_STRUCT *ParseStruct | |
); | |
/** | |
Get next end transaction. | |
@param ParseStruct Input parse structure. | |
@retval return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetNextEndTransaction( | |
TCG_PARSE_STRUCT *ParseStruct | |
); | |
// end of parse functions | |
typedef | |
BOOLEAN | |
(EFIAPI* TCG_LEVEL0_ENUM_CALLBACK) ( | |
const TCG_LEVEL0_DISCOVERY_HEADER *DiscoveryHeader, | |
TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER *Feature, | |
UINTN FeatureSize, // includes header | |
VOID *Context | |
); | |
/** | |
Adds call token and method Header (invoking id, and method id). | |
@param CreateStruct The input create structure. | |
@param InvokingId Invoking id. | |
@param MethodId Method id. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgStartMethodCall( | |
TCG_CREATE_STRUCT *CreateStruct, | |
TCG_UID InvokingId, | |
TCG_UID MethodId | |
); | |
/** | |
Adds START LIST token. | |
@param CreateStruct The input create structure. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgStartParameters( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds END LIST token. | |
@param CreateStruct The input create structure. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgEndParameters( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds END Data token and method list. | |
@param CreateStruct The input create structure. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgEndMethodCall( | |
TCG_CREATE_STRUCT *CreateStruct | |
); | |
/** | |
Adds Start Session call to the data structure. This creates the entire ComPacket structure and | |
returns the size of the entire compacket in the size parameter. | |
@param [in/out] CreateStruct Structure used to add the start session call | |
@param [in/out] Size Describes the size of the entire ComPacket (header and payload). Filled out by function. | |
@param [in] ComId ComID for the ComPacket | |
@param [in] ComIdExtension Extended ComID for the ComPacket | |
@param [in] HostSessionId Host Session ID | |
@param [in] SpId Security Provider to start session with | |
@param [in] Write Write option for start session. TRUE = start session requests write access | |
@param [in] HostChallengeLength Length of the host challenge. Length should be 0 if hostChallenge is NULL | |
@param [in] HostChallenge Host challenge for Host Signing Authority. If NULL, then no Host Challenge shall be sent. | |
@param [in] HostSigningAuthority Host Signing Authority used for start session. If NULL, then no Host Signing Authority shall be sent. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgCreateStartSession( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT32 *Size, | |
UINT16 ComId, | |
UINT16 ComIdExtension, | |
UINT32 HostSessionId, | |
TCG_UID SpId, | |
BOOLEAN Write, | |
UINT32 HostChallengeLength, | |
const VOID *HostChallenge, | |
TCG_UID HostSigningAuthority | |
); | |
/** | |
Creates ComPacket with a Method call that sets the PIN column for the row specified. | |
This assumes a start session has already been opened with the desired SP. | |
@param [in/out] CreateStruct Structure used to add method call. | |
@param [in/out] Size Describes the size of the entire ComPacket (header and payload). Filled out by function. | |
@param [in] ComId ComID for the ComPacket | |
@param [in] ComIdExtension Extended ComID for the ComPacket | |
@param [in] TperSession Tper Session ID for the Packet | |
@param [in] HostSession Host Session ID for the Packet | |
@param [in] SidRow UID of row of current SP to set PIN column | |
@param [in] Password value of PIN to set | |
@param [in] PasswordSize Size of PIN | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgCreateSetCPin( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT32 *Size, | |
UINT16 ComId, | |
UINT16 ComIdExtension, | |
UINT32 TperSession, | |
UINT32 HostSession, | |
TCG_UID SidRow, | |
const VOID *Password, | |
UINT32 PasswordSize | |
); | |
/** | |
Creates ComPacket with a Method call that sets the "Enabled" column for the row specified using the value specified. | |
This assumes a start session has already been opened with the desired SP. | |
@param [in/out] CreateStruct Structure used to add method call | |
@param [in/out] Size Describes the size of the entire ComPacket (header and payload). Filled out by function. | |
@param [in] ComId ComID for the ComPacket | |
@param [in] ComIdExtension Extended ComID for the ComPacket | |
@param [in] TperSession Tper Session ID for the Packet | |
@param [in] HostSession Host Session ID for the Packet | |
@param [in] AuthorityUid Authority UID to modify the "Enabled" column for | |
@param [in] Enabled Value to set the "Enabled" column to | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgSetAuthorityEnabled( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT32 *Size, | |
UINT16 ComId, | |
UINT16 ComIdExtension, | |
UINT32 TperSession, | |
UINT32 HostSession, | |
TCG_UID AuthorityUid, | |
BOOLEAN Enabled | |
); | |
/** | |
Creates ComPacket with EndSession. | |
This assumes a start session has already been opened. | |
@param [in/out] CreateStruct Structure used to add Endsession | |
@param [in/out] Size Describes the size of the entire ComPacket (header and payload). Filled out by function. | |
@param [in] ComId ComID for the ComPacket | |
@param [in] ComIdExtension Extended ComID for the ComPacket | |
@param [in] HostSessionId Host Session ID for the Packet | |
@param [in] TpSessionId Tper Session ID for the Packet | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgCreateEndSession( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT32 *Size, | |
UINT16 ComId, | |
UINT16 ComIdExtension, | |
UINT32 HostSessionId, | |
UINT32 TpSessionId | |
); | |
/** | |
Retrieves human-readable token type name. | |
@param[in] Type Token type to retrieve | |
**/ | |
CHAR8* | |
EFIAPI | |
TcgTokenTypeString( | |
TCG_TOKEN_TYPE Type | |
); | |
/** | |
Returns the method status of the current subpacket. Does not affect the current position | |
in the ComPacket. In other words, it can be called whenever you have a valid SubPacket. | |
@param [in/out] ParseStruct Structure used to parse received TCG response | |
@param [in/out] MethodStatus Method status retrieved of the current SubPacket | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetMethodStatus( | |
const TCG_PARSE_STRUCT *ParseStruct, | |
UINT8 *MethodStatus | |
); | |
/** | |
Returns a human-readable string representing a method status return code. | |
@param[in] MethodStatus Method status to translate to a string | |
@retval return the string info. | |
**/ | |
CHAR8* | |
EFIAPI | |
TcgMethodStatusString( | |
UINT8 MethodStatus | |
); | |
/** | |
Retrieves the comID and Extended comID of the ComPacket in the Tcg response. | |
It is intended to be used to confirm the received Tcg response is intended for user that received it. | |
@param [in] ParseStruct Structure used to parse received TCG response. | |
@param [in/out] ComId comID retrieved from received ComPacket. | |
@param [in/out] ComIdExtension Extended comID retrieved from received ComPacket | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgGetComIds( | |
const TCG_PARSE_STRUCT *ParseStruct, | |
UINT16 *ComId, | |
UINT16 *ComIdExtension | |
); | |
/** | |
Checks if the ComIDs of the response match the expected values. | |
@param[in] ParseStruct Structure used to parse received TCG response | |
@param[in] ExpectedComId Expected comID | |
@param[in] ExpectedComIdExtension Expected extended comID | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgCheckComIds( | |
const TCG_PARSE_STRUCT *ParseStruct, | |
UINT16 ExpectedComId, | |
UINT16 ExpectedComIdExtension | |
); | |
/** | |
Parses the Sync Session response contained in the parseStruct to retrieve Tper session ID. If the Sync Session response | |
parameters do not match the comID, extended ComID and host session ID then a failure is returned. | |
@param[in/out] ParseStruct Structure used to parse received TCG response, contains Sync Session response. | |
@param[in] ComId Expected ComID that is compared to actual ComID of response | |
@param[in] ComIdExtension Expected Extended ComID that is compared to actual Extended ComID of response | |
@param[in] HostSessionId Expected Host Session ID that is compared to actual Host Session ID of response | |
@param[in/out] TperSessionId Tper Session ID retrieved from the Sync Session response. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgParseSyncSession( | |
const TCG_PARSE_STRUCT *ParseStruct, | |
UINT16 ComId, | |
UINT16 ComIdExtension, | |
UINT32 HostSessionId, | |
UINT32 *TperSessionId | |
); | |
/** | |
Create set ace. | |
@param CreateStruct Input create structure. | |
@param Size size info. | |
@param ComId ComId info. | |
@param ComIdExtension ComId extension info. | |
@param TperSession Tper session data. | |
@param HostSession Host session data. | |
@param AceRow Ace row info. | |
@param Authority1 Authority 1 info. | |
@param LogicalOperator Logical operator info. | |
@param Authority2 Authority 2 info. | |
@retval Return the action result. | |
**/ | |
TCG_RESULT | |
EFIAPI | |
TcgCreateSetAce( | |
TCG_CREATE_STRUCT *CreateStruct, | |
UINT32 *Size, | |
UINT16 ComId, | |
UINT16 ComIdExtension, | |
UINT32 TperSession, | |
UINT32 HostSession, | |
TCG_UID AceRow, | |
TCG_UID Authority1, | |
BOOLEAN LogicalOperator, | |
TCG_UID Authority2 | |
); | |
/** | |
Enum level 0 discovery. | |
@param DiscoveryHeader Discovery header. | |
@param Callback Callback function. | |
@param Context The context for the function. | |
@retval return true if the callback return TRUE, else return FALSE. | |
**/ | |
BOOLEAN | |
EFIAPI | |
TcgEnumLevel0Discovery( | |
const TCG_LEVEL0_DISCOVERY_HEADER *DiscoveryHeader, | |
TCG_LEVEL0_ENUM_CALLBACK Callback, | |
VOID *Context | |
); | |
/** | |
Get Feature code from the header. | |
@param DiscoveryHeader The discovery header. | |
@param FeatureCode return the Feature code. | |
@param FeatureSize return the Feature size. | |
@retval return the Feature code data. | |
**/ | |
TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER* | |
EFIAPI | |
TcgGetFeature( | |
const TCG_LEVEL0_DISCOVERY_HEADER *DiscoveryHeader, | |
UINT16 FeatureCode, | |
UINTN *FeatureSize | |
); | |
/** | |
Determines if the protocol provided is part of the provided supported protocol list. | |
@param[in] ProtocolList Supported protocol list to investigate | |
@param[in] Protocol Protocol value to determine if supported | |
@return TRUE = protocol is supported, FALSE = protocol is not supported | |
**/ | |
BOOLEAN | |
EFIAPI | |
TcgIsProtocolSupported( | |
const TCG_SUPPORTED_SECURITY_PROTOCOLS *ProtocolList, | |
UINT16 Protocol | |
); | |
/** | |
Determines if the Locking Feature "Locked" bit is set in the level 0 discovery response. | |
@param[in] Discovery Level 0 discovery response | |
@return TRUE = Locked is set, FALSE = Locked is false | |
**/ | |
BOOLEAN | |
EFIAPI | |
TcgIsLocked( | |
const TCG_LEVEL0_DISCOVERY_HEADER *Discovery | |
); | |
#pragma pack() | |
#endif // _TCG_CORE_H_ |