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