3
* Licensed Materials - Property of IBM
5
* trousers - An open source TCG Software Stack
7
* (C) Copyright International Business Machines Corp. 2006, 2007
17
#include "trousers/tss.h"
18
#include "trousers/trousers.h"
19
#include "trousers_types.h"
20
#include "spi_utils.h"
21
#include "capabilities.h"
26
* adds a new daa object to the daa list with TSP context tspContext
29
obj_daa_add(TSS_HCONTEXT tspContext, TSS_HOBJECT *phObject)
32
struct tr_daa_obj *daa = calloc(1, sizeof(struct tr_daa_obj));
35
LogError("malloc of %d bytes failed.", sizeof(struct tr_daa_obj));
36
return TSPERR(TSS_E_OUTOFMEMORY);
39
if ((result = obj_list_add(&daa_list, tspContext, 0, daa, phObject))) {
50
struct tr_daa_obj *daa = (struct tr_daa_obj *)data;
52
/* free all pointers in the tr_daa_obj object here */
57
* remove DAA object hObject from the DAA list
60
obj_daa_remove(TSS_HOBJECT hObject, TSS_HCONTEXT tspContext)
64
if ((result = obj_list_remove(&daa_list, &daa_free, hObject, tspContext)))
71
obj_is_daa(TSS_HOBJECT hObject)
73
TSS_BOOL answer = FALSE;
75
if ((obj_list_get_obj(&daa_list, hObject))) {
77
obj_list_put(&daa_list);
84
obj_daa_get_tsp_context(TSS_HDAA hDaa, TSS_HCONTEXT *tspContext)
86
struct tsp_object *obj;
88
if ((obj = obj_list_get_obj(&daa_list, hDaa)) == NULL)
89
return TSPERR(TSS_E_INVALID_HANDLE);
91
*tspContext = obj->tspContext;
93
obj_list_put(&daa_list);
99
obj_daa_get_and_lock_data(TSS_HDAA hDaa, struct tr_daa_obj **daa)
101
struct tsp_object *obj;
103
if ((obj = obj_list_get_obj(&daa_list, hDaa)) == NULL)
104
return TSPERR(TSS_E_INVALID_HANDLE);
110
obj_daa_get_handle_tpm(TSS_HDAA hDAA, TPM_HANDLE *hTPM) {
111
struct tr_daa_obj *daa_struct;
114
if( (result = obj_daa_get_and_lock_data( hDAA, &daa_struct)) != TSS_SUCCESS) return result;
115
*hTPM = daa_struct->tpm_handle;
116
obj_list_put(&daa_list);
121
obj_daa_set_handle_tpm(TSS_HDAA hDAA, TPM_HANDLE hTPM) {
122
struct tr_daa_obj *daa_struct;
125
if( (result = obj_daa_get_and_lock_data( hDAA, &daa_struct)) != TSS_SUCCESS) return result;
126
daa_struct->tpm_handle = hTPM;
127
obj_list_put(&daa_list);
132
obj_daa_get_session_handle(TSS_HDAA hDAA, UINT32 *session_handle) {
133
struct tr_daa_obj *daa_struct;
136
if( (result = obj_daa_get_and_lock_data( hDAA, &daa_struct)) != TSS_SUCCESS) return result;
137
*session_handle = daa_struct->session_handle;
138
obj_list_put(&daa_list);
143
obj_daa_set_session_handle(TSS_HDAA hDAA, UINT32 session_handle) {
144
struct tr_daa_obj *daa_struct;
147
if( (result = obj_daa_get_and_lock_data( hDAA, &daa_struct)) != TSS_SUCCESS) return result;
148
daa_struct->session_handle = session_handle;
149
obj_list_put(&daa_list);