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 14struct 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 32struct _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 44MUTEX_DECLARE_INIT(auth_mgr_lock); 45 46TSS_RESULT TPM_SaveAuthContext(TPM_AUTHHANDLE, UINT32 *, BYTE **); 47TSS_RESULT TPM_LoadAuthContext(UINT32, BYTE *, TPM_AUTHHANDLE *); 48 49#endif 50