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