2 Public API for the Tcg Core library to perform the lowest level TCG Data encoding.
4 (TCG Storage Architecture Core Specification, Version 2.01, Revision 1.00,
5 https://trustedcomputinggroup.org/tcg-storage-architecture-core-specification/)
7 Check http://trustedcomputinggroup.org for latest specification updates.
9 Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
10 SPDX-License-Identifier: BSD-2-Clause-Patent
17 #include <IndustryStandard/TcgStorageCore.h>
19 #define ERROR_CHECK(arg) \
21 TCG_RESULT ret = (arg); \
22 if (ret != TcgResultSuccess) { \
23 DEBUG ((DEBUG_INFO, "ERROR_CHECK failed at %a:%u\n", __FILE__, __LINE__)); \
28 #define METHOD_STATUS_ERROR_CHECK(arg, failRet) \
29 if ((arg) != TCG_METHOD_STATUS_CODE_SUCCESS) { \
30 DEBUG ((DEBUG_INFO, "Method Status error: 0x%02X (%a)\n", arg, TcgMethodStatusString(arg))); \
34 #define NULL_CHECK(arg) \
36 if ((arg) == NULL) { \
37 DEBUG ((DEBUG_INFO, "NULL_CHECK(%a) failed at %a:%u\n", #arg, __FILE__, __LINE__)); \
38 return TcgResultFailureNullPointer; \
47 The result code indicates if the Tcg function call was successful or not
51 // This is the return result upon successful completion of a Tcg function call
56 // This is the return "catchall" result for the failure of a Tcg function call
61 // This is the return result if a required parameter was Null for a Tcg function call
63 TcgResultFailureNullPointer
,
66 // This is the return result if a required buffersize was 0 for a Tcg function call
68 TcgResultFailureZeroSize
,
71 // This is the return result if a Tcg function call was executed out of order.
72 // For instance, starting a Tcg subpacket before starting its Tcg packet.
74 TcgResultFailureInvalidAction
,
77 // This is the return result if the buffersize provided is not big enough to add a requested Tcg encoded item.
79 TcgResultFailureBufferTooSmall
,
82 // 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.
83 // For instance, attempting to retrieve another Tcg token from the Buffer after it has reached the end of the Tcg subpacket payload.
85 TcgResultFailureEndBuffer
,
88 // This is the return result for a Tcg parse function if the Tcg Token item requested is not the expected type.
89 // For instance, the caller requested to receive an integer and the Tcg token was a byte sequence.
91 TcgResultFailureInvalidType
,
95 // Structure that is used to build the Tcg ComPacket. It contains the start Buffer pointer and the current position of the
96 // Tcg ComPacket, current Tcg Packet and Tcg SubPacket. This structure must be initialized
97 // by calling tcgInitTcgCreateStruct before it is used as parameter to any other Tcg function.
98 // This structure should NOT be directly modified by the client of this library.
100 // NOTE: WE MAY MAKE THIS AN ABSTRACT STRUCTURE WITH A DEFINED SIZE AND KEEP THE VARIABLES
101 // INTERNAL AND ONLY KNOWN TO THE TCG LIBRARY
103 // tcgInitTcgCreateStruct
107 // Buffer allocated and freed by the client of the Tcg library.
108 // This is the Buffer that shall contain the final Tcg encoded compacket.
113 // Size of the Buffer provided.
118 //Pointer to the start of the Tcg ComPacket. It should point to a location within Buffer.
120 TCG_COM_PACKET
*ComPacket
;
123 // Current Tcg Packet that is being created. It should point to a location within Buffer.
125 TCG_PACKET
*CurPacket
;
128 // Current Tcg SubPacket that is being created. It should point to a location within Buffer.
130 TCG_SUB_PACKET
*CurSubPacket
;
133 // Flag used to indicate if the Buffer of the structure should be filled out.
134 // This is intended to be used to support a use-case where the client of library
135 // can perform all the desired tcg calls to determine what the actual Size of the final compacket will be.
136 // Then the client can allocate the required Buffer Size and re-run the tcg calls.
137 // THIS MAY NOT BE IMPLEMENTED... REQUIRES MORE THOUGHT BECAUSE YOU CANNOT SOLVE ISSUE FOR RECEIVE
143 // Structure that is used to parse the Tcg response received. It contains the response Buffer pointer
144 // and the current position of the Tcg ComPacket, current Tcg Packet and Tcg SubPacket being parsed.
145 // This structure must be initialized by calling tcgInitTcgParseStruct before it is used as parameter to any other Tcg parse function.
146 // This structure should NOT be directly modified by the client of this library.
148 // NOTE: WE MAY MAKE THIS AN ABSTRACT STRUCTURE WITH A DEFINED SIZE AND KEEP THE VARIABLES
149 // INTERNAL AND ONLY KNOWN TO THE TCG LIBRARY
151 // @sa tcgInitTcgParseStruct
155 // Buffer allocated and freed by the client of the Tcg library.
156 // This is the Buffer that contains the Tcg response to decode/parse.
161 //Size of the Buffer provided.
166 // Pointer to the start of the Tcg ComPacket. It should point to a location within Buffer.
168 TCG_COM_PACKET
*ComPacket
;
171 // Current Tcg Packet that is being created. It should point to a location within Buffer.
173 TCG_PACKET
*CurPacket
;
176 // Current Tcg SubPacket that is being created. It should point to a location within Buffer.
178 TCG_SUB_PACKET
*CurSubPacket
;
181 // Current pointer within the current subpacket payload.
188 // Structure that is used to represent a Tcg Token that is retrieved by Tcg parse functions.
192 // Describes the type of Tcg token the Hdr start points to.
197 // Pointer to the beginning of the Header of the Tcg token
204 Required to be called before calling any other Tcg functions with the TCG_CREATE_STRUCT.
205 Initializes the packet variables to NULL. Additionally, the buffer will be memset.
207 @param[in/out] CreateStruct Structure to initialize
208 @param[in] Buffer Buffer allocated by client of library. It will contain the Tcg encoded packet. This cannot be null.
209 @param[in] BufferSize Size of buffer provided. It cannot be 0.
214 TcgInitTcgCreateStruct(
215 TCG_CREATE_STRUCT
*CreateStruct
,
223 Encodes the ComPacket header to the data structure.
225 @param[in/out] CreateStruct Structure to initialize
226 @param[in] ComId ComID of the Tcg ComPacket.
227 @param[in] ComIdExtension ComID Extension of the Tcg ComPacket.
233 TCG_CREATE_STRUCT
*CreateStruct
,
235 UINT16 ComIdExtension
241 Starts a new ComPacket in the Data structure.
243 @param[in/out] CreateStruct Structure used to add Tcg Packet
244 @param[in] Tsn Packet Tper session number
245 @param[in] Hsn Packet Host session number
246 @param[in] SeqNumber Packet Sequence Number
247 @param[in] AckType Packet Acknowledge Type
248 @param[in] Ack Packet Acknowledge
254 TCG_CREATE_STRUCT
*CreateStruct
,
264 Starts a new SubPacket in the Data structure.
266 @param[in/out] CreateStruct Structure used to start Tcg SubPacket
267 @param[in] Kind SubPacket kind
273 TCG_CREATE_STRUCT
*CreateStruct
,
280 Ends the current SubPacket in the Data structure. This function will also perform the 4-byte padding
281 required for Subpackets.
283 @param[in/out] CreateStruct Structure used to end the current Tcg SubPacket
289 TCG_CREATE_STRUCT
*CreateStruct
295 Ends the current Packet in the Data structure.
297 @param[in/out] CreateStruct Structure used to end the current Tcg Packet
303 TCG_CREATE_STRUCT
*CreateStruct
309 Ends the ComPacket in the Data structure and ret
311 @param[in/out] CreateStruct Structure used to end the Tcg ComPacket
312 @param[in/out] Size Describes the Size of the entire ComPacket (Header and payload). Filled out by function.
318 TCG_CREATE_STRUCT
*CreateStruct
,
323 Adds a single raw token byte to the Data structure.
325 @param[in/out] CreateStruct Structure used to add the byte
326 @param [in] Byte Byte to add
332 TCG_CREATE_STRUCT
*CreateStruct
,
339 Adds the Data parameter as a byte sequence to the Data structure.
341 @param [in/out] CreateStruct Structure used to add the byte sequence
342 @param[in] Data Byte sequence that will be encoded and copied into Data structure
343 @param[in] DataSize Length of Data provided
344 @param[in] Continued TRUE if byte sequence is continued or
345 FALSE if the Data contains the entire byte sequence to be encoded
351 TCG_CREATE_STRUCT
*CreateStruct
,
360 Adds an arbitrary-Length integer to the Data structure.
362 The integer will be encoded using the shortest possible atom.
364 @param[in/out] CreateStruct Structure used to add the integer
365 @param[in] Data Integer in host byte order that will be encoded and copied into Data structure
366 @param[in] DataSize Length in bytes of the Data provided
367 @param[in] SignedInteger TRUE if the integer is signed or FALSE if the integer is unsigned
373 TCG_CREATE_STRUCT
*CreateStruct
,
376 BOOLEAN SignedInteger
381 Adds an 8-bit unsigned integer to the Data structure.
383 @param[in/out] CreateStruct Structure used to add the integer
384 @param[in] Value Integer Value to add
390 TCG_CREATE_STRUCT
*CreateStruct
,
396 Adds a 16-bit unsigned integer to the Data structure.
398 @param[in/out] CreateStruct Structure used to add the integer
399 @param[in] Value Integer Value to add
405 TCG_CREATE_STRUCT
*CreateStruct
,
411 Adds a 32-bit unsigned integer to the Data structure.
413 @param[in/out] CreateStruct Structure used to add the integer
414 @param[in] Value Integer Value to add
420 TCG_CREATE_STRUCT
*CreateStruct
,
427 Adds a 64-bit unsigned integer to the Data structure.
429 @param[in/out] CreateStruct Structure used to add the integer
430 @param[in] Value Integer Value to add
436 TCG_CREATE_STRUCT
*CreateStruct
,
441 Adds a BOOLEAN to the Data structure.
443 @param[in/out] CreateStruct Structure used to add the integer
444 @param[in] Value BOOLEAN Value to add
450 TCG_CREATE_STRUCT
*CreateStruct
,
457 @param [in/out] CreateStruct Structure used to add the integer
458 @param Uid Input uid info.
460 @retval return the action result.
466 TCG_CREATE_STRUCT
*CreateStruct
,
471 Adds a Start List token to the Data structure.
473 @param[in/out] CreateStruct Structure used to add the token
479 TCG_CREATE_STRUCT
*CreateStruct
485 Adds an End List token to the Data structure.
487 @param [in/out] CreateStruct Structure used to add the token
493 TCG_CREATE_STRUCT
*CreateStruct
498 Adds a Start Name token to the Data structure.
500 @param[in/out] CreateStruct Structure used to add the token
506 TCG_CREATE_STRUCT
*CreateStruct
512 Adds an End Name token to the Data structure.
514 @param [in/out] CreateStruct Structure used to add the token
520 TCG_CREATE_STRUCT
*CreateStruct
525 Adds a Call token to the Data structure.
527 @param [in/out] CreateStruct Structure used to add the token
533 TCG_CREATE_STRUCT
*CreateStruct
539 Adds an End of Data token to the Data structure.
541 @param[in/out] CreateStruct Structure used to add the token
547 TCG_CREATE_STRUCT
*CreateStruct
553 Adds an End of Session token to the Data structure.
555 @param [in/out] CreateStruct Structure used to add the token
561 TCG_CREATE_STRUCT
*CreateStruct
566 Adds a Start Transaction token to the Data structure.
568 @param [in/out] CreateStruct Structure used to add the token
573 TcgAddStartTransaction(
574 TCG_CREATE_STRUCT
*CreateStruct
579 Adds an End Transaction token to the Data structure.
581 @param[in/out] CreateStruct Structure used to add the token
586 TcgAddEndTransaction(
587 TCG_CREATE_STRUCT
*CreateStruct
591 Initial the tcg parse stucture.
593 @param ParseStruct Input parse structure.
594 @param Buffer Input buffer data.
595 @param BufferSize Input buffer size.
597 @retval return the action result.
602 TcgInitTcgParseStruct(
603 TCG_PARSE_STRUCT
*ParseStruct
,
611 @param ParseStruct Input parse structure info.
612 @param TcgToken return the tcg token info.
614 @retval return the action result.
620 TCG_PARSE_STRUCT
*ParseStruct
,
627 @param ParseStruct Input parse structure.
628 @param Type Input the type need to check.
630 @retval return the action result.
636 TCG_PARSE_STRUCT
*ParseStruct
,
643 @param TcgToken Input token info.
644 @param HeaderLength return the header length.
645 @param DataLength return the data length.
646 @param ByteOrInt return the atom Type.
647 @param SignOrCont return the sign or count info.
649 @retval return the action result.
655 const TCG_TOKEN
*TcgToken
,
656 UINT32
*HeaderLength
,
663 Get token byte sequence.
665 @param TcgToken Input token info.
666 @param Length Input the length info.
668 @retval Return the value data.
673 TcgGetTokenByteSequence(
674 const TCG_TOKEN
*TcgToken
,
679 Get token specified value.
681 @param TcgToken Input token info.
682 @param Value return the value.
684 @retval return the action result.
690 const TCG_TOKEN
*TcgToken
,
696 Get next specify value.
698 @param ParseStruct Input parse structure.
699 @param Value Return vlaue.
701 @retval return the action result.
707 TCG_PARSE_STRUCT
*ParseStruct
,
713 Get next specify value.
715 @param ParseStruct Input parse structure.
716 @param Value Return vlaue.
718 @retval return the action result.
724 TCG_PARSE_STRUCT
*ParseStruct
,
729 Get next specify value.
731 @param ParseStruct Input parse structure.
732 @param Value Return vlaue.
734 @retval return the action result.
740 TCG_PARSE_STRUCT
*ParseStruct
,
745 Get next specify value.
747 @param ParseStruct Input parse structure.
748 @param Value Return vlaue.
750 @retval return the action result.
756 TCG_PARSE_STRUCT
*ParseStruct
,
761 Get next specify value.
763 @param ParseStruct Input parse structure.
764 @param Value Return vlaue.
766 @retval return the action result.
772 TCG_PARSE_STRUCT
*ParseStruct
,
777 Get next tcg uid info.
779 @param ParseStruct Input parse structure.
780 @param Uid Get the uid info.
782 @retval return the action result.
788 TCG_PARSE_STRUCT
*ParseStruct
,
793 Get next byte sequence.
795 @param ParseStruct Input parse structure.
796 @param Data return the data.
797 @param Length return the length.
799 @retval return the action result.
804 TcgGetNextByteSequence(
805 TCG_PARSE_STRUCT
*ParseStruct
,
813 @param ParseStruct Input parse structure.
815 @retval return the action result.
821 TCG_PARSE_STRUCT
*ParseStruct
827 @param ParseStruct Input parse structure.
829 @retval return the action result.
835 TCG_PARSE_STRUCT
*ParseStruct
841 @param ParseStruct Input parse structure.
843 @retval return the action result.
849 TCG_PARSE_STRUCT
*ParseStruct
855 @param ParseStruct Input parse structure.
857 @retval return the action result.
863 TCG_PARSE_STRUCT
*ParseStruct
869 @param ParseStruct Input parse structure.
871 @retval return the action result.
877 TCG_PARSE_STRUCT
*ParseStruct
883 @param ParseStruct Input parse structure.
885 @retval return the action result.
891 TCG_PARSE_STRUCT
*ParseStruct
895 Get next end of session.
897 @param ParseStruct Input parse structure.
899 @retval return the action result.
904 TcgGetNextEndOfSession(
905 TCG_PARSE_STRUCT
*ParseStruct
909 Get next start transaction.
911 @param ParseStruct Input parse structure.
913 @retval return the action result.
918 TcgGetNextStartTransaction(
919 TCG_PARSE_STRUCT
*ParseStruct
923 Get next end transaction.
925 @param ParseStruct Input parse structure.
927 @retval return the action result.
932 TcgGetNextEndTransaction(
933 TCG_PARSE_STRUCT
*ParseStruct
936 // end of parse functions
941 (EFIAPI
* TCG_LEVEL0_ENUM_CALLBACK
) (
942 const TCG_LEVEL0_DISCOVERY_HEADER
*DiscoveryHeader
,
943 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER
*Feature
,
944 UINTN FeatureSize
, // includes header
949 Adds call token and method Header (invoking id, and method id).
951 @param CreateStruct The input create structure.
952 @param InvokingId Invoking id.
953 @param MethodId Method id.
959 TCG_CREATE_STRUCT
*CreateStruct
,
965 Adds START LIST token.
967 @param CreateStruct The input create structure.
973 TCG_CREATE_STRUCT
*CreateStruct
979 @param CreateStruct The input create structure.
985 TCG_CREATE_STRUCT
*CreateStruct
989 Adds END Data token and method list.
991 @param CreateStruct The input create structure.
997 TCG_CREATE_STRUCT
*CreateStruct
1002 Adds Start Session call to the data structure. This creates the entire ComPacket structure and
1003 returns the size of the entire compacket in the size parameter.
1005 @param [in/out] CreateStruct Structure used to add the start session call
1006 @param [in/out] Size Describes the size of the entire ComPacket (header and payload). Filled out by function.
1007 @param [in] ComId ComID for the ComPacket
1008 @param [in] ComIdExtension Extended ComID for the ComPacket
1009 @param [in] HostSessionId Host Session ID
1010 @param [in] SpId Security Provider to start session with
1011 @param [in] Write Write option for start session. TRUE = start session requests write access
1012 @param [in] HostChallengeLength Length of the host challenge. Length should be 0 if hostChallenge is NULL
1013 @param [in] HostChallenge Host challenge for Host Signing Authority. If NULL, then no Host Challenge shall be sent.
1014 @param [in] HostSigningAuthority Host Signing Authority used for start session. If NULL, then no Host Signing Authority shall be sent.
1019 TcgCreateStartSession(
1020 TCG_CREATE_STRUCT
*CreateStruct
,
1023 UINT16 ComIdExtension
,
1024 UINT32 HostSessionId
,
1027 UINT32 HostChallengeLength
,
1028 const VOID
*HostChallenge
,
1029 TCG_UID HostSigningAuthority
1033 Creates ComPacket with a Method call that sets the PIN column for the row specified.
1034 This assumes a start session has already been opened with the desired SP.
1036 @param [in/out] CreateStruct Structure used to add method call.
1037 @param [in/out] Size Describes the size of the entire ComPacket (header and payload). Filled out by function.
1038 @param [in] ComId ComID for the ComPacket
1039 @param [in] ComIdExtension Extended ComID for the ComPacket
1040 @param [in] TperSession Tper Session ID for the Packet
1041 @param [in] HostSession Host Session ID for the Packet
1042 @param [in] SidRow UID of row of current SP to set PIN column
1043 @param [in] Password value of PIN to set
1044 @param [in] PasswordSize Size of PIN
1050 TCG_CREATE_STRUCT
*CreateStruct
,
1053 UINT16 ComIdExtension
,
1057 const VOID
*Password
,
1062 Creates ComPacket with a Method call that sets the "Enabled" column for the row specified using the value specified.
1063 This assumes a start session has already been opened with the desired SP.
1065 @param [in/out] CreateStruct Structure used to add method call
1066 @param [in/out] Size Describes the size of the entire ComPacket (header and payload). Filled out by function.
1067 @param [in] ComId ComID for the ComPacket
1068 @param [in] ComIdExtension Extended ComID for the ComPacket
1069 @param [in] TperSession Tper Session ID for the Packet
1070 @param [in] HostSession Host Session ID for the Packet
1071 @param [in] AuthorityUid Authority UID to modify the "Enabled" column for
1072 @param [in] Enabled Value to set the "Enabled" column to
1077 TcgSetAuthorityEnabled(
1078 TCG_CREATE_STRUCT
*CreateStruct
,
1081 UINT16 ComIdExtension
,
1084 TCG_UID AuthorityUid
,
1090 Creates ComPacket with EndSession.
1091 This assumes a start session has already been opened.
1093 @param [in/out] CreateStruct Structure used to add Endsession
1094 @param [in/out] Size Describes the size of the entire ComPacket (header and payload). Filled out by function.
1095 @param [in] ComId ComID for the ComPacket
1096 @param [in] ComIdExtension Extended ComID for the ComPacket
1097 @param [in] HostSessionId Host Session ID for the Packet
1098 @param [in] TpSessionId Tper Session ID for the Packet
1103 TcgCreateEndSession(
1104 TCG_CREATE_STRUCT
*CreateStruct
,
1107 UINT16 ComIdExtension
,
1108 UINT32 HostSessionId
,
1115 Retrieves human-readable token type name.
1117 @param[in] Type Token type to retrieve
1127 Returns the method status of the current subpacket. Does not affect the current position
1128 in the ComPacket. In other words, it can be called whenever you have a valid SubPacket.
1130 @param [in/out] ParseStruct Structure used to parse received TCG response
1131 @param [in/out] MethodStatus Method status retrieved of the current SubPacket
1137 const TCG_PARSE_STRUCT
*ParseStruct
,
1142 Returns a human-readable string representing a method status return code.
1144 @param[in] MethodStatus Method status to translate to a string
1147 @retval return the string info.
1151 TcgMethodStatusString(
1157 Retrieves the comID and Extended comID of the ComPacket in the Tcg response.
1158 It is intended to be used to confirm the received Tcg response is intended for user that received it.
1160 @param [in] ParseStruct Structure used to parse received TCG response.
1161 @param [in/out] ComId comID retrieved from received ComPacket.
1162 @param [in/out] ComIdExtension Extended comID retrieved from received ComPacket
1168 const TCG_PARSE_STRUCT
*ParseStruct
,
1170 UINT16
*ComIdExtension
1174 Checks if the ComIDs of the response match the expected values.
1176 @param[in] ParseStruct Structure used to parse received TCG response
1177 @param[in] ExpectedComId Expected comID
1178 @param[in] ExpectedComIdExtension Expected extended comID
1184 const TCG_PARSE_STRUCT
*ParseStruct
,
1185 UINT16 ExpectedComId
,
1186 UINT16 ExpectedComIdExtension
1190 Parses the Sync Session response contained in the parseStruct to retrieve Tper session ID. If the Sync Session response
1191 parameters do not match the comID, extended ComID and host session ID then a failure is returned.
1193 @param[in/out] ParseStruct Structure used to parse received TCG response, contains Sync Session response.
1194 @param[in] ComId Expected ComID that is compared to actual ComID of response
1195 @param[in] ComIdExtension Expected Extended ComID that is compared to actual Extended ComID of response
1196 @param[in] HostSessionId Expected Host Session ID that is compared to actual Host Session ID of response
1197 @param[in/out] TperSessionId Tper Session ID retrieved from the Sync Session response.
1202 TcgParseSyncSession(
1203 const TCG_PARSE_STRUCT
*ParseStruct
,
1205 UINT16 ComIdExtension
,
1206 UINT32 HostSessionId
,
1207 UINT32
*TperSessionId
1213 @param CreateStruct Input create structure.
1214 @param Size size info.
1215 @param ComId ComId info.
1216 @param ComIdExtension ComId extension info.
1217 @param TperSession Tper session data.
1218 @param HostSession Host session data.
1219 @param AceRow Ace row info.
1220 @param Authority1 Authority 1 info.
1221 @param LogicalOperator Logiccal operator info.
1222 @param Authority2 Authority 2 info.
1224 @retval Return the action result.
1230 TCG_CREATE_STRUCT
*CreateStruct
,
1233 UINT16 ComIdExtension
,
1238 BOOLEAN LogicalOperator
,
1243 Enum level 0 discovery.
1245 @param DiscoveryHeader Discovery header.
1246 @param Callback Callback function.
1247 @param Context The context for the function.
1249 @retval return true if the callback return TRUE, else return FALSE.
1254 TcgEnumLevel0Discovery(
1255 const TCG_LEVEL0_DISCOVERY_HEADER
*DiscoveryHeader
,
1256 TCG_LEVEL0_ENUM_CALLBACK Callback
,
1261 Get Feature code from the header.
1263 @param DiscoveryHeader The discovery header.
1264 @param FeatureCode reutrn the Feature code.
1265 @param FeatureSize return the Feature size.
1267 @retval return the Feature code data.
1269 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER
*
1272 const TCG_LEVEL0_DISCOVERY_HEADER
*DiscoveryHeader
,
1278 Determines if the protocol provided is part of the provided supported protocol list.
1280 @param[in] ProtocolList Supported protocol list to investigate
1281 @param[in] Protocol Protocol value to determine if supported
1283 @return TRUE = protocol is supported, FALSE = protocol is not supported
1287 TcgIsProtocolSupported(
1288 const TCG_SUPPORTED_SECURITY_PROTOCOLS
*ProtocolList
,
1293 Determines if the Locking Feature "Locked" bit is set in the level 0 discovery response.
1295 @param[in] Discovery Level 0 discovery response
1297 @return TRUE = Locked is set, FALSE = Locked is false
1303 const TCG_LEVEL0_DISCOVERY_HEADER
*Discovery
1309 #endif // _TCG_CORE_H_