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 12#ifndef _SPI_UTILS_H_ 13#define _SPI_UTILS_H_ 14 15#include "threads.h" 16#include <netinet/in.h> // for endian routines 17 18#include "trousers_types.h" 19#include "trousers/trousers.h" 20 21struct key_mem_cache 22{ 23 TCS_KEY_HANDLE tcs_handle; 24 TSS_HKEY tsp_handle; 25 UINT16 flags; 26 UINT32 time_stamp; 27 TSS_UUID uuid; 28 TSS_UUID p_uuid; 29 TSS_KEY *blob; 30 struct key_mem_cache *parent; 31 struct key_mem_cache *next; 32}; 33 34extern struct key_mem_cache *key_mem_cache_head; 35MUTEX_DECLARE_EXTERN(mem_cache_lock); 36 37#ifndef MIN 38#define MIN(a,b) ((a) < (b) ? (a) : (b)) 39#endif 40 41#define BOOL(x) ((x) == 0) ? FALSE : TRUE 42#define INVBOOL(x) ((x) == 0) ? TRUE : FALSE 43 44#define TSS_PSFILE_INCREMENT_NUM_KEYS 1 45#define TSS_PSFILE_DECREMENT_NUM_KEYS 0 46 47void *calloc_tspi(TSS_HCONTEXT, UINT32); 48TSS_RESULT free_tspi(TSS_HCONTEXT, void *); 49TSS_RESULT __tspi_add_mem_entry(TSS_HCONTEXT, void *); 50 51/* secrets.c */ 52 53TSS_RESULT policy_UsesAuth(TSS_HPOLICY, TSS_BOOL *); 54 55TSS_RESULT secret_PerformAuth_OIAP(TSS_HOBJECT, UINT32, TSS_HPOLICY, TSS_BOOL, TCPA_DIGEST *, 56 TPM_AUTH *); 57#if 0 58TSS_RESULT secret_PerformXOR_OSAP(TSS_HPOLICY, TSS_HPOLICY, TSS_HPOLICY, TSS_HOBJECT, 59 UINT16, UINT32, TCPA_ENCAUTH *, TCPA_ENCAUTH *, 60 BYTE *, TPM_AUTH *, TCPA_NONCE *); 61TSS_RESULT secret_PerformAuth_OSAP(TSS_HOBJECT, UINT32, TSS_HPOLICY, 62 TSS_HPOLICY, TSS_HPOLICY, BYTE *, 63 TPM_AUTH *, BYTE *, TCPA_NONCE *); 64 65TSS_RESULT secret_ValidateAuth_OSAP(TSS_HOBJECT, UINT32, TSS_HPOLICY, 66 TSS_HPOLICY, TSS_HPOLICY, BYTE *, 67 TPM_AUTH *, BYTE *, TCPA_NONCE *); 68#endif 69TSS_RESULT secret_TakeOwnership(TSS_HKEY, TSS_HTPM, TSS_HKEY, TPM_AUTH *, 70 UINT32 *, BYTE *, UINT32 *, BYTE *); 71 72TSS_RESULT changeauth_owner(TSS_HCONTEXT, TSS_HOBJECT, TSS_HOBJECT, TSS_HPOLICY); 73TSS_RESULT changeauth_srk(TSS_HCONTEXT, TSS_HOBJECT, TSS_HOBJECT, TSS_HPOLICY); 74TSS_RESULT changeauth_key(TSS_HCONTEXT, TSS_HOBJECT, TSS_HOBJECT, TSS_HPOLICY); 75TSS_RESULT changeauth_encdata(TSS_HCONTEXT, TSS_HOBJECT, TSS_HOBJECT, TSS_HPOLICY); 76 77TSS_RESULT sealx_mask_cb(PVOID, TSS_HKEY, TSS_HENCDATA, TSS_ALGORITHM_ID, UINT32, BYTE *, BYTE *, 78 BYTE *, BYTE *, UINT32, BYTE *, BYTE *); 79 80TSS_RESULT __tspi_free_resource(TSS_HCONTEXT, UINT32, UINT32); 81TSS_RESULT owner_get_pubek(TSS_HCONTEXT, TSS_HTPM, TSS_HKEY *); 82 83#define next( x ) x = x->next 84 85/* spi_utils.c */ 86 87UINT16 get_num_pcrs(TSS_HCONTEXT); 88void free_key_refs(TSS_KEY *); 89 90#define UI_MAX_SECRET_STRING_LENGTH 256 91#define UI_MAX_POPUP_STRING_LENGTH 256 92 93#ifdef TSS_NO_GUI 94#define DisplayPINWindow(a,b,c) \ 95 do { \ 96 *(b) = 0; \ 97 } while (0) 98#define DisplayNewPINWindow(a,b,c) \ 99 do { \ 100 *(b) = 0; \ 101 } while (0) 102#else 103TSS_RESULT DisplayPINWindow(BYTE *, UINT32 *, BYTE *); 104TSS_RESULT DisplayNewPINWindow(BYTE *, UINT32 *, BYTE *); 105#endif 106 107TSS_RESULT merge_key_hierarchies(TSS_HCONTEXT, UINT32, TSS_KM_KEYINFO *, UINT32, TSS_KM_KEYINFO *, 108 UINT32 *, TSS_KM_KEYINFO **); 109TSS_RESULT merge_key_hierarchies2(TSS_HCONTEXT, UINT32, TSS_KM_KEYINFO2 *, UINT32, TSS_KM_KEYINFO2 *, 110 UINT32 *, TSS_KM_KEYINFO2 **); 111 112 113int pin_mem(void *, size_t); 114int unpin_mem(void *, size_t); 115 116 117#define TSS_MAX_SYM_BLOCK_SIZE 16 118 119TSS_RESULT internal_GetCap(TSS_HCONTEXT, TSS_FLAG, UINT32, UINT32 *, BYTE **); 120 121/* For an unconnected context that wants to do PCR operations, assume that 122 * the TPM has TSS_DEFAULT_NUM_PCRS pcrs */ 123#define TSS_DEFAULT_NUM_PCRS 16 124#define TSS_LOCAL_RANDOM_DEVICE "/dev/urandom" 125#define TSS_LOCALHOST_STRING "localhost" 126TSS_RESULT get_local_random(TSS_HCONTEXT, TSS_BOOL, UINT32, BYTE **); 127 128#define AUTH_RETRY_NANOSECS 500000000 129#define AUTH_RETRY_COUNT 5 130#define TPM_AUTH_RQU_SIZE (sizeof(TPM_AUTHHANDLE) + sizeof(TPM_NONCE) \ 131 + sizeof(TPM_BOOL) + sizeof(TPM_AUTHDATA)) 132#define TPM_AUTH_RSP_SIZE (sizeof(TPM_NONCE) + sizeof(TPM_BOOL) + sizeof(TPM_AUTHDATA)) 133 134#define endian32(x) htonl(x) 135#define endian16(x) htons(x) 136 137extern TSS_VERSION VERSION_1_1; 138 139TSS_RESULT __tspi_rsa_encrypt(TSS_HKEY, UINT32, BYTE*, UINT32*, BYTE*); 140TSS_RESULT __tspi_rsa_verify(TSS_HKEY, UINT32, UINT32, BYTE*, UINT32, BYTE*); 141 142TSS_RESULT Init_AuthNonce(TCS_CONTEXT_HANDLE, TSS_BOOL, TPM_AUTH *); 143TSS_BOOL validateReturnAuth(BYTE *, BYTE *, TPM_AUTH *); 144void HMAC_Auth(BYTE *, BYTE *, TPM_AUTH *); 145TSS_RESULT OSAP_Calc(TCS_CONTEXT_HANDLE, UINT16, UINT32, BYTE *, BYTE *, BYTE *, 146 TCPA_ENCAUTH *, TCPA_ENCAUTH *, BYTE *, TPM_AUTH *); 147 148void UINT64ToArray(UINT64, BYTE *); 149void UINT32ToArray(UINT32, BYTE *); 150void UINT16ToArray(UINT16, BYTE *); 151UINT16 Decode_UINT16(BYTE *); 152UINT32 Decode_UINT32(BYTE *); 153UINT64 Decode_UINT64(BYTE *); 154 155TSS_RESULT popup_GetSecret(UINT32, UINT32, BYTE *, void *); 156 157TSS_RESULT get_tpm_flags(TSS_HCONTEXT, TSS_HTPM, UINT32 *, UINT32 *); 158TSS_RESULT pcrs_calc_composite(TCPA_PCR_SELECTION *, TCPA_PCRVALUE *, TCPA_DIGEST *); 159struct tr_pcrs_obj; 160TSS_RESULT pcrs_sanity_check_selection(TCS_CONTEXT_HANDLE, struct tr_pcrs_obj *, TPM_PCR_SELECTION *); 161 162void LoadBlob_AUTH(UINT64 *, BYTE *, TPM_AUTH *); 163void UnloadBlob_AUTH(UINT64 *, BYTE *, TPM_AUTH *); 164void LoadBlob_LOADKEY_INFO(UINT64 *, BYTE *, TCS_LOADKEY_INFO *); 165void UnloadBlob_LOADKEY_INFO(UINT64 *, BYTE *, TCS_LOADKEY_INFO *); 166void LoadBlob_TSS_KEY(UINT64 *, BYTE *, TSS_KEY *); 167TSS_RESULT UnloadBlob_TSS_KEY(UINT64 *, BYTE *, TSS_KEY *); 168TSS_RESULT Hash_TSS_KEY(Trspi_HashCtx *, TSS_KEY *); 169void LoadBlob_TSS_PRIVKEY_DIGEST(UINT64 *, BYTE *, TSS_KEY *); 170TSS_RESULT Hash_TSS_PRIVKEY_DIGEST(Trspi_HashCtx *, TSS_KEY *); 171 172TSS_RESULT TSP_SetCapability(TSS_HCONTEXT, TSS_HTPM, TSS_HPOLICY, TPM_CAPABILITY_AREA, 173 UINT32, TSS_BOOL); 174 175TSS_RESULT RPC_OpenContext(TSS_HCONTEXT, BYTE *, int); 176TSS_RESULT RPC_FreeMemory(TSS_HCONTEXT, BYTE *); 177TSS_RESULT RPC_GetRegisteredKeyByPublicInfo(TSS_HCONTEXT, TCPA_ALGORITHM_ID, UINT32, 178 BYTE *, UINT32 *, BYTE **); 179TSS_RESULT RPC_CloseContext(TSS_HCONTEXT); 180TSS_RESULT RPC_GetCapability(TSS_HCONTEXT, TCPA_CAPABILITY_AREA, UINT32, BYTE *, UINT32 *, BYTE **); 181TSS_RESULT RPC_GetTPMCapability(TSS_HCONTEXT, TCPA_CAPABILITY_AREA, UINT32, BYTE *, UINT32 *, BYTE **); 182TSS_RESULT Transport_GetTPMCapability(TSS_HCONTEXT, TCPA_CAPABILITY_AREA, UINT32, BYTE *, UINT32 *, BYTE **); 183TSS_RESULT RPC_SetCapability(TSS_HCONTEXT, TCPA_CAPABILITY_AREA, UINT32, BYTE *, UINT32, BYTE *, TPM_AUTH *); 184TSS_RESULT Transport_SetCapability(TSS_HCONTEXT, TCPA_CAPABILITY_AREA, UINT32, BYTE *, UINT32, 185 BYTE *, TPM_AUTH *); 186TSS_RESULT RPC_LoadKeyByBlob(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, 187 TCS_KEY_HANDLE *, TCS_KEY_HANDLE *); 188TSS_RESULT Transport_LoadKeyByBlob(TSS_HCONTEXT, TSS_HKEY, UINT32, BYTE *, 189 TPM_AUTH *, TCS_KEY_HANDLE *, TPM_KEY_HANDLE *); 190TSS_RESULT RPC_LoadKeyByUUID(TSS_HCONTEXT, TSS_UUID, TCS_LOADKEY_INFO *, TCS_KEY_HANDLE *); 191TSS_RESULT RPC_GetRegisteredKey(TSS_HCONTEXT, TSS_UUID, TSS_KM_KEYINFO **); 192TSS_RESULT RPC_GetRegisteredKeyBlob(TSS_HCONTEXT, TSS_UUID, UINT32 *, BYTE **); 193TSS_RESULT RPC_RegisterKey(TSS_HCONTEXT, TSS_UUID, TSS_UUID, UINT32, BYTE *, UINT32, BYTE *); 194TSS_RESULT RPC_UnregisterKey(TSS_HCONTEXT, TSS_UUID); 195TSS_RESULT RPC_EnumRegisteredKeys(TSS_HCONTEXT, TSS_UUID *, UINT32 *, TSS_KM_KEYINFO **); 196TSS_RESULT RPC_EnumRegisteredKeys2(TSS_HCONTEXT, TSS_UUID *, UINT32 *, TSS_KM_KEYINFO2 **); 197TSS_RESULT RPC_ChangeAuth(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_PROTOCOL_ID, TCPA_ENCAUTH *, 198 TCPA_ENTITY_TYPE, UINT32, BYTE *, TPM_AUTH *, TPM_AUTH *, 199 UINT32 *, BYTE **); 200TSS_RESULT Transport_ChangeAuth(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_PROTOCOL_ID, TCPA_ENCAUTH *, 201 TCPA_ENTITY_TYPE, UINT32, BYTE *, TPM_AUTH *, TPM_AUTH *, 202 UINT32 *, BYTE **); 203TSS_RESULT RPC_ChangeAuthOwner(TSS_HCONTEXT, TCPA_PROTOCOL_ID, TCPA_ENCAUTH *, TCPA_ENTITY_TYPE, 204 TPM_AUTH *); 205TSS_RESULT Transport_ChangeAuthOwner(TSS_HCONTEXT, TCPA_PROTOCOL_ID, TCPA_ENCAUTH *, TCPA_ENTITY_TYPE, 206 TPM_AUTH *); 207TSS_RESULT RPC_TerminateHandle(TSS_HCONTEXT, TCS_AUTHHANDLE); 208TSS_RESULT Transport_TerminateHandle(TSS_HCONTEXT, TCS_AUTHHANDLE); 209TSS_RESULT RPC_GetRandom(TSS_HCONTEXT, UINT32, BYTE **); 210TSS_RESULT Transport_GetRandom(TSS_HCONTEXT, UINT32, BYTE **); 211TSS_RESULT RPC_ChangeAuthAsymStart(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE, UINT32, BYTE *, 212 TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **, UINT32 *, 213 BYTE **, TCS_KEY_HANDLE *); 214TSS_RESULT RPC_ChangeAuthAsymFinish(TSS_HCONTEXT, TCS_KEY_HANDLE, TCS_KEY_HANDLE, 215 TCPA_ENTITY_TYPE, TCPA_HMAC, UINT32, BYTE *, UINT32, 216 BYTE *, TPM_AUTH *, UINT32 *, BYTE **, TCPA_SALT_NONCE *, 217 TCPA_DIGEST *); 218TSS_RESULT RPC_GetPubKey(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_AUTH *, UINT32 *, BYTE **); 219TSS_RESULT Transport_GetPubKey(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_AUTH *, UINT32 *, BYTE **); 220TSS_RESULT RPC_CreateWrapKey(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_ENCAUTH *, TCPA_ENCAUTH *, 221 UINT32, BYTE *, UINT32 *, BYTE **, TPM_AUTH *); 222TSS_RESULT Transport_CreateWrapKey(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_ENCAUTH *, TCPA_ENCAUTH *, 223 UINT32, BYTE *, UINT32 *, BYTE **, TPM_AUTH *); 224TSS_RESULT RPC_CertifyKey(TSS_HCONTEXT, TCS_KEY_HANDLE, TCS_KEY_HANDLE, TPM_NONCE *, TPM_AUTH *, 225 TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **); 226TSS_RESULT Transport_CertifyKey(TSS_HCONTEXT, TCS_KEY_HANDLE, TCS_KEY_HANDLE, TPM_NONCE *, 227 TPM_AUTH *, TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **); 228TSS_RESULT RPC_CreateMigrationBlob(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_MIGRATE_SCHEME, UINT32, 229 BYTE *, UINT32, BYTE *, TPM_AUTH *, TPM_AUTH *, UINT32 *, 230 BYTE **, UINT32 *, BYTE **); 231TSS_RESULT Transport_CreateMigrationBlob(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_MIGRATE_SCHEME, UINT32, 232 BYTE *, UINT32, BYTE *, TPM_AUTH *, TPM_AUTH *, UINT32 *, 233 BYTE **, UINT32 *, BYTE **); 234TSS_RESULT RPC_ConvertMigrationBlob(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, UINT32, 235 BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 236TSS_RESULT Transport_ConvertMigrationBlob(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, UINT32, 237 BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 238TSS_RESULT RPC_PcrRead(TSS_HCONTEXT, TCPA_PCRINDEX, TCPA_PCRVALUE *); 239TSS_RESULT Transport_PcrRead(TSS_HCONTEXT, TCPA_PCRINDEX, TCPA_PCRVALUE *); 240TSS_RESULT RPC_PcrReset(TSS_HCONTEXT, UINT32, BYTE *); 241TSS_RESULT Transport_PcrReset(TSS_HCONTEXT, UINT32, BYTE *); 242TSS_RESULT RPC_OSAP(TSS_HCONTEXT, TCPA_ENTITY_TYPE, UINT32, TPM_NONCE *, TCS_AUTHHANDLE *, 243 TCPA_NONCE *, TCPA_NONCE *); 244TSS_RESULT Transport_OSAP(TSS_HCONTEXT, TCPA_ENTITY_TYPE, UINT32, TPM_NONCE *, TCS_AUTHHANDLE *, 245 TCPA_NONCE *, TCPA_NONCE *); 246TSS_RESULT RPC_GetCapabilityOwner(TSS_HCONTEXT, TPM_AUTH *, TCPA_VERSION *, UINT32 *, UINT32 *); 247TSS_RESULT Transport_GetCapabilityOwner(TSS_HCONTEXT, TPM_AUTH *, TCPA_VERSION *, UINT32 *, UINT32 *); 248TSS_RESULT RPC_OIAP(TSS_HCONTEXT, TCS_AUTHHANDLE *, TCPA_NONCE *); 249TSS_RESULT Transport_OIAP(TSS_HCONTEXT, TCS_AUTHHANDLE *, TCPA_NONCE *); 250TSS_RESULT RPC_Seal(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_ENCAUTH *, UINT32, BYTE *, UINT32, BYTE *, 251 TPM_AUTH *, UINT32 *, BYTE **); 252TSS_RESULT Transport_Seal(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_ENCAUTH *, UINT32, BYTE *, UINT32, 253 BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 254TSS_RESULT RPC_Sealx(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_ENCAUTH *, UINT32, BYTE *, UINT32, BYTE *, 255 TPM_AUTH *, UINT32 *, BYTE **); 256TSS_RESULT Transport_Sealx(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_ENCAUTH *, UINT32, BYTE *, UINT32, 257 BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 258TSS_RESULT RPC_Unseal(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, TPM_AUTH *, 259 UINT32 *, BYTE **); 260TSS_RESULT Transport_Unseal(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, TPM_AUTH *, 261 UINT32 *, BYTE **); 262TSS_RESULT RPC_UnBind(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, UINT32 *, 263 BYTE **); 264TSS_RESULT Transport_UnBind(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, UINT32 *, 265 BYTE **); 266TSS_RESULT RPC_Sign(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 267TSS_RESULT Transport_Sign(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 268TSS_RESULT RPC_CreateEndorsementKeyPair(TSS_HCONTEXT, TCPA_NONCE, UINT32, BYTE *, UINT32 *, 269 BYTE **, TCPA_DIGEST *); 270TSS_RESULT RPC_ReadPubek(TSS_HCONTEXT, TCPA_NONCE, UINT32 *, BYTE **, TCPA_DIGEST *); 271TSS_RESULT RPC_OwnerReadPubek(TSS_HCONTEXT, TPM_AUTH *, UINT32 *, BYTE **); 272TSS_RESULT RPC_TakeOwnership(TSS_HCONTEXT, UINT16, UINT32, BYTE *, UINT32, BYTE *, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 273TSS_RESULT RPC_CreateRevocableEndorsementKeyPair(TSS_HCONTEXT, TPM_NONCE, UINT32, BYTE *, TSS_BOOL, TPM_DIGEST *, UINT32 *, BYTE **, TPM_DIGEST *); 274TSS_RESULT RPC_RevokeEndorsementKeyPair(TSS_HCONTEXT, TPM_DIGEST *); 275TSS_RESULT RPC_MakeIdentity(TSS_HCONTEXT, TCPA_ENCAUTH, TCPA_CHOSENID_HASH, UINT32, BYTE *, 276 TPM_AUTH *, TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **, UINT32 *, 277 BYTE **, UINT32 *, BYTE **, UINT32 *, BYTE **); 278TSS_RESULT Transport_MakeIdentity2(TSS_HCONTEXT, TCPA_ENCAUTH, TCPA_CHOSENID_HASH, UINT32, BYTE *, TPM_AUTH *, TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **); 279TSS_RESULT RPC_ActivateTPMIdentity(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, 280 TPM_AUTH *, UINT32 *, BYTE **); 281TSS_RESULT Transport_ActivateTPMIdentity(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, 282 TPM_AUTH *, UINT32 *, BYTE **); 283TSS_RESULT RPC_OwnerClear(TSS_HCONTEXT, TPM_AUTH *); 284TSS_RESULT Transport_OwnerClear(TSS_HCONTEXT, TPM_AUTH *); 285TSS_RESULT RPC_ForceClear(TSS_HCONTEXT); 286TSS_RESULT Transport_ForceClear(TSS_HCONTEXT); 287TSS_RESULT RPC_DisableOwnerClear(TSS_HCONTEXT, TPM_AUTH *); 288TSS_RESULT Transport_DisableOwnerClear(TSS_HCONTEXT, TPM_AUTH *); 289TSS_RESULT RPC_DisableForceClear(TSS_HCONTEXT); 290TSS_RESULT Transport_DisableForceClear(TSS_HCONTEXT); 291TSS_RESULT RPC_PhysicalDisable(TSS_HCONTEXT); 292TSS_RESULT Transport_PhysicalDisable(TSS_HCONTEXT); 293TSS_RESULT RPC_PhysicalEnable(TSS_HCONTEXT); 294TSS_RESULT Transport_PhysicalEnable(TSS_HCONTEXT); 295TSS_RESULT RPC_PhysicalSetDeactivated(TSS_HCONTEXT, TSS_BOOL); 296TSS_RESULT Transport_PhysicalSetDeactivated(TSS_HCONTEXT, TSS_BOOL); 297TSS_RESULT RPC_PhysicalPresence(TSS_HCONTEXT, TCPA_PHYSICAL_PRESENCE); 298TSS_RESULT Transport_PhysicalPresence(TSS_HCONTEXT, TCPA_PHYSICAL_PRESENCE); 299TSS_RESULT RPC_SetTempDeactivated(TSS_HCONTEXT); 300TSS_RESULT Transport_SetTempDeactivated(TSS_HCONTEXT); 301TSS_RESULT RPC_SetTempDeactivated2(TSS_HCONTEXT, TPM_AUTH *); 302TSS_RESULT Transport_SetTempDeactivated2(TSS_HCONTEXT, TPM_AUTH *); 303TSS_RESULT RPC_OwnerSetDisable(TSS_HCONTEXT, TSS_BOOL, TPM_AUTH *); 304TSS_RESULT Transport_OwnerSetDisable(TSS_HCONTEXT, TSS_BOOL, TPM_AUTH *); 305TSS_RESULT RPC_ResetLockValue(TSS_HCONTEXT, TPM_AUTH *); 306TSS_RESULT Transport_ResetLockValue(TSS_HCONTEXT, TPM_AUTH *); 307TSS_RESULT RPC_SetOwnerInstall(TSS_HCONTEXT, TSS_BOOL); 308TSS_RESULT Transport_SetOwnerInstall(TSS_HCONTEXT, TSS_BOOL); 309TSS_RESULT RPC_DisablePubekRead(TSS_HCONTEXT, TPM_AUTH *); 310TSS_RESULT Transport_DisablePubekRead(TSS_HCONTEXT, TPM_AUTH *); 311TSS_RESULT RPC_SelfTestFull(TSS_HCONTEXT); 312TSS_RESULT Transport_SelfTestFull(TSS_HCONTEXT); 313TSS_RESULT RPC_CertifySelfTest(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE, TPM_AUTH *, UINT32 *, 314 BYTE **); 315TSS_RESULT Transport_CertifySelfTest(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE, TPM_AUTH *, UINT32 *, 316 BYTE **); 317TSS_RESULT RPC_GetTestResult(TSS_HCONTEXT, UINT32 *, BYTE **); 318TSS_RESULT Transport_GetTestResult(TSS_HCONTEXT, UINT32 *, BYTE **); 319TSS_RESULT RPC_StirRandom(TSS_HCONTEXT, UINT32, BYTE *); 320TSS_RESULT Transport_StirRandom(TSS_HCONTEXT, UINT32, BYTE *); 321TSS_RESULT RPC_AuthorizeMigrationKey(TSS_HCONTEXT, TCPA_MIGRATE_SCHEME, UINT32, BYTE *, 322 TPM_AUTH *, UINT32 *, BYTE **); 323TSS_RESULT Transport_AuthorizeMigrationKey(TSS_HCONTEXT, TCPA_MIGRATE_SCHEME, UINT32, BYTE *, 324 TPM_AUTH *, UINT32 *, BYTE **); 325TSS_RESULT RPC_GetPcrEvent(TSS_HCONTEXT, UINT32, UINT32 *, TSS_PCR_EVENT **); 326TSS_RESULT RPC_GetPcrEventsByPcr(TSS_HCONTEXT, UINT32, UINT32, UINT32 *, TSS_PCR_EVENT **); 327TSS_RESULT RPC_GetPcrEventLog(TSS_HCONTEXT, UINT32 *, TSS_PCR_EVENT **); 328TSS_RESULT RPC_Quote(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE *, UINT32, BYTE *, TPM_AUTH *, 329 UINT32 *, BYTE **, UINT32 *, BYTE **); 330TSS_RESULT Transport_Quote(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE *, UINT32, BYTE *, TPM_AUTH *, 331 UINT32 *, BYTE **, UINT32 *, BYTE **); 332TSS_RESULT RPC_Quote2(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE *, UINT32, BYTE *, TSS_BOOL, TPM_AUTH *, 333 UINT32 *, BYTE **, UINT32 *, BYTE **, UINT32 *, BYTE **); 334TSS_RESULT Transport_Quote2(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE *, UINT32, BYTE *, TSS_BOOL, 335 TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **, UINT32 *, BYTE **); 336TSS_RESULT RPC_Extend(TSS_HCONTEXT, TCPA_PCRINDEX, TCPA_DIGEST, TCPA_PCRVALUE *); 337TSS_RESULT Transport_Extend(TSS_HCONTEXT, TCPA_PCRINDEX, TCPA_DIGEST, TCPA_PCRVALUE *); 338TSS_RESULT RPC_DirWriteAuth(TSS_HCONTEXT, TCPA_DIRINDEX, TCPA_DIRVALUE *, TPM_AUTH *); 339TSS_RESULT Transport_DirWriteAuth(TSS_HCONTEXT, TCPA_DIRINDEX, TCPA_DIRVALUE *, TPM_AUTH *); 340TSS_RESULT RPC_DirRead(TSS_HCONTEXT, TCPA_DIRINDEX, TCPA_DIRVALUE *); 341TSS_RESULT Transport_DirRead(TSS_HCONTEXT, TCPA_DIRINDEX, TCPA_DIRVALUE *); 342TSS_RESULT RPC_LogPcrEvent(TSS_HCONTEXT, TSS_PCR_EVENT, UINT32 *); 343TSS_RESULT RPC_EvictKey(TSS_HCONTEXT, TCS_KEY_HANDLE); 344TSS_RESULT Transport_EvictKey(TSS_HCONTEXT, TCS_KEY_HANDLE); 345TSS_RESULT RPC_CreateMaintenanceArchive(TSS_HCONTEXT, TSS_BOOL, TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **); 346TSS_RESULT Transport_CreateMaintenanceArchive(TSS_HCONTEXT, TSS_BOOL, TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **); 347TSS_RESULT RPC_KillMaintenanceFeature(TSS_HCONTEXT, TPM_AUTH *); 348TSS_RESULT Transport_KillMaintenanceFeature(TSS_HCONTEXT, TPM_AUTH *); 349TSS_RESULT RPC_LoadMaintenanceArchive(TSS_HCONTEXT, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 350TSS_RESULT Transport_LoadMaintenanceArchive(TSS_HCONTEXT, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 351TSS_RESULT RPC_LoadManuMaintPub(TSS_HCONTEXT, TCPA_NONCE, UINT32, BYTE *, TCPA_DIGEST *); 352TSS_RESULT Transport_LoadManuMaintPub(TSS_HCONTEXT, TCPA_NONCE, UINT32, BYTE *, TCPA_DIGEST *); 353TSS_RESULT RPC_ReadManuMaintPub(TSS_HCONTEXT, TCPA_NONCE, TCPA_DIGEST *); 354TSS_RESULT Transport_ReadManuMaintPub(TSS_HCONTEXT, TCPA_NONCE, TCPA_DIGEST *); 355TSS_RESULT RPC_DaaJoin(TSS_HCONTEXT, TPM_HANDLE, BYTE, UINT32, BYTE *, UINT32, BYTE *, 356 TPM_AUTH *, UINT32 *, BYTE **); 357TSS_RESULT RPC_DaaSign(TSS_HCONTEXT, TPM_HANDLE, BYTE, UINT32, BYTE *, UINT32, BYTE *, 358 TPM_AUTH *, UINT32 *, BYTE **); 359TSS_RESULT RPC_ReadCounter(TSS_HCONTEXT, TSS_COUNTER_ID, TPM_COUNTER_VALUE *); 360TSS_RESULT Transport_ReadCounter(TSS_HCONTEXT, TSS_COUNTER_ID, TPM_COUNTER_VALUE *); 361TSS_RESULT RPC_CreateCounter(TSS_HCONTEXT, UINT32, BYTE *, TPM_ENCAUTH, TPM_AUTH *, 362 TSS_COUNTER_ID *, TPM_COUNTER_VALUE *); 363TSS_RESULT RPC_IncrementCounter(TSS_HCONTEXT, TSS_COUNTER_ID, TPM_AUTH *, TPM_COUNTER_VALUE *); 364TSS_RESULT RPC_ReleaseCounter(TSS_HCONTEXT, TSS_COUNTER_ID, TPM_AUTH *); 365TSS_RESULT RPC_ReleaseCounterOwner(TSS_HCONTEXT, TSS_COUNTER_ID, TPM_AUTH *); 366TSS_RESULT RPC_ReadCurrentTicks(TSS_HCONTEXT, UINT32 *, BYTE **); 367TSS_RESULT Transport_ReadCurrentTicks(TSS_HCONTEXT, UINT32 *, BYTE **); 368TSS_RESULT RPC_TickStampBlob(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_NONCE *, TPM_DIGEST *, TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **); 369TSS_RESULT Transport_TickStampBlob(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_NONCE *, TPM_DIGEST *, TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **); 370TSS_RESULT RPC_EstablishTransport(TSS_HCONTEXT, UINT32, TCS_KEY_HANDLE, UINT32, BYTE *, UINT32, BYTE *, TPM_AUTH *, TPM_MODIFIER_INDICATOR *, TCS_HANDLE *, UINT32 *, BYTE **, TPM_NONCE *); 371TSS_RESULT RPC_ExecuteTransport(TSS_HCONTEXT, TPM_COMMAND_CODE, UINT32, BYTE *, UINT32 *, TCS_HANDLE **, TPM_AUTH *, TPM_AUTH *, TPM_AUTH *, UINT64 *, TPM_MODIFIER_INDICATOR *, TPM_RESULT *, UINT32 *, BYTE **); 372TSS_RESULT RPC_ReleaseTransportSigned(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_NONCE *, TPM_AUTH *, TPM_AUTH *, TPM_MODIFIER_INDICATOR *, UINT32 *, BYTE **, UINT32 *, BYTE **); 373TSS_RESULT RPC_NV_DefineOrReleaseSpace(TSS_HCONTEXT, UINT32, BYTE *, TCPA_ENCAUTH, TPM_AUTH *); 374TSS_RESULT Transport_NV_DefineOrReleaseSpace(TSS_HCONTEXT, UINT32, BYTE *, TCPA_ENCAUTH, TPM_AUTH *); 375TSS_RESULT RPC_NV_WriteValue(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32, BYTE *, TPM_AUTH *); 376TSS_RESULT Transport_NV_WriteValue(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32, BYTE *, TPM_AUTH *); 377TSS_RESULT RPC_NV_WriteValueAuth(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32, BYTE *, TPM_AUTH *); 378TSS_RESULT Transport_NV_WriteValueAuth(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32, BYTE *, TPM_AUTH *); 379TSS_RESULT RPC_NV_ReadValue(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32 *, TPM_AUTH *, BYTE **); 380TSS_RESULT Transport_NV_ReadValue(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32 *, TPM_AUTH *, BYTE **); 381TSS_RESULT RPC_NV_ReadValueAuth(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32 *, TPM_AUTH *, BYTE **); 382TSS_RESULT Transport_NV_ReadValueAuth(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32 *, TPM_AUTH *, BYTE **); 383TSS_RESULT RPC_SetOrdinalAuditStatus(TSS_HCONTEXT, TPM_AUTH *, UINT32, TSS_BOOL); 384TSS_RESULT Transport_SetOrdinalAuditStatus(TSS_HCONTEXT, TPM_AUTH *, UINT32, TSS_BOOL); 385TSS_RESULT RPC_GetAuditDigest(TSS_HCONTEXT, UINT32, TPM_DIGEST *, UINT32 *, BYTE **, TSS_BOOL *, UINT32 *, UINT32 **); 386TSS_RESULT Transport_GetAuditDigest(TSS_HCONTEXT, UINT32, TPM_DIGEST *, UINT32 *, BYTE **, TSS_BOOL *, UINT32 *, UINT32 **); 387TSS_RESULT RPC_GetAuditDigestSigned(TSS_HCONTEXT, TCS_KEY_HANDLE, TSS_BOOL, TPM_NONCE *, 388 TPM_AUTH *, UINT32 *, BYTE **, TPM_DIGEST *, TPM_DIGEST *, 389 UINT32 *, BYTE **); 390TSS_RESULT Transport_GetAuditDigestSigned(TSS_HCONTEXT, TCS_KEY_HANDLE, TSS_BOOL, TPM_NONCE *, 391 TPM_AUTH *, UINT32 *, BYTE **, TPM_DIGEST *, TPM_DIGEST *, 392 UINT32 *, BYTE **); 393TSS_RESULT RPC_SetOperatorAuth(TSS_HCONTEXT, TCPA_SECRET *); 394TSS_RESULT Transport_SetOperatorAuth(TSS_HCONTEXT, TCPA_SECRET *); 395TSS_RESULT RPC_OwnerReadInternalPub(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_AUTH *, UINT32 *, BYTE **); 396TSS_RESULT Transport_OwnerReadInternalPub(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_AUTH *, UINT32 *, BYTE **); 397TSS_RESULT RPC_KeyControlOwner(TCS_CONTEXT_HANDLE, TCS_KEY_HANDLE, UINT32, BYTE *, UINT32, TSS_BOOL, TPM_AUTH *, TSS_UUID *); 398TSS_RESULT RPC_GetCredential(TSS_HCONTEXT, UINT32, UINT32, UINT32 *, BYTE **); 399TSS_RESULT RPC_GetCapabilitySigned(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE, TCPA_CAPABILITY_AREA, UINT32, BYTE *, TPM_AUTH *, TCPA_VERSION *, UINT32 *, BYTE **, UINT32 *, BYTE **); 400TSS_RESULT RPC_FieldUpgrade(TSS_HCONTEXT, UINT32, BYTE *, UINT32 *, BYTE **, TPM_AUTH *); 401TSS_RESULT RPC_SetRedirection(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, UINT32, TPM_AUTH *); 402TSS_RESULT RPC_Delegate_Manage(TSS_HCONTEXT, TPM_FAMILY_ID, TPM_FAMILY_OPERATION, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 403TSS_RESULT Transport_Delegate_Manage(TSS_HCONTEXT, TPM_FAMILY_ID, TPM_FAMILY_OPERATION, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 404TSS_RESULT RPC_Delegate_CreateKeyDelegation(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_ENCAUTH *, TPM_AUTH *, UINT32 *, BYTE **); 405TSS_RESULT Transport_Delegate_CreateKeyDelegation(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_ENCAUTH *, TPM_AUTH *, UINT32 *, BYTE **); 406TSS_RESULT RPC_Delegate_CreateOwnerDelegation(TSS_HCONTEXT, TSS_BOOL, UINT32, BYTE *, TPM_ENCAUTH *, TPM_AUTH *, UINT32 *, BYTE **); 407TSS_RESULT Transport_Delegate_CreateOwnerDelegation(TSS_HCONTEXT, TSS_BOOL, UINT32, BYTE *, TPM_ENCAUTH *, TPM_AUTH *, UINT32 *, BYTE **); 408TSS_RESULT RPC_Delegate_LoadOwnerDelegation(TSS_HCONTEXT, TPM_DELEGATE_INDEX, UINT32, BYTE *, TPM_AUTH *); 409TSS_RESULT Transport_Delegate_LoadOwnerDelegation(TSS_HCONTEXT, TPM_DELEGATE_INDEX, UINT32, BYTE *, TPM_AUTH *); 410TSS_RESULT RPC_Delegate_ReadTable(TSS_HCONTEXT, UINT32 *, BYTE **, UINT32 *, BYTE **); 411TSS_RESULT Transport_Delegate_ReadTable(TSS_HCONTEXT, UINT32 *, BYTE **, UINT32 *, BYTE **); 412TSS_RESULT RPC_Delegate_UpdateVerificationCount(TSS_HCONTEXT, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 413TSS_RESULT Transport_Delegate_UpdateVerificationCount(TSS_HCONTEXT, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 414TSS_RESULT RPC_Delegate_VerifyDelegation(TSS_HCONTEXT, UINT32, BYTE *); 415TSS_RESULT Transport_Delegate_VerifyDelegation(TSS_HCONTEXT, UINT32, BYTE *); 416TSS_RESULT RPC_DSAP(TSS_HCONTEXT, TPM_ENTITY_TYPE, TCS_KEY_HANDLE, TPM_NONCE *, UINT32, BYTE *, TCS_AUTHHANDLE *, TPM_NONCE *, TPM_NONCE *); 417TSS_RESULT Transport_DSAP(TSS_HCONTEXT, TPM_ENTITY_TYPE, TCS_KEY_HANDLE, TPM_NONCE *, UINT32, BYTE *, TCS_AUTHHANDLE *, TPM_NONCE *, TPM_NONCE *); 418TSS_RESULT RPC_CMK_SetRestrictions(TSS_HCONTEXT, TSS_CMK_DELEGATE, TPM_AUTH *); 419TSS_RESULT Transport_CMK_SetRestrictions(TSS_HCONTEXT, TSS_CMK_DELEGATE, TPM_AUTH *); 420TSS_RESULT RPC_CMK_ApproveMA(TSS_HCONTEXT, TPM_DIGEST, TPM_AUTH *, TPM_HMAC *); 421TSS_RESULT Transport_CMK_ApproveMA(TSS_HCONTEXT, TPM_DIGEST, TPM_AUTH *, TPM_HMAC *); 422TSS_RESULT RPC_CMK_CreateKey(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_ENCAUTH *, TPM_HMAC *, TPM_DIGEST *, UINT32 *, BYTE **, TPM_AUTH *); 423TSS_RESULT Transport_CMK_CreateKey(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_ENCAUTH, TPM_HMAC, TPM_DIGEST, UINT32 *, BYTE **, TPM_AUTH *); 424TSS_RESULT RPC_CMK_CreateTicket(TSS_HCONTEXT, UINT32, BYTE *, TPM_DIGEST, UINT32, BYTE *, TPM_AUTH *, TPM_HMAC *); 425TSS_RESULT Transport_CMK_CreateTicket(TSS_HCONTEXT, UINT32, BYTE *, TPM_DIGEST, UINT32, BYTE *, TPM_AUTH *, TPM_HMAC *); 426TSS_RESULT RPC_CMK_CreateBlob(TSS_HCONTEXT, TCS_KEY_HANDLE, TSS_MIGRATE_SCHEME, UINT32, BYTE *, TPM_DIGEST, UINT32, BYTE *, UINT32, BYTE *, UINT32, BYTE *, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **); 427TSS_RESULT Transport_CMK_CreateBlob(TSS_HCONTEXT, TCS_KEY_HANDLE, TSS_MIGRATE_SCHEME, UINT32, BYTE *, TPM_DIGEST, UINT32, BYTE *, UINT32, BYTE *, UINT32, BYTE *, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **); 428TSS_RESULT RPC_CMK_ConvertMigration(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_CMK_AUTH, TPM_HMAC, UINT32, BYTE *, UINT32, BYTE *, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 429TSS_RESULT Transport_CMK_ConvertMigration(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_CMK_AUTH, TPM_HMAC, UINT32, BYTE *, UINT32, BYTE *, UINT32, BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 430TSS_RESULT RPC_FlushSpecific(TSS_HCONTEXT, TCS_HANDLE, TPM_RESOURCE_TYPE); 431TSS_RESULT Transport_FlushSpecific(TSS_HCONTEXT, TCS_HANDLE, TPM_RESOURCE_TYPE); 432 433TSS_RESULT RPC_Error(TSS_HCONTEXT, ...); 434 435struct tcs_api_table { 436#ifdef TSS_BUILD_KEY 437 TSS_RESULT (*LoadKeyByBlob)(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, 438 TCS_KEY_HANDLE *, TCS_KEY_HANDLE *); 439 TSS_RESULT (*EvictKey)(TSS_HCONTEXT, TCS_KEY_HANDLE); 440 TSS_RESULT (*CreateWrapKey)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_ENCAUTH *, TCPA_ENCAUTH *, 441 UINT32, BYTE *, UINT32 *, BYTE **, TPM_AUTH *); 442 TSS_RESULT (*GetPubKey)(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_AUTH *, UINT32 *, BYTE **); 443 TSS_RESULT (*OwnerReadInternalPub)(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_AUTH*, UINT32*, 444 BYTE**); 445#ifdef TSS_BUILD_CERTIFY 446 TSS_RESULT (*CertifyKey)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCS_KEY_HANDLE, TPM_NONCE *, 447 TPM_AUTH *, TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **); 448#endif 449#endif 450#ifdef TSS_BUILD_OWN 451 TSS_RESULT (*OwnerClear)(TSS_HCONTEXT, TPM_AUTH *); 452 TSS_RESULT (*ForceClear)(TSS_HCONTEXT); 453#endif 454#ifdef TSS_BUILD_AUTH 455 TSS_RESULT (*OIAP)(TSS_HCONTEXT, TCS_AUTHHANDLE *, TCPA_NONCE *); 456 TSS_RESULT (*OSAP)(TSS_HCONTEXT, TCPA_ENTITY_TYPE, UINT32, TPM_NONCE *, TCS_AUTHHANDLE *, 457 TCPA_NONCE *, TCPA_NONCE *); 458 TSS_RESULT (*TerminateHandle)(TSS_HCONTEXT, TCS_AUTHHANDLE); 459#endif 460#ifdef TSS_BUILD_CHANGEAUTH 461 TSS_RESULT (*ChangeAuth)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_PROTOCOL_ID, TCPA_ENCAUTH *, 462 TCPA_ENTITY_TYPE, UINT32, BYTE *, TPM_AUTH *, TPM_AUTH *, UINT32 *, 463 BYTE **); 464 TSS_RESULT (*ChangeAuthOwner)(TSS_HCONTEXT, TCPA_PROTOCOL_ID, TCPA_ENCAUTH *, 465 TCPA_ENTITY_TYPE, TPM_AUTH *); 466 TSS_RESULT (*ChangeAuthAsymStart)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE, UINT32, BYTE *, 467 TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **, 468 UINT32 *, BYTE **, TCS_KEY_HANDLE *); 469 TSS_RESULT (*ChangeAuthAsymFinish)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCS_KEY_HANDLE, 470 TCPA_ENTITY_TYPE, TCPA_HMAC, UINT32, BYTE *, UINT32, 471 BYTE *, TPM_AUTH *, UINT32 *, BYTE **, TPM_NONCE *, 472 TCPA_DIGEST *); 473#endif 474#ifdef TSS_BUILD_AIK 475 TSS_RESULT (*ActivateTPMIdentity)(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, 476 TPM_AUTH *, UINT32 *, BYTE **); 477#endif 478#ifdef TSS_BUILD_PCR_EXTEND 479 TSS_RESULT (*Extend)(TSS_HCONTEXT, TCPA_PCRINDEX, TCPA_DIGEST, TCPA_PCRVALUE *); 480 TSS_RESULT (*PcrRead)(TSS_HCONTEXT, TCPA_PCRINDEX, TCPA_PCRVALUE *); 481 TSS_RESULT (*PcrReset)(TSS_HCONTEXT, UINT32, BYTE *); 482#endif 483#ifdef TSS_BUILD_QUOTE 484 TSS_RESULT (*Quote)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE *, UINT32, BYTE *, TPM_AUTH *, 485 UINT32 *, BYTE **, UINT32 *, BYTE **); 486#endif 487#ifdef TSS_BUILD_QUOTE2 488 TSS_RESULT (*Quote2)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE *, UINT32, BYTE *, TSS_BOOL, 489 TPM_AUTH *, UINT32 *, BYTE **, UINT32 *, BYTE **, UINT32 *, BYTE **); 490#endif 491#ifdef TSS_BUILD_DIR 492 TSS_RESULT (*DirWriteAuth)(TSS_HCONTEXT, TCPA_DIRINDEX, TCPA_DIRVALUE *, TPM_AUTH *); 493 TSS_RESULT (*DirRead)(TSS_HCONTEXT, TCPA_DIRINDEX, TCPA_DIRVALUE *); 494#endif 495#ifdef TSS_BUILD_SEAL 496 TSS_RESULT (*Seal)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_ENCAUTH *, UINT32, BYTE *, UINT32, 497 BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 498 TSS_RESULT (*Sealx)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_ENCAUTH *, UINT32, BYTE *, UINT32, 499 BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 500 TSS_RESULT (*Unseal)(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, TPM_AUTH *, 501 UINT32 *, BYTE **); 502#endif 503#ifdef TSS_BUILD_BIND 504 TSS_RESULT (*UnBind)(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, UINT32 *, 505 BYTE **); 506#endif 507#ifdef TSS_BUILD_MIGRATION 508 TSS_RESULT (*CreateMigrationBlob)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_MIGRATE_SCHEME, 509 UINT32, BYTE *, UINT32, BYTE *, TPM_AUTH *, TPM_AUTH *, 510 UINT32 *, BYTE **, UINT32 *, BYTE **); 511 TSS_RESULT (*ConvertMigrationBlob)(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, UINT32, 512 BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 513 TSS_RESULT (*AuthorizeMigrationKey)(TSS_HCONTEXT, TCPA_MIGRATE_SCHEME, UINT32, BYTE *, 514 TPM_AUTH *, UINT32 *, BYTE **); 515#endif 516#ifdef TSS_BUILD_SIGN 517 TSS_RESULT (*Sign)(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, TPM_AUTH *, UINT32 *, 518 BYTE **); 519#endif 520#ifdef TSS_BUILD_RANDOM 521 TSS_RESULT (*GetRandom)(TSS_HCONTEXT, UINT32, BYTE **); 522 TSS_RESULT (*StirRandom)(TSS_HCONTEXT, UINT32, BYTE *); 523#endif 524#ifdef TSS_BUILD_CAPS_TPM 525 TSS_RESULT (*GetTPMCapability)(TSS_HCONTEXT, TCPA_CAPABILITY_AREA, UINT32, BYTE *, UINT32 *, 526 BYTE **); 527 TSS_RESULT (*SetCapability)(TSS_HCONTEXT, TCPA_CAPABILITY_AREA, UINT32, BYTE *, UINT32, 528 BYTE *, TPM_AUTH *); 529 TSS_RESULT (*GetCapabilityOwner)(TSS_HCONTEXT, TPM_AUTH *, TCPA_VERSION *, UINT32 *, 530 UINT32 *); 531#endif 532#ifdef TSS_BUILD_EK 533 TSS_RESULT (*CreateEndorsementKeyPair)(TSS_HCONTEXT, TCPA_NONCE, UINT32, BYTE *, UINT32 *, 534 BYTE **, TCPA_DIGEST *); 535 TSS_RESULT (*ReadPubek)(TSS_HCONTEXT, TCPA_NONCE, UINT32 *, BYTE **, TCPA_DIGEST *); 536 TSS_RESULT (*OwnerReadPubek)(TSS_HCONTEXT, TPM_AUTH *, UINT32 *, BYTE **); 537#endif 538#ifdef TSS_BUILD_SELFTEST 539 TSS_RESULT (*SelfTestFull)(TSS_HCONTEXT); 540 TSS_RESULT (*CertifySelfTest)(TSS_HCONTEXT, TCS_KEY_HANDLE, TCPA_NONCE, TPM_AUTH *, 541 UINT32 *, BYTE **); 542 TSS_RESULT (*GetTestResult)(TSS_HCONTEXT, UINT32 *, BYTE **); 543#endif 544#ifdef TSS_BUILD_ADMIN 545 TSS_RESULT (*DisablePubekRead)(TSS_HCONTEXT, TPM_AUTH *); 546 TSS_RESULT (*SetOwnerInstall)(TSS_HCONTEXT, TSS_BOOL); 547 TSS_RESULT (*OwnerSetDisable)(TSS_HCONTEXT, TSS_BOOL, TPM_AUTH *); 548 TSS_RESULT (*ResetLockValue)(TSS_HCONTEXT, TPM_AUTH *); 549 TSS_RESULT (*DisableOwnerClear)(TSS_HCONTEXT, TPM_AUTH *); 550 TSS_RESULT (*DisableForceClear)(TSS_HCONTEXT); 551 TSS_RESULT (*PhysicalDisable)(TSS_HCONTEXT); 552 TSS_RESULT (*PhysicalEnable)(TSS_HCONTEXT); 553 TSS_RESULT (*PhysicalSetDeactivated)(TSS_HCONTEXT, TSS_BOOL); 554 TSS_RESULT (*PhysicalPresence)(TSS_HCONTEXT, TCPA_PHYSICAL_PRESENCE); 555 TSS_RESULT (*SetTempDeactivated)(TSS_HCONTEXT); 556 TSS_RESULT (*SetTempDeactivated2)(TSS_HCONTEXT, TPM_AUTH *); 557#endif 558#ifdef TSS_BUILD_MAINT 559 TSS_RESULT (*CreateMaintenanceArchive)(TSS_HCONTEXT, TSS_BOOL, TPM_AUTH *, UINT32 *, 560 BYTE **, UINT32 *, BYTE **); 561 TSS_RESULT (*LoadMaintenanceArchive)(TSS_HCONTEXT, UINT32, BYTE *, TPM_AUTH *, UINT32 *, 562 BYTE **); 563 TSS_RESULT (*KillMaintenanceFeature)(TSS_HCONTEXT, TPM_AUTH *); 564 TSS_RESULT (*LoadManuMaintPub)(TSS_HCONTEXT, TCPA_NONCE, UINT32, BYTE *, TCPA_DIGEST *); 565 TSS_RESULT (*ReadManuMaintPub)(TSS_HCONTEXT, TCPA_NONCE, TCPA_DIGEST *); 566#endif 567#ifdef TSS_BUILD_DAA 568 TSS_RESULT (*DaaJoin)(TSS_HCONTEXT, TPM_HANDLE, BYTE, UINT32, BYTE*, UINT32, BYTE*, 569 TPM_AUTH*, UINT32*, BYTE**); 570 TSS_RESULT (*DaaSign)(TSS_HCONTEXT, TPM_HANDLE, BYTE, UINT32, BYTE*, UINT32, BYTE*, 571 TPM_AUTH*, UINT32*, BYTE**); 572#endif 573#ifdef TSS_BUILD_COUNTER 574 TSS_RESULT (*ReadCounter)(TSS_HCONTEXT, TSS_COUNTER_ID, TPM_COUNTER_VALUE*); 575 TSS_RESULT (*CreateCounter)(TSS_HCONTEXT, UINT32, BYTE*, TPM_ENCAUTH, TPM_AUTH*, 576 TSS_COUNTER_ID*, TPM_COUNTER_VALUE*); 577 TSS_RESULT (*IncrementCounter)(TSS_HCONTEXT, TSS_COUNTER_ID, TPM_AUTH*, TPM_COUNTER_VALUE*); 578 TSS_RESULT (*ReleaseCounter)(TSS_HCONTEXT, TSS_COUNTER_ID, TPM_AUTH*); 579 TSS_RESULT (*ReleaseCounterOwner)(TSS_HCONTEXT, TSS_COUNTER_ID, TPM_AUTH*); 580#endif 581#ifdef TSS_BUILD_TICK 582 TSS_RESULT (*ReadCurrentTicks)(TSS_HCONTEXT, UINT32*, BYTE**); 583 TSS_RESULT (*TickStampBlob)(TSS_HCONTEXT, TCS_KEY_HANDLE, TPM_NONCE*, TPM_DIGEST*, 584 TPM_AUTH*, UINT32*, BYTE**,UINT32*, BYTE**); 585#endif 586#ifdef TSS_BUILD_NV 587 TSS_RESULT (*NV_DefineOrReleaseSpace)(TSS_HCONTEXT, UINT32, BYTE*, TCPA_ENCAUTH, TPM_AUTH*); 588 TSS_RESULT (*NV_WriteValue)(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32, BYTE*, TPM_AUTH*); 589 TSS_RESULT (*NV_WriteValueAuth)(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32, BYTE*, 590 TPM_AUTH*); 591 TSS_RESULT (*NV_ReadValue)(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32*, TPM_AUTH*, BYTE**); 592 TSS_RESULT (*NV_ReadValueAuth)(TSS_HCONTEXT, TSS_NV_INDEX, UINT32, UINT32*, TPM_AUTH*, 593 BYTE**); 594#endif 595#ifdef TSS_BUILD_AUDIT 596 TSS_RESULT (*SetOrdinalAuditStatus)(TSS_HCONTEXT, TPM_AUTH *, UINT32, TSS_BOOL); 597 TSS_RESULT (*GetAuditDigest)(TSS_HCONTEXT, UINT32, TPM_DIGEST *, UINT32 *, BYTE **, 598 TSS_BOOL *, UINT32 *, UINT32 **); 599 TSS_RESULT (*GetAuditDigestSigned)(TSS_HCONTEXT, TCS_KEY_HANDLE, TSS_BOOL, TPM_NONCE *, 600 TPM_AUTH *, UINT32 *, BYTE **, TPM_DIGEST *, 601 TPM_DIGEST *, UINT32 *, BYTE **); 602#endif 603#ifdef TSS_BUILD_TSS12 604 TSS_RESULT (*SetOperatorAuth)(TSS_HCONTEXT, TPM_SECRET *); 605 TSS_RESULT (*FlushSpecific)(TSS_HCONTEXT, TCS_HANDLE, TPM_RESOURCE_TYPE); 606#endif 607#ifdef TSS_BUILD_DELEGATION 608 TSS_RESULT (*Delegate_Manage)(TSS_HCONTEXT, TPM_FAMILY_ID, TPM_FAMILY_OPERATION, UINT32, 609 BYTE *, TPM_AUTH *, UINT32 *, BYTE **); 610 TSS_RESULT (*Delegate_CreateKeyDelegation)(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, BYTE *, 611 TPM_ENCAUTH *, TPM_AUTH *, UINT32 *, BYTE **); 612 TSS_RESULT (*Delegate_CreateOwnerDelegation)(TSS_HCONTEXT, TSS_BOOL, UINT32, BYTE *, 613 TPM_ENCAUTH *, TPM_AUTH *, UINT32 *, BYTE **); 614 TSS_RESULT (*Delegate_LoadOwnerDelegation)(TSS_HCONTEXT, TPM_DELEGATE_INDEX, UINT32, BYTE *, 615 TPM_AUTH *); 616 TSS_RESULT (*Delegate_ReadTable)(TSS_HCONTEXT, UINT32 *, BYTE **, UINT32 *, BYTE **); 617 TSS_RESULT (*Delegate_UpdateVerificationCount)(TSS_HCONTEXT, UINT32, BYTE *, TPM_AUTH *, 618 UINT32 *, BYTE **); 619 TSS_RESULT (*Delegate_VerifyDelegation)(TSS_HCONTEXT, UINT32, BYTE *); 620 TSS_RESULT (*DSAP)(TSS_HCONTEXT, TPM_ENTITY_TYPE, TCS_KEY_HANDLE, TPM_NONCE *, UINT32, 621 BYTE *, TCS_AUTHHANDLE *, TPM_NONCE *, TPM_NONCE *); 622#endif 623 TSS_RESULT (*FieldUpgrade)(TSS_HCONTEXT, UINT32, BYTE *, UINT32 *, BYTE **, TPM_AUTH *); 624 TSS_RESULT (*SetRedirection)(TSS_HCONTEXT, TCS_KEY_HANDLE, UINT32, UINT32, TPM_AUTH *); 625}; 626 627extern struct tcs_api_table tcs_normal_api; 628#ifdef TSS_BUILD_TRANSPORT 629extern struct tcs_api_table tcs_transport_api; 630#endif 631 632#endif 633