summaryrefslogtreecommitdiffstats
path: root/MdePkg/Include/IndustryStandard/TcgStorageCore.h
blob: 1fae7b6e84743ef999a72479fde1ccc360519c42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
/** @file
  TCG defined values and structures.

  (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_STORAGE_CORE_H_
#define _TCG_STORAGE_CORE_H_

#include <Base.h>

#pragma pack(1)

/// UID in host native byte order
typedef UINT64 TCG_UID;

#define TCG_TO_UID(b0, b1, b2, b3, b4, b5, b6, b7)  (TCG_UID)(\
  (UINT64)(b0)         | \
  ((UINT64)(b1) << 8)  | \
  ((UINT64)(b2) << 16) | \
  ((UINT64)(b3) << 24) | \
  ((UINT64)(b4) << 32) | \
  ((UINT64)(b5) << 40) | \
  ((UINT64)(b6) << 48) | \
  ((UINT64)(b7) << 56))

typedef struct {
  UINT32    ReservedBE;
  UINT16    ComIDBE;
  UINT16    ComIDExtensionBE;
  UINT32    OutstandingDataBE;
  UINT32    MinTransferBE;
  UINT32    LengthBE;
  UINT8     Payload[0];
} TCG_COM_PACKET;

typedef struct {
  UINT32    TperSessionNumberBE;
  UINT32    HostSessionNumberBE;
  UINT32    SequenceNumberBE;
  UINT16    ReservedBE;
  UINT16    AckTypeBE;
  UINT32    AcknowledgementBE;
  UINT32    LengthBE;
  UINT8     Payload[0];
} TCG_PACKET;

#define TCG_SUBPACKET_ALIGNMENT  4// 4-byte alignment per spec

typedef struct {
  UINT8     ReservedBE[6];
  UINT16    KindBE;
  UINT32    LengthBE;
  UINT8     Payload[0];
} TCG_SUB_PACKET;

#define SUBPACKET_KIND_DATA            0x0000
#define SUBPACKET_KIND_CREDIT_CONTROL  0x8001

#define TCG_ATOM_TYPE_INTEGER  0x0
#define TCG_ATOM_TYPE_BYTE     0x1
typedef struct {
  UINT8    Data   : 6;
  UINT8    Sign   : 1;
  UINT8    IsZero : 1;
} TCG_TINY_ATOM_BITS;

typedef union {
  UINT8                 Raw;
  TCG_TINY_ATOM_BITS    TinyAtomBits;
} TCG_SIMPLE_TOKEN_TINY_ATOM;

typedef struct {
  UINT8    Length     : 4;
  UINT8    SignOrCont : 1;
  UINT8    ByteOrInt  : 1;
  UINT8    IsZero     : 1;
  UINT8    IsOne      : 1;
} TCG_SHORT_ATOM_BITS;

typedef union {
  UINT8                  RawHeader;
  TCG_SHORT_ATOM_BITS    ShortAtomBits;
} TCG_SIMPLE_TOKEN_SHORT_ATOM;

#define TCG_MEDIUM_ATOM_LENGTH_HIGH_SHIFT  0x8
#define TCG_MEDIUM_ATOM_LENGTH_HIGH_MASK   0x7

typedef struct {
  UINT8    LengthHigh : 3;
  UINT8    SignOrCont : 1;
  UINT8    ByteOrInt  : 1;
  UINT8    IsZero     : 1;
  UINT8    IsOne1     : 1;
  UINT8    IsOne2     : 1;
  UINT8    LengthLow;
} TCG_MEDIUM_ATOM_BITS;

typedef union {
  UINT16                  RawHeader;
  TCG_MEDIUM_ATOM_BITS    MediumAtomBits;
} TCG_SIMPLE_TOKEN_MEDIUM_ATOM;

#define TCG_LONG_ATOM_LENGTH_HIGH_SHIFT  16
#define TCG_LONG_ATOM_LENGTH_MID_SHIFT   8

typedef  struct {
  UINT8    SignOrCont : 1;
  UINT8    ByteOrInt  : 1;
  UINT8    Reserved   : 2;
  UINT8    IsZero     : 1;
  UINT8    IsOne1     : 1;
  UINT8    IsOne2     : 1;
  UINT8    IsOne3     : 1;
  UINT8    LengthHigh;
  UINT8    LengthMid;
  UINT8    LengthLow;
} TCG_LONG_ATOM_BITS;

typedef union {
  UINT32                RawHeader;
  TCG_LONG_ATOM_BITS    LongAtomBits;
} TCG_SIMPLE_TOKEN_LONG_ATOM;

// TCG Core Spec v2 - Table 04 - Token Types
typedef enum {
  TcgTokenTypeReserved,
  TcgTokenTypeTinyAtom,
  TcgTokenTypeShortAtom,
  TcgTokenTypeMediumAtom,
  TcgTokenTypeLongAtom,
  TcgTokenTypeStartList,
  TcgTokenTypeEndList,
  TcgTokenTypeStartName,
  TcgTokenTypeEndName,
  TcgTokenTypeCall,
  TcgTokenTypeEndOfData,
  TcgTokenTypeEndOfSession,
  TcgTokenTypeStartTransaction,
  TcgTokenTypeEndTransaction,
  TcgTokenTypeEmptyAtom,
} TCG_TOKEN_TYPE;

#pragma pack()

#define TCG_TOKEN_SHORTATOM_MAX_BYTE_SIZE   0x0F
#define TCG_TOKEN_MEDIUMATOM_MAX_BYTE_SIZE  0x7FF
#define TCG_TOKEN_LONGATOM_MAX_BYTE_SIZE    0xFFFFFF

#define TCG_TOKEN_TINYATOM_UNSIGNED_MAX_VALUE  0x3F
#define TCG_TOKEN_TINYATOM_SIGNED_MAX_VALUE    0x1F
#define TCG_TOKEN_TINYATOM_SIGNED_MIN_VALUE    -32

// TOKEN TYPES
#define TCG_TOKEN_TINYATOM          0x00
#define TCG_TOKEN_TINYSIGNEDATOM    0x40
#define TCG_TOKEN_SHORTATOM         0x80
#define TCG_TOKEN_SHORTSIGNEDATOM   0x90
#define TCG_TOKEN_SHORTBYTESATOM    0xA0
#define TCG_TOKEN_MEDIUMATOM        0xC0
#define TCG_TOKEN_MEDIUMSIGNEDATOM  0xC8
#define TCG_TOKEN_MEDIUMBYTESATOM   0xD0
#define TCG_TOKEN_LONGATOM          0xE0
#define TCG_TOKEN_LONGSIGNEDATOM    0xE1
#define TCG_TOKEN_LONGBYTESATOM     0xE2
#define TCG_TOKEN_STARTLIST         0xF0
#define TCG_TOKEN_ENDLIST           0xF1
#define TCG_TOKEN_STARTNAME         0xF2
#define TCG_TOKEN_ENDNAME           0xF3
// 0xF4 - 0xF7 TCG Reserved
#define TCG_TOKEN_CALL              0xF8
#define TCG_TOKEN_ENDDATA           0xF9
#define TCG_TOKEN_ENDSESSION        0xFA
#define TCG_TOKEN_STARTTRANSACTION  0xFB
#define TCG_TOKEN_ENDTRANSACTION    0xFC
// 0xFD - 0xFE TCG Reserved
#define TCG_TOKEN_EMPTY  0xFF

// CELLBLOCK reserved Names
#define TCG_CELL_BLOCK_TABLE_NAME         (UINT8)0x00
#define TCG_CELL_BLOCK_START_ROW_NAME     (UINT8)0x01
#define TCG_CELL_BLOCK_END_ROW_NAME       (UINT8)0x02
#define TCG_CELL_BLOCK_START_COLUMN_NAME  (UINT8)0x03
#define TCG_CELL_BLOCK_END_COLUMN_NAME    (UINT8)0x04

// METHOD STATUS CODES
#define TCG_METHOD_STATUS_CODE_SUCCESS                0x00
#define TCG_METHOD_STATUS_CODE_NOT_AUTHORIZED         0x01
#define TCG_METHOD_STATUS_CODE_OBSOLETE               0x02
#define TCG_METHOD_STATUS_CODE_SP_BUSY                0x03
#define TCG_METHOD_STATUS_CODE_SP_FAILED              0x04
#define TCG_METHOD_STATUS_CODE_SP_DISABLED            0x05
#define TCG_METHOD_STATUS_CODE_SP_FROZEN              0x06
#define TCG_METHOD_STATUS_CODE_NO_SESSIONS_AVAILABLE  0x07
#define TCG_METHOD_STATUS_CODE_UNIQUENESS_CONFLICT    0x08
#define TCG_METHOD_STATUS_CODE_INSUFFICIENT_SPACE     0x09
#define TCG_METHOD_STATUS_CODE_INSUFFICIENT_ROWS      0x0A
#define TCG_METHOD_STATUS_CODE_INVALID_PARAMETER      0x0C
#define TCG_METHOD_STATUS_CODE_OBSOLETE2              0x0D
#define TCG_METHOD_STATUS_CODE_OBSOLETE3              0x0E
#define TCG_METHOD_STATUS_CODE_TPER_MALFUNCTION       0x0F
#define TCG_METHOD_STATUS_CODE_TRANSACTION_FAILURE    0x10
#define TCG_METHOD_STATUS_CODE_RESPONSE_OVERFLOW      0x11
#define TCG_METHOD_STATUS_CODE_AUTHORITY_LOCKED_OUT   0x12
#define TCG_METHOD_STATUS_CODE_FAIL                   0x3F

// Feature Codes
#define TCG_FEATURE_INVALID             (UINT16)0x0000
#define TCG_FEATURE_TPER                (UINT16)0x0001
#define TCG_FEATURE_LOCKING             (UINT16)0x0002
#define TCG_FEATURE_GEOMETRY_REPORTING  (UINT16)0x0003
#define TCG_FEATURE_SINGLE_USER_MODE    (UINT16)0x0201
#define TCG_FEATURE_DATASTORE_TABLE     (UINT16)0x0202
#define TCG_FEATURE_OPAL_SSC_V1_0_0     (UINT16)0x0200
#define TCG_FEATURE_OPAL_SSC_V2_0_0     (UINT16)0x0203
#define TCG_FEATURE_OPAL_SSC_LITE       (UINT16)0x0301
#define TCG_FEATURE_PYRITE_SSC          (UINT16)0x0302
#define TCG_FEATURE_PYRITE_SSC_V2_0_0   (UINT16)0x0303
#define TCG_FEATURE_BLOCK_SID           (UINT16)0x0402
#define TCG_FEATURE_DATA_REMOVAL        (UINT16)0x0404

// ACE Expression values
#define TCG_ACE_EXPRESSION_AND  0x0
#define TCG_ACE_EXPRESSION_OR   0x1

/****************************************************************************
TRUSTED RECEIVE - supported security protocols list (SP_Specific = 0000h)
ATA 8 Rev6a Table 68 7.57.6.2
****************************************************************************/
// Security Protocol IDs
#define TCG_SECURITY_PROTOCOL_INFO                    0x00
#define TCG_OPAL_SECURITY_PROTOCOL_1                  0x01
#define TCG_OPAL_SECURITY_PROTOCOL_2                  0x02
#define TCG_SECURITY_PROTOCOL_TCG3                    0x03
#define TCG_SECURITY_PROTOCOL_TCG4                    0x04
#define TCG_SECURITY_PROTOCOL_TCG5                    0x05
#define TCG_SECURITY_PROTOCOL_TCG6                    0x06
#define TCG_SECURITY_PROTOCOL_CBCS                    0x07
#define TCG_SECURITY_PROTOCOL_TAPE_DATA               0x20
#define TCG_SECURITY_PROTOCOL_DATA_ENCRYPT_CONFIG     0x21
#define TCG_SECURITY_PROTOCOL_SA_CREATION_CAPS        0x40
#define TCG_SECURITY_PROTOCOL_IKEV2_SCSI              0x41
#define TCG_SECURITY_PROTOCOL_JEDEC_UFS               0xEC
#define TCG_SECURITY_PROTOCOL_SDCARD_SECURITY         0xED
#define TCG_SECURITY_PROTOCOL_IEEE_1667               0xEE
#define TCG_SECURITY_PROTOCOL_ATA_DEVICE_SERVER_PASS  0xEF

// Security Protocol Specific IDs
#define TCG_SP_SPECIFIC_PROTOCOL_LIST              0x0000
#define TCG_SP_SPECIFIC_PROTOCOL_LEVEL0_DISCOVERY  0x0001

#define TCG_RESERVED_COMID  0x0000

// Defined in TCG Storage Feature Set:Block SID Authentication spec,
// ComId used for BlockSid command is hardcode 0x0005.
#define TCG_BLOCKSID_COMID  0x0005

#pragma pack(1)
typedef struct {
  UINT8     Reserved[6];
  UINT16    ListLength_BE; // 6 - 7
  UINT8     List[504];     // 8...
} TCG_SUPPORTED_SECURITY_PROTOCOLS;

// Level 0 Discovery
typedef struct {
  UINT32    LengthBE; // number of valid bytes in discovery response, not including length field
  UINT16    VerMajorBE;
  UINT16    VerMinorBE;
  UINT8     Reserved[8];
  UINT8     VendorUnique[32];
} TCG_LEVEL0_DISCOVERY_HEADER;

typedef struct _TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER {
  UINT16    FeatureCode_BE;
  UINT8     Reserved : 4;
  UINT8     Version  : 4;
  UINT8     Length;  // length of feature dependent data in bytes
} TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER;

typedef struct {
  TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER    Header;
  UINT8                                   LockingSupported : 1;
  UINT8                                   LockingEnabled   : 1; // means the locking security provider (SP) is enabled
  UINT8                                   Locked           : 1; // means at least 1 locking range is enabled
  UINT8                                   MediaEncryption  : 1;
  UINT8                                   MbrEnabled       : 1;
  UINT8                                   MbrDone          : 1;
  UINT8                                   Reserved         : 2;
  UINT8                                   Reserved515[11];
} TCG_LOCKING_FEATURE_DESCRIPTOR;

typedef struct {
  TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER    Header;
  UINT8                                   SIDValueState   : 1;
  UINT8                                   SIDBlockedState : 1;
  UINT8                                   Reserved4       : 6;
  UINT8                                   HardwareReset   : 1;
  UINT8                                   Reserved5       : 7;
  UINT8                                   Reserved615[10];
} TCG_BLOCK_SID_FEATURE_DESCRIPTOR;

typedef struct {
  TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER    Header;
  UINT8                                   SyncSupported       : 1;
  UINT8                                   AsyncSupported      : 1;
  UINT8                                   AckNakSupported     : 1;
  UINT8                                   BufferMgmtSupported : 1;
  UINT8                                   StreamingSupported  : 1;
  UINT8                                   Reserved4b5         : 1;
  UINT8                                   ComIdMgmtSupported  : 1;
  UINT8                                   Reserved4b7         : 1;
  UINT8                                   Reserved515[11];
} TCG_TPER_FEATURE_DESCRIPTOR;

#pragma pack()

// Special Purpose UIDs
#define TCG_UID_NULL     TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
#define TCG_UID_THIS_SP  TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01)
#define TCG_UID_SMUID    TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF)

// Session Manager Method UIDS
#define TCG_UID_SM_PROPERTIES             TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01)
#define TCG_UID_SM_START_SESSION          TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x02)
#define TCG_UID_SM_SYNC_SESSION           TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03)
#define TCG_UID_SM_START_TRUSTED_SESSION  TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x04)
#define TCG_UID_SM_SYNC_TRUSTED_SESSION   TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x05)
#define TCG_UID_SM_CLOSE_SESSION          TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x06)

// MethodID UIDs
#define TCG_UID_METHOD_DELETE_SP          TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01)
#define TCG_UID_METHOD_CREATE_TABLE       TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02)
#define TCG_UID_METHOD_DELETE             TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03)
#define TCG_UID_METHOD_CREATE_ROW         TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04)
#define TCG_UID_METHOD_DELETE_ROW         TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05)
#define TCG_UID_METHOD_NEXT               TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08)
#define TCG_UID_METHOD_GET_FREE_SPACE     TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09)
#define TCG_UID_METHOD_GET_FREE_ROWS      TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A)
#define TCG_UID_METHOD_DELETE_METHOD      TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0B)
#define TCG_UID_METHOD_GET_ACL            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0D)
#define TCG_UID_METHOD_ADD_ACE            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0E)
#define TCG_UID_METHOD_REMOVE_ACE         TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0F)
#define TCG_UID_METHOD_GEN_KEY            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10)
#define TCG_UID_METHOD_GET_PACKAGE        TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12)
#define TCG_UID_METHOD_SET_PACKAGE        TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13)
#define TCG_UID_METHOD_GET                TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16)
#define TCG_UID_METHOD_SET                TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17)
#define TCG_UID_METHOD_AUTHENTICATE       TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C)
#define TCG_UID_METHOD_ISSUE_SP           TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x01)
#define TCG_UID_METHOD_GET_CLOCK          TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x01)
#define TCG_UID_METHOD_RESET_CLOCK        TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x02)
#define TCG_UID_METHOD_SET_CLOCK_HIGH     TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x03)
#define TCG_UID_METHOD_SET_LAG_HIGH       TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x04)
#define TCG_UID_METHOD_SET_CLOCK_LOW      TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x05)
#define TCG_UID_METHOD_SET_LAG_LOW        TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x06)
#define TCG_UID_METHOD_INCREMENT_COUNTER  TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x07)
#define TCG_UID_METHOD_RANDOM             TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x01)
#define TCG_UID_METHOD_SALT               TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x02)
#define TCG_UID_METHOD_DECRYPT_INIT       TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x03)
#define TCG_UID_METHOD_DECRYPT            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x04)
#define TCG_UID_METHOD_DECRYPT_FINALIZE   TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x05)
#define TCG_UID_METHOD_ENCRYPT_INIT       TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x06)
#define TCG_UID_METHOD_ENCRYPT            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x07)
#define TCG_UID_METHOD_ENCRYPT_FINALIZE   TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x08)
#define TCG_UID_METHOD_HMAC_INIT          TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x09)
#define TCG_UID_METHOD_HMAC               TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0A)
#define TCG_UID_METHOD_HMAC_FINALIZE      TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0B)
#define TCG_UID_METHOD_HASH_INIT          TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0C)
#define TCG_UID_METHOD_HASH               TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0D)
#define TCG_UID_METHOD_HASH_FINALIZE      TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0E)
#define TCG_UID_METHOD_SIGN               TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0F)
#define TCG_UID_METHOD_VERIFY             TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x10)
#define TCG_UID_METHOD_XOR                TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x11)
#define TCG_UID_METHOD_ADD_LOG            TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x01)
#define TCG_UID_METHOD_CREATE_LOG         TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x02)
#define TCG_UID_METHOD_CLEAR_LOG          TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x03)
#define TCG_UID_METHOD_FLUSH_LOG          TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x04)

#endif // TCG_H_