1 
2 /*
3  * Licensed Materials - Property of IBM
4  *
5  * trousers - An open source TCG Software Stack
6  *
7  * (C) Copyright International Business Machines Corp. 2004-2007
8  *
9  */
10 
11 #ifndef _TCS_UTILS_H_
12 #define _TCS_UTILS_H_
13 
14 #include <assert.h>
15 
16 #include "threads.h"
17 #include "tcs_context.h"
18 #include "tcs_tsp.h"
19 #include "trousers_types.h"
20 
21 
22 
23 /*
24  * XXX malloc wrapper
25  *
26  * Linux: malloc(0) => '\0'
27  * *BSD:  malloc(0) => invalid to dereference
28  *
29  * => so wrap malloc(0) => calloc(1, 16) to create
30  * a 16Byte array containing '\0'
31  *
32  */
33 #define malloc(x) ((x) == 0 ? calloc(1, 16) : calloc(1, (x)))
34 
35 struct key_mem_cache
36 {
37 	TCPA_KEY_HANDLE tpm_handle;
38 	TCS_KEY_HANDLE tcs_handle;
39 	UINT16 flags;
40 	int ref_cnt;
41 	UINT32 time_stamp;
42 	TSS_UUID uuid;
43 	TSS_UUID p_uuid;
44 	TSS_KEY *blob;
45 	struct key_mem_cache *parent;
46 	struct key_mem_cache *next, *prev;
47 };
48 
49 extern struct key_mem_cache *key_mem_cache_head;
50 MUTEX_DECLARE_EXTERN(mem_cache_lock);
51 
52 struct tpm_properties
53 {
54 	UINT32 num_pcrs;
55 	UINT32 num_dirs;
56 	UINT32 num_keys;
57 	UINT32 num_auths;
58 	TSS_BOOL authctx_swap;
59 	TSS_BOOL keyctx_swap;
60 	TPM_VERSION version;
61 	BYTE manufacturer[16];
62 };
63 
64 extern struct tpm_properties tpm_metrics;
65 
66 #define TPM_VERSION_IS(maj, min) \
67 	((tpm_metrics.version.major == maj) && (tpm_metrics.version.minor == min))
68 
69 #define TSS_UUID_IS_OWNEREVICT(uuid) \
70 	((!uuid->ulTimeLow) && (!uuid->usTimeMid) && (!uuid->usTimeHigh) && \
71 	 (!uuid->bClockSeqHigh) && (!uuid->bClockSeqLow) && (!uuid->rgbNode[0]) && \
72 	 (!uuid->rgbNode[1]) && (!uuid->rgbNode[2]) && (!uuid->rgbNode[3]) && \
73 	 (uuid->rgbNode[4] == 1))
74 
75 #ifndef MIN
76 #define MIN(a,b) ((a) < (b) ? (a) : (b))
77 #endif
78 #ifndef MAX
79 #define MAX(a,b) ((a) > (b) ? (a) : (b))
80 #endif
81 
82 TSS_RESULT get_tpm_metrics(struct tpm_properties *);
83 
84 TSS_RESULT auth_mgr_init();
85 TSS_RESULT auth_mgr_final();
86 TSS_RESULT auth_mgr_check(TCS_CONTEXT_HANDLE, TPM_AUTHHANDLE *);
87 TSS_RESULT auth_mgr_release_auth_handle(TCS_AUTHHANDLE, TCS_CONTEXT_HANDLE, TSS_BOOL);
88 void       auth_mgr_release_auth(TPM_AUTH *, TPM_AUTH *, TCS_CONTEXT_HANDLE);
89 TSS_RESULT auth_mgr_oiap(TCS_CONTEXT_HANDLE, TCS_AUTHHANDLE *, TCPA_NONCE *);
90 TSS_RESULT auth_mgr_osap(TCS_CONTEXT_HANDLE, TCPA_ENTITY_TYPE, UINT32, TCPA_NONCE,
91 			 TCS_AUTHHANDLE *, TCPA_NONCE *, TCPA_NONCE *);
92 TSS_RESULT auth_mgr_close_context(TCS_CONTEXT_HANDLE);
93 TSS_RESULT auth_mgr_swap_out(TCS_CONTEXT_HANDLE);
94 TSS_BOOL   auth_mgr_req_new(TCS_CONTEXT_HANDLE);
95 TSS_RESULT auth_mgr_add(TCS_CONTEXT_HANDLE, TPM_AUTHHANDLE);
96 
97 TSS_RESULT event_log_init();
98 TSS_RESULT event_log_final();
99 TSS_RESULT owner_evict_init();
100 
101 #ifdef TSS_BUILD_PCR_EVENTS
102 #define EVENT_LOG_init()	event_log_init()
103 #define EVENT_LOG_final()	event_log_final()
104 #else
105 #define EVENT_LOG_init()	(TSS_SUCCESS)
106 #define EVENT_LOG_final()
107 #endif
108 
109 #define next( x ) x = x->next
110 
111 TSS_RESULT key_mgr_dec_ref_count(TCS_KEY_HANDLE);
112 TSS_RESULT key_mgr_inc_ref_count(TCS_KEY_HANDLE);
113 void key_mgr_ref_count();
114 TSS_RESULT key_mgr_load_by_uuid(TCS_CONTEXT_HANDLE, TSS_UUID *, TCS_LOADKEY_INFO *,
115 				TCS_KEY_HANDLE *);
116 TSS_RESULT key_mgr_load_by_blob(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, UINT32, BYTE *,
117 				TPM_AUTH *, TCS_KEY_HANDLE *, TCS_KEY_HANDLE *);
118 TSS_RESULT key_mgr_evict(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE);
119 
120 
121 extern TCS_CONTEXT_HANDLE InternalContext;
122 
123 TSS_RESULT mc_update_time_stamp(TCPA_KEY_HANDLE);
124 TCS_KEY_HANDLE getNextTcsKeyHandle();
125 TCPA_STORE_PUBKEY *getParentPubBySlot(TCPA_KEY_HANDLE slot);
126 TCPA_STORE_PUBKEY *mc_get_pub_by_slot(TCPA_KEY_HANDLE);
127 TCPA_STORE_PUBKEY *mc_get_pub_by_handle(TCS_KEY_HANDLE);
128 TSS_UUID *mc_get_uuid_by_pub(TCPA_STORE_PUBKEY *);
129 TSS_RESULT mc_get_handles_by_uuid(TSS_UUID *, TCS_KEY_HANDLE *, TCPA_KEY_HANDLE *);
130 TCS_KEY_HANDLE mc_get_handle_by_encdata(BYTE *);
131 TSS_RESULT mc_update_encdata(BYTE *, BYTE *);
132 TSS_RESULT mc_find_next_ownerevict_uuid(TSS_UUID *);
133 TSS_RESULT mc_set_uuid(TCS_KEY_HANDLE, TSS_UUID *);
134 
135 TSS_RESULT initDiskCache(void);
136 void replaceEncData_PS(TSS_UUID, BYTE *encData, BYTE *newEncData);
137 
138 TSS_RESULT mc_add_entry(TCS_KEY_HANDLE, TCPA_KEY_HANDLE, TSS_KEY *);
139 TSS_RESULT mc_add_entry_init(TCS_KEY_HANDLE, TCPA_KEY_HANDLE, TSS_KEY *, TSS_UUID *);
140 TSS_RESULT mc_remove_entry(TCS_KEY_HANDLE);
141 TSS_RESULT mc_set_slot_by_slot(TCPA_KEY_HANDLE, TCPA_KEY_HANDLE);
142 TSS_RESULT mc_set_slot_by_handle(TCS_KEY_HANDLE, TCPA_KEY_HANDLE);
143 TCPA_KEY_HANDLE mc_get_slot_by_handle(TCS_KEY_HANDLE);
144 TCPA_KEY_HANDLE mc_get_slot_by_handle_lock(TCS_KEY_HANDLE);
145 TCPA_KEY_HANDLE mc_get_slot_by_pub(TCPA_STORE_PUBKEY *);
146 TCS_KEY_HANDLE mc_get_handle_by_pub(TCPA_STORE_PUBKEY *, TCS_KEY_HANDLE);
147 TCPA_STORE_PUBKEY *mc_get_parent_pub_by_pub(TCPA_STORE_PUBKEY *);
148 TSS_BOOL isKeyRegistered(TCPA_STORE_PUBKEY *);
149 TSS_RESULT mc_get_blob_by_pub(TCPA_STORE_PUBKEY *, TSS_KEY **);
150 TSS_RESULT evictFirstKey(TCS_KEY_HANDLE);
151 TSS_RESULT getParentUUIDByUUID(TSS_UUID *, TSS_UUID *);
152 TSS_RESULT getRegisteredKeyByUUID(TSS_UUID *, BYTE *, UINT16 *);
153 TSS_RESULT isPubRegistered(TCPA_STORE_PUBKEY *);
154 TSS_RESULT getRegisteredUuidByPub(TCPA_STORE_PUBKEY *, TSS_UUID **);
155 TSS_RESULT getRegisteredKeyByPub(TCPA_STORE_PUBKEY *, UINT32 *, BYTE **);
156 TSS_BOOL isKeyLoaded(TCPA_KEY_HANDLE);
157 TSS_RESULT LoadKeyShim(TCS_CONTEXT_HANDLE, TCPA_STORE_PUBKEY *, TSS_UUID *,TCPA_KEY_HANDLE *);
158 TSS_RESULT mc_set_parent_by_handle(TCS_KEY_HANDLE, TCS_KEY_HANDLE);
159 TSS_RESULT isUUIDRegistered(TSS_UUID *, TSS_BOOL *);
160 void destroy_key_refs(TSS_KEY *);
161 
162 /* cxt.c */
163 TSS_RESULT context_close_auth(TCS_CONTEXT_HANDLE);
164 TSS_RESULT checkContextForAuth(TCS_CONTEXT_HANDLE, TCS_AUTHHANDLE);
165 TSS_RESULT addContextForAuth(TCS_CONTEXT_HANDLE, TCS_AUTHHANDLE);
166 TSS_RESULT ctx_verify_context(TCS_CONTEXT_HANDLE);
167 COND_VAR *ctx_get_cond_var(TCS_CONTEXT_HANDLE);
168 TSS_RESULT ctx_mark_key_loaded(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE);
169 TSS_RESULT ctx_remove_key_loaded(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE);
170 TSS_BOOL ctx_has_key_loaded(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE);
171 void       ctx_ref_count_keys(struct tcs_context *);
172 struct tcs_context *get_context(TCS_CONTEXT_HANDLE);
173 TSS_RESULT ctx_req_exclusive_transport(TCS_CONTEXT_HANDLE);
174 TSS_RESULT ctx_set_transport_enabled(TCS_CONTEXT_HANDLE, TPM_TRANSHANDLE);
175 TSS_RESULT ctx_set_transport_disabled(TCS_CONTEXT_HANDLE, TCS_HANDLE *);
176 
177 #ifdef TSS_BUILD_KEY
178 #define CTX_ref_count_keys(c)	ctx_ref_count_keys(c)
179 #define KEY_MGR_ref_count()	key_mgr_ref_count()
180 TSS_RESULT ensureKeyIsLoaded(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, TCPA_KEY_HANDLE *);
181 #else
182 #define CTX_ref_count_keys(c)
183 #define KEY_MGR_ref_count()
184 #define ensureKeyIsLoaded(...)	(1 /* XXX non-zero return will indicate failure */)
185 #endif
186 
187 
188 TCS_CONTEXT_HANDLE make_context();
189 void destroy_context(TCS_CONTEXT_HANDLE);
190 
191 /* tcs_utils.c */
192 TSS_RESULT get_current_version(TPM_VERSION *);
193 void LogData(char *string, UINT32 data);
194 void LogResult(char *string, TSS_RESULT result);
195 TSS_RESULT canILoadThisKey(TCPA_KEY_PARMS *parms, TSS_BOOL *);
196 TSS_RESULT internal_EvictByKeySlot(TCPA_KEY_HANDLE slot);
197 
198 TSS_RESULT clearKeysFromChip(TCS_CONTEXT_HANDLE hContext);
199 TSS_RESULT clearUnknownKeys(TCS_CONTEXT_HANDLE, UINT32 *);
200 
201 void UINT64ToArray(UINT64, BYTE *);
202 void UINT32ToArray(UINT32, BYTE *);
203 void UINT16ToArray(UINT16, BYTE *);
204 UINT64 Decode_UINT64(BYTE *);
205 UINT32 Decode_UINT32(BYTE *);
206 UINT16 Decode_UINT16(BYTE *);
207 void LoadBlob_UINT64(UINT64 *, UINT64, BYTE *);
208 void LoadBlob_UINT32(UINT64 *, UINT32, BYTE *);
209 void LoadBlob_UINT16(UINT64 *, UINT16, BYTE *);
210 void UnloadBlob_UINT64(UINT64 *, UINT64 *, BYTE *);
211 void UnloadBlob_UINT32(UINT64 *, UINT32 *, BYTE *);
212 void UnloadBlob_UINT16(UINT64 *, UINT16 *, BYTE *);
213 void LoadBlob_BYTE(UINT64 *, BYTE, BYTE *);
214 void UnloadBlob_BYTE(UINT64 *, BYTE *, BYTE *);
215 void LoadBlob_BOOL(UINT64 *, TSS_BOOL, BYTE *);
216 void UnloadBlob_BOOL(UINT64 *, TSS_BOOL *, BYTE *);
217 void LoadBlob(UINT64 *, UINT32, BYTE *, BYTE *);
218 void UnloadBlob(UINT64 *, UINT32, BYTE *, BYTE *);
219 void LoadBlob_Header(UINT16, UINT32, UINT32, BYTE *);
220 #ifdef TSS_DEBUG
221 #define UnloadBlob_Header(b,u)	LogUnloadBlob_Header(b,u, __FILE__, __LINE__)
222 TSS_RESULT LogUnloadBlob_Header(BYTE *, UINT32 *, char *, int);
223 #else
224 TSS_RESULT UnloadBlob_Header(BYTE *, UINT32 *);
225 #endif
226 TSS_RESULT UnloadBlob_MIGRATIONKEYAUTH(UINT64 *, BYTE *, TCPA_MIGRATIONKEYAUTH *);
227 void LoadBlob_Auth(UINT64 *, BYTE *, TPM_AUTH *);
228 void UnloadBlob_Auth(UINT64 *, BYTE *, TPM_AUTH *);
229 void LoadBlob_KEY_PARMS(UINT64 *, BYTE *, TCPA_KEY_PARMS *);
230 TSS_RESULT UnloadBlob_KEY_PARMS(UINT64 *, BYTE *, TCPA_KEY_PARMS *);
231 TSS_RESULT UnloadBlob_STORE_PUBKEY(UINT64 *, BYTE *, TCPA_STORE_PUBKEY *);
232 void LoadBlob_STORE_PUBKEY(UINT64 *, BYTE *, TCPA_STORE_PUBKEY *);
233 void UnloadBlob_VERSION(UINT64 *, BYTE *, TPM_VERSION *);
234 void LoadBlob_VERSION(UINT64 *, BYTE *, TPM_VERSION *);
235 void UnloadBlob_TCPA_VERSION(UINT64 *, BYTE *, TCPA_VERSION *);
236 void LoadBlob_TCPA_VERSION(UINT64 *, BYTE *, TCPA_VERSION *);
237 TSS_RESULT UnloadBlob_TSS_KEY(UINT64 *, BYTE *, TSS_KEY *);
238 void LoadBlob_TSS_KEY(UINT64 *, BYTE *, TSS_KEY *);
239 void LoadBlob_PUBKEY(UINT64 *, BYTE *, TCPA_PUBKEY *);
240 TSS_RESULT UnloadBlob_PUBKEY(UINT64 *, BYTE *, TCPA_PUBKEY *);
241 void LoadBlob_SYMMETRIC_KEY(UINT64 *, BYTE *, TCPA_SYMMETRIC_KEY *);
242 TSS_RESULT UnloadBlob_SYMMETRIC_KEY(UINT64 *, BYTE *, TCPA_SYMMETRIC_KEY *);
243 TSS_RESULT UnloadBlob_PCR_SELECTION(UINT64 *, BYTE *, TCPA_PCR_SELECTION *);
244 void LoadBlob_PCR_SELECTION(UINT64 *, BYTE *, TCPA_PCR_SELECTION);
245 TSS_RESULT UnloadBlob_PCR_COMPOSITE(UINT64 *, BYTE *, TCPA_PCR_COMPOSITE *);
246 void LoadBlob_PCR_INFO(UINT64 *, BYTE *, TCPA_PCR_INFO *);
247 TSS_RESULT UnloadBlob_PCR_INFO(UINT64 *, BYTE *, TCPA_PCR_INFO *);
248 TSS_RESULT UnloadBlob_STORED_DATA(UINT64 *, BYTE *, TCPA_STORED_DATA *);
249 void LoadBlob_STORED_DATA(UINT64 *, BYTE *, TCPA_STORED_DATA *);
250 void LoadBlob_KEY_FLAGS(UINT64 *, BYTE *, TCPA_KEY_FLAGS *);
251 void UnloadBlob_KEY_FLAGS(UINT64 *, BYTE *, TCPA_KEY_FLAGS *);
252 TSS_RESULT UnloadBlob_CERTIFY_INFO(UINT64 *, BYTE *, TCPA_CERTIFY_INFO *);
253 TSS_RESULT UnloadBlob_KEY_HANDLE_LIST(UINT64 *, BYTE *, TCPA_KEY_HANDLE_LIST *);
254 void LoadBlob_UUID(UINT64 *, BYTE *, TSS_UUID);
255 void UnloadBlob_UUID(UINT64 *, BYTE *, TSS_UUID *);
256 void LoadBlob_COUNTER_VALUE(UINT64 *, BYTE *, TPM_COUNTER_VALUE *);
257 void UnloadBlob_COUNTER_VALUE(UINT64 *, BYTE *, TPM_COUNTER_VALUE *);
258 void LoadBlob_DIGEST(UINT64 *, BYTE *, TPM_DIGEST *);
259 void UnloadBlob_DIGEST(UINT64 *, BYTE *, TPM_DIGEST *);
260 void LoadBlob_NONCE(UINT64 *, BYTE *, TPM_NONCE *);
261 void UnloadBlob_NONCE(UINT64 *, BYTE *, TPM_NONCE *);
262 void LoadBlob_AUTHDATA(UINT64 *, BYTE *, TPM_AUTHDATA *);
263 void UnloadBlob_AUTHDATA(UINT64 *, BYTE *, TPM_AUTHDATA *);
264 #define LoadBlob_ENCAUTH(a, b, c)	LoadBlob_AUTHDATA(a, b, c)
265 #define UnloadBlob_ENCAUTH(a, b, c)	UnloadBlob_AUTHDATA(a, b, c)
266 
267 void UnloadBlob_CURRENT_TICKS(UINT64 *, BYTE *, TPM_CURRENT_TICKS *);
268 TSS_RESULT UnloadBlob_PCR_INFO_SHORT(UINT64 *, BYTE *, TPM_PCR_INFO_SHORT *);
269 
270 TSS_RESULT Hash(UINT32, UINT32, BYTE *, BYTE *);
271 void free_external_events(UINT32, TSS_PCR_EVENT *);
272 
273 TSS_RESULT internal_TerminateHandle(TCS_AUTHHANDLE handle);
274 UINT32 get_pcr_event_size(TSS_PCR_EVENT *);
275 TSS_RESULT fill_key_info(struct key_disk_cache *, struct key_mem_cache *, TSS_KM_KEYINFO *);
276 TSS_RESULT fill_key_info2(struct key_disk_cache *, struct key_mem_cache *, TSS_KM_KEYINFO2 *);
277 
278 char platform_get_runlevel();
279 TSS_RESULT tpm_rsp_parse(TPM_COMMAND_CODE, BYTE *, UINT32, ...);
280 TSS_RESULT tpm_rqu_build(TPM_COMMAND_CODE, UINT64 *, BYTE *, ...);
281 TSS_RESULT tpm_preload_check(TCS_CONTEXT_HANDLE, TPM_COMMAND_CODE ordinal, ...);
282 TSS_RESULT getKeyByCacheEntry(struct key_disk_cache *, BYTE *, UINT16 *);
283 TSS_RESULT add_cache_entry(TCS_CONTEXT_HANDLE, BYTE *, TCS_KEY_HANDLE, TPM_KEY_HANDLE, TCS_KEY_HANDLE *);
284 TSS_RESULT get_slot(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, TPM_KEY_HANDLE *);
285 TSS_RESULT get_slot_lite(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, TPM_KEY_HANDLE *);
286 TSS_RESULT load_key_init(TPM_COMMAND_CODE, TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, UINT32, BYTE*, TSS_BOOL, TPM_AUTH*, TSS_BOOL*, UINT64*, BYTE*, TCS_KEY_HANDLE*, TPM_KEY_HANDLE*);
287 TSS_RESULT load_key_final(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, TCS_KEY_HANDLE *, BYTE *, TPM_KEY_HANDLE);
288 TSS_RESULT LoadKeyByBlob_Internal(UINT32,TCS_CONTEXT_HANDLE,TCS_KEY_HANDLE,UINT32,BYTE *,TPM_AUTH *,
289 				  TCS_KEY_HANDLE *,TCS_KEY_HANDLE *);
290 TSS_RESULT TSC_PhysicalPresence_Internal(UINT16 physPres);
291 TSS_RESULT TCSP_FlushSpecific_Common(UINT32, TPM_RESOURCE_TYPE);
292 
293 	TSS_RESULT TCSP_GetRegisteredKeyByPublicInfo_Internal(TCS_CONTEXT_HANDLE tcsContext, TCPA_ALGORITHM_ID algID,	/* in */
294 							       UINT32 ulPublicInfoLength,	/* in */
295 							       BYTE * rgbPublicInfo,	/* in */
296 							       UINT32 * keySize, BYTE ** keyBlob);
297 
298 	TSS_RESULT TCS_OpenContext_Internal(TCS_CONTEXT_HANDLE * hContext	/* out  */
299 	    );
300 
301 	TSS_RESULT TCS_CloseContext_Internal(TCS_CONTEXT_HANDLE hContext	/* in */
302 	    );
303 
304 	TSS_RESULT TCS_FreeMemory_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
305 					    BYTE * pMemory	/* in */
306 	    );
307 
308 	TSS_RESULT TCS_LogPcrEvent_Internal(TCS_CONTEXT_HANDLE hContext,	/* in    */
309 					     TSS_PCR_EVENT Event,	/* in  */
310 					     UINT32 * pNumber	/* out */
311 	    );
312 
313 	TSS_RESULT TCS_GetPcrEvent_Internal(TCS_CONTEXT_HANDLE hContext,	/* in  */
314 					     UINT32 PcrIndex,	/* in */
315 					     UINT32 * pNumber,	/* in, out */
316 					     TSS_PCR_EVENT ** ppEvent	/* out */
317 	    );
318 
319 	TSS_RESULT TCS_GetPcrEventsByPcr_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
320 						   UINT32 PcrIndex,	/* in */
321 						   UINT32 FirstEvent,	/* in */
322 						   UINT32 * pEventCount,	/* in,out */
323 						   TSS_PCR_EVENT ** ppEvents	/* out */
324 	    );
325 
326 	TSS_RESULT TCS_GetPcrEventLog_Internal(TCS_CONTEXT_HANDLE hContext,	/* in  */
327 						UINT32 * pEventCount,	/* out */
328 						TSS_PCR_EVENT ** ppEvents	/* out */
329 	    );
330 
331 	TSS_RESULT TCS_RegisterKey_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
332 					     TSS_UUID *WrappingKeyUUID,	/* in */
333 					     TSS_UUID *KeyUUID,	/* in  */
334 					     UINT32 cKeySize,	/* in */
335 					     BYTE * rgbKey,	/* in */
336 					     UINT32 cVendorData,	/* in */
337 					     BYTE * gbVendorData	/* in */
338 	    );
339 
340 	TSS_RESULT TCS_UnregisterKey_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
341 						TSS_UUID KeyUUID	/* in  */
342 	    );
343 
344 	TSS_RESULT TCS_EnumRegisteredKeys_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
345 						    TSS_UUID * pKeyUUID,	/* in    */
346 						    UINT32 * pcKeyHierarchySize,	/* out */
347 						    TSS_KM_KEYINFO ** ppKeyHierarchy	/* out */
348 	    );
349 
350 	TSS_RESULT TCS_EnumRegisteredKeys_Internal2(TCS_CONTEXT_HANDLE hContext,	/* in */
351 							    TSS_UUID * pKeyUUID,	/* in    */
352 							    UINT32 * pcKeyHierarchySize,	/* out */
353 							    TSS_KM_KEYINFO2 ** ppKeyHierarchy	/* out */
354 		);
355 
356 	TSS_RESULT TCS_GetRegisteredKey_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
357 						  TSS_UUID *KeyUUID,	/* in */
358 						  TSS_KM_KEYINFO ** ppKeyInfo	/* out */
359 	    );
360 
361 	TSS_RESULT TCS_GetRegisteredKeyBlob_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
362 						      TSS_UUID *KeyUUID,	/* in */
363 						      UINT32 * pcKeySize,	/* out */
364 						      BYTE ** prgbKey	/* out */
365 	    );
366 
367 	TSS_RESULT TCSP_LoadKeyByBlob_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
368 						TCS_KEY_HANDLE hUnwrappingKey,	/* in */
369 						UINT32 cWrappedKeyBlobSize,	/* in */
370 						BYTE * rgbWrappedKeyBlob,	/* in */
371 						TPM_AUTH * pAuth,	/* in, out */
372 						TCS_KEY_HANDLE * phKeyTCSI,	/* out */
373 						TCS_KEY_HANDLE * phKeyHMAC	/* out */
374 	    );
375 
376 	TSS_RESULT TCSP_LoadKey2ByBlob_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
377 						TCS_KEY_HANDLE hUnwrappingKey,	/* in */
378 						UINT32 cWrappedKeyBlobSize,	/* in */
379 						BYTE * rgbWrappedKeyBlob,	/* in */
380 						TPM_AUTH * pAuth,	/* in, out */
381 						TCS_KEY_HANDLE * phKeyTCSI	/* out */
382 	    );
383 
384 	TSS_RESULT TCSP_LoadKeyByUUID_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
385 						TSS_UUID *KeyUUID,	/* in */
386 						TCS_LOADKEY_INFO * pLoadKeyInfo,	/* in, out */
387 						TCS_KEY_HANDLE * phKeyTCSI	/* out */
388 	    );
389 
390 	TSS_RESULT TCSP_EvictKey_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
391 					   TCS_KEY_HANDLE hKey	/* in */
392 	    );
393 
394 	TSS_RESULT TCSP_CreateWrapKey_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
395 						TCS_KEY_HANDLE hWrappingKey,	/* in */
396 						TCPA_ENCAUTH KeyUsageAuth,	/* in */
397 						TCPA_ENCAUTH KeyMigrationAuth,	/* in */
398 						UINT32 keyInfoSize,	/* in */
399 						BYTE * keyInfo,	/* in */
400 						UINT32 * keyDataSize,	/* out */
401 						BYTE ** keyData,	/* out */
402 						TPM_AUTH * pAuth	/* in, out */
403 	    );
404 
405 	TSS_RESULT TCSP_GetPubKey_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
406 					    TCS_KEY_HANDLE hKey,	/* in */
407 					    TPM_AUTH * pAuth,	/* in, out */
408 					    UINT32 * pcPubKeySize,	/* out */
409 					    BYTE ** prgbPubKey	/* out */
410 	    );
411 	TSS_RESULT TCSP_MakeIdentity_Internal(TCS_CONTEXT_HANDLE hContext,	/* in  */
412 					       TCPA_ENCAUTH identityAuth,	/* in */
413 					       TCPA_CHOSENID_HASH IDLabel_PrivCAHash,	/* in */
414 					       UINT32 idKeyInfoSize,	/*in */
415 					       BYTE * idKeyInfo,	/*in */
416 					       TPM_AUTH * pSrkAuth,	/* in, out */
417 					       TPM_AUTH * pOwnerAuth,	/* in, out */
418 					       UINT32 * idKeySize,	/* out */
419 					       BYTE ** idKey,	/* out */
420 					       UINT32 * pcIdentityBindingSize,	/* out */
421 					       BYTE ** prgbIdentityBinding,	/* out */
422 					       UINT32 * pcEndorsementCredentialSize,	/* out */
423 					       BYTE ** prgbEndorsementCredential,	/* out */
424 					       UINT32 * pcPlatformCredentialSize,	/* out */
425 					       BYTE ** prgbPlatformCredential,	/* out */
426 					       UINT32 * pcConformanceCredentialSize,	/* out */
427 					       BYTE ** prgbConformanceCredential	/* out */
428 	    );
429 
430 	TSS_RESULT TCSP_MakeIdentity2_Internal(TCS_CONTEXT_HANDLE hContext,	/* in  */
431 					       TCPA_ENCAUTH identityAuth,	/* in */
432 					       TCPA_CHOSENID_HASH IDLabel_PrivCAHash,	/* in */
433 					       UINT32 idKeyInfoSize,	/*in */
434 					       BYTE * idKeyInfo,	/*in */
435 					       TPM_AUTH * pSrkAuth,	/* in, out */
436 					       TPM_AUTH * pOwnerAuth,	/* in, out */
437 					       UINT32 * idKeySize,	/* out */
438 					       BYTE ** idKey,	/* out */
439 					       UINT32 * pcIdentityBindingSize,	/* out */
440 					       BYTE ** prgbIdentityBinding	/* out */
441 	    );
442 
443 	TSS_RESULT TCS_GetCredential_Internal(TCS_CONTEXT_HANDLE hContext,	/* in  */
444 					      UINT32 ulCredentialType,		/* in */
445 					      UINT32 ulCredentialAccessMode,	/* in */
446 					      UINT32 * pulCredentialSize,	/* out */
447 					      BYTE ** prgbCredentialData	/* out */
448 	    );
449 
450 	TSS_RESULT TCSP_SetOwnerInstall_Internal(TCS_CONTEXT_HANDLE hContext,   /* in */
451 						 TSS_BOOL state        /* in  */
452 	    );
453 
454 	TSS_RESULT TCSP_TakeOwnership_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
455 						UINT16 protocolID,	/* in */
456 						UINT32 encOwnerAuthSize,	/* in  */
457 						BYTE * encOwnerAuth,	/* in */
458 						UINT32 encSrkAuthSize,	/* in */
459 						BYTE * encSrkAuth,	/* in */
460 						UINT32 srkInfoSize,	/*in */
461 						BYTE * srkInfo,	/*in */
462 						TPM_AUTH * ownerAuth,	/* in, out */
463 						UINT32 * srkKeySize,	/*out */
464 						BYTE ** srkKey	/*out */
465 	    );
466 
467 	TSS_RESULT TCSP_OIAP_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
468 				       TCS_AUTHHANDLE * authHandle,	/* out  */
469 				       TCPA_NONCE * nonce0	/* out */
470 	    );
471 
472 	TSS_RESULT TCSP_OSAP_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
473 				       TCPA_ENTITY_TYPE entityType,	/* in */
474 				       UINT32 entityValue,	/* in */
475 				       TCPA_NONCE nonceOddOSAP,	/* in */
476 				       TCS_AUTHHANDLE * authHandle,	/* out  */
477 				       TCPA_NONCE * nonceEven,	/* out */
478 				       TCPA_NONCE * nonceEvenOSAP	/* out */
479 	    );
480 
481 	TSS_RESULT TCSP_ChangeAuth_Internal(TCS_CONTEXT_HANDLE contextHandle,	/* in */
482 					     TCS_KEY_HANDLE parentHandle,	/* in */
483 					     TCPA_PROTOCOL_ID protocolID,	/* in */
484 					     TCPA_ENCAUTH newAuth,	/* in */
485 					     TCPA_ENTITY_TYPE entityType,	/* in */
486 					     UINT32 encDataSize,	/* in */
487 					     BYTE * encData,	/* in */
488 					     TPM_AUTH * ownerAuth,	/* in, out */
489 					     TPM_AUTH * entityAuth,	/* in, out       */
490 					     UINT32 * outDataSize,	/* out */
491 					     BYTE ** outData	/* out */
492 	    );
493 
494 	TSS_RESULT TCSP_ChangeAuthOwner_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
495 						  TCPA_PROTOCOL_ID protocolID,	/* in */
496 						  TCPA_ENCAUTH newAuth,	/* in */
497 						  TCPA_ENTITY_TYPE entityType,	/* in */
498 						  TPM_AUTH * ownerAuth	/* in, out */
499 	    );
500 
501 	TSS_RESULT TCSP_ChangeAuthAsymStart_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
502 						      TCS_KEY_HANDLE idHandle,	/* in */
503 						      TCPA_NONCE antiReplay,	/* in */
504 						      UINT32 KeySizeIn,	/* in */
505 						      BYTE * KeyDataIn,	/* in */
506 						      TPM_AUTH * pAuth,	/* in, out */
507 						      UINT32 * KeySizeOut,	/* out */
508 						      BYTE ** KeyDataOut,	/* out */
509 						      UINT32 * CertifyInfoSize,	/* out */
510 						      BYTE ** CertifyInfo,	/* out */
511 						      UINT32 * sigSize,	/* out */
512 						      BYTE ** sig,	/* out */
513 						      TCS_KEY_HANDLE * ephHandle	/* out */
514 	    );
515 
516 	TSS_RESULT TCSP_ChangeAuthAsymFinish_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
517 						       TCS_KEY_HANDLE parentHandle,	/* in */
518 						       TCS_KEY_HANDLE ephHandle,	/* in */
519 						       TCPA_ENTITY_TYPE entityType,	/* in */
520 						       TCPA_HMAC newAuthLink,	/* in */
521 						       UINT32 newAuthSize,	/* in */
522 						       BYTE * encNewAuth,	/* in */
523 						       UINT32 encDataSizeIn,	/* in */
524 						       BYTE * encDataIn,	/* in */
525 						       TPM_AUTH * ownerAuth,	/* in, out */
526 						       UINT32 * encDataSizeOut,	/* out */
527 						       BYTE ** encDataOut,	/* out */
528 						       TCPA_NONCE * saltNonce,	/* out */
529 						       TCPA_DIGEST * changeProof	/* out */
530 	    );
531 
532 	TSS_RESULT TCSP_TerminateHandle_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
533 						  TCS_AUTHHANDLE handle	/* in */
534 	    );
535 
536 	TSS_RESULT TCSP_ActivateTPMIdentity_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
537 						      TCS_KEY_HANDLE idKey,	/* in */
538 						      UINT32 blobSize,	/* in */
539 						      BYTE * blob,	/* in */
540 						      TPM_AUTH * idKeyAuth,	/* in, out */
541 						      TPM_AUTH * ownerAuth,	/* in, out */
542 						      UINT32 * SymmetricKeySize,	/* out */
543 						      BYTE ** SymmetricKey	/* out */
544 	    );
545 
546 	TSS_RESULT TCSP_Extend_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
547 					 TCPA_PCRINDEX pcrNum,	/* in */
548 					 TCPA_DIGEST inDigest,	/* in */
549 					 TCPA_PCRVALUE * outDigest	/* out */
550 	    );
551 
552 	TSS_RESULT TCSP_PcrRead_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
553 					  TCPA_PCRINDEX pcrNum,	/* in */
554 					  TCPA_PCRVALUE * outDigest	/* out */
555 	    );
556 
557 	TSS_RESULT TCSP_PcrReset_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
558 					  UINT32 pcrDataSizeIn,	/* in */
559 					  BYTE * pcrData	/* in */
560 	    );
561 
562 	TSS_RESULT TCSP_Quote_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
563 					TCS_KEY_HANDLE keyHandle,	/* in */
564 					TCPA_NONCE antiReplay,	/* in */
565 					UINT32 pcrDataSizeIn,	/* in */
566 					BYTE * pcrDataIn,	/* in */
567 					TPM_AUTH * privAuth,	/* in, out */
568 					UINT32 * pcrDataSizeOut,	/* out */
569 					BYTE ** pcrDataOut,	/* out */
570 					UINT32 * sigSize,	/* out */
571 					BYTE ** sig	/* out */
572 	    );
573 
574 	TSS_RESULT TCSP_Quote2_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
575 						TCS_KEY_HANDLE keyHandle,	/* in */
576 						TCPA_NONCE antiReplay,	/* in */
577 						UINT32 pcrDataSizeIn,	/* in */
578 						BYTE * pcrDataIn,	/* in */
579 						TSS_BOOL addVersion, /* in */
580 						TPM_AUTH * privAuth,	/* in, out */
581 						UINT32 * pcrDataSizeOut,	/* out */
582 						BYTE ** pcrDataOut,	/* out */
583 						UINT32 * versionInfoSize, /* out */
584 						BYTE ** versionInfo, /* out */
585 						UINT32 * sigSize,	/* out */
586 						BYTE ** sig	/* out */
587 		    );
588 
589 	TSS_RESULT TCSP_DirWriteAuth_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
590 					       TCPA_DIRINDEX dirIndex,	/* in */
591 					       TCPA_DIRVALUE newContents,	/* in */
592 					       TPM_AUTH * ownerAuth	/* in, out */
593 	    );
594 
595 	TSS_RESULT TCSP_DirRead_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
596 					  TCPA_DIRINDEX dirIndex,	/* in */
597 					  TCPA_DIRVALUE * dirValue	/* out */
598 	    );
599 
600 	/* Since only the ordinal differs between Seal and Sealx (from an API point of view),
601 	   use a common Seal function specifying the ordinal to be sent to the TPM. */
602 	TSS_RESULT TCSP_Seal_Internal(UINT32 sealOrdinal,		/* in */
603 				       TCS_CONTEXT_HANDLE hContext,	/* in */
604 				       TCS_KEY_HANDLE keyHandle,	/* in */
605 				       TCPA_ENCAUTH encAuth,	/* in */
606 				       UINT32 pcrInfoSize,	/* in */
607 				       BYTE * PcrInfo,	/* in */
608 				       UINT32 inDataSize,	/* in */
609 				       BYTE * inData,	/* in */
610 				       TPM_AUTH * pubAuth,	/* in, out */
611 				       UINT32 * SealedDataSize,	/* out */
612 				       BYTE ** SealedData	/* out */
613 	    );
614 
615 	TSS_RESULT TCSP_Unseal_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
616 					 TCS_KEY_HANDLE parentHandle,	/* in */
617 					 UINT32 SealedDataSize,	/* in */
618 					 BYTE * SealedData,	/* in */
619 					 TPM_AUTH * parentAuth,	/* in, out */
620 					 TPM_AUTH * dataAuth,	/* in, out */
621 					 UINT32 * DataSize,	/* out */
622 					 BYTE ** Data	/* out */
623 	    );
624 
625 	TSS_RESULT TCSP_UnBind_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
626 					 TCS_KEY_HANDLE keyHandle,	/* in */
627 					 UINT32 inDataSize,	/* in */
628 					 BYTE * inData,	/* in */
629 					 TPM_AUTH * privAuth,	/* in, out */
630 					 UINT32 * outDataSize,	/* out */
631 					 BYTE ** outData	/* out */
632 	    );
633 	TSS_RESULT TCSP_CreateMigrationBlob_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
634 						      TCS_KEY_HANDLE parentHandle,	/* in */
635 						      TCPA_MIGRATE_SCHEME migrationType,	/* in */
636 						      UINT32 MigrationKeyAuthSize,	/* in */
637 						      BYTE * MigrationKeyAuth,	/* in */
638 						      UINT32 encDataSize,	/* in */
639 						      BYTE * encData,	/* in */
640 						      TPM_AUTH * parentAuth,	/* in, out */
641 						      TPM_AUTH * entityAuth,	/* in, out */
642 						      UINT32 * randomSize,	/* out */
643 						      BYTE ** random,	/* out */
644 						      UINT32 * outDataSize,	/* out */
645 						      BYTE ** outData	/* out */
646 	    );
647 
648 	TSS_RESULT TCSP_ConvertMigrationBlob_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
649 						       TCS_KEY_HANDLE parentHandle,	/* in */
650 						       UINT32 inDataSize,	/* in */
651 						       BYTE * inData,	/* in */
652 						       UINT32 randomSize,	/* in */
653 						       BYTE * random,	/* in */
654 						       TPM_AUTH * parentAuth,	/* in, out */
655 						       UINT32 * outDataSize,	/* out */
656 						       BYTE ** outData	/* out */
657 	    );
658 
659 	TSS_RESULT TCSP_AuthorizeMigrationKey_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
660 							TCPA_MIGRATE_SCHEME migrateScheme,	/* in */
661 							UINT32 MigrationKeySize,	/* in */
662 							BYTE * MigrationKey,	/* in */
663 							TPM_AUTH * ownerAuth,	/* in, out */
664 							UINT32 * MigrationKeyAuthSize,	/* out */
665 							BYTE ** MigrationKeyAuth	/* out */
666 	    );
667 
668 	TSS_RESULT TCSP_CertifyKey_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
669 					     TCS_KEY_HANDLE certHandle,	/* in */
670 					     TCS_KEY_HANDLE keyHandle,	/* in */
671 					     TCPA_NONCE antiReplay,	/* in */
672 					     TPM_AUTH * certAuth,	/* in, out */
673 					     TPM_AUTH * keyAuth,	/* in, out */
674 					     UINT32 * CertifyInfoSize,	/* out */
675 					     BYTE ** CertifyInfo,	/* out */
676 					     UINT32 * outDataSize,	/* out */
677 					     BYTE ** outData	/* out */
678 	    );
679 
680 	TSS_RESULT TCSP_Sign_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
681 				       TCS_KEY_HANDLE keyHandle,	/* in */
682 				       UINT32 areaToSignSize,	/* in */
683 				       BYTE * areaToSign,	/* in */
684 				       TPM_AUTH * privAuth,	/* in, out */
685 				       UINT32 * sigSize,	/* out */
686 				       BYTE ** sig	/* out */
687 	    );
688 
689 	TSS_RESULT TCSP_GetRandom_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
690 					    UINT32 * bytesRequested,	/* in, out */
691 					    BYTE ** randomBytes	/* out */
692 	    );
693 
694 	TSS_RESULT TCSP_StirRandom_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
695 					     UINT32 inDataSize,	/* in */
696 					     BYTE * inData	/* in */
697 	    );
698 
699 	TSS_RESULT TCS_GetCapability_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
700 					       TCPA_CAPABILITY_AREA capArea,	/* in */
701 					       UINT32 subCapSize,	/* in */
702 					       BYTE * subCap,	/* in */
703 					       UINT32 * respSize,	/* out */
704 					       BYTE ** resp	/* out */
705 	    );
706 
707 	TSS_RESULT TCSP_GetCapability_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
708 						TCPA_CAPABILITY_AREA capArea,	/* in */
709 						UINT32 subCapSize,	/* in */
710 						BYTE * subCap,	/* in */
711 						UINT32 * respSize,	/* out */
712 						BYTE ** resp	/* out */
713 	    );
714 	TSS_RESULT TCSP_SetCapability_Internal(TCS_CONTEXT_HANDLE hContext,        /* in */
715 					       TCPA_CAPABILITY_AREA capArea,       /* in */
716 					       UINT32 subCapSize,  /* in */
717 					       BYTE * subCap,      /* in */
718 					       UINT32 valueSize,   /* in */
719 					       BYTE * value,       /* in */
720 					       TPM_AUTH * pOwnerAuth      /* in, out */
721 	    );
722 	TSS_RESULT TCSP_GetCapabilityOwner_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
723 						     TPM_AUTH * pOwnerAuth,	/* out */
724 						     TCPA_VERSION * pVersion,	/* out */
725 						     UINT32 * pNonVolatileFlags,	/* out */
726 						     UINT32 * pVolatileFlags	/* out */
727 	    );
728 
729 	TSS_RESULT TCSP_CreateEndorsementKeyPair_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
730 							   TCPA_NONCE antiReplay,	/* in */
731 							   UINT32 endorsementKeyInfoSize,	/* in */
732 							   BYTE * endorsementKeyInfo,	/* in */
733 							   UINT32 * endorsementKeySize,	/* out */
734 							   BYTE ** endorsementKey,	/* out */
735 							   TCPA_DIGEST * checksum	/* out */
736 	    );
737 
738 	TSS_RESULT TCSP_ReadPubek_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
739 					    TCPA_NONCE antiReplay,	/* in */
740 					    UINT32 * pubEndorsementKeySize,	/* out */
741 					    BYTE ** pubEndorsementKey,	/* out */
742 					    TCPA_DIGEST * checksum	/* out */
743 	    );
744 
745 	TSS_RESULT TCSP_DisablePubekRead_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
746 						   TPM_AUTH * ownerAuth	/* in, out */
747 	    );
748 
749 	TSS_RESULT TCSP_OwnerReadPubek_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
750 						 TPM_AUTH * ownerAuth,	/* in, out */
751 						 UINT32 * pubEndorsementKeySize,	/* out */
752 						 BYTE ** pubEndorsementKey	/* out */
753 	    );
754 
755 	TSS_RESULT TCSP_CreateRevocableEndorsementKeyPair_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
756 								   TPM_NONCE antiReplay,	/* in */
757 								   UINT32 endorsementKeyInfoSize,	/* in */
758 								   BYTE * endorsementKeyInfo,	/* in */
759 								   TSS_BOOL genResetAuth,	/* in */
760 								   TPM_DIGEST * eKResetAuth,	/* in, out */
761 								   UINT32 * endorsementKeySize,	/* out */
762 								   BYTE ** endorsementKey,	/* out */
763 								   TPM_DIGEST * checksum	/* out */
764 	    );
765 
766 	TSS_RESULT TCSP_RevokeEndorsementKeyPair_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
767 							  TPM_DIGEST EKResetAuth	/* in */
768 	    );
769 
770 	TSS_RESULT TCSP_SelfTestFull_Internal(TCS_CONTEXT_HANDLE hContext	/* in */
771 	    );
772 
773 	TSS_RESULT TCSP_CertifySelfTest_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
774 						  TCS_KEY_HANDLE keyHandle,	/* in */
775 						  TCPA_NONCE antiReplay,	/* in */
776 						  TPM_AUTH * privAuth,	/* in, out */
777 						  UINT32 * sigSize,	/* out */
778 						  BYTE ** sig	/* out */
779 	    );
780 
781 	TSS_RESULT TCSP_GetTestResult_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
782 						UINT32 * outDataSize,	/* out */
783 						BYTE ** outData	/* out */
784 	    );
785 
786 	TSS_RESULT TCSP_OwnerSetDisable_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
787 						  TSS_BOOL disableState,	/* in */
788 						  TPM_AUTH * ownerAuth	/* in, out */
789 	    );
790 
791 	TSS_RESULT TCSP_ResetLockValue_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
792 						TPM_AUTH * ownerAuth	/* in, out */
793 	    );
794 
795 	TSS_RESULT TCSP_OwnerClear_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
796 					     TPM_AUTH * ownerAuth	/* in, out */
797 	    );
798 
799 	TSS_RESULT TCSP_DisableOwnerClear_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
800 						    TPM_AUTH * ownerAuth	/* in, out */
801 	    );
802 
803 	TSS_RESULT TCSP_ForceClear_Internal(TCS_CONTEXT_HANDLE hContext	/* in */
804 	    );
805 
806 	TSS_RESULT TCSP_DisableForceClear_Internal(TCS_CONTEXT_HANDLE hContext	/* in */
807 	    );
808 
809 	TSS_RESULT TCSP_PhysicalPresence_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
810 						TCPA_PHYSICAL_PRESENCE fPhysicalPresence /* in */
811 	    );
812 
813 	TSS_RESULT TCSP_PhysicalDisable_Internal(TCS_CONTEXT_HANDLE hContext	/* in */
814 	    );
815 
816 	TSS_RESULT TCSP_PhysicalEnable_Internal(TCS_CONTEXT_HANDLE hContext	/* in */
817 	    );
818 
819 	TSS_RESULT TCSP_PhysicalSetDeactivated_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
820 							 TSS_BOOL state	/* in */
821 	    );
822 
823 	TSS_RESULT TCSP_SetTempDeactivated_Internal(TCS_CONTEXT_HANDLE hContext	/* in */
824 	    );
825 
826 	TSS_RESULT TCSP_SetTempDeactivated2_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
827 						TPM_AUTH * operatorAuth			/* in, out */
828 	    );
829 
830 	TSS_RESULT TCSP_FieldUpgrade_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
831 					       UINT32 dataInSize,	/* in */
832 					       BYTE * dataIn,	/* in */
833 					       UINT32 * dataOutSize,	/* out */
834 					       BYTE ** dataOut,	/* out */
835 					       TPM_AUTH * ownerAuth	/* in, out */
836 	    );
837 
838 	TSS_RESULT TCSP_SetRedirection_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
839 						 TCS_KEY_HANDLE keyHandle,	/* in */
840 						 UINT32 c1,	/* in */
841 						 UINT32 c2,	/* in */
842 						 TPM_AUTH * privAuth	/* in, out */
843 	    );
844 
845 	TSS_RESULT TCSP_CreateMaintenanceArchive_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
846 							   TSS_BOOL generateRandom,	/* in */
847 							   TPM_AUTH * ownerAuth,	/* in, out */
848 							   UINT32 * randomSize,	/* out */
849 							   BYTE ** random,	/* out */
850 							   UINT32 * archiveSize,	/* out */
851 							   BYTE ** archive	/* out */
852 	    );
853 
854 	TSS_RESULT TCSP_LoadMaintenanceArchive_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
855 							 UINT32 dataInSize,	/* in */
856 							 BYTE * dataIn,	/* in */
857 							 TPM_AUTH * ownerAuth,	/* in, out */
858 							 UINT32 * dataOutSize,	/* out */
859 							 BYTE ** dataOut	/* out */
860 	    );
861 
862 	TSS_RESULT TCSP_KillMaintenanceFeature_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
863 							 TPM_AUTH * ownerAuth	/* in, out */
864 	    );
865 
866 	TSS_RESULT TCSP_LoadManuMaintPub_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
867 						   TCPA_NONCE antiReplay,	/* in */
868 						   UINT32 PubKeySize,	/* in */
869 						   BYTE * PubKey,	/* in */
870 						   TCPA_DIGEST * checksum	/* out */
871 	    );
872 
873 	TSS_RESULT TCSP_ReadManuMaintPub_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
874 						   TCPA_NONCE antiReplay,	/* in */
875 						   TCPA_DIGEST * checksum	/* out */
876 	    );
877         TSS_RESULT TCSP_Reset_Internal(TCS_CONTEXT_HANDLE hContext
878             );
879 	TSS_RESULT TCSP_DaaJoin_internal(TCS_CONTEXT_HANDLE hContext, /* in */
880 					 TPM_HANDLE handle, /* in */
881 					 BYTE stage,               /* in */
882 					 UINT32 inputSize0,   /* in */
883 					 BYTE *inputData0,   /* in */
884 					 UINT32 inputSize1, /* in */
885 					 BYTE *inputData1, /* in */
886 					 TPM_AUTH * ownerAuth,   /* in, out */
887 					 UINT32 *outputSize, /* out */
888 					 BYTE **outputData  /* out */
889 	    );
890 
891 	TSS_RESULT TCSP_DaaSign_internal(TCS_CONTEXT_HANDLE hContext, /* in */
892 					 TPM_HANDLE handle, /* in */
893 					 BYTE stage,               /* in */
894 					 UINT32 inputSize0,   /* in */
895 					 BYTE *inputData0,   /* in */
896 					 UINT32 inputSize1, /* in */
897 					 BYTE *inputData1, /* in */
898 					 TPM_AUTH * ownerAuth,   /* in, out */
899 					 UINT32 *outputSize, /* out */
900 					 BYTE **outputData  /* out */
901 	    );
902 
903 
904 	TSS_RESULT TCSP_ReadCounter_Internal(TCS_CONTEXT_HANDLE    hContext,
905 					     TSS_COUNTER_ID        idCounter,
906 					     TPM_COUNTER_VALUE*    counterValue
907 	);
908 
909 	TSS_RESULT TCSP_CreateCounter_Internal(TCS_CONTEXT_HANDLE    hContext,
910 					       UINT32                LabelSize,
911 					       BYTE*                 pLabel,
912 					       TPM_ENCAUTH           CounterAuth,
913 					       TPM_AUTH*             pOwnerAuth,
914 					       TSS_COUNTER_ID*       idCounter,
915 					       TPM_COUNTER_VALUE*    counterValue
916 	);
917 
918 	TSS_RESULT TCSP_IncrementCounter_Internal(TCS_CONTEXT_HANDLE    hContext,
919 						  TSS_COUNTER_ID        idCounter,
920 						  TPM_AUTH*             pCounterAuth,
921 						  TPM_COUNTER_VALUE*    counterValue
922 	);
923 
924 	TSS_RESULT TCSP_ReleaseCounter_Internal(TCS_CONTEXT_HANDLE    hContext,
925 						TSS_COUNTER_ID        idCounter,
926 						TPM_AUTH*             pCounterAuth
927 	);
928 
929 	TSS_RESULT TCSP_ReleaseCounterOwner_Internal(TCS_CONTEXT_HANDLE    hContext,
930 						     TSS_COUNTER_ID        idCounter,
931 						     TPM_AUTH*             pOwnerAuth
932 	);
933 	TSS_RESULT TCSP_ReadCurrentTicks_Internal(TCS_CONTEXT_HANDLE hContext,
934 						  UINT32*            pulCurrentTime,
935 						  BYTE**	     prgbCurrentTime
936 	);
937 	TSS_RESULT TCSP_TickStampBlob_Internal(TCS_CONTEXT_HANDLE hContext,
938 					       TCS_KEY_HANDLE     hKey,
939 					       TPM_NONCE*         antiReplay,
940 					       TPM_DIGEST*        digestToStamp,
941 					       TPM_AUTH*          privAuth,
942 					       UINT32*            pulSignatureLength,
943 					       BYTE**             prgbSignature,
944 					       UINT32*            pulTickCountLength,
945 					       BYTE**             prgbTickCount
946 	);
947 	TSS_RESULT TCSP_EstablishTransport_Internal(TCS_CONTEXT_HANDLE      hContext,
948 						    UINT32                  ulTransControlFlags,
949 						    TCS_KEY_HANDLE          hEncKey,
950 						    UINT32                  ulTransSessionInfoSize,
951 						    BYTE*                   rgbTransSessionInfo,
952 						    UINT32                  ulSecretSize,
953 						    BYTE*                   rgbSecret,
954 						    TPM_AUTH*               pEncKeyAuth,
955 						    TPM_MODIFIER_INDICATOR* pbLocality,
956 						    TCS_HANDLE*             hTransSession,
957 						    UINT32*                 ulCurrentTicksSize,
958 						    BYTE**                  prgbCurrentTicks,
959 						    TPM_NONCE*              pTransNonce
960 	);
961 
962 	TSS_RESULT TCSP_ExecuteTransport_Internal(TCS_CONTEXT_HANDLE      hContext,
963 						  TPM_COMMAND_CODE        unWrappedCommandOrdinal,
964 						  UINT32                  ulWrappedCmdParamInSize,
965 						  BYTE*                   rgbWrappedCmdParamIn,
966 						  UINT32*                 pulHandleListSize,
967 						  TCS_HANDLE**            rghHandles,
968 						  TPM_AUTH*               pWrappedCmdAuth1,
969 						  TPM_AUTH*               pWrappedCmdAuth2,
970 						  TPM_AUTH*               pTransAuth,
971 						  UINT64*                 punCurrentTicks,
972 						  TPM_MODIFIER_INDICATOR* pbLocality,
973 						  TPM_RESULT*             pulWrappedCmdReturnCode,
974 						  UINT32*                 ulWrappedCmdParamOutSize,
975 						  BYTE**                  rgbWrappedCmdParamOut
976 	);
977 	TSS_RESULT TCSP_ReleaseTransportSigned_Internal(TCS_CONTEXT_HANDLE      hContext,
978 							TCS_KEY_HANDLE          hSignatureKey,
979 							TPM_NONCE*              AntiReplayNonce,
980 							TPM_AUTH*               pKeyAuth,
981 							TPM_AUTH*               pTransAuth,
982 							TPM_MODIFIER_INDICATOR* pbLocality,
983 							UINT32*                 pulCurrentTicksSize,
984 							BYTE**                  prgbCurrentTicks,
985 							UINT32*                 pulSignatureSize,
986 							BYTE**                  prgbSignature
987 	);
988 
989 	TSS_RESULT TCSP_NV_DefineOrReleaseSpace_Internal(TCS_CONTEXT_HANDLE	hContext, 	/* in */
990 							 UINT32			cPubInfoSize,	/* in */
991 							 BYTE* 			pPubInfo,	/* in */
992 							 TPM_ENCAUTH 		encAuth, 	/* in */
993 							 TPM_AUTH* 		pAuth	/* in, out */
994 	);
995 
996 	TSS_RESULT TCSP_NV_WriteValue_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
997 					       TSS_NV_INDEX		hNVStore,	/* in */
998 					       UINT32 			offset,		/* in */
999 					       UINT32 			ulDataLength,	/* in */
1000 					       BYTE* 			rgbDataToWrite,	/* in */
1001 					       TPM_AUTH* 		privAuth	/* in, out */
1002 	);
1003 
1004 	TSS_RESULT TCSP_NV_WriteValueAuth_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1005 						   TSS_NV_INDEX 	hNVStore,	/* in */
1006 						   UINT32 		offset,		/* in */
1007 						   UINT32		ulDataLength,	/* in */
1008 						   BYTE*		rgbDataToWrite,	/* in */
1009 						   TPM_AUTH*		NVAuth	/* in, out */
1010 	);
1011 
1012 	TSS_RESULT TCSP_NV_ReadValue_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1013 					      TSS_NV_INDEX hNVStore,	/* in */
1014 					      UINT32 offset,		/* in */
1015 					      UINT32* pulDataLength,	/* in, out */
1016 					      TPM_AUTH* privAuth,	/* in, out */
1017 					      BYTE** rgbDataRead 	/* out */
1018 	);
1019 
1020 	TSS_RESULT TCSP_NV_ReadValueAuth_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1021 					          TSS_NV_INDEX		hNVStore,	/* in */
1022 						  UINT32		offset,		/* in */
1023 						  UINT32*		pulDataLength,	/* in, out */
1024 						  TPM_AUTH*		NVAuth,		/* in, out */
1025 						  BYTE**		rgbDataRead	/* out */
1026 	);
1027 
1028 	TSS_RESULT TCSP_SetOrdinalAuditStatus_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1029 						       TPM_AUTH*		ownerAuth,	/* in, out */
1030 						       UINT32			ulOrdinal,	/* in */
1031 						       TSS_BOOL			bAuditState	/* in */
1032 	);
1033 
1034 	TSS_RESULT TCSP_GetAuditDigest_Internal(TCS_CONTEXT_HANDLE	hContext,		/* in */
1035 						UINT32			startOrdinal,		/* in */
1036 						TPM_DIGEST*		auditDigest,		/* out */
1037 						UINT32*			counterValueSize,	/* out */
1038 						BYTE**			counterValue,		/* out */
1039 						TSS_BOOL*		more,			/* out */
1040 						UINT32*			ordSize,		/* out */
1041 						UINT32**		ordList			/* out */
1042 	);
1043 
1044 	TSS_RESULT TCSP_GetAuditDigestSigned_Internal(TCS_CONTEXT_HANDLE	hContext,		/* in */
1045 						      TCS_KEY_HANDLE		keyHandle,		/* in */
1046 						      TSS_BOOL			closeAudit,		/* in */
1047 						      TPM_NONCE			antiReplay,		/* in */
1048 						      TPM_AUTH*			privAuth,		/* in, out */
1049 						      UINT32*			counterValueSize,	/* out */
1050 						      BYTE**			counterValue,		/* out */
1051 						      TPM_DIGEST*		auditDigest,		/* out */
1052 						      TPM_DIGEST*		ordinalDigest,		/* out */
1053 						      UINT32*			sigSize,		/* out */
1054 						      BYTE**			sig			/* out */
1055 	);
1056 
1057 	TSS_RESULT TCSP_SetOperatorAuth_Internal(TCS_CONTEXT_HANDLE	hContext,		/* in */
1058 						 TCPA_SECRET*           operatorAuth		/* in */
1059 	);
1060 
1061 	TSS_RESULT TCSP_OwnerReadInternalPub_Internal(TCS_CONTEXT_HANDLE	hContext, /* in */
1062 						      TCS_KEY_HANDLE 	hKey, 		/* in */
1063 						      TPM_AUTH*		pOwnerAuth, 	/*in, out*/
1064 						      UINT32* 		punPubKeySize,	/* out */
1065 						      BYTE**		ppbPubKeyData	/* out */
1066 	);
1067 
1068 	TSS_RESULT TCSP_Delegate_Manage_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1069 						 TPM_FAMILY_ID		familyID,	/* in */
1070 						 TPM_FAMILY_OPERATION	opFlag,		/* in */
1071 						 UINT32			opDataSize,	/* in */
1072 						 BYTE*			opData,		/* in */
1073 						 TPM_AUTH*		ownerAuth,	/* in, out */
1074 						 UINT32*		retDataSize,	/* out */
1075 						 BYTE**			retData		/* out */
1076 	);
1077 
1078 	TSS_RESULT TCSP_Delegate_CreateKeyDelegation_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1079 							      TCS_KEY_HANDLE		hKey,		/* in */
1080 							      UINT32			publicInfoSize,	/* in */
1081 							      BYTE*			publicInfo,	/* in */
1082 							      TPM_ENCAUTH*		encDelAuth,	/* in */
1083 							      TPM_AUTH*			keyAuth,	/* in, out */
1084 							      UINT32*			blobSize,	/* out */
1085 							      BYTE**			blob		/* out */
1086 	);
1087 
1088 	TSS_RESULT TCSP_Delegate_CreateOwnerDelegation_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1089 								TSS_BOOL		increment,	/* in */
1090 								UINT32			publicInfoSize,	/* in */
1091 								BYTE*			publicInfo,	/* in */
1092 								TPM_ENCAUTH*		encDelAuth,	/* in */
1093 								TPM_AUTH*		ownerAuth,	/* in, out */
1094 								UINT32*			blobSize,	/* out */
1095 								BYTE**			blob		/* out */
1096 	);
1097 
1098 	TSS_RESULT TCSP_Delegate_LoadOwnerDelegation_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1099 							      TPM_DELEGATE_INDEX	index,		/* in */
1100 							      UINT32			blobSize,	/* in */
1101 							      BYTE*			blob,		/* in */
1102 							      TPM_AUTH*			ownerAuth	/* in, out */
1103 	);
1104 
1105 	TSS_RESULT TCSP_Delegate_ReadTable_Internal(TCS_CONTEXT_HANDLE	hContext,		/* in */
1106 						    UINT32*		pulFamilyTableSize,	/* out */
1107 						    BYTE**		ppFamilyTable,		/* out */
1108 						    UINT32*		pulDelegateTableSize,	/* out */
1109 						    BYTE**		ppDelegateTable		/* out */
1110 	);
1111 
1112 	TSS_RESULT TCSP_Delegate_UpdateVerificationCount_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1113 								  UINT32		inputSize,	/* in */
1114 								  BYTE*			input,		/* in */
1115 								  TPM_AUTH*		ownerAuth,	/* in, out */
1116 								  UINT32*		outputSize,	/* out */
1117 								  BYTE**		output		/* out */
1118 	);
1119 
1120 	TSS_RESULT TCSP_Delegate_VerifyDelegation_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1121 							   UINT32		delegateSize,	/* in */
1122 							   BYTE*		delegate	/* in */
1123 	);
1124 
1125 	TSS_RESULT TCSP_CMK_SetRestrictions_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1126 						     TSS_CMK_DELEGATE	Restriction,	/* in */
1127 						     TPM_AUTH*		ownerAuth	/* in */
1128 	);
1129 
1130 	TSS_RESULT TCSP_CMK_ApproveMA_Internal(TCS_CONTEXT_HANDLE	hContext,		/* in */
1131 					       TPM_DIGEST		migAuthorityDigest,	/* in */
1132 					       TPM_AUTH*		ownerAuth,		/* in, out */
1133 					       TPM_HMAC*		HmacMigAuthDigest	/* out */
1134 	);
1135 
1136 	TSS_RESULT TCSP_CMK_CreateKey_Internal(TCS_CONTEXT_HANDLE	hContext,		/* in */
1137 					       TCS_KEY_HANDLE		hWrappingKey,		/* in */
1138 					       TPM_ENCAUTH		KeyUsageAuth,		/* in */
1139 					       TPM_HMAC			MigAuthApproval,	/* in */
1140 					       TPM_DIGEST		MigAuthorityDigest,	/* in */
1141 					       UINT32*			keyDataSize,		/* in, out */
1142 					       BYTE**			prgbKeyData,		/* in, out */
1143 					       TPM_AUTH*		pAuth			/* in, out */
1144 	);
1145 
1146 	TSS_RESULT TCSP_CMK_CreateTicket_Internal(TCS_CONTEXT_HANDLE	hContext,		/* in */
1147 						  UINT32		PublicVerifyKeySize,	/* in */
1148 						  BYTE*			PublicVerifyKey,	/* in */
1149 						  TPM_DIGEST		SignedData,		/* in */
1150 						  UINT32		SigValueSize,		/* in */
1151 						  BYTE*			SigValue,		/* in */
1152 						  TPM_AUTH*		pOwnerAuth,		/* in, out */
1153 						  TPM_HMAC*		SigTicket		/* out */
1154 	);
1155 
1156 	TSS_RESULT TCSP_CMK_CreateBlob_Internal(TCS_CONTEXT_HANDLE	hContext,		/* in */
1157 						TCS_KEY_HANDLE		parentHandle,		/* in */
1158 						TSS_MIGRATE_SCHEME	migrationType,		/* in */
1159 						UINT32			MigrationKeyAuthSize,	/* in */
1160 						BYTE*			MigrationKeyAuth,	/* in */
1161 						TPM_DIGEST		PubSourceKeyDigest,	/* in */
1162 						UINT32			msaListSize,		/* in */
1163 						BYTE*			msaList,		/* in */
1164 						UINT32			restrictTicketSize,	/* in */
1165 						BYTE*			restrictTicket,		/* in */
1166 						UINT32			sigTicketSize,		/* in */
1167 						BYTE*			sigTicket,		/* in */
1168 						UINT32			encDataSize,		/* in */
1169 						BYTE*			encData,		/* in */
1170 						TPM_AUTH*		parentAuth,		/* in, out */
1171 						UINT32*			randomSize,		/* out */
1172 						BYTE**			random,			/* out */
1173 						UINT32*			outDataSize,		/* out */
1174 						BYTE**			outData			/* out */
1175 	);
1176 
1177 	TSS_RESULT TCSP_CMK_ConvertMigration_Internal(TCS_CONTEXT_HANDLE	hContext,	/* in */
1178 						      TCS_KEY_HANDLE		parentHandle,	/* in */
1179 						      TPM_CMK_AUTH		restrictTicket,	/* in */
1180 						      TPM_HMAC			sigTicket,	/* in */
1181 						      UINT32			keyDataSize,	/* in */
1182 						      BYTE*			prgbKeyData,	/* in */
1183 						      UINT32			msaListSize,	/* in */
1184 						      BYTE*			msaList,	/* in */
1185 						      UINT32			randomSize,	/* in */
1186 						      BYTE*			random,		/* in */
1187 						      TPM_AUTH*			parentAuth,	/* in, out */
1188 						      UINT32*			outDataSize,	/* out */
1189 						      BYTE**			outData		/* out */
1190 	);
1191 	TSS_RESULT TCSP_FlushSpecific_Internal(TCS_CONTEXT_HANDLE hContext,        /* in */
1192 					       TCS_HANDLE hResHandle,      /* in */
1193 					       TPM_RESOURCE_TYPE resourceType /* in */
1194 	);
1195 
1196 	TSS_RESULT TCSP_KeyControlOwner_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
1197 					         TCS_KEY_HANDLE hKey,		/* in */
1198 					         UINT32 ulPubKeyLength,		/* in */
1199 					         BYTE* rgbPubKey,		/* in */
1200 					         UINT32 attribName,		/* in */
1201 					         TSS_BOOL attribValue,		/* in */
1202 					         TPM_AUTH* pOwnerAuth,		/* in,out */
1203 					         TSS_UUID* pUuidData		/* out */
1204 	);
1205 
1206 	TSS_RESULT TCSP_DSAP_Internal(TCS_CONTEXT_HANDLE hContext,	/* in */
1207 				      TPM_ENTITY_TYPE entityType,	/* in */
1208 				      TCS_KEY_HANDLE hKey,		/* in */
1209 				      TPM_NONCE *nonceOddDSAP,		/* in */
1210 				      UINT32 entityValueSize,		/* in */
1211 				      BYTE* entityValue,		/* in */
1212 				      TCS_AUTHHANDLE *authHandle,	/* out */
1213 				      TPM_NONCE *nonceEven,		/* out */
1214 				      TPM_NONCE *nonceEvenDSAP		/* out */
1215 	);
1216 
1217 #endif /*_TCS_UTILS_H_ */
1218