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
21struct 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
35extern struct key_mem_cache *key_mem_cache_head;
36MUTEX_DECLARE_EXTERN(mem_cache_lock);
37
38struct 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
50extern 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
68TSS_RESULT get_tpm_metrics(struct tpm_properties *);
69
70TSS_RESULT auth_mgr_init();
71TSS_RESULT auth_mgr_final();
72TSS_RESULT auth_mgr_check(TCS_CONTEXT_HANDLE, TPM_AUTHHANDLE *);
73TSS_RESULT auth_mgr_release_auth_handle(TCS_AUTHHANDLE, TCS_CONTEXT_HANDLE, TSS_BOOL);
74void       auth_mgr_release_auth(TPM_AUTH *, TPM_AUTH *, TCS_CONTEXT_HANDLE);
75TSS_RESULT auth_mgr_oiap(TCS_CONTEXT_HANDLE, TCS_AUTHHANDLE *, TCPA_NONCE *);
76TSS_RESULT auth_mgr_osap(TCS_CONTEXT_HANDLE, TCPA_ENTITY_TYPE, UINT32, TCPA_NONCE,
77			 TCS_AUTHHANDLE *, TCPA_NONCE *, TCPA_NONCE *);
78TSS_RESULT auth_mgr_close_context(TCS_CONTEXT_HANDLE);
79TSS_RESULT auth_mgr_swap_out(TCS_CONTEXT_HANDLE);
80TSS_BOOL   auth_mgr_req_new(TCS_CONTEXT_HANDLE);
81TSS_RESULT auth_mgr_add(TCS_CONTEXT_HANDLE, TPM_AUTHHANDLE);
82
83TSS_RESULT event_log_init();
84TSS_RESULT event_log_final();
85TSS_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
102TSS_RESULT key_mgr_dec_ref_count(TCS_KEY_HANDLE);
103TSS_RESULT key_mgr_inc_ref_count(TCS_KEY_HANDLE);
104void key_mgr_ref_count();
105TSS_RESULT key_mgr_load_by_uuid(TCS_CONTEXT_HANDLE, TSS_UUID *, TCS_LOADKEY_INFO *,
106				TCS_KEY_HANDLE *);
107TSS_RESULT key_mgr_load_by_blob(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, UINT32, BYTE *,
108				TPM_AUTH *, TCS_KEY_HANDLE *, TCS_KEY_HANDLE *);
109TSS_RESULT key_mgr_evict(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE);
110
111
112extern TCS_CONTEXT_HANDLE InternalContext;
113
114TSS_RESULT mc_update_time_stamp(TCPA_KEY_HANDLE);
115TCS_KEY_HANDLE getNextTcsKeyHandle();
116TCPA_STORE_PUBKEY *getParentPubBySlot(TCPA_KEY_HANDLE slot);
117TCPA_STORE_PUBKEY *mc_get_pub_by_slot(TCPA_KEY_HANDLE);
118TCPA_STORE_PUBKEY *mc_get_pub_by_handle(TCS_KEY_HANDLE);
119TSS_UUID *mc_get_uuid_by_pub(TCPA_STORE_PUBKEY *);
120TSS_RESULT mc_get_handles_by_uuid(TSS_UUID *, TCS_KEY_HANDLE *, TCPA_KEY_HANDLE *);
121TCS_KEY_HANDLE mc_get_handle_by_encdata(BYTE *);
122TSS_RESULT mc_update_encdata(BYTE *, BYTE *);
123TSS_RESULT mc_find_next_ownerevict_uuid(TSS_UUID *);
124TSS_RESULT mc_set_uuid(TCS_KEY_HANDLE, TSS_UUID *);
125
126TSS_RESULT initDiskCache(void);
127void replaceEncData_PS(TSS_UUID, BYTE *encData, BYTE *newEncData);
128
129TSS_RESULT mc_add_entry(TCS_KEY_HANDLE, TCPA_KEY_HANDLE, TSS_KEY *);
130TSS_RESULT mc_add_entry_init(TCS_KEY_HANDLE, TCPA_KEY_HANDLE, TSS_KEY *, TSS_UUID *);
131TSS_RESULT mc_remove_entry(TCS_KEY_HANDLE);
132TSS_RESULT mc_set_slot_by_slot(TCPA_KEY_HANDLE, TCPA_KEY_HANDLE);
133TSS_RESULT mc_set_slot_by_handle(TCS_KEY_HANDLE, TCPA_KEY_HANDLE);
134TCPA_KEY_HANDLE mc_get_slot_by_handle(TCS_KEY_HANDLE);
135TCPA_KEY_HANDLE mc_get_slot_by_handle_lock(TCS_KEY_HANDLE);
136TCPA_KEY_HANDLE mc_get_slot_by_pub(TCPA_STORE_PUBKEY *);
137TCS_KEY_HANDLE mc_get_handle_by_pub(TCPA_STORE_PUBKEY *, TCS_KEY_HANDLE);
138TCPA_STORE_PUBKEY *mc_get_parent_pub_by_pub(TCPA_STORE_PUBKEY *);
139TSS_BOOL isKeyRegistered(TCPA_STORE_PUBKEY *);
140TSS_RESULT mc_get_blob_by_pub(TCPA_STORE_PUBKEY *, TSS_KEY **);
141TSS_RESULT evictFirstKey(TCS_KEY_HANDLE);
142TSS_RESULT getParentUUIDByUUID(TSS_UUID *, TSS_UUID *);
143TSS_RESULT getRegisteredKeyByUUID(TSS_UUID *, BYTE *, UINT16 *);
144TSS_RESULT isPubRegistered(TCPA_STORE_PUBKEY *);
145TSS_RESULT getRegisteredUuidByPub(TCPA_STORE_PUBKEY *, TSS_UUID **);
146TSS_RESULT getRegisteredKeyByPub(TCPA_STORE_PUBKEY *, UINT32 *, BYTE **);
147TSS_BOOL isKeyLoaded(TCPA_KEY_HANDLE);
148TSS_RESULT LoadKeyShim(TCS_CONTEXT_HANDLE, TCPA_STORE_PUBKEY *, TSS_UUID *,TCPA_KEY_HANDLE *);
149TSS_RESULT mc_set_parent_by_handle(TCS_KEY_HANDLE, TCS_KEY_HANDLE);
150TSS_RESULT isUUIDRegistered(TSS_UUID *, TSS_BOOL *);
151void destroy_key_refs(TSS_KEY *);
152
153/* cxt.c */
154TSS_RESULT context_close_auth(TCS_CONTEXT_HANDLE);
155TSS_RESULT checkContextForAuth(TCS_CONTEXT_HANDLE, TCS_AUTHHANDLE);
156TSS_RESULT addContextForAuth(TCS_CONTEXT_HANDLE, TCS_AUTHHANDLE);
157TSS_RESULT ctx_verify_context(TCS_CONTEXT_HANDLE);
158COND_VAR *ctx_get_cond_var(TCS_CONTEXT_HANDLE);
159TSS_RESULT ctx_mark_key_loaded(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE);
160TSS_RESULT ctx_remove_key_loaded(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE);
161TSS_BOOL ctx_has_key_loaded(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE);
162void       ctx_ref_count_keys(struct tcs_context *);
163struct tcs_context *get_context(TCS_CONTEXT_HANDLE);
164TSS_RESULT ctx_req_exclusive_transport(TCS_CONTEXT_HANDLE);
165TSS_RESULT ctx_set_transport_enabled(TCS_CONTEXT_HANDLE, TPM_TRANSHANDLE);
166TSS_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()
171TSS_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
179TCS_CONTEXT_HANDLE make_context();
180void destroy_context(TCS_CONTEXT_HANDLE);
181
182/* tcs_utils.c */
183TSS_RESULT get_current_version(TPM_VERSION *);
184void LogData(char *string, UINT32 data);
185void LogResult(char *string, TSS_RESULT result);
186TSS_RESULT canILoadThisKey(TCPA_KEY_PARMS *parms, TSS_BOOL *);
187TSS_RESULT internal_EvictByKeySlot(TCPA_KEY_HANDLE slot);
188
189TSS_RESULT clearKeysFromChip(TCS_CONTEXT_HANDLE hContext);
190TSS_RESULT clearUnknownKeys(TCS_CONTEXT_HANDLE, UINT32 *);
191
192void UINT64ToArray(UINT64, BYTE *);
193void UINT32ToArray(UINT32, BYTE *);
194void UINT16ToArray(UINT16, BYTE *);
195UINT64 Decode_UINT64(BYTE *);
196UINT32 Decode_UINT32(BYTE *);
197UINT16 Decode_UINT16(BYTE *);
198void LoadBlob_UINT64(UINT64 *, UINT64, BYTE *);
199void LoadBlob_UINT32(UINT64 *, UINT32, BYTE *);
200void LoadBlob_UINT16(UINT64 *, UINT16, BYTE *);
201void UnloadBlob_UINT64(UINT64 *, UINT64 *, BYTE *);
202void UnloadBlob_UINT32(UINT64 *, UINT32 *, BYTE *);
203void UnloadBlob_UINT16(UINT64 *, UINT16 *, BYTE *);
204void LoadBlob_BYTE(UINT64 *, BYTE, BYTE *);
205void UnloadBlob_BYTE(UINT64 *, BYTE *, BYTE *);
206void LoadBlob_BOOL(UINT64 *, TSS_BOOL, BYTE *);
207void UnloadBlob_BOOL(UINT64 *, TSS_BOOL *, BYTE *);
208void LoadBlob(UINT64 *, UINT32, BYTE *, BYTE *);
209void UnloadBlob(UINT64 *, UINT32, BYTE *, BYTE *);
210void LoadBlob_Header(UINT16, UINT32, UINT32, BYTE *);
211#ifdef TSS_DEBUG
212#define UnloadBlob_Header(b,u)	LogUnloadBlob_Header(b,u, __FILE__, __LINE__)
213TSS_RESULT LogUnloadBlob_Header(BYTE *, UINT32 *, char *, int);
214#else
215TSS_RESULT UnloadBlob_Header(BYTE *, UINT32 *);
216#endif
217TSS_RESULT UnloadBlob_MIGRATIONKEYAUTH(UINT64 *, BYTE *, TCPA_MIGRATIONKEYAUTH *);
218void LoadBlob_Auth(UINT64 *, BYTE *, TPM_AUTH *);
219void UnloadBlob_Auth(UINT64 *, BYTE *, TPM_AUTH *);
220void LoadBlob_KEY_PARMS(UINT64 *, BYTE *, TCPA_KEY_PARMS *);
221TSS_RESULT UnloadBlob_KEY_PARMS(UINT64 *, BYTE *, TCPA_KEY_PARMS *);
222TSS_RESULT UnloadBlob_STORE_PUBKEY(UINT64 *, BYTE *, TCPA_STORE_PUBKEY *);
223void LoadBlob_STORE_PUBKEY(UINT64 *, BYTE *, TCPA_STORE_PUBKEY *);
224void UnloadBlob_VERSION(UINT64 *, BYTE *, TPM_VERSION *);
225void LoadBlob_VERSION(UINT64 *, BYTE *, TPM_VERSION *);
226void UnloadBlob_TCPA_VERSION(UINT64 *, BYTE *, TCPA_VERSION *);
227void LoadBlob_TCPA_VERSION(UINT64 *, BYTE *, TCPA_VERSION *);
228TSS_RESULT UnloadBlob_TSS_KEY(UINT64 *, BYTE *, TSS_KEY *);
229void LoadBlob_TSS_KEY(UINT64 *, BYTE *, TSS_KEY *);
230void LoadBlob_PUBKEY(UINT64 *, BYTE *, TCPA_PUBKEY *);
231TSS_RESULT UnloadBlob_PUBKEY(UINT64 *, BYTE *, TCPA_PUBKEY *);
232void LoadBlob_SYMMETRIC_KEY(UINT64 *, BYTE *, TCPA_SYMMETRIC_KEY *);
233TSS_RESULT UnloadBlob_SYMMETRIC_KEY(UINT64 *, BYTE *, TCPA_SYMMETRIC_KEY *);
234TSS_RESULT UnloadBlob_PCR_SELECTION(UINT64 *, BYTE *, TCPA_PCR_SELECTION *);
235void LoadBlob_PCR_SELECTION(UINT64 *, BYTE *, TCPA_PCR_SELECTION);
236TSS_RESULT UnloadBlob_PCR_COMPOSITE(UINT64 *, BYTE *, TCPA_PCR_COMPOSITE *);
237void LoadBlob_PCR_INFO(UINT64 *, BYTE *, TCPA_PCR_INFO *);
238TSS_RESULT UnloadBlob_PCR_INFO(UINT64 *, BYTE *, TCPA_PCR_INFO *);
239TSS_RESULT UnloadBlob_STORED_DATA(UINT64 *, BYTE *, TCPA_STORED_DATA *);
240void LoadBlob_STORED_DATA(UINT64 *, BYTE *, TCPA_STORED_DATA *);
241void LoadBlob_KEY_FLAGS(UINT64 *, BYTE *, TCPA_KEY_FLAGS *);
242void UnloadBlob_KEY_FLAGS(UINT64 *, BYTE *, TCPA_KEY_FLAGS *);
243TSS_RESULT UnloadBlob_CERTIFY_INFO(UINT64 *, BYTE *, TCPA_CERTIFY_INFO *);
244TSS_RESULT UnloadBlob_KEY_HANDLE_LIST(UINT64 *, BYTE *, TCPA_KEY_HANDLE_LIST *);
245void LoadBlob_UUID(UINT64 *, BYTE *, TSS_UUID);
246void UnloadBlob_UUID(UINT64 *, BYTE *, TSS_UUID *);
247void LoadBlob_COUNTER_VALUE(UINT64 *, BYTE *, TPM_COUNTER_VALUE *);
248void UnloadBlob_COUNTER_VALUE(UINT64 *, BYTE *, TPM_COUNTER_VALUE *);
249void LoadBlob_DIGEST(UINT64 *, BYTE *, TPM_DIGEST *);
250void UnloadBlob_DIGEST(UINT64 *, BYTE *, TPM_DIGEST *);
251void LoadBlob_NONCE(UINT64 *, BYTE *, TPM_NONCE *);
252void UnloadBlob_NONCE(UINT64 *, BYTE *, TPM_NONCE *);
253void LoadBlob_AUTHDATA(UINT64 *, BYTE *, TPM_AUTHDATA *);
254void 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
258void UnloadBlob_CURRENT_TICKS(UINT64 *, BYTE *, TPM_CURRENT_TICKS *);
259TSS_RESULT UnloadBlob_PCR_INFO_SHORT(UINT64 *, BYTE *, TPM_PCR_INFO_SHORT *);
260
261TSS_RESULT Hash(UINT32, UINT32, BYTE *, BYTE *);
262void free_external_events(UINT32, TSS_PCR_EVENT *);
263
264TSS_RESULT internal_TerminateHandle(TCS_AUTHHANDLE handle);
265UINT32 get_pcr_event_size(TSS_PCR_EVENT *);
266TSS_RESULT fill_key_info(struct key_disk_cache *, struct key_mem_cache *, TSS_KM_KEYINFO *);
267TSS_RESULT fill_key_info2(struct key_disk_cache *, struct key_mem_cache *, TSS_KM_KEYINFO2 *);
268
269char platform_get_runlevel();
270TSS_RESULT tpm_rsp_parse(TPM_COMMAND_CODE, BYTE *, UINT32, ...);
271TSS_RESULT tpm_rqu_build(TPM_COMMAND_CODE, UINT64 *, BYTE *, ...);
272TSS_RESULT tpm_preload_check(TCS_CONTEXT_HANDLE, TPM_COMMAND_CODE ordinal, ...);
273TSS_RESULT getKeyByCacheEntry(struct key_disk_cache *, BYTE *, UINT16 *);
274TSS_RESULT add_cache_entry(TCS_CONTEXT_HANDLE, BYTE *, TCS_KEY_HANDLE, TPM_KEY_HANDLE, TCS_KEY_HANDLE *);
275TSS_RESULT get_slot(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, TPM_KEY_HANDLE *);
276TSS_RESULT get_slot_lite(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, TPM_KEY_HANDLE *);
277TSS_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*);
278TSS_RESULT load_key_final(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, TCS_KEY_HANDLE *, BYTE *, TPM_KEY_HANDLE);
279TSS_RESULT LoadKeyByBlob_Internal(UINT32,TCS_CONTEXT_HANDLE,TCS_KEY_HANDLE,UINT32,BYTE *,TPM_AUTH *,
280				  TCS_KEY_HANDLE *,TCS_KEY_HANDLE *);
281TSS_RESULT TSC_PhysicalPresence_Internal(UINT16 physPres);
282TSS_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