xref: /aosp_15_r20/external/ms-tpm-20-ref/TPMCmd/tpm/include/HandleProcess.h (revision 5c591343844d1f9da7da26467c4bf7efc8a7a413)
1*5c591343SA. Cody Schuffelen /* Microsoft Reference Implementation for TPM 2.0
2*5c591343SA. Cody Schuffelen  *
3*5c591343SA. Cody Schuffelen  *  The copyright in this software is being made available under the BSD License,
4*5c591343SA. Cody Schuffelen  *  included below. This software may be subject to other third party and
5*5c591343SA. Cody Schuffelen  *  contributor rights, including patent rights, and no such rights are granted
6*5c591343SA. Cody Schuffelen  *  under this license.
7*5c591343SA. Cody Schuffelen  *
8*5c591343SA. Cody Schuffelen  *  Copyright (c) Microsoft Corporation
9*5c591343SA. Cody Schuffelen  *
10*5c591343SA. Cody Schuffelen  *  All rights reserved.
11*5c591343SA. Cody Schuffelen  *
12*5c591343SA. Cody Schuffelen  *  BSD License
13*5c591343SA. Cody Schuffelen  *
14*5c591343SA. Cody Schuffelen  *  Redistribution and use in source and binary forms, with or without modification,
15*5c591343SA. Cody Schuffelen  *  are permitted provided that the following conditions are met:
16*5c591343SA. Cody Schuffelen  *
17*5c591343SA. Cody Schuffelen  *  Redistributions of source code must retain the above copyright notice, this list
18*5c591343SA. Cody Schuffelen  *  of conditions and the following disclaimer.
19*5c591343SA. Cody Schuffelen  *
20*5c591343SA. Cody Schuffelen  *  Redistributions in binary form must reproduce the above copyright notice, this
21*5c591343SA. Cody Schuffelen  *  list of conditions and the following disclaimer in the documentation and/or
22*5c591343SA. Cody Schuffelen  *  other materials provided with the distribution.
23*5c591343SA. Cody Schuffelen  *
24*5c591343SA. Cody Schuffelen  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS""
25*5c591343SA. Cody Schuffelen  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26*5c591343SA. Cody Schuffelen  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27*5c591343SA. Cody Schuffelen  *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
28*5c591343SA. Cody Schuffelen  *  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29*5c591343SA. Cody Schuffelen  *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30*5c591343SA. Cody Schuffelen  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
31*5c591343SA. Cody Schuffelen  *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32*5c591343SA. Cody Schuffelen  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33*5c591343SA. Cody Schuffelen  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34*5c591343SA. Cody Schuffelen  */
35*5c591343SA. Cody Schuffelen /*(Auto-generated)
36*5c591343SA. Cody Schuffelen  *  Created by TpmDispatch; Version 4.0 July 8,2017
37*5c591343SA. Cody Schuffelen  *  Date: Feb 28, 2020  Time: 03:04:48PM
38*5c591343SA. Cody Schuffelen  */
39*5c591343SA. Cody Schuffelen 
40*5c591343SA. Cody Schuffelen #if CC_Startup
41*5c591343SA. Cody Schuffelen case TPM_CC_Startup:
42*5c591343SA. Cody Schuffelen     break;
43*5c591343SA. Cody Schuffelen #endif // CC_Startup
44*5c591343SA. Cody Schuffelen #if CC_Shutdown
45*5c591343SA. Cody Schuffelen case TPM_CC_Shutdown:
46*5c591343SA. Cody Schuffelen     break;
47*5c591343SA. Cody Schuffelen #endif // CC_Shutdown
48*5c591343SA. Cody Schuffelen #if CC_SelfTest
49*5c591343SA. Cody Schuffelen case TPM_CC_SelfTest:
50*5c591343SA. Cody Schuffelen     break;
51*5c591343SA. Cody Schuffelen #endif // CC_SelfTest
52*5c591343SA. Cody Schuffelen #if CC_IncrementalSelfTest
53*5c591343SA. Cody Schuffelen case TPM_CC_IncrementalSelfTest:
54*5c591343SA. Cody Schuffelen     break;
55*5c591343SA. Cody Schuffelen #endif // CC_IncrementalSelfTest
56*5c591343SA. Cody Schuffelen #if CC_GetTestResult
57*5c591343SA. Cody Schuffelen case TPM_CC_GetTestResult:
58*5c591343SA. Cody Schuffelen     break;
59*5c591343SA. Cody Schuffelen #endif // CC_GetTestResult
60*5c591343SA. Cody Schuffelen #if CC_StartAuthSession
61*5c591343SA. Cody Schuffelen case TPM_CC_StartAuthSession:
62*5c591343SA. Cody Schuffelen     *handleCount = 2;
63*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
64*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
65*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
66*5c591343SA. Cody Schuffelen     result = TPMI_DH_ENTITY_Unmarshal(&handles[1], handleBufferStart,
67*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
68*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
69*5c591343SA. Cody Schuffelen     break;
70*5c591343SA. Cody Schuffelen #endif // CC_StartAuthSession
71*5c591343SA. Cody Schuffelen #if CC_PolicyRestart
72*5c591343SA. Cody Schuffelen case TPM_CC_PolicyRestart:
73*5c591343SA. Cody Schuffelen     *handleCount = 1;
74*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
75*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
76*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
77*5c591343SA. Cody Schuffelen     break;
78*5c591343SA. Cody Schuffelen #endif // CC_PolicyRestart
79*5c591343SA. Cody Schuffelen #if CC_Create
80*5c591343SA. Cody Schuffelen case TPM_CC_Create:
81*5c591343SA. Cody Schuffelen     *handleCount = 1;
82*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
83*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
84*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
85*5c591343SA. Cody Schuffelen     break;
86*5c591343SA. Cody Schuffelen #endif // CC_Create
87*5c591343SA. Cody Schuffelen #if CC_Load
88*5c591343SA. Cody Schuffelen case TPM_CC_Load:
89*5c591343SA. Cody Schuffelen     *handleCount = 1;
90*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
91*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
92*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
93*5c591343SA. Cody Schuffelen     break;
94*5c591343SA. Cody Schuffelen #endif // CC_Load
95*5c591343SA. Cody Schuffelen #if CC_LoadExternal
96*5c591343SA. Cody Schuffelen case TPM_CC_LoadExternal:
97*5c591343SA. Cody Schuffelen     break;
98*5c591343SA. Cody Schuffelen #endif // CC_LoadExternal
99*5c591343SA. Cody Schuffelen #if CC_ReadPublic
100*5c591343SA. Cody Schuffelen case TPM_CC_ReadPublic:
101*5c591343SA. Cody Schuffelen     *handleCount = 1;
102*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
103*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
104*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
105*5c591343SA. Cody Schuffelen     break;
106*5c591343SA. Cody Schuffelen #endif // CC_ReadPublic
107*5c591343SA. Cody Schuffelen #if CC_ActivateCredential
108*5c591343SA. Cody Schuffelen case TPM_CC_ActivateCredential:
109*5c591343SA. Cody Schuffelen     *handleCount = 2;
110*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
111*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
112*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
113*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
114*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
115*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
116*5c591343SA. Cody Schuffelen     break;
117*5c591343SA. Cody Schuffelen #endif // CC_ActivateCredential
118*5c591343SA. Cody Schuffelen #if CC_MakeCredential
119*5c591343SA. Cody Schuffelen case TPM_CC_MakeCredential:
120*5c591343SA. Cody Schuffelen     *handleCount = 1;
121*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
122*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
123*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
124*5c591343SA. Cody Schuffelen     break;
125*5c591343SA. Cody Schuffelen #endif // CC_MakeCredential
126*5c591343SA. Cody Schuffelen #if CC_Unseal
127*5c591343SA. Cody Schuffelen case TPM_CC_Unseal:
128*5c591343SA. Cody Schuffelen     *handleCount = 1;
129*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
130*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
131*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
132*5c591343SA. Cody Schuffelen     break;
133*5c591343SA. Cody Schuffelen #endif // CC_Unseal
134*5c591343SA. Cody Schuffelen #if CC_ObjectChangeAuth
135*5c591343SA. Cody Schuffelen case TPM_CC_ObjectChangeAuth:
136*5c591343SA. Cody Schuffelen     *handleCount = 2;
137*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
138*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
139*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
140*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
141*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
142*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
143*5c591343SA. Cody Schuffelen     break;
144*5c591343SA. Cody Schuffelen #endif // CC_ObjectChangeAuth
145*5c591343SA. Cody Schuffelen #if CC_CreateLoaded
146*5c591343SA. Cody Schuffelen case TPM_CC_CreateLoaded:
147*5c591343SA. Cody Schuffelen     *handleCount = 1;
148*5c591343SA. Cody Schuffelen     result = TPMI_DH_PARENT_Unmarshal(&handles[0], handleBufferStart,
149*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
150*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
151*5c591343SA. Cody Schuffelen     break;
152*5c591343SA. Cody Schuffelen #endif // CC_CreateLoaded
153*5c591343SA. Cody Schuffelen #if CC_Duplicate
154*5c591343SA. Cody Schuffelen case TPM_CC_Duplicate:
155*5c591343SA. Cody Schuffelen     *handleCount = 2;
156*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
157*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
158*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
159*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
160*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
161*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
162*5c591343SA. Cody Schuffelen     break;
163*5c591343SA. Cody Schuffelen #endif // CC_Duplicate
164*5c591343SA. Cody Schuffelen #if CC_Rewrap
165*5c591343SA. Cody Schuffelen case TPM_CC_Rewrap:
166*5c591343SA. Cody Schuffelen     *handleCount = 2;
167*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
168*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
169*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
170*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
171*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
172*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
173*5c591343SA. Cody Schuffelen     break;
174*5c591343SA. Cody Schuffelen #endif // CC_Rewrap
175*5c591343SA. Cody Schuffelen #if CC_Import
176*5c591343SA. Cody Schuffelen case TPM_CC_Import:
177*5c591343SA. Cody Schuffelen     *handleCount = 1;
178*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
179*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
180*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
181*5c591343SA. Cody Schuffelen     break;
182*5c591343SA. Cody Schuffelen #endif // CC_Import
183*5c591343SA. Cody Schuffelen #if CC_RSA_Encrypt
184*5c591343SA. Cody Schuffelen case TPM_CC_RSA_Encrypt:
185*5c591343SA. Cody Schuffelen     *handleCount = 1;
186*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
187*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
188*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
189*5c591343SA. Cody Schuffelen     break;
190*5c591343SA. Cody Schuffelen #endif // CC_RSA_Encrypt
191*5c591343SA. Cody Schuffelen #if CC_RSA_Decrypt
192*5c591343SA. Cody Schuffelen case TPM_CC_RSA_Decrypt:
193*5c591343SA. Cody Schuffelen     *handleCount = 1;
194*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
195*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
196*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
197*5c591343SA. Cody Schuffelen     break;
198*5c591343SA. Cody Schuffelen #endif // CC_RSA_Decrypt
199*5c591343SA. Cody Schuffelen #if CC_ECDH_KeyGen
200*5c591343SA. Cody Schuffelen case TPM_CC_ECDH_KeyGen:
201*5c591343SA. Cody Schuffelen     *handleCount = 1;
202*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
203*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
204*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
205*5c591343SA. Cody Schuffelen     break;
206*5c591343SA. Cody Schuffelen #endif // CC_ECDH_KeyGen
207*5c591343SA. Cody Schuffelen #if CC_ECDH_ZGen
208*5c591343SA. Cody Schuffelen case TPM_CC_ECDH_ZGen:
209*5c591343SA. Cody Schuffelen     *handleCount = 1;
210*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
211*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
212*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
213*5c591343SA. Cody Schuffelen     break;
214*5c591343SA. Cody Schuffelen #endif // CC_ECDH_ZGen
215*5c591343SA. Cody Schuffelen #if CC_ECC_Parameters
216*5c591343SA. Cody Schuffelen case TPM_CC_ECC_Parameters:
217*5c591343SA. Cody Schuffelen     break;
218*5c591343SA. Cody Schuffelen #endif // CC_ECC_Parameters
219*5c591343SA. Cody Schuffelen #if CC_ZGen_2Phase
220*5c591343SA. Cody Schuffelen case TPM_CC_ZGen_2Phase:
221*5c591343SA. Cody Schuffelen     *handleCount = 1;
222*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
223*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
224*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
225*5c591343SA. Cody Schuffelen     break;
226*5c591343SA. Cody Schuffelen #endif // CC_ZGen_2Phase
227*5c591343SA. Cody Schuffelen #if CC_ECC_Encrypt
228*5c591343SA. Cody Schuffelen case TPM_CC_ECC_Encrypt:
229*5c591343SA. Cody Schuffelen     *handleCount = 1;
230*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
231*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
232*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
233*5c591343SA. Cody Schuffelen     break;
234*5c591343SA. Cody Schuffelen #endif // CC_ECC_Encrypt
235*5c591343SA. Cody Schuffelen #if CC_ECC_Decrypt
236*5c591343SA. Cody Schuffelen case TPM_CC_ECC_Decrypt:
237*5c591343SA. Cody Schuffelen     *handleCount = 1;
238*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
239*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
240*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
241*5c591343SA. Cody Schuffelen     break;
242*5c591343SA. Cody Schuffelen #endif // CC_ECC_Decrypt
243*5c591343SA. Cody Schuffelen #if CC_EncryptDecrypt
244*5c591343SA. Cody Schuffelen case TPM_CC_EncryptDecrypt:
245*5c591343SA. Cody Schuffelen     *handleCount = 1;
246*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
247*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
248*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
249*5c591343SA. Cody Schuffelen     break;
250*5c591343SA. Cody Schuffelen #endif // CC_EncryptDecrypt
251*5c591343SA. Cody Schuffelen #if CC_EncryptDecrypt2
252*5c591343SA. Cody Schuffelen case TPM_CC_EncryptDecrypt2:
253*5c591343SA. Cody Schuffelen     *handleCount = 1;
254*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
255*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
256*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
257*5c591343SA. Cody Schuffelen     break;
258*5c591343SA. Cody Schuffelen #endif // CC_EncryptDecrypt2
259*5c591343SA. Cody Schuffelen #if CC_Hash
260*5c591343SA. Cody Schuffelen case TPM_CC_Hash:
261*5c591343SA. Cody Schuffelen     break;
262*5c591343SA. Cody Schuffelen #endif // CC_Hash
263*5c591343SA. Cody Schuffelen #if CC_HMAC
264*5c591343SA. Cody Schuffelen case TPM_CC_HMAC:
265*5c591343SA. Cody Schuffelen     *handleCount = 1;
266*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
267*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
268*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
269*5c591343SA. Cody Schuffelen     break;
270*5c591343SA. Cody Schuffelen #endif // CC_HMAC
271*5c591343SA. Cody Schuffelen #if CC_MAC
272*5c591343SA. Cody Schuffelen case TPM_CC_MAC:
273*5c591343SA. Cody Schuffelen     *handleCount = 1;
274*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
275*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
276*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
277*5c591343SA. Cody Schuffelen     break;
278*5c591343SA. Cody Schuffelen #endif // CC_MAC
279*5c591343SA. Cody Schuffelen #if CC_GetRandom
280*5c591343SA. Cody Schuffelen case TPM_CC_GetRandom:
281*5c591343SA. Cody Schuffelen     break;
282*5c591343SA. Cody Schuffelen #endif // CC_GetRandom
283*5c591343SA. Cody Schuffelen #if CC_StirRandom
284*5c591343SA. Cody Schuffelen case TPM_CC_StirRandom:
285*5c591343SA. Cody Schuffelen     break;
286*5c591343SA. Cody Schuffelen #endif // CC_StirRandom
287*5c591343SA. Cody Schuffelen #if CC_HMAC_Start
288*5c591343SA. Cody Schuffelen case TPM_CC_HMAC_Start:
289*5c591343SA. Cody Schuffelen     *handleCount = 1;
290*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
291*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
292*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
293*5c591343SA. Cody Schuffelen     break;
294*5c591343SA. Cody Schuffelen #endif // CC_HMAC_Start
295*5c591343SA. Cody Schuffelen #if CC_MAC_Start
296*5c591343SA. Cody Schuffelen case TPM_CC_MAC_Start:
297*5c591343SA. Cody Schuffelen     *handleCount = 1;
298*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
299*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
300*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
301*5c591343SA. Cody Schuffelen     break;
302*5c591343SA. Cody Schuffelen #endif // CC_MAC_Start
303*5c591343SA. Cody Schuffelen #if CC_HashSequenceStart
304*5c591343SA. Cody Schuffelen case TPM_CC_HashSequenceStart:
305*5c591343SA. Cody Schuffelen     break;
306*5c591343SA. Cody Schuffelen #endif // CC_HashSequenceStart
307*5c591343SA. Cody Schuffelen #if CC_SequenceUpdate
308*5c591343SA. Cody Schuffelen case TPM_CC_SequenceUpdate:
309*5c591343SA. Cody Schuffelen     *handleCount = 1;
310*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
311*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
312*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
313*5c591343SA. Cody Schuffelen     break;
314*5c591343SA. Cody Schuffelen #endif // CC_SequenceUpdate
315*5c591343SA. Cody Schuffelen #if CC_SequenceComplete
316*5c591343SA. Cody Schuffelen case TPM_CC_SequenceComplete:
317*5c591343SA. Cody Schuffelen     *handleCount = 1;
318*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
319*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
320*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
321*5c591343SA. Cody Schuffelen     break;
322*5c591343SA. Cody Schuffelen #endif // CC_SequenceComplete
323*5c591343SA. Cody Schuffelen #if CC_EventSequenceComplete
324*5c591343SA. Cody Schuffelen case TPM_CC_EventSequenceComplete:
325*5c591343SA. Cody Schuffelen     *handleCount = 2;
326*5c591343SA. Cody Schuffelen     result = TPMI_DH_PCR_Unmarshal(&handles[0], handleBufferStart,
327*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
328*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
329*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
330*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
331*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
332*5c591343SA. Cody Schuffelen     break;
333*5c591343SA. Cody Schuffelen #endif // CC_EventSequenceComplete
334*5c591343SA. Cody Schuffelen #if CC_Certify
335*5c591343SA. Cody Schuffelen case TPM_CC_Certify:
336*5c591343SA. Cody Schuffelen     *handleCount = 2;
337*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
338*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
339*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
340*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
341*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
342*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
343*5c591343SA. Cody Schuffelen     break;
344*5c591343SA. Cody Schuffelen #endif // CC_Certify
345*5c591343SA. Cody Schuffelen #if CC_CertifyCreation
346*5c591343SA. Cody Schuffelen case TPM_CC_CertifyCreation:
347*5c591343SA. Cody Schuffelen     *handleCount = 2;
348*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
349*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
350*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
351*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
352*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
353*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
354*5c591343SA. Cody Schuffelen     break;
355*5c591343SA. Cody Schuffelen #endif // CC_CertifyCreation
356*5c591343SA. Cody Schuffelen #if CC_Quote
357*5c591343SA. Cody Schuffelen case TPM_CC_Quote:
358*5c591343SA. Cody Schuffelen     *handleCount = 1;
359*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
360*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
361*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
362*5c591343SA. Cody Schuffelen     break;
363*5c591343SA. Cody Schuffelen #endif // CC_Quote
364*5c591343SA. Cody Schuffelen #if CC_GetSessionAuditDigest
365*5c591343SA. Cody Schuffelen case TPM_CC_GetSessionAuditDigest:
366*5c591343SA. Cody Schuffelen     *handleCount = 3;
367*5c591343SA. Cody Schuffelen     result = TPMI_RH_ENDORSEMENT_Unmarshal(&handles[0], handleBufferStart,
368*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
369*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
370*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
371*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
372*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
373*5c591343SA. Cody Schuffelen     result = TPMI_SH_HMAC_Unmarshal(&handles[2], handleBufferStart,
374*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
375*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_3;
376*5c591343SA. Cody Schuffelen     break;
377*5c591343SA. Cody Schuffelen #endif // CC_GetSessionAuditDigest
378*5c591343SA. Cody Schuffelen #if CC_GetCommandAuditDigest
379*5c591343SA. Cody Schuffelen case TPM_CC_GetCommandAuditDigest:
380*5c591343SA. Cody Schuffelen     *handleCount = 2;
381*5c591343SA. Cody Schuffelen     result = TPMI_RH_ENDORSEMENT_Unmarshal(&handles[0], handleBufferStart,
382*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
383*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
384*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
385*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
386*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
387*5c591343SA. Cody Schuffelen     break;
388*5c591343SA. Cody Schuffelen #endif // CC_GetCommandAuditDigest
389*5c591343SA. Cody Schuffelen #if CC_GetTime
390*5c591343SA. Cody Schuffelen case TPM_CC_GetTime:
391*5c591343SA. Cody Schuffelen     *handleCount = 2;
392*5c591343SA. Cody Schuffelen     result = TPMI_RH_ENDORSEMENT_Unmarshal(&handles[0], handleBufferStart,
393*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
394*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
395*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
396*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
397*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
398*5c591343SA. Cody Schuffelen     break;
399*5c591343SA. Cody Schuffelen #endif // CC_GetTime
400*5c591343SA. Cody Schuffelen #if CC_CertifyX509
401*5c591343SA. Cody Schuffelen case TPM_CC_CertifyX509:
402*5c591343SA. Cody Schuffelen     *handleCount = 2;
403*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
404*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
405*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
406*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
407*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
408*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
409*5c591343SA. Cody Schuffelen     break;
410*5c591343SA. Cody Schuffelen #endif // CC_CertifyX509
411*5c591343SA. Cody Schuffelen #if CC_Commit
412*5c591343SA. Cody Schuffelen case TPM_CC_Commit:
413*5c591343SA. Cody Schuffelen     *handleCount = 1;
414*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
415*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
416*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
417*5c591343SA. Cody Schuffelen     break;
418*5c591343SA. Cody Schuffelen #endif // CC_Commit
419*5c591343SA. Cody Schuffelen #if CC_EC_Ephemeral
420*5c591343SA. Cody Schuffelen case TPM_CC_EC_Ephemeral:
421*5c591343SA. Cody Schuffelen     break;
422*5c591343SA. Cody Schuffelen #endif // CC_EC_Ephemeral
423*5c591343SA. Cody Schuffelen #if CC_VerifySignature
424*5c591343SA. Cody Schuffelen case TPM_CC_VerifySignature:
425*5c591343SA. Cody Schuffelen     *handleCount = 1;
426*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
427*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
428*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
429*5c591343SA. Cody Schuffelen     break;
430*5c591343SA. Cody Schuffelen #endif // CC_VerifySignature
431*5c591343SA. Cody Schuffelen #if CC_Sign
432*5c591343SA. Cody Schuffelen case TPM_CC_Sign:
433*5c591343SA. Cody Schuffelen     *handleCount = 1;
434*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
435*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
436*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
437*5c591343SA. Cody Schuffelen     break;
438*5c591343SA. Cody Schuffelen #endif // CC_Sign
439*5c591343SA. Cody Schuffelen #if CC_SetCommandCodeAuditStatus
440*5c591343SA. Cody Schuffelen case TPM_CC_SetCommandCodeAuditStatus:
441*5c591343SA. Cody Schuffelen     *handleCount = 1;
442*5c591343SA. Cody Schuffelen     result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
443*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
444*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
445*5c591343SA. Cody Schuffelen     break;
446*5c591343SA. Cody Schuffelen #endif // CC_SetCommandCodeAuditStatus
447*5c591343SA. Cody Schuffelen #if CC_PCR_Extend
448*5c591343SA. Cody Schuffelen case TPM_CC_PCR_Extend:
449*5c591343SA. Cody Schuffelen     *handleCount = 1;
450*5c591343SA. Cody Schuffelen     result = TPMI_DH_PCR_Unmarshal(&handles[0], handleBufferStart,
451*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
452*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
453*5c591343SA. Cody Schuffelen     break;
454*5c591343SA. Cody Schuffelen #endif // CC_PCR_Extend
455*5c591343SA. Cody Schuffelen #if CC_PCR_Event
456*5c591343SA. Cody Schuffelen case TPM_CC_PCR_Event:
457*5c591343SA. Cody Schuffelen     *handleCount = 1;
458*5c591343SA. Cody Schuffelen     result = TPMI_DH_PCR_Unmarshal(&handles[0], handleBufferStart,
459*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
460*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
461*5c591343SA. Cody Schuffelen     break;
462*5c591343SA. Cody Schuffelen #endif // CC_PCR_Event
463*5c591343SA. Cody Schuffelen #if CC_PCR_Read
464*5c591343SA. Cody Schuffelen case TPM_CC_PCR_Read:
465*5c591343SA. Cody Schuffelen     break;
466*5c591343SA. Cody Schuffelen #endif // CC_PCR_Read
467*5c591343SA. Cody Schuffelen #if CC_PCR_Allocate
468*5c591343SA. Cody Schuffelen case TPM_CC_PCR_Allocate:
469*5c591343SA. Cody Schuffelen     *handleCount = 1;
470*5c591343SA. Cody Schuffelen     result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
471*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
472*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
473*5c591343SA. Cody Schuffelen     break;
474*5c591343SA. Cody Schuffelen #endif // CC_PCR_Allocate
475*5c591343SA. Cody Schuffelen #if CC_PCR_SetAuthPolicy
476*5c591343SA. Cody Schuffelen case TPM_CC_PCR_SetAuthPolicy:
477*5c591343SA. Cody Schuffelen     *handleCount = 1;
478*5c591343SA. Cody Schuffelen     result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
479*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
480*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
481*5c591343SA. Cody Schuffelen     break;
482*5c591343SA. Cody Schuffelen #endif // CC_PCR_SetAuthPolicy
483*5c591343SA. Cody Schuffelen #if CC_PCR_SetAuthValue
484*5c591343SA. Cody Schuffelen case TPM_CC_PCR_SetAuthValue:
485*5c591343SA. Cody Schuffelen     *handleCount = 1;
486*5c591343SA. Cody Schuffelen     result = TPMI_DH_PCR_Unmarshal(&handles[0], handleBufferStart,
487*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
488*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
489*5c591343SA. Cody Schuffelen     break;
490*5c591343SA. Cody Schuffelen #endif // CC_PCR_SetAuthValue
491*5c591343SA. Cody Schuffelen #if CC_PCR_Reset
492*5c591343SA. Cody Schuffelen case TPM_CC_PCR_Reset:
493*5c591343SA. Cody Schuffelen     *handleCount = 1;
494*5c591343SA. Cody Schuffelen     result = TPMI_DH_PCR_Unmarshal(&handles[0], handleBufferStart,
495*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
496*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
497*5c591343SA. Cody Schuffelen     break;
498*5c591343SA. Cody Schuffelen #endif // CC_PCR_Reset
499*5c591343SA. Cody Schuffelen #if CC_PolicySigned
500*5c591343SA. Cody Schuffelen case TPM_CC_PolicySigned:
501*5c591343SA. Cody Schuffelen     *handleCount = 2;
502*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
503*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
504*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
505*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[1], handleBufferStart,
506*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
507*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
508*5c591343SA. Cody Schuffelen     break;
509*5c591343SA. Cody Schuffelen #endif // CC_PolicySigned
510*5c591343SA. Cody Schuffelen #if CC_PolicySecret
511*5c591343SA. Cody Schuffelen case TPM_CC_PolicySecret:
512*5c591343SA. Cody Schuffelen     *handleCount = 2;
513*5c591343SA. Cody Schuffelen     result = TPMI_DH_ENTITY_Unmarshal(&handles[0], handleBufferStart,
514*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
515*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
516*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[1], handleBufferStart,
517*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
518*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
519*5c591343SA. Cody Schuffelen     break;
520*5c591343SA. Cody Schuffelen #endif // CC_PolicySecret
521*5c591343SA. Cody Schuffelen #if CC_PolicyTicket
522*5c591343SA. Cody Schuffelen case TPM_CC_PolicyTicket:
523*5c591343SA. Cody Schuffelen     *handleCount = 1;
524*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
525*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
526*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
527*5c591343SA. Cody Schuffelen     break;
528*5c591343SA. Cody Schuffelen #endif // CC_PolicyTicket
529*5c591343SA. Cody Schuffelen #if CC_PolicyOR
530*5c591343SA. Cody Schuffelen case TPM_CC_PolicyOR:
531*5c591343SA. Cody Schuffelen     *handleCount = 1;
532*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
533*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
534*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
535*5c591343SA. Cody Schuffelen     break;
536*5c591343SA. Cody Schuffelen #endif // CC_PolicyOR
537*5c591343SA. Cody Schuffelen #if CC_PolicyPCR
538*5c591343SA. Cody Schuffelen case TPM_CC_PolicyPCR:
539*5c591343SA. Cody Schuffelen     *handleCount = 1;
540*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
541*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
542*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
543*5c591343SA. Cody Schuffelen     break;
544*5c591343SA. Cody Schuffelen #endif // CC_PolicyPCR
545*5c591343SA. Cody Schuffelen #if CC_PolicyLocality
546*5c591343SA. Cody Schuffelen case TPM_CC_PolicyLocality:
547*5c591343SA. Cody Schuffelen     *handleCount = 1;
548*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
549*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
550*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
551*5c591343SA. Cody Schuffelen     break;
552*5c591343SA. Cody Schuffelen #endif // CC_PolicyLocality
553*5c591343SA. Cody Schuffelen #if CC_PolicyNV
554*5c591343SA. Cody Schuffelen case TPM_CC_PolicyNV:
555*5c591343SA. Cody Schuffelen     *handleCount = 3;
556*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
557*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
558*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
559*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
560*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
561*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
562*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[2], handleBufferStart,
563*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
564*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_3;
565*5c591343SA. Cody Schuffelen     break;
566*5c591343SA. Cody Schuffelen #endif // CC_PolicyNV
567*5c591343SA. Cody Schuffelen #if CC_PolicyCounterTimer
568*5c591343SA. Cody Schuffelen case TPM_CC_PolicyCounterTimer:
569*5c591343SA. Cody Schuffelen     *handleCount = 1;
570*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
571*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
572*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
573*5c591343SA. Cody Schuffelen     break;
574*5c591343SA. Cody Schuffelen #endif // CC_PolicyCounterTimer
575*5c591343SA. Cody Schuffelen #if CC_PolicyCommandCode
576*5c591343SA. Cody Schuffelen case TPM_CC_PolicyCommandCode:
577*5c591343SA. Cody Schuffelen     *handleCount = 1;
578*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
579*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
580*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
581*5c591343SA. Cody Schuffelen     break;
582*5c591343SA. Cody Schuffelen #endif // CC_PolicyCommandCode
583*5c591343SA. Cody Schuffelen #if CC_PolicyPhysicalPresence
584*5c591343SA. Cody Schuffelen case TPM_CC_PolicyPhysicalPresence:
585*5c591343SA. Cody Schuffelen     *handleCount = 1;
586*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
587*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
588*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
589*5c591343SA. Cody Schuffelen     break;
590*5c591343SA. Cody Schuffelen #endif // CC_PolicyPhysicalPresence
591*5c591343SA. Cody Schuffelen #if CC_PolicyCpHash
592*5c591343SA. Cody Schuffelen case TPM_CC_PolicyCpHash:
593*5c591343SA. Cody Schuffelen     *handleCount = 1;
594*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
595*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
596*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
597*5c591343SA. Cody Schuffelen     break;
598*5c591343SA. Cody Schuffelen #endif // CC_PolicyCpHash
599*5c591343SA. Cody Schuffelen #if CC_PolicyNameHash
600*5c591343SA. Cody Schuffelen case TPM_CC_PolicyNameHash:
601*5c591343SA. Cody Schuffelen     *handleCount = 1;
602*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
603*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
604*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
605*5c591343SA. Cody Schuffelen     break;
606*5c591343SA. Cody Schuffelen #endif // CC_PolicyNameHash
607*5c591343SA. Cody Schuffelen #if CC_PolicyDuplicationSelect
608*5c591343SA. Cody Schuffelen case TPM_CC_PolicyDuplicationSelect:
609*5c591343SA. Cody Schuffelen     *handleCount = 1;
610*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
611*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
612*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
613*5c591343SA. Cody Schuffelen     break;
614*5c591343SA. Cody Schuffelen #endif // CC_PolicyDuplicationSelect
615*5c591343SA. Cody Schuffelen #if CC_PolicyAuthorize
616*5c591343SA. Cody Schuffelen case TPM_CC_PolicyAuthorize:
617*5c591343SA. Cody Schuffelen     *handleCount = 1;
618*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
619*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
620*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
621*5c591343SA. Cody Schuffelen     break;
622*5c591343SA. Cody Schuffelen #endif // CC_PolicyAuthorize
623*5c591343SA. Cody Schuffelen #if CC_PolicyAuthValue
624*5c591343SA. Cody Schuffelen case TPM_CC_PolicyAuthValue:
625*5c591343SA. Cody Schuffelen     *handleCount = 1;
626*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
627*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
628*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
629*5c591343SA. Cody Schuffelen     break;
630*5c591343SA. Cody Schuffelen #endif // CC_PolicyAuthValue
631*5c591343SA. Cody Schuffelen #if CC_PolicyPassword
632*5c591343SA. Cody Schuffelen case TPM_CC_PolicyPassword:
633*5c591343SA. Cody Schuffelen     *handleCount = 1;
634*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
635*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
636*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
637*5c591343SA. Cody Schuffelen     break;
638*5c591343SA. Cody Schuffelen #endif // CC_PolicyPassword
639*5c591343SA. Cody Schuffelen #if CC_PolicyGetDigest
640*5c591343SA. Cody Schuffelen case TPM_CC_PolicyGetDigest:
641*5c591343SA. Cody Schuffelen     *handleCount = 1;
642*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
643*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
644*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
645*5c591343SA. Cody Schuffelen     break;
646*5c591343SA. Cody Schuffelen #endif // CC_PolicyGetDigest
647*5c591343SA. Cody Schuffelen #if CC_PolicyNvWritten
648*5c591343SA. Cody Schuffelen case TPM_CC_PolicyNvWritten:
649*5c591343SA. Cody Schuffelen     *handleCount = 1;
650*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
651*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
652*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
653*5c591343SA. Cody Schuffelen     break;
654*5c591343SA. Cody Schuffelen #endif // CC_PolicyNvWritten
655*5c591343SA. Cody Schuffelen #if CC_PolicyTemplate
656*5c591343SA. Cody Schuffelen case TPM_CC_PolicyTemplate:
657*5c591343SA. Cody Schuffelen     *handleCount = 1;
658*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
659*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
660*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
661*5c591343SA. Cody Schuffelen     break;
662*5c591343SA. Cody Schuffelen #endif // CC_PolicyTemplate
663*5c591343SA. Cody Schuffelen #if CC_PolicyAuthorizeNV
664*5c591343SA. Cody Schuffelen case TPM_CC_PolicyAuthorizeNV:
665*5c591343SA. Cody Schuffelen     *handleCount = 3;
666*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
667*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
668*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
669*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
670*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
671*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
672*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[2], handleBufferStart,
673*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
674*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_3;
675*5c591343SA. Cody Schuffelen     break;
676*5c591343SA. Cody Schuffelen #endif // CC_PolicyAuthorizeNV
677*5c591343SA. Cody Schuffelen #if CC_CreatePrimary
678*5c591343SA. Cody Schuffelen case TPM_CC_CreatePrimary:
679*5c591343SA. Cody Schuffelen     *handleCount = 1;
680*5c591343SA. Cody Schuffelen     result = TPMI_RH_HIERARCHY_Unmarshal(&handles[0], handleBufferStart,
681*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
682*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
683*5c591343SA. Cody Schuffelen     break;
684*5c591343SA. Cody Schuffelen #endif // CC_CreatePrimary
685*5c591343SA. Cody Schuffelen #if CC_HierarchyControl
686*5c591343SA. Cody Schuffelen case TPM_CC_HierarchyControl:
687*5c591343SA. Cody Schuffelen     *handleCount = 1;
688*5c591343SA. Cody Schuffelen     result = TPMI_RH_HIERARCHY_Unmarshal(&handles[0], handleBufferStart,
689*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
690*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
691*5c591343SA. Cody Schuffelen     break;
692*5c591343SA. Cody Schuffelen #endif // CC_HierarchyControl
693*5c591343SA. Cody Schuffelen #if CC_SetPrimaryPolicy
694*5c591343SA. Cody Schuffelen case TPM_CC_SetPrimaryPolicy:
695*5c591343SA. Cody Schuffelen     *handleCount = 1;
696*5c591343SA. Cody Schuffelen     result = TPMI_RH_HIERARCHY_POLICY_Unmarshal(&handles[0], handleBufferStart,
697*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
698*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
699*5c591343SA. Cody Schuffelen     break;
700*5c591343SA. Cody Schuffelen #endif // CC_SetPrimaryPolicy
701*5c591343SA. Cody Schuffelen #if CC_ChangePPS
702*5c591343SA. Cody Schuffelen case TPM_CC_ChangePPS:
703*5c591343SA. Cody Schuffelen     *handleCount = 1;
704*5c591343SA. Cody Schuffelen     result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
705*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
706*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
707*5c591343SA. Cody Schuffelen     break;
708*5c591343SA. Cody Schuffelen #endif // CC_ChangePPS
709*5c591343SA. Cody Schuffelen #if CC_ChangeEPS
710*5c591343SA. Cody Schuffelen case TPM_CC_ChangeEPS:
711*5c591343SA. Cody Schuffelen     *handleCount = 1;
712*5c591343SA. Cody Schuffelen     result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
713*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
714*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
715*5c591343SA. Cody Schuffelen     break;
716*5c591343SA. Cody Schuffelen #endif // CC_ChangeEPS
717*5c591343SA. Cody Schuffelen #if CC_Clear
718*5c591343SA. Cody Schuffelen case TPM_CC_Clear:
719*5c591343SA. Cody Schuffelen     *handleCount = 1;
720*5c591343SA. Cody Schuffelen     result = TPMI_RH_CLEAR_Unmarshal(&handles[0], handleBufferStart,
721*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
722*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
723*5c591343SA. Cody Schuffelen     break;
724*5c591343SA. Cody Schuffelen #endif // CC_Clear
725*5c591343SA. Cody Schuffelen #if CC_ClearControl
726*5c591343SA. Cody Schuffelen case TPM_CC_ClearControl:
727*5c591343SA. Cody Schuffelen     *handleCount = 1;
728*5c591343SA. Cody Schuffelen     result = TPMI_RH_CLEAR_Unmarshal(&handles[0], handleBufferStart,
729*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
730*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
731*5c591343SA. Cody Schuffelen     break;
732*5c591343SA. Cody Schuffelen #endif // CC_ClearControl
733*5c591343SA. Cody Schuffelen #if CC_HierarchyChangeAuth
734*5c591343SA. Cody Schuffelen case TPM_CC_HierarchyChangeAuth:
735*5c591343SA. Cody Schuffelen     *handleCount = 1;
736*5c591343SA. Cody Schuffelen     result = TPMI_RH_HIERARCHY_AUTH_Unmarshal(&handles[0], handleBufferStart,
737*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
738*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
739*5c591343SA. Cody Schuffelen     break;
740*5c591343SA. Cody Schuffelen #endif // CC_HierarchyChangeAuth
741*5c591343SA. Cody Schuffelen #if CC_DictionaryAttackLockReset
742*5c591343SA. Cody Schuffelen case TPM_CC_DictionaryAttackLockReset:
743*5c591343SA. Cody Schuffelen     *handleCount = 1;
744*5c591343SA. Cody Schuffelen     result = TPMI_RH_LOCKOUT_Unmarshal(&handles[0], handleBufferStart,
745*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
746*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
747*5c591343SA. Cody Schuffelen     break;
748*5c591343SA. Cody Schuffelen #endif // CC_DictionaryAttackLockReset
749*5c591343SA. Cody Schuffelen #if CC_DictionaryAttackParameters
750*5c591343SA. Cody Schuffelen case TPM_CC_DictionaryAttackParameters:
751*5c591343SA. Cody Schuffelen     *handleCount = 1;
752*5c591343SA. Cody Schuffelen     result = TPMI_RH_LOCKOUT_Unmarshal(&handles[0], handleBufferStart,
753*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
754*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
755*5c591343SA. Cody Schuffelen     break;
756*5c591343SA. Cody Schuffelen #endif // CC_DictionaryAttackParameters
757*5c591343SA. Cody Schuffelen #if CC_PP_Commands
758*5c591343SA. Cody Schuffelen case TPM_CC_PP_Commands:
759*5c591343SA. Cody Schuffelen     *handleCount = 1;
760*5c591343SA. Cody Schuffelen     result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
761*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
762*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
763*5c591343SA. Cody Schuffelen     break;
764*5c591343SA. Cody Schuffelen #endif // CC_PP_Commands
765*5c591343SA. Cody Schuffelen #if CC_SetAlgorithmSet
766*5c591343SA. Cody Schuffelen case TPM_CC_SetAlgorithmSet:
767*5c591343SA. Cody Schuffelen     *handleCount = 1;
768*5c591343SA. Cody Schuffelen     result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
769*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
770*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
771*5c591343SA. Cody Schuffelen     break;
772*5c591343SA. Cody Schuffelen #endif // CC_SetAlgorithmSet
773*5c591343SA. Cody Schuffelen #if CC_FieldUpgradeStart
774*5c591343SA. Cody Schuffelen case TPM_CC_FieldUpgradeStart:
775*5c591343SA. Cody Schuffelen     *handleCount = 2;
776*5c591343SA. Cody Schuffelen     result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
777*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
778*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
779*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
780*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
781*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
782*5c591343SA. Cody Schuffelen     break;
783*5c591343SA. Cody Schuffelen #endif // CC_FieldUpgradeStart
784*5c591343SA. Cody Schuffelen #if CC_FieldUpgradeData
785*5c591343SA. Cody Schuffelen case TPM_CC_FieldUpgradeData:
786*5c591343SA. Cody Schuffelen     break;
787*5c591343SA. Cody Schuffelen #endif // CC_FieldUpgradeData
788*5c591343SA. Cody Schuffelen #if CC_FirmwareRead
789*5c591343SA. Cody Schuffelen case TPM_CC_FirmwareRead:
790*5c591343SA. Cody Schuffelen     break;
791*5c591343SA. Cody Schuffelen #endif // CC_FirmwareRead
792*5c591343SA. Cody Schuffelen #if CC_ContextSave
793*5c591343SA. Cody Schuffelen case TPM_CC_ContextSave:
794*5c591343SA. Cody Schuffelen     *handleCount = 1;
795*5c591343SA. Cody Schuffelen     result = TPMI_DH_CONTEXT_Unmarshal(&handles[0], handleBufferStart,
796*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
797*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
798*5c591343SA. Cody Schuffelen     break;
799*5c591343SA. Cody Schuffelen #endif // CC_ContextSave
800*5c591343SA. Cody Schuffelen #if CC_ContextLoad
801*5c591343SA. Cody Schuffelen case TPM_CC_ContextLoad:
802*5c591343SA. Cody Schuffelen     break;
803*5c591343SA. Cody Schuffelen #endif // CC_ContextLoad
804*5c591343SA. Cody Schuffelen #if CC_FlushContext
805*5c591343SA. Cody Schuffelen case TPM_CC_FlushContext:
806*5c591343SA. Cody Schuffelen     break;
807*5c591343SA. Cody Schuffelen #endif // CC_FlushContext
808*5c591343SA. Cody Schuffelen #if CC_EvictControl
809*5c591343SA. Cody Schuffelen case TPM_CC_EvictControl:
810*5c591343SA. Cody Schuffelen     *handleCount = 2;
811*5c591343SA. Cody Schuffelen     result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
812*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
813*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
814*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
815*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
816*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
817*5c591343SA. Cody Schuffelen     break;
818*5c591343SA. Cody Schuffelen #endif // CC_EvictControl
819*5c591343SA. Cody Schuffelen #if CC_ReadClock
820*5c591343SA. Cody Schuffelen case TPM_CC_ReadClock:
821*5c591343SA. Cody Schuffelen     break;
822*5c591343SA. Cody Schuffelen #endif // CC_ReadClock
823*5c591343SA. Cody Schuffelen #if CC_ClockSet
824*5c591343SA. Cody Schuffelen case TPM_CC_ClockSet:
825*5c591343SA. Cody Schuffelen     *handleCount = 1;
826*5c591343SA. Cody Schuffelen     result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
827*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
828*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
829*5c591343SA. Cody Schuffelen     break;
830*5c591343SA. Cody Schuffelen #endif // CC_ClockSet
831*5c591343SA. Cody Schuffelen #if CC_ClockRateAdjust
832*5c591343SA. Cody Schuffelen case TPM_CC_ClockRateAdjust:
833*5c591343SA. Cody Schuffelen     *handleCount = 1;
834*5c591343SA. Cody Schuffelen     result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
835*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
836*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
837*5c591343SA. Cody Schuffelen     break;
838*5c591343SA. Cody Schuffelen #endif // CC_ClockRateAdjust
839*5c591343SA. Cody Schuffelen #if CC_GetCapability
840*5c591343SA. Cody Schuffelen case TPM_CC_GetCapability:
841*5c591343SA. Cody Schuffelen     break;
842*5c591343SA. Cody Schuffelen #endif // CC_GetCapability
843*5c591343SA. Cody Schuffelen #if CC_TestParms
844*5c591343SA. Cody Schuffelen case TPM_CC_TestParms:
845*5c591343SA. Cody Schuffelen     break;
846*5c591343SA. Cody Schuffelen #endif // CC_TestParms
847*5c591343SA. Cody Schuffelen #if CC_NV_DefineSpace
848*5c591343SA. Cody Schuffelen case TPM_CC_NV_DefineSpace:
849*5c591343SA. Cody Schuffelen     *handleCount = 1;
850*5c591343SA. Cody Schuffelen     result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
851*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
852*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
853*5c591343SA. Cody Schuffelen     break;
854*5c591343SA. Cody Schuffelen #endif // CC_NV_DefineSpace
855*5c591343SA. Cody Schuffelen #if CC_NV_UndefineSpace
856*5c591343SA. Cody Schuffelen case TPM_CC_NV_UndefineSpace:
857*5c591343SA. Cody Schuffelen     *handleCount = 2;
858*5c591343SA. Cody Schuffelen     result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
859*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
860*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
861*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
862*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
863*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
864*5c591343SA. Cody Schuffelen     break;
865*5c591343SA. Cody Schuffelen #endif // CC_NV_UndefineSpace
866*5c591343SA. Cody Schuffelen #if CC_NV_UndefineSpaceSpecial
867*5c591343SA. Cody Schuffelen case TPM_CC_NV_UndefineSpaceSpecial:
868*5c591343SA. Cody Schuffelen     *handleCount = 2;
869*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[0], handleBufferStart,
870*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
871*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
872*5c591343SA. Cody Schuffelen     result = TPMI_RH_PLATFORM_Unmarshal(&handles[1], handleBufferStart,
873*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
874*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
875*5c591343SA. Cody Schuffelen     break;
876*5c591343SA. Cody Schuffelen #endif // CC_NV_UndefineSpaceSpecial
877*5c591343SA. Cody Schuffelen #if CC_NV_ReadPublic
878*5c591343SA. Cody Schuffelen case TPM_CC_NV_ReadPublic:
879*5c591343SA. Cody Schuffelen     *handleCount = 1;
880*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[0], handleBufferStart,
881*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
882*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
883*5c591343SA. Cody Schuffelen     break;
884*5c591343SA. Cody Schuffelen #endif // CC_NV_ReadPublic
885*5c591343SA. Cody Schuffelen #if CC_NV_Write
886*5c591343SA. Cody Schuffelen case TPM_CC_NV_Write:
887*5c591343SA. Cody Schuffelen     *handleCount = 2;
888*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
889*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
890*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
891*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
892*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
893*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
894*5c591343SA. Cody Schuffelen     break;
895*5c591343SA. Cody Schuffelen #endif // CC_NV_Write
896*5c591343SA. Cody Schuffelen #if CC_NV_Increment
897*5c591343SA. Cody Schuffelen case TPM_CC_NV_Increment:
898*5c591343SA. Cody Schuffelen     *handleCount = 2;
899*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
900*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
901*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
902*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
903*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
904*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
905*5c591343SA. Cody Schuffelen     break;
906*5c591343SA. Cody Schuffelen #endif // CC_NV_Increment
907*5c591343SA. Cody Schuffelen #if CC_NV_Extend
908*5c591343SA. Cody Schuffelen case TPM_CC_NV_Extend:
909*5c591343SA. Cody Schuffelen     *handleCount = 2;
910*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
911*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
912*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
913*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
914*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
915*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
916*5c591343SA. Cody Schuffelen     break;
917*5c591343SA. Cody Schuffelen #endif // CC_NV_Extend
918*5c591343SA. Cody Schuffelen #if CC_NV_SetBits
919*5c591343SA. Cody Schuffelen case TPM_CC_NV_SetBits:
920*5c591343SA. Cody Schuffelen     *handleCount = 2;
921*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
922*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
923*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
924*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
925*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
926*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
927*5c591343SA. Cody Schuffelen     break;
928*5c591343SA. Cody Schuffelen #endif // CC_NV_SetBits
929*5c591343SA. Cody Schuffelen #if CC_NV_WriteLock
930*5c591343SA. Cody Schuffelen case TPM_CC_NV_WriteLock:
931*5c591343SA. Cody Schuffelen     *handleCount = 2;
932*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
933*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
934*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
935*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
936*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
937*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
938*5c591343SA. Cody Schuffelen     break;
939*5c591343SA. Cody Schuffelen #endif // CC_NV_WriteLock
940*5c591343SA. Cody Schuffelen #if CC_NV_GlobalWriteLock
941*5c591343SA. Cody Schuffelen case TPM_CC_NV_GlobalWriteLock:
942*5c591343SA. Cody Schuffelen     *handleCount = 1;
943*5c591343SA. Cody Schuffelen     result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
944*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
945*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
946*5c591343SA. Cody Schuffelen     break;
947*5c591343SA. Cody Schuffelen #endif // CC_NV_GlobalWriteLock
948*5c591343SA. Cody Schuffelen #if CC_NV_Read
949*5c591343SA. Cody Schuffelen case TPM_CC_NV_Read:
950*5c591343SA. Cody Schuffelen     *handleCount = 2;
951*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
952*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
953*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
954*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
955*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
956*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
957*5c591343SA. Cody Schuffelen     break;
958*5c591343SA. Cody Schuffelen #endif // CC_NV_Read
959*5c591343SA. Cody Schuffelen #if CC_NV_ReadLock
960*5c591343SA. Cody Schuffelen case TPM_CC_NV_ReadLock:
961*5c591343SA. Cody Schuffelen     *handleCount = 2;
962*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
963*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
964*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
965*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
966*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
967*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
968*5c591343SA. Cody Schuffelen     break;
969*5c591343SA. Cody Schuffelen #endif // CC_NV_ReadLock
970*5c591343SA. Cody Schuffelen #if CC_NV_ChangeAuth
971*5c591343SA. Cody Schuffelen case TPM_CC_NV_ChangeAuth:
972*5c591343SA. Cody Schuffelen     *handleCount = 1;
973*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[0], handleBufferStart,
974*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
975*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
976*5c591343SA. Cody Schuffelen     break;
977*5c591343SA. Cody Schuffelen #endif // CC_NV_ChangeAuth
978*5c591343SA. Cody Schuffelen #if CC_NV_Certify
979*5c591343SA. Cody Schuffelen case TPM_CC_NV_Certify:
980*5c591343SA. Cody Schuffelen     *handleCount = 3;
981*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
982*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, TRUE);
983*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
984*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[1], handleBufferStart,
985*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
986*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
987*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_INDEX_Unmarshal(&handles[2], handleBufferStart,
988*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
989*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_3;
990*5c591343SA. Cody Schuffelen     break;
991*5c591343SA. Cody Schuffelen #endif // CC_NV_Certify
992*5c591343SA. Cody Schuffelen #if CC_AC_GetCapability
993*5c591343SA. Cody Schuffelen case TPM_CC_AC_GetCapability:
994*5c591343SA. Cody Schuffelen     *handleCount = 1;
995*5c591343SA. Cody Schuffelen     result = TPMI_RH_AC_Unmarshal(&handles[0], handleBufferStart,
996*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
997*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
998*5c591343SA. Cody Schuffelen     break;
999*5c591343SA. Cody Schuffelen #endif // CC_AC_GetCapability
1000*5c591343SA. Cody Schuffelen #if CC_AC_Send
1001*5c591343SA. Cody Schuffelen case TPM_CC_AC_Send:
1002*5c591343SA. Cody Schuffelen     *handleCount = 3;
1003*5c591343SA. Cody Schuffelen     result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
1004*5c591343SA. Cody Schuffelen                                               bufferRemainingSize, FALSE);
1005*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
1006*5c591343SA. Cody Schuffelen     result = TPMI_RH_NV_AUTH_Unmarshal(&handles[1], handleBufferStart,
1007*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
1008*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
1009*5c591343SA. Cody Schuffelen     result = TPMI_RH_AC_Unmarshal(&handles[2], handleBufferStart,
1010*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
1011*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_3;
1012*5c591343SA. Cody Schuffelen     break;
1013*5c591343SA. Cody Schuffelen #endif // CC_AC_Send
1014*5c591343SA. Cody Schuffelen #if CC_Policy_AC_SendSelect
1015*5c591343SA. Cody Schuffelen case TPM_CC_Policy_AC_SendSelect:
1016*5c591343SA. Cody Schuffelen     *handleCount = 1;
1017*5c591343SA. Cody Schuffelen     result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
1018*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
1019*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
1020*5c591343SA. Cody Schuffelen     break;
1021*5c591343SA. Cody Schuffelen #endif // CC_Policy_AC_SendSelect
1022*5c591343SA. Cody Schuffelen #if CC_ACT_SetTimeout
1023*5c591343SA. Cody Schuffelen case TPM_CC_ACT_SetTimeout:
1024*5c591343SA. Cody Schuffelen     *handleCount = 1;
1025*5c591343SA. Cody Schuffelen     result = TPMI_RH_ACT_Unmarshal(&handles[0], handleBufferStart,
1026*5c591343SA. Cody Schuffelen                                               bufferRemainingSize);
1027*5c591343SA. Cody Schuffelen     if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
1028*5c591343SA. Cody Schuffelen     break;
1029*5c591343SA. Cody Schuffelen #endif // CC_ACT_SetTimeout
1030*5c591343SA. Cody Schuffelen #if CC_Vendor_TCG_Test
1031*5c591343SA. Cody Schuffelen case TPM_CC_Vendor_TCG_Test:
1032*5c591343SA. Cody Schuffelen     break;
1033*5c591343SA. Cody Schuffelen #endif // CC_Vendor_TCG_Test
1034