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