Home | History | Annotate | Line # | Download | only in include
      1      1.1  christos /*
      2      1.1  christos  * The Initial Developer of the Original Code is Intel Corporation.
      3      1.1  christos  * Portions created by Intel Corporation are Copyright (C) 2007 Intel Corporation.
      4      1.1  christos  * All Rights Reserved.
      5      1.1  christos  * trousers - An open source TCG Software Stack
      6      1.1  christos  *
      7      1.1  christos  * Author: james.xu (at) intel.com Rossey.liu (at) intel.com
      8      1.1  christos  *
      9      1.1  christos  */
     10      1.1  christos 
     11      1.1  christos #ifndef _OBJ_NVSTORE_H_
     12      1.1  christos #define _OBJ_NVSTORE_H_
     13      1.1  christos 
     14      1.1  christos #ifdef TSS_BUILD_NV
     15      1.1  christos 
     16      1.1  christos #define MAX_PUBLIC_DATA_SIZE 1024
     17      1.1  christos #define TSS_LOCALITY_MASK 0x1f
     18      1.1  christos 
     19      1.1  christos typedef struct objNV_DATA_PUBLIC
     20      1.1  christos {
     21      1.1  christos 	TPM_STRUCTURE_TAG tag;
     22      1.1  christos 	TPM_NV_INDEX nvIndex;
     23      1.1  christos 	TPM_NV_ATTRIBUTES permission;
     24      1.1  christos 	TPM_BOOL bReadSTClear;
     25      1.1  christos 	TPM_BOOL bWriteSTClear;
     26      1.1  christos 	TPM_BOOL bWriteDefine;
     27      1.1  christos 	UINT32 dataSize;
     28      1.1  christos }NV_DATA_PUBLIC;
     29      1.1  christos 
     30      1.1  christos /* structures */
     31      1.1  christos struct tr_nvstore_obj {
     32      1.1  christos 	TPM_STRUCTURE_TAG tag;
     33      1.1  christos 	TPM_NV_INDEX nvIndex;
     34      1.1  christos 	TPM_NV_ATTRIBUTES permission;
     35      1.1  christos 	TPM_BOOL bReadSTClear;
     36      1.1  christos 	TPM_BOOL bWriteSTClear;
     37      1.1  christos 	TPM_BOOL bWriteDefine;
     38      1.1  christos 	UINT32 dataSize;
     39      1.1  christos 	TSS_HPOLICY policy;
     40      1.1  christos };
     41      1.1  christos 
     42      1.1  christos /* obj_nv.c */
     43      1.1  christos void       nvstore_free(void *data);
     44      1.1  christos TSS_RESULT obj_nvstore_add(TSS_HCONTEXT, TSS_HOBJECT *);
     45      1.1  christos TSS_BOOL   obj_is_nvstore(TSS_HOBJECT tspContext);
     46      1.1  christos TSS_RESULT obj_nvstore_remove(TSS_HOBJECT, TSS_HCONTEXT);
     47      1.1  christos TSS_RESULT obj_nvstore_get_tsp_context(TSS_HNVSTORE, TSS_HCONTEXT *);
     48      1.1  christos TSS_RESULT obj_nvstore_set_index(TSS_HNVSTORE, UINT32);
     49      1.1  christos TSS_RESULT obj_nvstore_get_index(TSS_HNVSTORE, UINT32 *);
     50      1.1  christos TSS_RESULT obj_nvstore_set_datasize(TSS_HNVSTORE, UINT32);
     51      1.1  christos TSS_RESULT obj_nvstore_get_datasize(TSS_HNVSTORE, UINT32 *);
     52      1.1  christos TSS_RESULT obj_nvstore_set_permission(TSS_HNVSTORE, UINT32);
     53      1.1  christos TSS_RESULT obj_nvstore_get_permission_from_tpm(TSS_HNVSTORE hNvstore, UINT32 * permission);
     54      1.1  christos TSS_RESULT obj_nvstore_get_permission(TSS_HNVSTORE, UINT32 *);
     55      1.1  christos TSS_RESULT obj_nvstore_set_policy(TSS_HNVSTORE, TSS_HPOLICY);
     56      1.1  christos TSS_RESULT obj_nvstore_get_policy(TSS_HNVSTORE, UINT32, TSS_HPOLICY *);
     57      1.1  christos TSS_RESULT obj_nvstore_get_datapublic(TSS_HNVSTORE, UINT32 *, BYTE *);
     58      1.1  christos TSS_RESULT obj_nvstore_get_readdigestatrelease(TSS_HNVSTORE, UINT32 *, BYTE **);
     59      1.1  christos TSS_RESULT obj_nvstore_get_readpcrselection(TSS_HNVSTORE, UINT32 *, BYTE **);
     60      1.1  christos TSS_RESULT obj_nvstore_get_writedigestatrelease(TSS_HNVSTORE, UINT32 *, BYTE **);
     61      1.1  christos TSS_RESULT obj_nvstore_get_writepcrselection(TSS_HNVSTORE, UINT32 *, BYTE **);
     62      1.1  christos TSS_RESULT obj_nvstore_get_state_readstclear(TSS_HNVSTORE, UINT32 *);
     63      1.1  christos TSS_RESULT obj_nvstore_get_state_writedefine(TSS_HNVSTORE, UINT32 *);
     64      1.1  christos TSS_RESULT obj_nvstore_get_state_writestclear(TSS_HNVSTORE, UINT32 *);
     65      1.1  christos TSS_RESULT obj_nvstore_get_readlocalityatrelease(TSS_HNVSTORE, UINT32 *);
     66      1.1  christos TSS_RESULT obj_nvstore_get_writelocalityatrelease(TSS_HNVSTORE, UINT32 *);
     67      1.1  christos TSS_RESULT obj_nvstore_create_pcrshortinfo(TSS_HNVSTORE, TSS_HPCRS, UINT32 *, BYTE **);
     68      1.1  christos 
     69      1.1  christos #define NVSTORE_LIST_DECLARE		struct obj_list nvstore_list
     70      1.1  christos #define NVSTORE_LIST_DECLARE_EXTERN	extern struct obj_list nvstore_list
     71  1.1.1.2  christos #define NVSTORE_LIST_INIT()		tspi_list_init(&nvstore_list)
     72      1.1  christos #define NVSTORE_LIST_CONNECT(a,b)	obj_connectContext_list(&nvstore_list, a, b)
     73      1.1  christos #define NVSTORE_LIST_CLOSE(a)		obj_list_close(&nvstore_list, &nvstore_free, a)
     74      1.1  christos #else
     75      1.1  christos #define NVSTORE_LIST_DECLARE
     76      1.1  christos #define NVSTORE_LIST_DECLARE_EXTERN
     77      1.1  christos #define NVSTORE_LIST_INIT()
     78      1.1  christos #define NVSTORE_LIST_CONNECT(a,b)
     79      1.1  christos #define NVSTORE_LIST_CLOSE(a)
     80      1.1  christos #endif
     81      1.1  christos #endif
     82      1.1  christos 
     83