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