1 /** @file
2   TCG defined values and structures.
3 
4   (TCG Storage Architecture Core Specification, Version 2.01, Revision 1.00,
5   https://trustedcomputinggroup.org/tcg-storage-architecture-core-specification/)
6 
7   Check http://trustedcomputinggroup.org for latest specification updates.
8 
9 Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
10 SPDX-License-Identifier: BSD-2-Clause-Patent
11 
12 **/
13 
14 #ifndef _TCG_STORAGE_CORE_H_
15 #define _TCG_STORAGE_CORE_H_
16 
17 #include <Base.h>
18 
19 #pragma pack(1)
20 
21 /// UID in host native byte order
22 typedef UINT64 TCG_UID;
23 
24 #define TCG_TO_UID(b0, b1, b2, b3, b4, b5, b6, b7) (TCG_UID)( \
25   (UINT64)(b0)         | \
26   ((UINT64)(b1) << 8)  | \
27   ((UINT64)(b2) << 16) | \
28   ((UINT64)(b3) << 24) | \
29   ((UINT64)(b4) << 32) | \
30   ((UINT64)(b5) << 40) | \
31   ((UINT64)(b6) << 48) | \
32   ((UINT64)(b7) << 56))
33 
34 typedef struct {
35   UINT32     ReservedBE;
36   UINT16     ComIDBE;
37   UINT16     ComIDExtensionBE;
38   UINT32     OutstandingDataBE;
39   UINT32     MinTransferBE;
40   UINT32     LengthBE;
41   UINT8      Payload[0];
42 } TCG_COM_PACKET;
43 
44 typedef struct {
45   UINT32     TperSessionNumberBE;
46   UINT32     HostSessionNumberBE;
47   UINT32     SequenceNumberBE;
48   UINT16     ReservedBE;
49   UINT16     AckTypeBE;
50   UINT32     AcknowledgementBE;
51   UINT32     LengthBE;
52   UINT8      Payload[0];
53 } TCG_PACKET;
54 
55 #define TCG_SUBPACKET_ALIGNMENT 4 // 4-byte alignment per spec
56 
57 typedef struct {
58   UINT8      ReservedBE[6];
59   UINT16     KindBE;
60   UINT32     LengthBE;
61   UINT8      Payload[0];
62 } TCG_SUB_PACKET;
63 
64 #define SUBPACKET_KIND_DATA           0x0000
65 #define SUBPACKET_KIND_CREDIT_CONTROL 0x8001
66 
67 #define TCG_ATOM_TYPE_INTEGER 0x0
68 #define TCG_ATOM_TYPE_BYTE    0x1
69 typedef struct {
70   UINT8   Data : 6;
71   UINT8   Sign : 1;
72   UINT8   IsZero : 1;
73 } TCG_TINY_ATOM_BITS;
74 
75 typedef union {
76   UINT8               Raw;
77   TCG_TINY_ATOM_BITS  TinyAtomBits;
78 } TCG_SIMPLE_TOKEN_TINY_ATOM;
79 
80 
81 typedef struct {
82   UINT8   Length : 4;
83   UINT8   SignOrCont : 1;
84   UINT8   ByteOrInt : 1;
85   UINT8   IsZero : 1;
86   UINT8   IsOne : 1;
87 } TCG_SHORT_ATOM_BITS;
88 
89 typedef union {
90   UINT8                 RawHeader;
91   TCG_SHORT_ATOM_BITS   ShortAtomBits;
92 } TCG_SIMPLE_TOKEN_SHORT_ATOM;
93 
94 
95 #define TCG_MEDIUM_ATOM_LENGTH_HIGH_SHIFT 0x8
96 #define TCG_MEDIUM_ATOM_LENGTH_HIGH_MASK  0x7
97 
98 typedef struct {
99   UINT8  LengthHigh : 3;
100   UINT8  SignOrCont : 1;
101   UINT8  ByteOrInt : 1;
102   UINT8  IsZero : 1;
103   UINT8  IsOne1 : 1;
104   UINT8  IsOne2 : 1;
105   UINT8  LengthLow;
106 } TCG_MEDIUM_ATOM_BITS;
107 
108 typedef union {
109   UINT16                RawHeader;
110   TCG_MEDIUM_ATOM_BITS  MediumAtomBits;
111 } TCG_SIMPLE_TOKEN_MEDIUM_ATOM;
112 
113 
114 #define TCG_LONG_ATOM_LENGTH_HIGH_SHIFT 16
115 #define TCG_LONG_ATOM_LENGTH_MID_SHIFT  8
116 
117 typedef  struct {
118   UINT8   SignOrCont : 1;
119   UINT8   ByteOrInt : 1;
120   UINT8   Reserved : 2;
121   UINT8   IsZero : 1;
122   UINT8   IsOne1 : 1;
123   UINT8   IsOne2 : 1;
124   UINT8   IsOne3 : 1;
125   UINT8   LengthHigh;
126   UINT8   LengthMid;
127   UINT8   LengthLow;
128 } TCG_LONG_ATOM_BITS;
129 
130 typedef union {
131   UINT32              RawHeader;
132   TCG_LONG_ATOM_BITS  LongAtomBits;
133 } TCG_SIMPLE_TOKEN_LONG_ATOM;
134 
135 
136 // TCG Core Spec v2 - Table 04 - Token Types
137 typedef enum {
138   TcgTokenTypeReserved,
139   TcgTokenTypeTinyAtom,
140   TcgTokenTypeShortAtom,
141   TcgTokenTypeMediumAtom,
142   TcgTokenTypeLongAtom,
143   TcgTokenTypeStartList,
144   TcgTokenTypeEndList,
145   TcgTokenTypeStartName,
146   TcgTokenTypeEndName,
147   TcgTokenTypeCall,
148   TcgTokenTypeEndOfData,
149   TcgTokenTypeEndOfSession,
150   TcgTokenTypeStartTransaction,
151   TcgTokenTypeEndTransaction,
152   TcgTokenTypeEmptyAtom,
153 } TCG_TOKEN_TYPE;
154 
155 #pragma pack()
156 
157 #define TCG_TOKEN_SHORTATOM_MAX_BYTE_SIZE   0x0F
158 #define TCG_TOKEN_MEDIUMATOM_MAX_BYTE_SIZE  0x7FF
159 #define TCG_TOKEN_LONGATOM_MAX_BYTE_SIZE    0xFFFFFF
160 
161 #define TCG_TOKEN_TINYATOM_UNSIGNED_MAX_VALUE 0x3F
162 #define TCG_TOKEN_TINYATOM_SIGNED_MAX_VALUE   0x1F
163 #define TCG_TOKEN_TINYATOM_SIGNED_MIN_VALUE   -32
164 
165 // TOKEN TYPES
166 #define TCG_TOKEN_TINYATOM          0x00
167 #define TCG_TOKEN_TINYSIGNEDATOM    0x40
168 #define TCG_TOKEN_SHORTATOM         0x80
169 #define TCG_TOKEN_SHORTSIGNEDATOM   0x90
170 #define TCG_TOKEN_SHORTBYTESATOM    0xA0
171 #define TCG_TOKEN_MEDIUMATOM        0xC0
172 #define TCG_TOKEN_MEDIUMSIGNEDATOM  0xC8
173 #define TCG_TOKEN_MEDIUMBYTESATOM   0xD0
174 #define TCG_TOKEN_LONGATOM          0xE0
175 #define TCG_TOKEN_LONGSIGNEDATOM    0xE1
176 #define TCG_TOKEN_LONGBYTESATOM     0xE2
177 #define TCG_TOKEN_STARTLIST         0xF0
178 #define TCG_TOKEN_ENDLIST           0xF1
179 #define TCG_TOKEN_STARTNAME         0xF2
180 #define TCG_TOKEN_ENDNAME           0xF3
181 // 0xF4 - 0xF7 TCG Reserved
182 #define TCG_TOKEN_CALL              0xF8
183 #define TCG_TOKEN_ENDDATA           0xF9
184 #define TCG_TOKEN_ENDSESSION        0xFA
185 #define TCG_TOKEN_STARTTRANSACTION  0xFB
186 #define TCG_TOKEN_ENDTRANSACTION    0xFC
187 // 0xFD - 0xFE TCG Reserved
188 #define TCG_TOKEN_EMPTY             0xFF
189 
190 // CELLBLOCK reserved Names
191 #define TCG_CELL_BLOCK_TABLE_NAME           (UINT8)0x00
192 #define TCG_CELL_BLOCK_START_ROW_NAME       (UINT8)0x01
193 #define TCG_CELL_BLOCK_END_ROW_NAME         (UINT8)0x02
194 #define TCG_CELL_BLOCK_START_COLUMN_NAME    (UINT8)0x03
195 #define TCG_CELL_BLOCK_END_COLUMN_NAME      (UINT8)0x04
196 
197 // METHOD STATUS CODES
198 #define TCG_METHOD_STATUS_CODE_SUCCESS                  0x00
199 #define TCG_METHOD_STATUS_CODE_NOT_AUTHORIZED           0x01
200 #define TCG_METHOD_STATUS_CODE_OBSOLETE                 0x02
201 #define TCG_METHOD_STATUS_CODE_SP_BUSY                  0x03
202 #define TCG_METHOD_STATUS_CODE_SP_FAILED                0x04
203 #define TCG_METHOD_STATUS_CODE_SP_DISABLED              0x05
204 #define TCG_METHOD_STATUS_CODE_SP_FROZEN                0x06
205 #define TCG_METHOD_STATUS_CODE_NO_SESSIONS_AVAILABLE    0x07
206 #define TCG_METHOD_STATUS_CODE_UNIQUENESS_CONFLICT      0x08
207 #define TCG_METHOD_STATUS_CODE_INSUFFICIENT_SPACE       0x09
208 #define TCG_METHOD_STATUS_CODE_INSUFFICIENT_ROWS        0x0A
209 #define TCG_METHOD_STATUS_CODE_INVALID_PARAMETER        0x0C
210 #define TCG_METHOD_STATUS_CODE_OBSOLETE2                0x0D
211 #define TCG_METHOD_STATUS_CODE_OBSOLETE3                0x0E
212 #define TCG_METHOD_STATUS_CODE_TPER_MALFUNCTION         0x0F
213 #define TCG_METHOD_STATUS_CODE_TRANSACTION_FAILURE      0x10
214 #define TCG_METHOD_STATUS_CODE_RESPONSE_OVERFLOW        0x11
215 #define TCG_METHOD_STATUS_CODE_AUTHORITY_LOCKED_OUT     0x12
216 #define TCG_METHOD_STATUS_CODE_FAIL                     0x3F
217 
218 
219 // Feature Codes
220 #define TCG_FEATURE_INVALID             (UINT16)0x0000
221 #define TCG_FEATURE_TPER                (UINT16)0x0001
222 #define TCG_FEATURE_LOCKING             (UINT16)0x0002
223 #define TCG_FEATURE_GEOMETRY_REPORTING  (UINT16)0x0003
224 #define TCG_FEATURE_SINGLE_USER_MODE    (UINT16)0x0201
225 #define TCG_FEATURE_DATASTORE_TABLE     (UINT16)0x0202
226 #define TCG_FEATURE_OPAL_SSC_V1_0_0     (UINT16)0x0200
227 #define TCG_FEATURE_OPAL_SSC_V2_0_0     (UINT16)0x0203
228 #define TCG_FEATURE_OPAL_SSC_LITE       (UINT16)0x0301
229 #define TCG_FEATURE_PYRITE_SSC          (UINT16)0x0302
230 #define TCG_FEATURE_PYRITE_SSC_V2_0_0   (UINT16)0x0303
231 #define TCG_FEATURE_BLOCK_SID           (UINT16)0x0402
232 #define TCG_FEATURE_DATA_REMOVAL        (UINT16)0x0404
233 
234 // ACE Expression values
235 #define TCG_ACE_EXPRESSION_AND 0x0
236 #define TCG_ACE_EXPRESSION_OR  0x1
237 
238 /****************************************************************************
239 TRUSTED RECEIVE - supported security protocols list (SP_Specific = 0000h)
240 ATA 8 Rev6a Table 68 7.57.6.2
241 ****************************************************************************/
242 // Security Protocol IDs
243 #define TCG_SECURITY_PROTOCOL_INFO                   0x00
244 #define TCG_OPAL_SECURITY_PROTOCOL_1                 0x01
245 #define TCG_OPAL_SECURITY_PROTOCOL_2                 0x02
246 #define TCG_SECURITY_PROTOCOL_TCG3                   0x03
247 #define TCG_SECURITY_PROTOCOL_TCG4                   0x04
248 #define TCG_SECURITY_PROTOCOL_TCG5                   0x05
249 #define TCG_SECURITY_PROTOCOL_TCG6                   0x06
250 #define TCG_SECURITY_PROTOCOL_CBCS                   0x07
251 #define TCG_SECURITY_PROTOCOL_TAPE_DATA              0x20
252 #define TCG_SECURITY_PROTOCOL_DATA_ENCRYPT_CONFIG    0x21
253 #define TCG_SECURITY_PROTOCOL_SA_CREATION_CAPS       0x40
254 #define TCG_SECURITY_PROTOCOL_IKEV2_SCSI             0x41
255 #define TCG_SECURITY_PROTOCOL_JEDEC_UFS              0xEC
256 #define TCG_SECURITY_PROTOCOL_SDCARD_SECURITY        0xED
257 #define TCG_SECURITY_PROTOCOL_IEEE_1667              0xEE
258 #define TCG_SECURITY_PROTOCOL_ATA_DEVICE_SERVER_PASS 0xEF
259 
260 // Security Protocol Specific IDs
261 #define TCG_SP_SPECIFIC_PROTOCOL_LIST               0x0000
262 #define TCG_SP_SPECIFIC_PROTOCOL_LEVEL0_DISCOVERY   0x0001
263 
264 #define TCG_RESERVED_COMID 0x0000
265 
266 // Defined in TCG Storage Feature Set:Block SID Authentication spec,
267 // ComId used for BlockSid command is hardcode 0x0005.
268 #define TCG_BLOCKSID_COMID 0x0005
269 
270 #pragma pack(1)
271 typedef struct {
272   UINT8   Reserved[6];
273   UINT16  ListLength_BE;  // 6 - 7
274   UINT8   List[504];      // 8...
275 } TCG_SUPPORTED_SECURITY_PROTOCOLS;
276 
277 
278 // Level 0 Discovery
279 typedef struct {
280   UINT32 LengthBE;    // number of valid bytes in discovery response, not including length field
281   UINT16 VerMajorBE;
282   UINT16 VerMinorBE;
283   UINT8  Reserved[8];
284   UINT8  VendorUnique[32];
285 } TCG_LEVEL0_DISCOVERY_HEADER;
286 
287 typedef struct _TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER {
288   UINT16 FeatureCode_BE;
289   UINT8  Reserved : 4;
290   UINT8  Version : 4;
291   UINT8  Length;     // length of feature dependent data in bytes
292 } TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER;
293 
294 
295 typedef struct {
296   TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;
297   UINT8                                LockingSupported : 1;
298   UINT8                                LockingEnabled : 1;   // means the locking security provider (SP) is enabled
299   UINT8                                Locked : 1;   // means at least 1 locking range is enabled
300   UINT8                                MediaEncryption : 1;
301   UINT8                                MbrEnabled : 1;
302   UINT8                                MbrDone : 1;
303   UINT8                                Reserved : 2;
304   UINT8                                Reserved515[11];
305 } TCG_LOCKING_FEATURE_DESCRIPTOR;
306 
307 typedef struct {
308   TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;
309   UINT8                                SIDValueState : 1;
310   UINT8                                SIDBlockedState : 1;
311   UINT8                                Reserved4 : 6;
312   UINT8                                HardwareReset : 1;
313   UINT8                                Reserved5 : 7;
314   UINT8                                Reserved615[10];
315 } TCG_BLOCK_SID_FEATURE_DESCRIPTOR;
316 
317 
318 typedef struct {
319   TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;
320   UINT8                                SyncSupported : 1;
321   UINT8                                AsyncSupported : 1;
322   UINT8                                AckNakSupported : 1;
323   UINT8                                BufferMgmtSupported : 1;
324   UINT8                                StreamingSupported : 1;
325   UINT8                                Reserved4b5 : 1;
326   UINT8                                ComIdMgmtSupported : 1;
327   UINT8                                Reserved4b7 : 1;
328   UINT8                                Reserved515[11];
329 } TCG_TPER_FEATURE_DESCRIPTOR;
330 
331 #pragma pack()
332 
333 // Special Purpose UIDs
334 #define TCG_UID_NULL                            TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
335 #define TCG_UID_THIS_SP                         TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01)
336 #define TCG_UID_SMUID                           TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF)
337 
338 // Session Manager Method UIDS
339 #define TCG_UID_SM_PROPERTIES                   TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01)
340 #define TCG_UID_SM_START_SESSION                TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x02)
341 #define TCG_UID_SM_SYNC_SESSION                 TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03)
342 #define TCG_UID_SM_START_TRUSTED_SESSION        TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x04)
343 #define TCG_UID_SM_SYNC_TRUSTED_SESSION         TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x05)
344 #define TCG_UID_SM_CLOSE_SESSION                TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x06)
345 
346 // MethodID UIDs
347 #define TCG_UID_METHOD_DELETE_SP                TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01)
348 #define TCG_UID_METHOD_CREATE_TABLE             TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02)
349 #define TCG_UID_METHOD_DELETE                   TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03)
350 #define TCG_UID_METHOD_CREATE_ROW               TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04)
351 #define TCG_UID_METHOD_DELETE_ROW               TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05)
352 #define TCG_UID_METHOD_NEXT                     TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08)
353 #define TCG_UID_METHOD_GET_FREE_SPACE           TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09)
354 #define TCG_UID_METHOD_GET_FREE_ROWS            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A)
355 #define TCG_UID_METHOD_DELETE_METHOD            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0B)
356 #define TCG_UID_METHOD_GET_ACL                  TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0D)
357 #define TCG_UID_METHOD_ADD_ACE                  TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0E)
358 #define TCG_UID_METHOD_REMOVE_ACE               TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0F)
359 #define TCG_UID_METHOD_GEN_KEY                  TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10)
360 #define TCG_UID_METHOD_GET_PACKAGE              TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12)
361 #define TCG_UID_METHOD_SET_PACKAGE              TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13)
362 #define TCG_UID_METHOD_GET                      TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16)
363 #define TCG_UID_METHOD_SET                      TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17)
364 #define TCG_UID_METHOD_AUTHENTICATE             TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C)
365 #define TCG_UID_METHOD_ISSUE_SP                 TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x01)
366 #define TCG_UID_METHOD_GET_CLOCK                TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x01)
367 #define TCG_UID_METHOD_RESET_CLOCK              TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x02)
368 #define TCG_UID_METHOD_SET_CLOCK_HIGH           TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x03)
369 #define TCG_UID_METHOD_SET_LAG_HIGH             TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x04)
370 #define TCG_UID_METHOD_SET_CLOCK_LOW            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x05)
371 #define TCG_UID_METHOD_SET_LAG_LOW              TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x06)
372 #define TCG_UID_METHOD_INCREMENT_COUNTER        TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x07)
373 #define TCG_UID_METHOD_RANDOM                   TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x01)
374 #define TCG_UID_METHOD_SALT                     TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x02)
375 #define TCG_UID_METHOD_DECRYPT_INIT             TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x03)
376 #define TCG_UID_METHOD_DECRYPT                  TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x04)
377 #define TCG_UID_METHOD_DECRYPT_FINALIZE         TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x05)
378 #define TCG_UID_METHOD_ENCRYPT_INIT             TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x06)
379 #define TCG_UID_METHOD_ENCRYPT                  TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x07)
380 #define TCG_UID_METHOD_ENCRYPT_FINALIZE         TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x08)
381 #define TCG_UID_METHOD_HMAC_INIT                TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x09)
382 #define TCG_UID_METHOD_HMAC                     TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0A)
383 #define TCG_UID_METHOD_HMAC_FINALIZE            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0B)
384 #define TCG_UID_METHOD_HASH_INIT                TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0C)
385 #define TCG_UID_METHOD_HASH                     TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0D)
386 #define TCG_UID_METHOD_HASH_FINALIZE            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0E)
387 #define TCG_UID_METHOD_SIGN                     TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0F)
388 #define TCG_UID_METHOD_VERIFY                   TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x10)
389 #define TCG_UID_METHOD_XOR                      TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x11)
390 #define TCG_UID_METHOD_ADD_LOG                  TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x01)
391 #define TCG_UID_METHOD_CREATE_LOG               TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x02)
392 #define TCG_UID_METHOD_CLEAR_LOG                TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x03)
393 #define TCG_UID_METHOD_FLUSH_LOG                TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x04)
394 
395 #endif // TCG_H_
396