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