1 // This file was extracted from the TCG Published
2 // Trusted Platform Module Library
3 // Part 4: Supporting Routines
4 // Family "2.0"
5 // Level 00 Revision 01.16
6 // October 30, 2014
7 
8 static const TPMA_CC           s_ccAttr [] =      {
9        {0x011f, 0, 1,        0, 0, 2, 0, 0,      0},    //   TPM_CC_NV_UndefineSpaceSpecial
10        {0x0120, 0, 1,        0, 0, 2, 0, 0,      0},    //   TPM_CC_EvictControl
11        {0x0121, 0, 1,        1, 0, 1, 0, 0,      0},    //   TPM_CC_HierarchyControl
12        {0x0122, 0, 1,        0, 0, 2, 0, 0,      0},    //   TPM_CC_NV_UndefineSpace
13        {0x0123, 0, 0,        0, 0, 0, 0, 0,      0},    //   No command
14        {0x0124, 0, 1,        1, 0, 1, 0, 0,      0},    //   TPM_CC_ChangeEPS
15        {0x0125, 0, 1,        1, 0, 1, 0, 0,      0},    //   TPM_CC_ChangePPS
16        {0x0126, 0, 1,        1, 0, 1, 0, 0,      0},    //   TPM_CC_Clear
17        {0x0127, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_ClearControl
18        {0x0128, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_ClockSet
19        {0x0129, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_HierarchyChangeAuth
20        {0x012a, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_NV_DefineSpace
21        {0x012b, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_PCR_Allocate
22        {0x012c, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_PCR_SetAuthPolicy
23        {0x012d, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_PP_Commands
24        {0x012e, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_SetPrimaryPolicy
25        {0x012f, 0, 0,        0, 0, 2, 0, 0,      0},    //   TPM_CC_FieldUpgradeStart
26        {0x0130, 0, 0,        0, 0, 1, 0, 0,      0},    //   TPM_CC_ClockRateAdjust
27        {0x0131, 0, 0,        0, 0, 1, 1, 0,      0},    //   TPM_CC_CreatePrimary
28        {0x0132, 0, 0,        0, 0, 1, 0, 0,      0},    //   TPM_CC_NV_GlobalWriteLock
29        {0x0133, 0, 1,        0, 0, 2, 0, 0,      0},    //   TPM_CC_GetCommandAuditDigest
30        {0x0134, 0, 1,        0, 0, 2, 0, 0,      0},    //   TPM_CC_NV_Increment
31        {0x0135, 0, 1,        0, 0, 2, 0, 0,      0},    //   TPM_CC_NV_SetBits
32        {0x0136, 0, 1,        0, 0, 2, 0, 0,      0},    //   TPM_CC_NV_Extend
33        {0x0137, 0, 1,        0, 0, 2, 0, 0,      0},    //   TPM_CC_NV_Write
34        {0x0138, 0, 1,        0, 0, 2, 0, 0,      0},    //   TPM_CC_NV_WriteLock
35        {0x0139, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_DictionaryAttackLockReset
36        {0x013a, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_DictionaryAttackParameters
37        {0x013b, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_NV_ChangeAuth
38        {0x013c, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_PCR_Event
39        {0x013d, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_PCR_Reset
40        {0x013e, 0, 0,        0, 1, 1, 0, 0,      0},    //   TPM_CC_SequenceComplete
41        {0x013f, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_SetAlgorithmSet
42        {0x0140, 0, 1,        0, 0, 1, 0, 0,      0},    //   TPM_CC_SetCommandCodeAuditStatus
43        {0x0141, 0, 1,        0, 0, 0, 0, 0,      0},    //   TPM_CC_FieldUpgradeData
44        {0x0142, 0, 1,        0, 0, 0, 0, 0,      0},    //   TPM_CC_IncrementalSelfTest
45        {0x0143, 0, 1,        0, 0, 0, 0, 0,      0},    //   TPM_CC_SelfTest
46        {0x0144, 0, 1,        0, 0, 0, 0, 0,      0},    //   TPM_CC_Startup
47        {0x0145, 0, 1,        0, 0, 0, 0, 0,      0},    //   TPM_CC_Shutdown
48        {0x0146, 0, 1,        0, 0, 0, 0, 0,      0},    //   TPM_CC_StirRandom
49         {0x0147,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_ActivateCredential
50         {0x0148,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_Certify
51         {0x0149,   0,   0,   0,   0,   3,   0,   0,   0},   //   TPM_CC_PolicyNV
52         {0x014a,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_CertifyCreation
53         {0x014b,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_Duplicate
54         {0x014c,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_GetTime
55         {0x014d,   0,   0,   0,   0,   3,   0,   0,   0},   //   TPM_CC_GetSessionAuditDigest
56         {0x014e,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_NV_Read
57         {0x014f,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_NV_ReadLock
58         {0x0150,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_ObjectChangeAuth
59         {0x0151,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_PolicySecret
60         {0x0152,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_Rewrap
61         {0x0153,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_Create
62         {0x0154,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_ECDH_ZGen
63         {0x0155,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_HMAC
64         {0x0156,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_Import
65         {0x0157,   0,   0,   0,   0,   1,   1,   0,   0},   //   TPM_CC_Load
66         {0x0158,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_Quote
67         {0x0159,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_RSA_Decrypt
68         {0x015a,   0,   0,   0,   0,   0,   0,   0,   0},   //   No command
69         {0x015b,   0,   0,   0,   0,   1,   1,   0,   0},   //   TPM_CC_HMAC_Start
70         {0x015c,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_SequenceUpdate
71         {0x015d,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_Sign
72         {0x015e,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_Unseal
73         {0x015f,   0,   0,   0,   0,   0,   0,   0,   0},   //   No command
74         {0x0160,   0,   0,   0,   0,   2,   0,   0,   0},   //   TPM_CC_PolicySigned
75         {0x0161,   0,   0,   0,   0,   0,   1,   0,   0},   //   TPM_CC_ContextLoad
76         {0x0162,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_ContextSave
77         {0x0163,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_ECDH_KeyGen
78         {0x0164,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_EncryptDecrypt
79         {0x0165,   0,   0,   0,   0,   0,   0,   0,   0},   //   TPM_CC_FlushContext
80         {0x0166,   0,   0,   0,   0,   0,   0,   0,   0},   //   No command
81         {0x0167,   0,   0,   0,   0,   0,   1,   0,   0},   //   TPM_CC_LoadExternal
82         {0x0168,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_MakeCredential
83         {0x0169,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_NV_ReadPublic
84         {0x016a,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyAuthorize
85         {0x016b,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyAuthValue
86         {0x016c,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyCommandCode
87         {0x016d,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyCounterTimer
88         {0x016e,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyCpHash
89         {0x016f,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyLocality
90         {0x0170,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyNameHash
91         {0x0171,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyOR
92         {0x0172,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyTicket
93         {0x0173,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_ReadPublic
94         {0x0174,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_RSA_Encrypt
95         {0x0175,   0,   0,   0,   0,   0,   0,   0,   0},   //   No command
96         {0x0176,   0,   0,   0,   0,   2,   1,   0,   0},   //   TPM_CC_StartAuthSession
97         {0x0177,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_VerifySignature
98         {0x0178,   0,   0,   0,   0,   0,   0,   0,   0},   //   TPM_CC_ECC_Parameters
99         {0x0179,   0,   0,   0,   0,   0,   0,   0,   0},   //   TPM_CC_FirmwareRead
100         {0x017a,   0,   0,   0,   0,   0,   0,   0,   0},   //   TPM_CC_GetCapability
101         {0x017b,   0,   0,   0,   0,   0,   0,   0,   0},   //   TPM_CC_GetRandom
102         {0x017c,   0,   0,   0,   0,   0,   0,   0,   0},   //   TPM_CC_GetTestResult
103         {0x017d,   0,   0,   0,   0,   0,   0,   0,   0},   //   TPM_CC_Hash
104         {0x017e,   0,   0,   0,   0,   0,   0,   0,   0},   //   TPM_CC_PCR_Read
105         {0x017f,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyPCR
106         {0x0180,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyRestart
107         {0x0181,   0,   0,   0,   0,   0,   0,   0,   0},   //   TPM_CC_ReadClock
108         {0x0182,   0,   1,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PCR_Extend
109         {0x0183,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PCR_SetAuthValue
110         {0x0184,   0,   0,   0,   0,   3,   0,   0,   0},   //   TPM_CC_NV_Certify
111         {0x0185,   0,   1,   0,   1,   2,   0,   0,   0},   //   TPM_CC_EventSequenceComplete
112         {0x0186,   0,   0,   0,   0,   0,   1,   0,   0},   //   TPM_CC_HashSequenceStart
113         {0x0187,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyPhysicalPresence
114         {0x0188,   0,   0,   0,   0,   1,   0,   0,   0},   //   TPM_CC_PolicyDuplicationSelect
115          {0x0189,   0,   0,   0,   0,   1,   0,   0,   0},     //   TPM_CC_PolicyGetDigest
116          {0x018a,   0,   0,   0,   0,   0,   0,   0,   0},     //   TPM_CC_TestParms
117          {0x018b,   0,   0,   0,   0,   1,   0,   0,   0},     //   TPM_CC_Commit
118          {0x018c,   0,   0,   0,   0,   1,   0,   0,   0},     //   TPM_CC_PolicyPassword
119          {0x018d,   0,   0,   0,   0,   1,   0,   0,   0},     //   TPM_CC_ZGen_2Phase
120          {0x018e,   0,   0,   0,   0,   0,   0,   0,   0},     //   TPM_CC_EC_Ephemeral
121          {0x018f,   0,   0,   0,   0,   1,   0,   0,   0}      //   TPM_CC_PolicyNvWritten
122 };
123 typedef    UINT16                    _ATTR_;
124 #define    NOT_IMPLEMENTED           (_ATTR_)(0)
125 #define    ENCRYPT_2                (_ATTR_)(1 <<          0)
126 #define    ENCRYPT_4                (_ATTR_)(1 <<          1)
127 #define    DECRYPT_2                (_ATTR_)(1 <<          2)
128 #define    DECRYPT_4                (_ATTR_)(1 <<          3)
129 #define    HANDLE_1_USER            (_ATTR_)(1 <<          4)
130 #define    HANDLE_1_ADMIN           (_ATTR_)(1 <<          5)
131 #define    HANDLE_1_DUP             (_ATTR_)(1 <<          6)
132 #define    HANDLE_2_USER            (_ATTR_)(1 <<          7)
133 #define    PP_COMMAND               (_ATTR_)(1 <<          8)
134 #define    IS_IMPLEMENTED           (_ATTR_)(1 <<          9)
135 #define    NO_SESSIONS              (_ATTR_)(1 <<         10)
136 #define    NV_COMMAND               (_ATTR_)(1 <<         11)
137 #define    PP_REQUIRED              (_ATTR_)(1 <<         12)
138 #define    R_HANDLE                 (_ATTR_)(1 <<         13)
139 //
140 //      This is the command code attribute structure.
141 //
142 typedef UINT16 COMMAND_ATTRIBUTES;
143 static const COMMAND_ATTRIBUTES    s_commandAttributes [] = {
144    (_ATTR_)(CC_NV_UndefineSpaceSpecial     *
145       (IS_IMPLEMENTED+HANDLE_1_ADMIN+HANDLE_2_USER+PP_COMMAND)),                                    // 0x011f
146    (_ATTR_)(CC_EvictControl                *
147       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                                   // 0x0120
148    (_ATTR_)(CC_HierarchyControl            *
149       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                                   // 0x0121
150    (_ATTR_)(CC_NV_UndefineSpace            *
151       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                                   // 0x0122
152    (_ATTR_)                                  (NOT_IMPLEMENTED),
153       // 0x0123 - Not assigned
154    (_ATTR_)(CC_ChangeEPS                   *
155       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                                   // 0x0124
156    (_ATTR_)(CC_ChangePPS                   *
157       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                                   // 0x0125
158    (_ATTR_)(CC_Clear                       *
159       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                                   // 0x0126
160    (_ATTR_)(CC_ClearControl                *
161       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                                   // 0x0127
162    (_ATTR_)(CC_ClockSet                    *
163       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                                   // 0x0128
164    (_ATTR_)(CC_HierarchyChangeAuth         *
165       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+PP_COMMAND)),                                         // 0x0129
166    (_ATTR_)(CC_NV_DefineSpace              *
167       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+PP_COMMAND)),                                         // 0x012a
168    (_ATTR_)(CC_PCR_Allocate                *
169       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                                   // 0x012b
170    (_ATTR_)(CC_PCR_SetAuthPolicy           *
171       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+PP_COMMAND)),                                         // 0x012c
172    (_ATTR_)(CC_PP_Commands                 *
173       (IS_IMPLEMENTED+HANDLE_1_USER+PP_REQUIRED)),                                                  // 0x012d
174    (_ATTR_)(CC_SetPrimaryPolicy            *
175       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+PP_COMMAND)),                                         // 0x012e
176    (_ATTR_)(CC_FieldUpgradeStart           *
177       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_ADMIN+PP_COMMAND)),                                        // 0x012f
178    (_ATTR_)(CC_ClockRateAdjust             *
179       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                                   // 0x0130
180 //
181    (_ATTR_)(CC_CreatePrimary               *
182       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+PP_COMMAND+ENCRYPT_2+R_HANDLE)), // 0x0131
183    (_ATTR_)(CC_NV_GlobalWriteLock          *
184       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                // 0x0132
185    (_ATTR_)(CC_GetCommandAuditDigest       *
186       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+HANDLE_2_USER+ENCRYPT_2)),         // 0x0133
187    (_ATTR_)(CC_NV_Increment                * (IS_IMPLEMENTED+HANDLE_1_USER)),
188       // 0x0134
189    (_ATTR_)(CC_NV_SetBits                  * (IS_IMPLEMENTED+HANDLE_1_USER)),
190       // 0x0135
191    (_ATTR_)(CC_NV_Extend                   *
192       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER)),                                 // 0x0136
193    (_ATTR_)(CC_NV_Write                    *
194       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER)),                                 // 0x0137
195    (_ATTR_)(CC_NV_WriteLock                * (IS_IMPLEMENTED+HANDLE_1_USER)),
196       // 0x0138
197    (_ATTR_)(CC_DictionaryAttackLockReset * (IS_IMPLEMENTED+HANDLE_1_USER)),
198       // 0x0139
199    (_ATTR_)(CC_DictionaryAttackParameters * (IS_IMPLEMENTED+HANDLE_1_USER)),
200       // 0x013a
201    (_ATTR_)(CC_NV_ChangeAuth               *
202       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_ADMIN)),                                // 0x013b
203    (_ATTR_)(CC_PCR_Event                   *
204       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER)),                                 // 0x013c
205    (_ATTR_)(CC_PCR_Reset                   * (IS_IMPLEMENTED+HANDLE_1_USER)),
206       // 0x013d
207    (_ATTR_)(CC_SequenceComplete            *
208       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                       // 0x013e
209    (_ATTR_)(CC_SetAlgorithmSet             * (IS_IMPLEMENTED+HANDLE_1_USER)),
210       // 0x013f
211    (_ATTR_)(CC_SetCommandCodeAuditStatus *
212       (IS_IMPLEMENTED+HANDLE_1_USER+PP_COMMAND)),                                // 0x0140
213    (_ATTR_)(CC_FieldUpgradeData            * (IS_IMPLEMENTED+DECRYPT_2)),
214       // 0x0141
215    (_ATTR_)(CC_IncrementalSelfTest         * (IS_IMPLEMENTED)),
216       // 0x0142
217    (_ATTR_)(CC_SelfTest                    * (IS_IMPLEMENTED)),
218       // 0x0143
219    (_ATTR_)(CC_Startup                     * (IS_IMPLEMENTED+NO_SESSIONS)),
220       // 0x0144
221    (_ATTR_)(CC_Shutdown                    * (IS_IMPLEMENTED)),
222       // 0x0145
223    (_ATTR_)(CC_StirRandom                  * (IS_IMPLEMENTED+DECRYPT_2)),
224       // 0x0146
225    (_ATTR_)(CC_ActivateCredential          *
226       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_ADMIN+HANDLE_2_USER+ENCRYPT_2)),        // 0x0147
227    (_ATTR_)(CC_Certify                     *
228       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_ADMIN+HANDLE_2_USER+ENCRYPT_2)),        // 0x0148
229    (_ATTR_)(CC_PolicyNV                    *
230       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER)),                                 // 0x0149
231    (_ATTR_)(CC_CertifyCreation             *
232       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                       // 0x014a
233    (_ATTR_)(CC_Duplicate                   *
234       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_DUP+ENCRYPT_2)),                        // 0x014b
235    (_ATTR_)(CC_GetTime                     *
236       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+HANDLE_2_USER+ENCRYPT_2)),         // 0x014c
237    (_ATTR_)(CC_GetSessionAuditDigest       *
238       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+HANDLE_2_USER+ENCRYPT_2)),         // 0x014d
239    (_ATTR_)(CC_NV_Read                     *
240       (IS_IMPLEMENTED+HANDLE_1_USER+ENCRYPT_2)),                                 // 0x014e
241    (_ATTR_)(CC_NV_ReadLock                 * (IS_IMPLEMENTED+HANDLE_1_USER)),
242       // 0x014f
243    (_ATTR_)(CC_ObjectChangeAuth            *
244       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_ADMIN+ENCRYPT_2)),                      // 0x0150
245    (_ATTR_)(CC_PolicySecret                *
246       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                       // 0x0151
247    (_ATTR_)(CC_Rewrap                     *
248       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                      // 0x0152
249    (_ATTR_)(CC_Create                     *
250       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                      // 0x0153
251    (_ATTR_)(CC_ECDH_ZGen                  *
252       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                      // 0x0154
253    (_ATTR_)(CC_HMAC                       *
254       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                      // 0x0155
255    (_ATTR_)(CC_Import                     *
256       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                      // 0x0156
257    (_ATTR_)(CC_Load                       *
258       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2+R_HANDLE)),             // 0x0157
259    (_ATTR_)(CC_Quote                      *
260       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                      // 0x0158
261    (_ATTR_)(CC_RSA_Decrypt                *
262       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                      // 0x0159
263    (_ATTR_)                                 (NOT_IMPLEMENTED),
264       // 0x015a - Not assigned
265    (_ATTR_)(CC_HMAC_Start                 *
266       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+R_HANDLE)),                       // 0x015b
267    (_ATTR_)(CC_SequenceUpdate             *
268       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER)),                                // 0x015c
269    (_ATTR_)(CC_Sign                       *
270       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER)),                                // 0x015d
271    (_ATTR_)(CC_Unseal                     *
272       (IS_IMPLEMENTED+HANDLE_1_USER+ENCRYPT_2)),                                // 0x015e
273    (_ATTR_)                                 (NOT_IMPLEMENTED),
274       // 0x015f - Not assigned
275    (_ATTR_)(CC_PolicySigned               * (IS_IMPLEMENTED+DECRYPT_2+ENCRYPT_2)),
276       // 0x0160
277    (_ATTR_)(CC_ContextLoad                * (IS_IMPLEMENTED+NO_SESSIONS+R_HANDLE)),
278       // 0x0161
279    (_ATTR_)(CC_ContextSave                * (IS_IMPLEMENTED+NO_SESSIONS)),
280       // 0x0162
281    (_ATTR_)(CC_ECDH_KeyGen                * (IS_IMPLEMENTED+ENCRYPT_2)),
282       // 0x0163
283    (_ATTR_)(CC_EncryptDecrypt             *
284       (IS_IMPLEMENTED+HANDLE_1_USER+ENCRYPT_2)),                                // 0x0164
285    (_ATTR_)(CC_FlushContext               * (IS_IMPLEMENTED+NO_SESSIONS)),
286       // 0x0165
287    (_ATTR_)                                 (NOT_IMPLEMENTED),
288       // 0x0166 - Not assigned
289    (_ATTR_)(CC_LoadExternal               *
290       (IS_IMPLEMENTED+DECRYPT_2+ENCRYPT_2+R_HANDLE)),                           // 0x0167
291    (_ATTR_)(CC_MakeCredential             * (IS_IMPLEMENTED+DECRYPT_2+ENCRYPT_2)),
292       // 0x0168
293    (_ATTR_)(CC_NV_ReadPublic              * (IS_IMPLEMENTED+ENCRYPT_2)),
294       // 0x0169
295    (_ATTR_)(CC_PolicyAuthorize            * (IS_IMPLEMENTED+DECRYPT_2)),
296       // 0x016a
297    (_ATTR_)(CC_PolicyAuthValue            * (IS_IMPLEMENTED)),
298       // 0x016b
299    (_ATTR_)(CC_PolicyCommandCode          * (IS_IMPLEMENTED)),
300       // 0x016c
301    (_ATTR_)(CC_PolicyCounterTimer         * (IS_IMPLEMENTED+DECRYPT_2)),
302       // 0x016d
303    (_ATTR_)(CC_PolicyCpHash               * (IS_IMPLEMENTED+DECRYPT_2)),
304       // 0x016e
305    (_ATTR_)(CC_PolicyLocality             * (IS_IMPLEMENTED)),
306       // 0x016f
307    (_ATTR_)(CC_PolicyNameHash             * (IS_IMPLEMENTED+DECRYPT_2)),
308       // 0x0170
309    (_ATTR_)(CC_PolicyOR                   * (IS_IMPLEMENTED)),
310       // 0x0171
311    (_ATTR_)(CC_PolicyTicket               * (IS_IMPLEMENTED+DECRYPT_2)),
312       // 0x0172
313    (_ATTR_)(CC_ReadPublic                 * (IS_IMPLEMENTED+ENCRYPT_2)),
314       // 0x0173
315    (_ATTR_)(CC_RSA_Encrypt                * (IS_IMPLEMENTED+DECRYPT_2+ENCRYPT_2)),
316       // 0x0174
317    (_ATTR_)                                 (NOT_IMPLEMENTED),
318       // 0x0175 - Not assigned
319    (_ATTR_)(CC_StartAuthSession           *
320       (IS_IMPLEMENTED+DECRYPT_2+ENCRYPT_2+R_HANDLE)),                           // 0x0176
321    (_ATTR_)(CC_VerifySignature            * (IS_IMPLEMENTED+DECRYPT_2)),
322       // 0x0177
323    (_ATTR_)(CC_ECC_Parameters             * (IS_IMPLEMENTED)),
324       // 0x0178
325    (_ATTR_)(CC_FirmwareRead               * (IS_IMPLEMENTED+ENCRYPT_2)),
326       // 0x0179
327    (_ATTR_)(CC_GetCapability              * (IS_IMPLEMENTED)),
328       // 0x017a
329    (_ATTR_)(CC_GetRandom                  * (IS_IMPLEMENTED+ENCRYPT_2)),
330       // 0x017b
331    (_ATTR_)(CC_GetTestResult              * (IS_IMPLEMENTED+ENCRYPT_2)),
332       // 0x017c
333    (_ATTR_)(CC_Hash                       * (IS_IMPLEMENTED+DECRYPT_2+ENCRYPT_2)),
334       // 0x017d
335    (_ATTR_)(CC_PCR_Read                   * (IS_IMPLEMENTED)),
336       // 0x017e
337    (_ATTR_)(CC_PolicyPCR                  * (IS_IMPLEMENTED+DECRYPT_2)),
338       // 0x017f
339    (_ATTR_)(CC_PolicyRestart              * (IS_IMPLEMENTED)),
340       // 0x0180
341    (_ATTR_)(CC_ReadClock                  * (IS_IMPLEMENTED+NO_SESSIONS)),
342       // 0x0181
343    (_ATTR_)(CC_PCR_Extend                 * (IS_IMPLEMENTED+HANDLE_1_USER)),
344       // 0x0182
345    (_ATTR_)(CC_PCR_SetAuthValue           *
346       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER)),                                // 0x0183
347    (_ATTR_)(CC_NV_Certify                 *
348       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+HANDLE_2_USER+ENCRYPT_2)),        // 0x0184
349    (_ATTR_)(CC_EventSequenceComplete      *
350       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+HANDLE_2_USER)),                  // 0x0185
351    (_ATTR_)(CC_HashSequenceStart          * (IS_IMPLEMENTED+DECRYPT_2+R_HANDLE)),
352       // 0x0186
353    (_ATTR_)(CC_PolicyPhysicalPresence     * (IS_IMPLEMENTED)),
354       // 0x0187
355    (_ATTR_)(CC_PolicyDuplicationSelect    * (IS_IMPLEMENTED+DECRYPT_2)),
356       // 0x0188
357    (_ATTR_)(CC_PolicyGetDigest            * (IS_IMPLEMENTED+ENCRYPT_2)),
358       // 0x0189
359    (_ATTR_)(CC_TestParms                  * (IS_IMPLEMENTED)),
360       // 0x018a
361    (_ATTR_)(CC_Commit                     *
362       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                      // 0x018b
363    (_ATTR_)(CC_PolicyPassword             * (IS_IMPLEMENTED)),
364       // 0x018c
365    (_ATTR_)(CC_ZGen_2Phase                *
366       (IS_IMPLEMENTED+DECRYPT_2+HANDLE_1_USER+ENCRYPT_2)),                      // 0x018d
367    (_ATTR_)(CC_EC_Ephemeral               * (IS_IMPLEMENTED+ENCRYPT_2)),
368       // 0x018e
369    (_ATTR_)(CC_PolicyNvWritten            * (IS_IMPLEMENTED))
370       // 0x018f
371 };
372