Home | History | Annotate | Line # | Download | only in include
      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