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