Home | History | Annotate | Line # | Download | only in include
      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
      8  *
      9  */
     10 
     11 
     12 #ifndef _TCS_TSP_H_
     13 #define _TCS_TSP_H_
     14 
     15 /* Structures and defines needed to be known by the
     16  * TSP layer and the TCS layer.
     17  */
     18 
     19 /*
     20  * disk store format:
     21  *
     22  * [type     name               ] cached?
     23  * --------------------------------------
     24  * [BYTE     TrouSerS PS version] no
     25  * [UINT32   num_keys_on_disk   ] no
     26  * [TSS_UUID uuid0              ] yes
     27  * [TSS_UUID uuid_parent0       ] yes
     28  * [UINT16   pub_data_size0     ] yes
     29  * [UINT16   blob_size0         ] yes
     30  * [UINT32   vendor_data_size0  ] yes
     31  * [UINT16   cache_flags0       ] yes
     32  * [BYTE[]   pub_data0          ] no
     33  * [BYTE[]   blob0              ] no
     34  * [BYTE[]   vendor_data0       ] no
     35  * [...]
     36  *
     37  */
     38 
     39 
     40 /*
     41  * PS disk cache flags
     42  */
     43 /* A key may be written to disk, in cache and yet be invalid if it has
     44  * since been unregistered. */
     45 #define CACHE_FLAG_VALID                0x0001
     46 /* set if the key's parent is stored in system PS */
     47 #define CACHE_FLAG_PARENT_PS_SYSTEM     0x0002
     48 
     49 /* the structure that makes up the in-memory PS disk cache */
     50 struct key_disk_cache
     51 {
     52         unsigned int offset;
     53         UINT16 pub_data_size;
     54         UINT16 blob_size;
     55         UINT16 flags;
     56 	UINT32 vendor_data_size;
     57         TSS_UUID uuid;
     58         TSS_UUID parent_uuid;
     59         struct key_disk_cache *next;
     60 };
     61 
     62 /* The current PS version */
     63 #define TSSPS_VERSION	1
     64 
     65 /* offsets into each key on disk. These should be passed a (struct key_disk_cache *) */
     66 #define TSSPS_VERSION_OFFSET		(0)
     67 #define TSSPS_NUM_KEYS_OFFSET         (TSSPS_VERSION_OFFSET + sizeof(BYTE))
     68 #define TSSPS_KEYS_OFFSET             (TSSPS_NUM_KEYS_OFFSET + sizeof(UINT32))
     69 #define TSSPS_UUID_OFFSET(c)          ((c)->offset)
     70 #define TSSPS_PARENT_UUID_OFFSET(c)   ((c)->offset + sizeof(TSS_UUID))
     71 #define TSSPS_PUB_DATA_SIZE_OFFSET(c) ((c)->offset + (2 * sizeof(TSS_UUID)))
     72 #define TSSPS_BLOB_SIZE_OFFSET(c)     ((c)->offset + (2 * sizeof(TSS_UUID)) + sizeof(UINT16))
     73 #define TSSPS_VENDOR_SIZE_OFFSET(c)   ((c)->offset + (2 * sizeof(TSS_UUID)) + (2 * sizeof(UINT16)))
     74 #define TSSPS_CACHE_FLAGS_OFFSET(c)   ((c)->offset + (2 * sizeof(TSS_UUID)) + (2 * sizeof(UINT16)) + sizeof(UINT32))
     75 #define TSSPS_PUB_DATA_OFFSET(c)      ((c)->offset + (2 * sizeof(TSS_UUID)) + (3 * sizeof(UINT16)) + sizeof(UINT32))
     76 #define TSSPS_BLOB_DATA_OFFSET(c)     ((c)->offset + (2 * sizeof(TSS_UUID)) + (3 * sizeof(UINT16)) + sizeof(UINT32) + (c)->pub_data_size)
     77 #define TSSPS_VENDOR_DATA_OFFSET(c)   ((c)->offset + (2 * sizeof(TSS_UUID)) + (3 * sizeof(UINT16)) + sizeof(UINT32) + (c)->pub_data_size + (c)->blob_size)
     78 
     79 /* XXX Get rid of this, there's no reason to set an arbitrary limit */
     80 #define MAX_KEY_CHILDREN	10
     81 
     82 #define STRUCTURE_PACKING_ATTRIBUTE	__attribute__((packed))
     83 
     84 #ifdef TSS_DEBUG
     85 #define DBG_ASSERT(x)	assert(x)
     86 #else
     87 #define DBG_ASSERT(x)
     88 #endif
     89 
     90 /* needed by execute transport in the TSP */
     91 #define TSS_TPM_TXBLOB_HDR_LEN		(sizeof(UINT16) + (2 * sizeof(UINT32)))
     92 
     93 #define TSS_TPM_TXBLOB_SIZE		(4096)
     94 #define TSS_TXBLOB_WRAPPEDCMD_OFFSET	(TSS_TPM_TXBLOB_HDR_LEN + sizeof(UINT32))
     95 #define TSS_MAX_AUTHS_CAP		(1024)
     96 #define TSS_REQ_MGR_MAX_RETRIES		(5)
     97 
     98 #endif
     99