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 _OBJ_CONTEXT_H_ 12 #define _OBJ_CONTEXT_H_ 13 14 #define TSS_CONTEXT_FLAGS_TRANSPORT_ENABLED 0x01 15 #define TSS_CONTEXT_FLAGS_TRANSPORT_DEFAULT_ENCRYPT 0x02 16 #define TSS_CONTEXT_FLAGS_TRANSPORT_AUTHENTIC 0x04 17 #define TSS_CONTEXT_FLAGS_TRANSPORT_EXCLUSIVE 0x08 18 #define TSS_CONTEXT_FLAGS_TRANSPORT_STATIC_AUTH 0x10 19 #define TSS_CONTEXT_FLAGS_TRANSPORT_ESTABLISHED 0x20 20 #define TSS_CONTEXT_FLAGS_TRANSPORT_MASK 0x3f 21 22 #define TSS_CONTEXT_FLAGS_TPM_VERSION_1 0x40 23 #define TSS_CONTEXT_FLAGS_TPM_VERSION_2 0x80 24 #define TSS_CONTEXT_FLAGS_TPM_VERSION_MASK 0xc0 25 26 /* structures */ 27 struct tr_context_obj { 28 TSS_FLAG silentMode, flags; 29 UINT32 hashMode; 30 TSS_HPOLICY policy; 31 BYTE *machineName; 32 UINT32 machineNameLength; 33 UINT32 connection_policy, current_connection; 34 struct tcs_api_table *tcs_api; 35 #ifdef TSS_BUILD_TRANSPORT 36 /* transport session support */ 37 TSS_HKEY transKey; 38 TPM_TRANSPORT_PUBLIC transPub; 39 TPM_MODIFIER_INDICATOR transMod; 40 TPM_TRANSPORT_AUTH transSecret; 41 TPM_AUTH transAuth; 42 TPM_TRANSPORT_LOG_IN transLogIn; 43 TPM_TRANSPORT_LOG_OUT transLogOut; 44 TPM_DIGEST transLogDigest; 45 #endif 46 }; 47 48 /* obj_context.c */ 49 void __tspi_obj_context_free(void *data); 50 TSS_BOOL obj_is_context(TSS_HOBJECT); 51 TSS_RESULT obj_context_get_policy(TSS_HCONTEXT, UINT32, TSS_HPOLICY *); 52 TSS_BOOL obj_context_is_silent(TSS_HCONTEXT); 53 TSS_RESULT obj_context_get_machine_name(TSS_HCONTEXT, UINT32 *, BYTE **); 54 TSS_RESULT obj_context_get_machine_name_attrib(TSS_HCONTEXT, UINT32 *, BYTE **); 55 TSS_RESULT obj_context_set_machine_name(TSS_HCONTEXT, BYTE *, UINT32); 56 TSS_RESULT obj_context_add(TSS_HOBJECT *); 57 TSS_RESULT obj_context_set_mode(TSS_HCONTEXT, UINT32); 58 TSS_RESULT obj_context_get_mode(TSS_HCONTEXT, UINT32 *); 59 TSS_BOOL obj_context_has_popups(TSS_HCONTEXT); 60 TSS_RESULT obj_context_get_hash_mode(TSS_HCONTEXT, UINT32 *); 61 TSS_RESULT obj_context_set_hash_mode(TSS_HCONTEXT, UINT32); 62 TSS_RESULT obj_context_get_connection_version(TSS_HCONTEXT, UINT32 *); 63 TSS_RESULT obj_context_set_connection_policy(TSS_HCONTEXT, UINT32); 64 #ifdef TSS_BUILD_TRANSPORT 65 TSS_RESULT obj_context_set_transport_key(TSS_HCONTEXT, TSS_HKEY); 66 TSS_RESULT obj_context_transport_get_control(TSS_HCONTEXT, UINT32, UINT32 *); 67 TSS_RESULT obj_context_transport_set_control(TSS_HCONTEXT, UINT32); 68 TSS_RESULT obj_context_transport_get_mode(TSS_HCONTEXT, UINT32, UINT32 *); 69 TSS_RESULT obj_context_transport_set_mode(TSS_HCONTEXT, UINT32); 70 TSS_RESULT obj_context_transport_init(TSS_HCONTEXT); 71 TSS_RESULT obj_context_transport_establish(TSS_HCONTEXT, struct tr_context_obj *); 72 TSS_RESULT obj_context_transport_execute(TSS_HCONTEXT, TPM_COMMAND_CODE, UINT32, BYTE*, TPM_DIGEST*, 73 UINT32*, TCS_HANDLE**, TPM_AUTH*, TPM_AUTH*, UINT32*, 74 BYTE**); 75 TSS_RESULT obj_context_transport_close(TSS_HCONTEXT, TSS_HKEY, TSS_HPOLICY, TSS_BOOL, 76 TPM_SIGN_INFO*, UINT32*, BYTE**); 77 #endif 78 TSS_RESULT obj_context_set_tpm_version(TSS_HCONTEXT, UINT32); 79 TSS_RESULT obj_context_get_tpm_version(TSS_HCONTEXT, UINT32 *); 80 TSS_RESULT obj_context_get_loadkey_ordinal(TSS_HCONTEXT, TPM_COMMAND_CODE *); 81 void obj_context_close(TSS_HCONTEXT); 82 83 struct tcs_api_table *obj_context_get_tcs_api(TSS_HCONTEXT); 84 #define TCS_API(c) obj_context_get_tcs_api(c) 85 86 87 #define CONTEXT_LIST_DECLARE struct obj_list context_list 88 #define CONTEXT_LIST_DECLARE_EXTERN extern struct obj_list context_list 89 #define CONTEXT_LIST_INIT() tspi_list_init(&context_list) 90 #define CONTEXT_LIST_CONNECT(a,b) obj_connectContext_list(&context_list, a, b) 91 #define CONTEXT_LIST_CLOSE(a) obj_list_close(&context_list, &__tspi_obj_context_free, a) 92 93 #endif 94