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, 2005, 2007
      8  *
      9  */
     10 
     11 #ifndef _TROUSERS_TYPES_H_
     12 #define _TROUSERS_TYPES_H_
     13 
     14 #define TCPA_NONCE_SIZE		sizeof(TCPA_NONCE)
     15 #define TCPA_DIGEST_SIZE	sizeof(TCPA_DIGEST)
     16 #define TCPA_ENCAUTH_SIZE	sizeof(TCPA_ENCAUTH)
     17 #define TCPA_DIRVALUE_SIZE	sizeof(TCPA_DIRVALUE)
     18 #define TCPA_AUTHDATA_SIZE	sizeof(TCPA_AUTHDATA)
     19 #define TPM_NONCE_SIZE		TCPA_NONCE_SIZE
     20 #define TPM_DIGEST_SIZE		TCPA_DIGEST_SIZE
     21 #define TPM_ENCAUTH_SIZE	TCPA_ENCAUTH_SIZE
     22 #define TPM_DIRVALUE_SIZE	TCPA_DIRVALUE_SIZE
     23 #define TPM_AUTHDATA_SIZE	TCPA_AUTHDATA_SIZE
     24 
     25 #define TSS_FLAG_MIGRATABLE	(migratable)
     26 #define TSS_FLAG_VOLATILE	(volatileKey)
     27 #define TSS_FLAG_REDIRECTION	(redirection)
     28 
     29 /* return codes */
     30 #define TCPA_E_INAPPROPRIATE_ENC	TCPA_E_NEED_SELFTEST
     31 
     32 #define TSS_ERROR_LAYER(x)	(x & 0x3000)
     33 #define TSS_ERROR_CODE(x)	(x & TSS_MAX_ERROR)
     34 
     35 #ifdef TSS_DEBUG
     36 #define TSPERR(x)		LogTSPERR(x, __FILE__, __LINE__)
     37 #define TCSERR(x)		LogTCSERR(x, __FILE__, __LINE__)
     38 #define TDDLERR(x)		LogTDDLERR(x, __FILE__, __LINE__)
     39 #else
     40 #define TSPERR(x)		(x | TSS_LAYER_TSP)
     41 #define TCSERR(x)		(x | TSS_LAYER_TCS)
     42 #define TDDLERR(x)		(x | TSS_LAYER_TDDL)
     43 #endif
     44 
     45 extern TSS_UUID	NULL_UUID;
     46 extern TSS_UUID	SRK_UUID;
     47 
     48 #define NULL_HOBJECT	0
     49 #define NULL_HCONTEXT	NULL_HOBJECT
     50 #define NULL_HPCRS	NULL_HOBJECT
     51 #define NULL_HENCDATA	NULL_HOBJECT
     52 #define NULL_HKEY	NULL_HOBJECT
     53 #define NULL_HTPM	NULL_HOBJECT
     54 #define NULL_HHASH	NULL_HOBJECT
     55 #define NULL_HPOLICY	NULL_HOBJECT
     56 #define NULL_HDELFAMILY	NULL_HOBJECT
     57 #define NULL_HMIGDATA	NULL_HOBJECT
     58 
     59 #define TSS_OBJECT_TYPE_CONTEXT		(0x0e)
     60 #define TSS_OBJECT_TYPE_TPM		(0x0f)
     61 
     62 #define TSS_PS_TYPE_NO			(0)
     63 
     64 /* Derived Types */
     65 #define TSS_MIGRATION_SCHEME	TSS_MIGRATE_SCHEME
     66 
     67 // The TPM's non-volatile flags (TPM_PERMANENT_FLAGS)
     68 #define TSS_TPM_PF_DISABLE_BIT			    (1 << (TPM_PF_DISABLE - 1))
     69 #define TSS_TPM_PF_OWNERSHIP_BIT		    (1 << (TPM_PF_OWNERSHIP - 1))
     70 #define TSS_TPM_PF_DEACTIVATED_BIT		    (1 << (TPM_PF_DEACTIVATED - 1))
     71 #define TSS_TPM_PF_READPUBEK_BIT		    (1 << (TPM_PF_READPUBEK - 1))
     72 #define TSS_TPM_PF_DISABLEOWNERCLEAR_BIT	    (1 << (TPM_PF_DISABLEOWNERCLEAR - 1))
     73 #define TSS_TPM_PF_ALLOWMAINTENANCE_BIT		    (1 << (TPM_PF_ALLOWMAINTENANCE - 1))
     74 #define TSS_TPM_PF_PHYSICALPRESENCELIFETIMELOCK_BIT (1 << (TPM_PF_PHYSICALPRESENCELIFETIMELOCK - 1))
     75 #define TSS_TPM_PF_PHYSICALPRESENCEHWENABLE_BIT	    (1 << (TPM_PF_PHYSICALPRESENCEHWENABLE - 1))
     76 #define TSS_TPM_PF_PHYSICALPRESENCECMDENABLE_BIT    (1 << (TPM_PF_PHYSICALPRESENCECMDENABLE - 1))
     77 #define TSS_TPM_PF_CEKPUSED_BIT			    (1 << (TPM_PF_CEKPUSED - 1))
     78 #define TSS_TPM_PF_TPMPOST_BIT			    (1 << (TPM_PF_TPMPOST - 1))
     79 #define TSS_TPM_PF_TPMPOSTLOCK_BIT		    (1 << (TPM_PF_TPMPOSTLOCK - 1))
     80 #define TSS_TPM_PF_FIPS_BIT			    (1 << (TPM_PF_FIPS - 1))
     81 #define TSS_TPM_PF_OPERATOR_BIT			    (1 << (TPM_PF_OPERATOR - 1))
     82 #define TSS_TPM_PF_ENABLEREVOKEEK_BIT		    (1 << (TPM_PF_ENABLEREVOKEEK - 1))
     83 #define TSS_TPM_PF_NV_LOCKED_BIT		    (1 << (TPM_PF_NV_LOCKED - 1))
     84 #define TSS_TPM_PF_READSRKPUB_BIT		    (1 << (TPM_PF_READSRKPUB - 1))
     85 #define TSS_TPM_PF_RESETESTABLISHMENTBIT_BIT	    (1 << (TPM_PF_RESETESTABLISHMENTBIT - 1))
     86 #define TSS_TPM_PF_MAINTENANCEDONE_BIT		    (1 << (TPM_PF_MAINTENANCEDONE - 1))
     87 
     88 // The TPM's volatile flags (TPM_STCLEAR_FLAGS)
     89 #define TSS_TPM_SF_DEACTIVATED_BIT	    (1 << (TPM_SF_DEACTIVATED - 1))
     90 #define TSS_TPM_SF_DISABLEFORCECLEAR_BIT    (1 << (TPM_SF_DISABLEFORCECLEAR - 1))
     91 #define TSS_TPM_SF_PHYSICALPRESENCE_BIT     (1 << (TPM_SF_PHYSICALPRESENCE - 1))
     92 #define TSS_TPM_SF_PHYSICALPRESENCELOCK_BIT (1 << (TPM_SF_PHYSICALPRESENCELOCK - 1))
     93 #define TSS_TPM_SF_GLOBALLOCK_BIT	    (1 << (TPM_SF_GLOBALLOCK - 1))
     94 
     95 // Trousers key formats to ease use of the different TPM_KEY structs
     96 typedef struct tdTSS_KEY11_HDR {
     97 	TPM_STRUCT_VER ver;
     98 } TSS_KEY11_HDR;
     99 
    100 typedef struct tdTSS_KEY12_HDR {
    101 	TPM_STRUCTURE_TAG tag;
    102 	UINT16 fill;
    103 } __attribute__((packed)) TSS_KEY12_HDR;
    104 
    105 typedef struct tdTSS_KEY {
    106 	union {
    107 		TSS_KEY11_HDR key11;
    108 		TSS_KEY12_HDR key12;
    109 	} hdr;
    110 	TPM_KEY_USAGE keyUsage;
    111 	TPM_KEY_FLAGS keyFlags;
    112 	TPM_AUTH_DATA_USAGE authDataUsage;
    113 	TPM_KEY_PARMS algorithmParms;
    114 	UINT32 PCRInfoSize;
    115 	BYTE *PCRInfo;
    116 	TPM_STORE_PUBKEY pubKey;
    117 	UINT32 encSize;
    118 	BYTE *encData;
    119 } TSS_KEY;
    120 
    121 #if (defined (__linux) || defined (linux) || defined (SOLARIS) || defined (__GLIBC__) || defined (__NetBSD__))
    122 #define BSD_CONST
    123 #elif defined (__OpenBSD__) || defined (__FreeBSD__) || defined (__APPLE__)
    124 #define BSD_CONST const
    125 #endif
    126 
    127 
    128 #endif
    129