tpm2-tss  master
TPM Software stack 2.0 TCG spec compliant implementation
ifapi_policy_types.h
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*******************************************************************************
3  * Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG
4  * All rights reserved.
5  ******************************************************************************/
6 #ifndef IFAPI_POLICY_TYPES_H
7 #define IFAPI_POLICY_TYPES_H
8 
9 #include <stdint.h> // for uint8_t
10 
11 #include "fapi_types.h" // for UINT8_ARY
12 #include "tss2_common.h" // for UINT32, INT32, UINT16
13 #include "tss2_tpm2_types.h" // for TPM2B_DIGEST, TPM2B_NAME, TPM2B_NONCE
14 
15 struct TPML_POLICYELEMENTS;
16 
17 typedef UINT32 TPMI_POLICYTYPE;
18 #define POLICYELEMENTS 0
19 #define POLICYOR 1
20 #define POLICYSIGNED 2
21 #define POLICYSECRET 3
22 #define POLICYPCR 4
23 #define POLICYLOCALITY 5
24 #define POLICYNV 6
25 #define POLICYCOUNTERTIMER 7
26 #define POLICYCOMMANDCODE 8
27 #define POLICYPHYSICALPRESENCE 9
28 #define POLICYCPHASH 10
29 #define POLICYNAMEHASH 11
30 #define POLICYDUPLICATIONSELECT 12
31 #define POLICYAUTHORIZE 13
32 #define POLICYAUTHVALUE 14
33 #define POLICYPASSWORD 15
34 #define POLICYNVWRITTEN 16
35 #define POLICYTEMPLATE 17
36 #define POLICYAUTHORIZENV 18
37 #define POLICYACTION 19
41 typedef struct {
42  TPM2B_NONCE nonceTPM;
43  TPM2B_DIGEST cpHashA;
44  TPM2B_NONCE policyRef;
45  INT32 expiration;
46  TPMT_SIGNATURE auth;
47  TPM2B_NAME publicKey;
48  char *publicKeyHint;
49  char *keyPath;
50  TPMT_PUBLIC keyPublic;
51  char *keyPEM;
52  TPMI_ALG_HASH keyPEMhashAlg;
53  TPMT_RSA_SCHEME rsaScheme;
54  TPMT_SIGNATURE signature_tpm;
56 
59 typedef struct {
60  TPM2B_NONCE nonceTPM;
61  TPM2B_DIGEST cpHashA;
62  TPM2B_NONCE policyRef;
63  INT32 expiration;
64  char *objectPath;
65  TPM2B_NAME objectName;
67 
70 typedef struct {
71  TPMA_LOCALITY locality;
73 
76 typedef struct {
77  char *nvPath;
78  TPMI_RH_NV_INDEX nvIndex;
79  TPMS_NV_PUBLIC nvPublic;
80  TPMI_RH_NV_AUTH authHandle;
81  TPM2B_OPERAND operandB;
82  UINT16 offset;
83  TPM2_EO operation;
85 
88 typedef struct {
89  TPM2B_OPERAND operandB;
90  UINT16 offset;
91  TPM2_EO operation;
93 
96 typedef struct {
97  TPM2_CC code;
99 
102 typedef struct {
104 
107 typedef struct {
108  TPM2B_DIGEST cpHash;
110 
113 typedef struct {
114  UINT32 count;
115  UINT32 i;
116  TPM2B_NAME objectNames[3];
117  char *namePaths[3];
118  TPM2B_DIGEST nameHash;
120 
123 typedef struct {
124  TPM2B_NAME objectName;
125  TPM2B_NAME newParentName;
126  TPMI_YES_NO includeObject;
128  TPMT_PUBLIC newParentPublic;
130 
133 typedef struct {
134  char *type;
135  TPMT_PUBLIC key;
136  TPM2B_NONCE policyRef;
137  TPMT_SIGNATURE signature;
138  TPMI_ALG_HASH hashAlg;
139  UINT8_ARY pemSignature;
140  char *keyPEM;
141  TPMT_RSA_SCHEME rsaScheme;
143 
144 typedef struct policy_object_node POLICY_OBJECT;
145 
148 typedef struct {
149  TPM2B_DIGEST approvedPolicy;
150  TPM2B_NONCE policyRef;
151  TPM2B_NAME keyName;
152  TPMT_TK_VERIFIED checkTicket;
153  char *keyPath;
154  TPMT_PUBLIC keyPublic;
155  char *keyPEM;
156  TPMI_ALG_HASH keyPEMhashAlg;
157  TPMT_RSA_SCHEME rsaScheme;
158  TPMT_SIGNATURE signature;
160 
163 typedef struct {
165 
168 typedef struct {
170 
173 typedef struct {
174  TPMI_YES_NO writtenSet;
176 
179 typedef struct {
180  TPM2B_DIGEST templateHash;
181  TPM2B_PUBLIC templatePublic;
183 
186 typedef struct {
187  char *nvPath;
188  TPMS_NV_PUBLIC nvPublic;
189  TPM2B_DIGEST policy;
190  TPMT_HA nv_policy;
191  uint8_t *policy_buffer;
193 
196 typedef struct {
197  char *action;
199 
202 typedef struct {
203  struct TPML_PCRVALUES *pcrs;
204  TPMS_PCR_SELECT currentPCRs;
205  TPML_PCR_SELECTION currentPCRandBanks;
207 
211  UINT32 count;
214 
216 
219 typedef struct {
220  char *name;
221  char *description;
222  TPML_DIGEST_VALUES policyDigests;
225 
228 typedef struct TPML_POLICYBRANCHES {
229  UINT32 count;
232 
235 typedef struct {
236  struct TPML_POLICYBRANCHES
238 } TPMS_POLICYOR;
239 
242 typedef union {
263 
266 typedef struct {
267  TPMI_POLICYTYPE type;
268  TPML_DIGEST_VALUES policyDigests;
271 
275  UINT32 count;
277 };
278 
281 typedef struct TPMS_POLICY {
282  char *description;
283  TPML_DIGEST_VALUES policyDigests;
286 } TPMS_POLICY;
287 
288 #endif /* IFAPI_POLICY_TYPES_H */
Definition: ifapi_policy_types.h:210
UINT32 count
Definition: ifapi_policy_types.h:211
TPMS_POLICYAUTHORIZATION authorizations[]
Definition: ifapi_policy_types.h:212
Definition: ifapi_policy_types.h:228
TPMS_POLICYBRANCH authorizations[]
Definition: ifapi_policy_types.h:230
UINT32 count
Definition: ifapi_policy_types.h:229
Definition: ifapi_policy_types.h:274
UINT32 count
Definition: ifapi_policy_types.h:275
TPMT_POLICYELEMENT elements[]
Definition: ifapi_policy_types.h:276
Definition: ifapi_policy_types.h:196
char * action
Definition: ifapi_policy_types.h:197
Definition: ifapi_policy_types.h:133
char * type
Definition: ifapi_policy_types.h:134
TPMT_PUBLIC key
Definition: ifapi_policy_types.h:135
TPM2B_NONCE policyRef
Definition: ifapi_policy_types.h:136
TPMT_SIGNATURE signature
Definition: ifapi_policy_types.h:137
Definition: ifapi_policy_types.h:148
TPMT_RSA_SCHEME rsaScheme
Definition: ifapi_policy_types.h:157
TPMT_TK_VERIFIED checkTicket
Definition: ifapi_policy_types.h:152
TPM2B_NONCE policyRef
Definition: ifapi_policy_types.h:150
TPMT_PUBLIC keyPublic
Definition: ifapi_policy_types.h:154
char * keyPath
Definition: ifapi_policy_types.h:153
TPM2B_NAME keyName
Definition: ifapi_policy_types.h:151
TPM2B_DIGEST approvedPolicy
Definition: ifapi_policy_types.h:149
char * keyPEM
Definition: ifapi_policy_types.h:155
TPMI_ALG_HASH keyPEMhashAlg
Definition: ifapi_policy_types.h:156
Definition: ifapi_policy_types.h:186
TPM2B_DIGEST policy
Definition: ifapi_policy_types.h:189
char * nvPath
Definition: ifapi_policy_types.h:187
TPMT_HA nv_policy
Definition: ifapi_policy_types.h:190
TPMS_NV_PUBLIC nvPublic
Definition: ifapi_policy_types.h:188
Definition: ifapi_policy_types.h:163
Definition: ifapi_policy_types.h:219
struct TPML_POLICYELEMENTS * policy
Definition: ifapi_policy_types.h:223
char * name
Definition: ifapi_policy_types.h:220
char * description
Definition: ifapi_policy_types.h:221
Definition: ifapi_policy_types.h:96
TPM2_CC code
Definition: ifapi_policy_types.h:97
Definition: ifapi_policy_types.h:88
TPM2B_OPERAND operandB
Definition: ifapi_policy_types.h:89
TPM2_EO operation
Definition: ifapi_policy_types.h:91
UINT16 offset
Definition: ifapi_policy_types.h:90
Definition: ifapi_policy_types.h:107
TPM2B_DIGEST cpHash
Definition: ifapi_policy_types.h:108
Definition: ifapi_policy_types.h:123
char * newParentPath
Definition: ifapi_policy_types.h:127
TPM2B_NAME newParentName
Definition: ifapi_policy_types.h:125
TPMT_PUBLIC newParentPublic
Definition: ifapi_policy_types.h:128
TPMI_YES_NO includeObject
Definition: ifapi_policy_types.h:126
TPM2B_NAME objectName
Definition: ifapi_policy_types.h:124
Definition: ifapi_policy_types.h:281
struct TPML_POLICYELEMENTS * policy
Definition: ifapi_policy_types.h:285
struct TPML_POLICYAUTHORIZATIONS * policyAuthorizations
Definition: ifapi_policy_types.h:284
char * description
Definition: ifapi_policy_types.h:282
TPML_DIGEST_VALUES policyDigests
Definition: ifapi_policy_types.h:283
Definition: ifapi_policy_types.h:70
TPMA_LOCALITY locality
Definition: ifapi_policy_types.h:71
Definition: ifapi_policy_types.h:113
UINT32 i
Definition: ifapi_policy_types.h:115
UINT32 count
Definition: ifapi_policy_types.h:114
TPM2B_DIGEST nameHash
Definition: ifapi_policy_types.h:118
Definition: ifapi_policy_types.h:76
TPM2B_OPERAND operandB
Definition: ifapi_policy_types.h:81
TPMI_RH_NV_AUTH authHandle
Definition: ifapi_policy_types.h:80
char * nvPath
Definition: ifapi_policy_types.h:77
TPM2_EO operation
Definition: ifapi_policy_types.h:83
TPMS_NV_PUBLIC nvPublic
Definition: ifapi_policy_types.h:79
TPMI_RH_NV_INDEX nvIndex
Definition: ifapi_policy_types.h:78
UINT16 offset
Definition: ifapi_policy_types.h:82
Definition: ifapi_policy_types.h:173
TPMI_YES_NO writtenSet
Definition: ifapi_policy_types.h:174
Definition: ifapi_policy_types.h:235
struct TPML_POLICYBRANCHES * branches
Definition: ifapi_policy_types.h:236
Definition: ifapi_policy_types.h:168
Definition: ifapi_policy_types.h:202
TPML_PCR_SELECTION currentPCRandBanks
Definition: ifapi_policy_types.h:205
TPMS_PCR_SELECT currentPCRs
Definition: ifapi_policy_types.h:204
struct TPML_PCRVALUES * pcrs
Definition: ifapi_policy_types.h:203
Definition: ifapi_policy_types.h:102
Definition: ifapi_policy_types.h:59
TPM2B_DIGEST cpHashA
Definition: ifapi_policy_types.h:61
TPM2B_NONCE policyRef
Definition: ifapi_policy_types.h:62
char * objectPath
Definition: ifapi_policy_types.h:64
TPM2B_NONCE nonceTPM
Definition: ifapi_policy_types.h:60
TPM2B_NAME objectName
Definition: ifapi_policy_types.h:65
INT32 expiration
Definition: ifapi_policy_types.h:63
Definition: ifapi_policy_types.h:41
TPMT_RSA_SCHEME rsaScheme
Definition: ifapi_policy_types.h:53
TPM2B_DIGEST cpHashA
Definition: ifapi_policy_types.h:43
TPM2B_NONCE policyRef
Definition: ifapi_policy_types.h:44
TPMT_PUBLIC keyPublic
Definition: ifapi_policy_types.h:50
char * keyPath
Definition: ifapi_policy_types.h:49
TPM2B_NONCE nonceTPM
Definition: ifapi_policy_types.h:42
TPM2B_NAME publicKey
Definition: ifapi_policy_types.h:47
TPMT_SIGNATURE auth
Definition: ifapi_policy_types.h:46
char * keyPEM
Definition: ifapi_policy_types.h:51
TPMI_ALG_HASH keyPEMhashAlg
Definition: ifapi_policy_types.h:52
char * publicKeyHint
Definition: ifapi_policy_types.h:48
INT32 expiration
Definition: ifapi_policy_types.h:45
Definition: ifapi_policy_types.h:179
TPM2B_PUBLIC templatePublic
Definition: ifapi_policy_types.h:181
TPM2B_DIGEST templateHash
Definition: ifapi_policy_types.h:180
Definition: ifapi_policy_types.h:266
TPMU_POLICYELEMENT element
Definition: ifapi_policy_types.h:269
TPMI_POLICYTYPE type
Definition: ifapi_policy_types.h:267
TPML_DIGEST_VALUES policyDigests
Definition: ifapi_policy_types.h:268
Definition: fapi_types.h:15
Definition: ifapi_policy_execute.h:44
Definition: ifapi_policy_types.h:242
TPMS_POLICYCOMMANDCODE PolicyCommandCode
Definition: ifapi_policy_types.h:250
TPMS_POLICYPCR PolicyPCR
Definition: ifapi_policy_types.h:246
TPMS_POLICYNV PolicyNV
Definition: ifapi_policy_types.h:248
TPMS_POLICYAUTHVALUE PolicyAuthValue
Definition: ifapi_policy_types.h:256
TPMS_POLICYSIGNED PolicySigned
Definition: ifapi_policy_types.h:244
TPMS_POLICYAUTHORIZE PolicyAuthorize
Definition: ifapi_policy_types.h:255
TPMS_POLICYLOCALITY PolicyLocality
Definition: ifapi_policy_types.h:247
TPMS_POLICYCOUNTERTIMER PolicyCounterTimer
Definition: ifapi_policy_types.h:249
TPMS_POLICYOR PolicyOr
Definition: ifapi_policy_types.h:243
TPMS_POLICYCPHASH PolicyCpHash
Definition: ifapi_policy_types.h:252
TPMS_POLICYSECRET PolicySecret
Definition: ifapi_policy_types.h:245
TPMS_POLICYDUPLICATIONSELECT PolicyDuplicationSelect
Definition: ifapi_policy_types.h:254
TPMS_POLICYAUTHORIZENV PolicyAuthorizeNv
Definition: ifapi_policy_types.h:260
TPMS_POLICYPASSWORD PolicyPassword
Definition: ifapi_policy_types.h:257
TPMS_POLICYPHYSICALPRESENCE PolicyPhysicalPresence
Definition: ifapi_policy_types.h:251
TPMS_POLICYACTION PolicyAction
Definition: ifapi_policy_types.h:261
TPMS_POLICYNVWRITTEN PolicyNvWritten
Definition: ifapi_policy_types.h:258
TPMS_POLICYTEMPLATE PolicyTemplate
Definition: ifapi_policy_types.h:259
TPMS_POLICYNAMEHASH PolicyNameHash
Definition: ifapi_policy_types.h:253