diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2012-11-25 14:36:20 +0000 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2012-11-25 14:36:20 +0000 |
commit | c3649a2def02c41d837ae1f79dda729ccb91e677 (patch) | |
tree | bea46dff212fdef977fe9094a70a939e8cc21885 /src/include/tcs_tsp.h | |
download | trousers-upstream.tar.gz |
Imported Upstream version 0.3.9upstream/0.3.9upstream
Diffstat (limited to 'src/include/tcs_tsp.h')
-rw-r--r-- | src/include/tcs_tsp.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/include/tcs_tsp.h b/src/include/tcs_tsp.h new file mode 100644 index 0000000..fdca21e --- /dev/null +++ b/src/include/tcs_tsp.h @@ -0,0 +1,98 @@ + +/* + * Licensed Materials - Property of IBM + * + * trousers - An open source TCG Software Stack + * + * (C) Copyright International Business Machines Corp. 2004 + * + */ + + +#ifndef _TCS_TSP_H_ +#define _TCS_TSP_H_ + +/* Structures and defines needed to be known by the + * TSP layer and the TCS layer. + */ + +/* + * disk store format: + * + * [type name ] cached? + * -------------------------------------- + * [BYTE TrouSerS PS version] no + * [UINT32 num_keys_on_disk ] no + * [TSS_UUID uuid0 ] yes + * [TSS_UUID uuid_parent0 ] yes + * [UINT16 pub_data_size0 ] yes + * [UINT16 blob_size0 ] yes + * [UINT32 vendor_data_size0 ] yes + * [UINT16 cache_flags0 ] yes + * [BYTE[] pub_data0 ] no + * [BYTE[] blob0 ] no + * [BYTE[] vendor_data0 ] no + * [...] + * + */ + + +/* + * PS disk cache flags + */ +/* A key may be written to disk, in cache and yet be invalid if it has + * since been unregistered. */ +#define CACHE_FLAG_VALID 0x0001 +/* set if the key's parent is stored in system PS */ +#define CACHE_FLAG_PARENT_PS_SYSTEM 0x0002 + +/* the structure that makes up the in-memory PS disk cache */ +struct key_disk_cache +{ + unsigned int offset; + UINT16 pub_data_size; + UINT16 blob_size; + UINT16 flags; + UINT32 vendor_data_size; + TSS_UUID uuid; + TSS_UUID parent_uuid; + struct key_disk_cache *next; +}; + +/* The current PS version */ +#define TSSPS_VERSION 1 + +/* offsets into each key on disk. These should be passed a (struct key_disk_cache *) */ +#define TSSPS_VERSION_OFFSET (0) +#define TSSPS_NUM_KEYS_OFFSET (TSSPS_VERSION_OFFSET + sizeof(BYTE)) +#define TSSPS_KEYS_OFFSET (TSSPS_NUM_KEYS_OFFSET + sizeof(UINT32)) +#define TSSPS_UUID_OFFSET(c) ((c)->offset) +#define TSSPS_PARENT_UUID_OFFSET(c) ((c)->offset + sizeof(TSS_UUID)) +#define TSSPS_PUB_DATA_SIZE_OFFSET(c) ((c)->offset + (2 * sizeof(TSS_UUID))) +#define TSSPS_BLOB_SIZE_OFFSET(c) ((c)->offset + (2 * sizeof(TSS_UUID)) + sizeof(UINT16)) +#define TSSPS_VENDOR_SIZE_OFFSET(c) ((c)->offset + (2 * sizeof(TSS_UUID)) + (2 * sizeof(UINT16))) +#define TSSPS_CACHE_FLAGS_OFFSET(c) ((c)->offset + (2 * sizeof(TSS_UUID)) + (2 * sizeof(UINT16)) + sizeof(UINT32)) +#define TSSPS_PUB_DATA_OFFSET(c) ((c)->offset + (2 * sizeof(TSS_UUID)) + (3 * sizeof(UINT16)) + sizeof(UINT32)) +#define TSSPS_BLOB_DATA_OFFSET(c) ((c)->offset + (2 * sizeof(TSS_UUID)) + (3 * sizeof(UINT16)) + sizeof(UINT32) + (c)->pub_data_size) +#define TSSPS_VENDOR_DATA_OFFSET(c) ((c)->offset + (2 * sizeof(TSS_UUID)) + (3 * sizeof(UINT16)) + sizeof(UINT32) + (c)->pub_data_size + (c)->blob_size) + +/* XXX Get rid of this, there's no reason to set an arbitrary limit */ +#define MAX_KEY_CHILDREN 10 + +#define STRUCTURE_PACKING_ATTRIBUTE __attribute__((packed)) + +#ifdef TSS_DEBUG +#define DBG_ASSERT(x) assert(x) +#else +#define DBG_ASSERT(x) +#endif + +/* needed by execute transport in the TSP */ +#define TSS_TPM_TXBLOB_HDR_LEN (sizeof(UINT16) + (2 * sizeof(UINT32))) + +#define TSS_TPM_TXBLOB_SIZE (4096) +#define TSS_TXBLOB_WRAPPEDCMD_OFFSET (TSS_TPM_TXBLOB_HDR_LEN + sizeof(UINT32)) +#define TSS_MAX_AUTHS_CAP (1024) +#define TSS_REQ_MGR_MAX_RETRIES (5) + +#endif |