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_TPM_H_
12#define _OBJ_TPM_H_
13
14/* structures */
15struct tr_tpm_obj {
16	TSS_HPOLICY policy;
17#ifdef TSS_BUILD_TSS12
18	TSS_HPOLICY operatorPolicy;
19#endif
20	TSS_ALGORITHM_ID collateAlg;
21	TSS_ALGORITHM_ID activateAlg;
22	PVOID collateAppData;
23	PVOID activateAppData;
24	TSS_RESULT (*Tspicb_CollateIdentity)(
25			PVOID lpAppData,
26			UINT32 ulTCPAPlainIdentityProofLength,
27			BYTE *rgbTCPAPlainIdentityProof,
28			TSS_ALGORITHM_ID algID,
29			UINT32* ulSessionKeyLength,
30			BYTE *rgbSessionKey,
31			UINT32 *pulTCPAIdentityProofLength,
32			BYTE *rgbTCPAIdentityProof);
33	TSS_RESULT (*Tspicb_ActivateIdentity)(
34			PVOID lpAppData,
35			UINT32 ulSessionKeyLength,
36			BYTE *rgbSessionKey,
37			UINT32 ulSymCAAttestationBlobLength,
38			BYTE *rgbSymCAAttestationBlob,
39			UINT32 *pulCredentialLength,
40			BYTE *rgbCredential);
41	TSS_COUNTER_ID ctr_id;
42	UINT32 EndorsementCredSize;
43	BYTE *EndorsementCred;
44	UINT32 PlatformCredSize;
45	BYTE *PlatformCred;
46	UINT32 PlatformConfCredSize;
47	BYTE *PlatformConfCred;
48	UINT32 ConformanceCredSize;
49	BYTE *ConformanceCred;
50};
51
52/* prototypes */
53TSS_RESULT	   obj_getTpmObject(UINT32, TSS_HOBJECT *);
54
55/* obj_tpm.c */
56void       tpm_free(void *);
57TSS_BOOL   obj_is_tpm(TSS_HOBJECT);
58TSS_RESULT obj_tpm_get_tsp_context(TSS_HTPM, TSS_HCONTEXT *);
59TSS_RESULT obj_tpm_get(TSS_HCONTEXT, TSS_HTPM *);
60TSS_RESULT obj_tpm_set_policy(TSS_HTPM, TSS_HPOLICY);
61TSS_RESULT obj_tpm_add(TSS_HCONTEXT, TSS_HOBJECT *);
62TSS_RESULT obj_tpm_get_policy(TSS_HTPM, UINT32, TSS_HPOLICY *);
63TSS_RESULT obj_tpm_set_cb12(TSS_HTPM, TSS_FLAG, BYTE *);
64TSS_RESULT obj_tpm_get_cb12(TSS_HTPM, TSS_FLAG, UINT32 *, BYTE **);
65TSS_RESULT obj_tpm_set_cb11(TSS_HTPM, TSS_FLAG, TSS_FLAG, UINT32);
66TSS_RESULT obj_tpm_get_cb11(TSS_HTPM, TSS_FLAG, UINT32 *);
67void       obj_tpm_remove_policy_refs(TSS_HPOLICY, TSS_HCONTEXT);
68TSS_RESULT obj_tpm_get_current_counter(TSS_HTPM, TSS_COUNTER_ID *);
69TSS_RESULT obj_tpm_set_cred(TSS_HTPM, TSS_FLAG, UINT32, BYTE *);
70TSS_RESULT obj_tpm_get_cred(TSS_HTPM, TSS_FLAG, UINT32 *, BYTE **);
71
72#define TPM_LIST_DECLARE		struct obj_list tpm_list
73#define TPM_LIST_DECLARE_EXTERN		extern struct obj_list tpm_list
74#define TPM_LIST_INIT()			list_init(&tpm_list)
75#define TPM_LIST_CONNECT(a,b)		obj_connectContext_list(&tpm_list, a, b)
76#define TPM_LIST_CLOSE(a)		obj_list_close(&tpm_list, &tpm_free, a)
77
78#endif
79