1723e4046Schristos 2723e4046Schristos /* 3723e4046Schristos * Licensed Materials - Property of IBM 4723e4046Schristos * 5723e4046Schristos * trousers - An open source TCG Software Stack 6723e4046Schristos * 7723e4046Schristos * (C) Copyright International Business Machines Corp. 2004-2007 8723e4046Schristos * 9723e4046Schristos */ 10723e4046Schristos 11723e4046Schristos #ifndef _OBJ_CONTEXT_H_ 12723e4046Schristos #define _OBJ_CONTEXT_H_ 13723e4046Schristos 14723e4046Schristos #define TSS_CONTEXT_FLAGS_TRANSPORT_ENABLED 0x01 15723e4046Schristos #define TSS_CONTEXT_FLAGS_TRANSPORT_DEFAULT_ENCRYPT 0x02 16723e4046Schristos #define TSS_CONTEXT_FLAGS_TRANSPORT_AUTHENTIC 0x04 17723e4046Schristos #define TSS_CONTEXT_FLAGS_TRANSPORT_EXCLUSIVE 0x08 18723e4046Schristos #define TSS_CONTEXT_FLAGS_TRANSPORT_STATIC_AUTH 0x10 19723e4046Schristos #define TSS_CONTEXT_FLAGS_TRANSPORT_ESTABLISHED 0x20 20723e4046Schristos #define TSS_CONTEXT_FLAGS_TRANSPORT_MASK 0x3f 21723e4046Schristos 22723e4046Schristos #define TSS_CONTEXT_FLAGS_TPM_VERSION_1 0x40 23723e4046Schristos #define TSS_CONTEXT_FLAGS_TPM_VERSION_2 0x80 24723e4046Schristos #define TSS_CONTEXT_FLAGS_TPM_VERSION_MASK 0xc0 25723e4046Schristos 26723e4046Schristos /* structures */ 27723e4046Schristos struct tr_context_obj { 28723e4046Schristos TSS_FLAG silentMode, flags; 29723e4046Schristos UINT32 hashMode; 30723e4046Schristos TSS_HPOLICY policy; 31723e4046Schristos BYTE *machineName; 32723e4046Schristos UINT32 machineNameLength; 33723e4046Schristos UINT32 connection_policy, current_connection; 34723e4046Schristos struct tcs_api_table *tcs_api; 35723e4046Schristos #ifdef TSS_BUILD_TRANSPORT 36723e4046Schristos /* transport session support */ 37723e4046Schristos TSS_HKEY transKey; 38723e4046Schristos TPM_TRANSPORT_PUBLIC transPub; 39723e4046Schristos TPM_MODIFIER_INDICATOR transMod; 40723e4046Schristos TPM_TRANSPORT_AUTH transSecret; 41723e4046Schristos TPM_AUTH transAuth; 42723e4046Schristos TPM_TRANSPORT_LOG_IN transLogIn; 43723e4046Schristos TPM_TRANSPORT_LOG_OUT transLogOut; 44723e4046Schristos TPM_DIGEST transLogDigest; 45723e4046Schristos #endif 46723e4046Schristos }; 47723e4046Schristos 48723e4046Schristos /* obj_context.c */ 49723e4046Schristos void __tspi_obj_context_free(void *data); 50723e4046Schristos TSS_BOOL obj_is_context(TSS_HOBJECT); 51723e4046Schristos TSS_RESULT obj_context_get_policy(TSS_HCONTEXT, UINT32, TSS_HPOLICY *); 52723e4046Schristos TSS_BOOL obj_context_is_silent(TSS_HCONTEXT); 53723e4046Schristos TSS_RESULT obj_context_get_machine_name(TSS_HCONTEXT, UINT32 *, BYTE **); 54723e4046Schristos TSS_RESULT obj_context_get_machine_name_attrib(TSS_HCONTEXT, UINT32 *, BYTE **); 55723e4046Schristos TSS_RESULT obj_context_set_machine_name(TSS_HCONTEXT, BYTE *, UINT32); 56723e4046Schristos TSS_RESULT obj_context_add(TSS_HOBJECT *); 57723e4046Schristos TSS_RESULT obj_context_set_mode(TSS_HCONTEXT, UINT32); 58723e4046Schristos TSS_RESULT obj_context_get_mode(TSS_HCONTEXT, UINT32 *); 59723e4046Schristos TSS_BOOL obj_context_has_popups(TSS_HCONTEXT); 60723e4046Schristos TSS_RESULT obj_context_get_hash_mode(TSS_HCONTEXT, UINT32 *); 61723e4046Schristos TSS_RESULT obj_context_set_hash_mode(TSS_HCONTEXT, UINT32); 62723e4046Schristos TSS_RESULT obj_context_get_connection_version(TSS_HCONTEXT, UINT32 *); 63723e4046Schristos TSS_RESULT obj_context_set_connection_policy(TSS_HCONTEXT, UINT32); 64723e4046Schristos #ifdef TSS_BUILD_TRANSPORT 65723e4046Schristos TSS_RESULT obj_context_set_transport_key(TSS_HCONTEXT, TSS_HKEY); 66723e4046Schristos TSS_RESULT obj_context_transport_get_control(TSS_HCONTEXT, UINT32, UINT32 *); 67723e4046Schristos TSS_RESULT obj_context_transport_set_control(TSS_HCONTEXT, UINT32); 68723e4046Schristos TSS_RESULT obj_context_transport_get_mode(TSS_HCONTEXT, UINT32, UINT32 *); 69723e4046Schristos TSS_RESULT obj_context_transport_set_mode(TSS_HCONTEXT, UINT32); 70723e4046Schristos TSS_RESULT obj_context_transport_init(TSS_HCONTEXT); 71723e4046Schristos TSS_RESULT obj_context_transport_establish(TSS_HCONTEXT, struct tr_context_obj *); 72723e4046Schristos TSS_RESULT obj_context_transport_execute(TSS_HCONTEXT, TPM_COMMAND_CODE, UINT32, BYTE*, TPM_DIGEST*, 73723e4046Schristos UINT32*, TCS_HANDLE**, TPM_AUTH*, TPM_AUTH*, UINT32*, 74723e4046Schristos BYTE**); 75723e4046Schristos TSS_RESULT obj_context_transport_close(TSS_HCONTEXT, TSS_HKEY, TSS_HPOLICY, TSS_BOOL, 76723e4046Schristos TPM_SIGN_INFO*, UINT32*, BYTE**); 77723e4046Schristos #endif 78723e4046Schristos TSS_RESULT obj_context_set_tpm_version(TSS_HCONTEXT, UINT32); 79723e4046Schristos TSS_RESULT obj_context_get_tpm_version(TSS_HCONTEXT, UINT32 *); 80723e4046Schristos TSS_RESULT obj_context_get_loadkey_ordinal(TSS_HCONTEXT, TPM_COMMAND_CODE *); 81723e4046Schristos void obj_context_close(TSS_HCONTEXT); 82723e4046Schristos 83723e4046Schristos struct tcs_api_table *obj_context_get_tcs_api(TSS_HCONTEXT); 84723e4046Schristos #define TCS_API(c) obj_context_get_tcs_api(c) 85723e4046Schristos 86723e4046Schristos 87723e4046Schristos #define CONTEXT_LIST_DECLARE struct obj_list context_list 88723e4046Schristos #define CONTEXT_LIST_DECLARE_EXTERN extern struct obj_list context_list 89*0861b331Schristos #define CONTEXT_LIST_INIT() tspi_list_init(&context_list) 90723e4046Schristos #define CONTEXT_LIST_CONNECT(a,b) obj_connectContext_list(&context_list, a, b) 91723e4046Schristos #define CONTEXT_LIST_CLOSE(a) obj_list_close(&context_list, &__tspi_obj_context_free, a) 92723e4046Schristos 93723e4046Schristos #endif 94