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
      8  *
      9  */
     10 
     11 #ifndef _AUTH_MGR_H_
     12 #define _AUTH_MGR_H_
     13 
     14 struct auth_map
     15 {
     16 	TSS_BOOL full;
     17 	TPM_AUTHHANDLE tpm_handle;
     18 	TCS_CONTEXT_HANDLE tcs_ctx;
     19 	BYTE *swap; /* These 'swap' variables manage blobs received from TPM_SaveAuthContext */
     20 	UINT32 swap_size;
     21 };
     22 
     23 /*
     24  * it appears that there's no way to query a v1.1 TPM for the
     25  * max number of simultaneous auth sessions. We'll make the
     26  * default relatively large and let the TPM return
     27  * TCPA_RESOURCES to tell us when we cross the line.
     28  */
     29 #define TSS_DEFAULT_AUTH_TABLE_SIZE	16
     30 #define TSS_DEFAULT_OVERFLOW_AUTHS	16
     31 
     32 struct _auth_mgr
     33 {
     34 	short max_auth_sessions;
     35 	short open_auth_sessions;
     36 	UINT32 sleeping_threads;
     37 	COND_VAR **overflow;	/* queue of TCS contexts waiting for an auth session to become
     38 				 * available */
     39 	unsigned int of_head, of_tail;	/* head and tail of the overflow queue */
     40 	struct auth_map *auth_mapper; /* table of currently tracked auth sessions */
     41 	UINT32 auth_mapper_size, overflow_size;
     42 } auth_mgr;
     43 
     44 MUTEX_DECLARE_INIT(auth_mgr_lock);
     45 
     46 TSS_RESULT TPM_SaveAuthContext(TPM_AUTHHANDLE, UINT32 *, BYTE **);
     47 TSS_RESULT TPM_LoadAuthContext(UINT32, BYTE *, TPM_AUTHHANDLE *);
     48 
     49 #endif
     50