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_H_
12#define _OBJ_H_
13
14#include "threads.h"
15
16/* definitions */
17
18/* When TRUE, the object has PCRs associated with it */
19#define TSS_OBJ_FLAG_PCRS	0x00000001
20/* When TRUE, the object has a usage auth secret associated with it */
21#define TSS_OBJ_FLAG_USAGEAUTH	0x00000002
22/* When TRUE, the object has a migration auth secret associated with it */
23#define TSS_OBJ_FLAG_MIGAUTH	0x00000004
24/* When TRUE, the object has previously been registered in USER PS */
25#define TSS_OBJ_FLAG_USER_PS	0x00000008
26/* When TRUE, the object has previously been registered in SYSTEM PS */
27#define TSS_OBJ_FLAG_SYSTEM_PS	0x00000010
28/* When TRUE, the key has been created and cannot be altered */
29#define TSS_OBJ_FLAG_KEY_SET	0x00000020
30
31/* structures */
32struct tsp_object {
33	UINT32 handle;
34	UINT32 tspContext;
35	TSS_FLAG flags;
36	void *data;
37	struct tsp_object *next;
38};
39
40struct obj_list {
41	struct tsp_object *head;
42	MUTEX_DECLARE(lock);
43};
44
45/* prototypes */
46TSS_RESULT	   obj_getTpmObject(UINT32, TSS_HOBJECT *);
47TSS_HOBJECT	   obj_GetPolicyOfObject(UINT32, UINT32);
48void		   __tspi_obj_list_init();
49TSS_HOBJECT	   obj_get_next_handle();
50TSS_RESULT	   obj_list_add(struct obj_list *, UINT32, TSS_FLAG, void *, TSS_HOBJECT *);
51TSS_RESULT	   obj_list_remove(struct obj_list *, void (*)(void *), TSS_HOBJECT, TSS_HCONTEXT);
52void		   obj_list_put(struct obj_list *);
53struct tsp_object *obj_list_get_obj(struct obj_list *, UINT32);
54struct tsp_object *obj_list_get_tspcontext(struct obj_list *, UINT32);
55void		   obj_list_close(struct obj_list *, void (*)(void *), TSS_HCONTEXT);
56void		   obj_connectContext(TSS_HCONTEXT, TCS_CONTEXT_HANDLE);
57void		   obj_close_context(TSS_HCONTEXT);
58void               obj_lists_remove_policy_refs(TSS_HPOLICY, TSS_HCONTEXT);
59
60/* prototypes for functions that may traverse more than one list */
61TSS_RESULT	   obj_tcskey_get_pubkeyhash(TCS_KEY_HANDLE, BYTE *);
62
63#include "obj_tpm.h"
64#include "obj_context.h"
65#include "obj_hash.h"
66#include "obj_pcrs.h"
67#include "obj_policy.h"
68#include "obj_rsakey.h"
69#include "obj_encdata.h"
70#include "obj_daacred.h"
71#include "obj_daaarakey.h"
72#include "obj_daaissuerkey.h"
73#include "obj_nv.h"
74#include "obj_delfamily.h"
75#include "obj_migdata.h"
76
77
78TPM_LIST_DECLARE_EXTERN;
79CONTEXT_LIST_DECLARE_EXTERN;
80HASH_LIST_DECLARE_EXTERN;
81PCRS_LIST_DECLARE_EXTERN;
82POLICY_LIST_DECLARE_EXTERN;
83RSAKEY_LIST_DECLARE_EXTERN;
84ENCDATA_LIST_DECLARE_EXTERN;
85DAACRED_LIST_DECLARE_EXTERN;
86DAAARAKEY_LIST_DECLARE_EXTERN;
87DAAISSUERKEY_LIST_DECLARE_EXTERN;
88NVSTORE_LIST_DECLARE_EXTERN;
89DELFAMILY_LIST_DECLARE_EXTERN;
90MIGDATA_LIST_DECLARE_EXTERN;
91
92#endif
93