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 45extern TSS_UUID NULL_UUID; 46extern 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 96typedef struct tdTSS_KEY11_HDR { 97 TPM_STRUCT_VER ver; 98} TSS_KEY11_HDR; 99 100typedef struct tdTSS_KEY12_HDR { 101 TPM_STRUCTURE_TAG tag; 102 UINT16 fill; 103} __attribute__((packed)) TSS_KEY12_HDR; 104 105typedef 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