tpm2-tss  3.2.2.1
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 "tss2_tpm2_types.h"
10 #include "fapi_types.h"
11 
12 typedef UINT32 TPMI_POLICYTYPE;
13 #define POLICYELEMENTS 0
14 #define POLICYOR 1
15 #define POLICYSIGNED 2
16 #define POLICYSECRET 3
17 #define POLICYPCR 4
18 #define POLICYLOCALITY 5
19 #define POLICYNV 6
20 #define POLICYCOUNTERTIMER 7
21 #define POLICYCOMMANDCODE 8
22 #define POLICYPHYSICALPRESENCE 9
23 #define POLICYCPHASH 10
24 #define POLICYNAMEHASH 11
25 #define POLICYDUPLICATIONSELECT 12
26 #define POLICYAUTHORIZE 13
27 #define POLICYAUTHVALUE 14
28 #define POLICYPASSWORD 15
29 #define POLICYNVWRITTEN 16
30 #define POLICYTEMPLATE 17
31 #define POLICYAUTHORIZENV 18
32 #define POLICYACTION 19
36 typedef struct {
37  TPM2B_NONCE nonceTPM;
38  TPM2B_DIGEST cpHashA;
39  TPM2B_NONCE policyRef;
40  INT32 expiration;
41  TPMT_SIGNATURE auth;
42  TPM2B_NAME publicKey;
43  char *publicKeyHint;
44  char *keyPath;
45  TPMT_PUBLIC keyPublic;
46  char *keyPEM;
47  TPMI_ALG_HASH keyPEMhashAlg;
48  TPMT_RSA_SCHEME rsaScheme;
49  TPMT_SIGNATURE signature_tpm;
51 
54 typedef struct {
55  TPM2B_NONCE nonceTPM;
56  TPM2B_DIGEST cpHashA;
57  TPM2B_NONCE policyRef;
58  INT32 expiration;
59  char *objectPath;
60  TPM2B_NAME objectName;
62 
65 typedef struct {
66  TPMA_LOCALITY locality;
68 
71 typedef struct {
72  char *nvPath;
73  TPMI_RH_NV_INDEX nvIndex;
74  TPM2B_NV_PUBLIC nvPublic;
75  TPMI_RH_NV_AUTH authHandle;
76  TPM2B_OPERAND operandB;
77  UINT16 offset;
78  TPM2_EO operation;
80 
83 typedef struct {
84  TPM2B_OPERAND operandB;
85  UINT16 offset;
86  TPM2_EO operation;
88 
91 typedef struct {
92  TPM2_CC code;
94 
97 typedef struct {
99 
102 typedef struct {
103  TPM2B_DIGEST cpHash;
105 
108 typedef struct {
109  UINT32 count;
110  UINT32 i;
111  TPM2B_NAME objectNames[3];
112  char *namePaths[3];
113  TPM2B_DIGEST nameHash;
115 
118 typedef struct {
119  TPM2B_NAME objectName;
120  TPM2B_NAME newParentName;
121  TPMI_YES_NO includeObject;
123  TPM2B_PUBLIC newParentPublic;
125 
128 typedef struct {
129  char *type;
130  TPMT_PUBLIC key;
131  TPM2B_NONCE policyRef;
132  TPMT_SIGNATURE signature;
133  TPMI_ALG_HASH keyPEMhashAlg;
134  UINT8_ARY pemSignature;
135  char *keyPEM;
136  TPMT_RSA_SCHEME rsaScheme;
138 
139 typedef struct policy_object_node POLICY_OBJECT;
140 
143 typedef struct {
144  TPM2B_DIGEST approvedPolicy;
145  TPM2B_NONCE policyRef;
146  TPM2B_NAME keyName;
147  TPMT_TK_VERIFIED checkTicket;
148  char *keyPath;
149  TPMT_PUBLIC keyPublic;
150  char *keyPEM;
151  TPMI_ALG_HASH keyPEMhashAlg;
152  TPMT_RSA_SCHEME rsaScheme;
153  TPMT_SIGNATURE signature;
155 
158 typedef struct {
160 
163 typedef struct {
165 
168 typedef struct {
169  TPMI_YES_NO writtenSet;
171 
174 typedef struct {
175  TPM2B_DIGEST templateHash;
176  TPM2B_PUBLIC templatePublic;
177  char *templateName;
179 
182 typedef struct {
183  char *nvPath;
184  TPM2B_NV_PUBLIC nvPublic;
185  TPM2B_DIGEST policy;
186  TPMT_HA nv_policy;
187  uint8_t *policy_buffer;
189 
192 typedef struct {
193  char *action;
195 
198 typedef struct {
199  UINT32 pcr;
200  TPM2_ALG_ID hashAlg;
201  TPMU_HA digest;
202 } TPMS_PCRVALUE;
203 
206 typedef struct TPML_PCRVALUES {
207  UINT32 count;
208  TPMS_PCRVALUE pcrs[];
210 
213 typedef struct {
215  TPMS_PCR_SELECT currentPCRs;
216  TPML_PCR_SELECTION currentPCRandBanks;
218 
222  UINT32 count;
223  TPMS_POLICYAUTHORIZATION authorizations[];
225 
227 
230 typedef struct {
231  char *name;
232  char *description;
233  TPML_DIGEST_VALUES policyDigests;
236 
239 typedef struct TPML_POLICYBRANCHES {
240  UINT32 count;
241  TPMS_POLICYBRANCH authorizations[];
243 
246 typedef struct {
248 } TPMS_POLICYOR;
249 
252 typedef union {
273 
276 typedef struct {
277  TPMI_POLICYTYPE type;
278  TPML_DIGEST_VALUES policyDigests;
281 
285  UINT32 count;
286  TPMT_POLICYELEMENT elements[];
287 };
288 
291 typedef struct TPMS_POLICY {
292  char *description;
293  TPML_DIGEST_VALUES policyDigests;
296 } TPMS_POLICY;
297 
298 #endif /* IFAPI_POLICY_TYPES_H */
char * action
Definition: ifapi_policy_types.h:193
UINT32 count
Definition: ifapi_policy_types.h:109
TPMS_POLICYAUTHVALUE PolicyAuthValue
Definition: ifapi_policy_types.h:266
TPMI_RH_NV_INDEX nvIndex
Definition: ifapi_policy_types.h:73
TPM2B_DIGEST templateHash
Definition: ifapi_policy_types.h:175
Definition: ifapi_policy_types.h:128
UINT32 i
Definition: ifapi_policy_types.h:110
struct TPML_POLICYELEMENTS * policy
Definition: ifapi_policy_types.h:295
TPMT_PUBLIC key
Definition: ifapi_policy_types.h:130
Definition: ifapi_policy_types.h:83
Definition: ifapi_policy_types.h:230
TPM2B_NV_PUBLIC nvPublic
Definition: ifapi_policy_types.h:74
TPM2B_PUBLIC newParentPublic
Definition: ifapi_policy_types.h:123
TPM2_CC code
Definition: ifapi_policy_types.h:92
Definition: ifapi_policy_types.h:168
Definition: ifapi_policy_types.h:182
TPMI_ALG_HASH keyPEMhashAlg
Definition: ifapi_policy_types.h:151
char * templateName
Definition: ifapi_policy_types.h:177
struct TPML_POLICYBRANCHES * branches
Definition: ifapi_policy_types.h:247
Definition: ifapi_policy_types.h:118
UINT16 offset
Definition: ifapi_policy_types.h:77
TPM2B_DIGEST nameHash
Definition: ifapi_policy_types.h:113
TPMT_HA nv_policy
Definition: ifapi_policy_types.h:186
TPML_DIGEST_VALUES policyDigests
Definition: ifapi_policy_types.h:293
TPMT_RSA_SCHEME rsaScheme
Definition: ifapi_policy_types.h:48
TPM2_ALG_ID hashAlg
Definition: ifapi_policy_types.h:200
Definition: ifapi_policy_types.h:102
Definition: ifapi_policy_types.h:174
Definition: ifapi_policy_types.h:246
TPM2B_NAME objectName
Definition: ifapi_policy_types.h:119
TPM2B_NONCE policyRef
Definition: ifapi_policy_types.h:145
TPMT_SIGNATURE signature
Definition: ifapi_policy_types.h:132
TPM2_EO operation
Definition: ifapi_policy_types.h:78
Definition: ifapi_policy_types.h:65
TPMI_YES_NO writtenSet
Definition: ifapi_policy_types.h:169
TPMI_RH_NV_AUTH authHandle
Definition: ifapi_policy_types.h:75
TPM2B_NONCE nonceTPM
Definition: ifapi_policy_types.h:37
Definition: ifapi_policy_types.h:91
TPMS_PCR_SELECT currentPCRs
Definition: ifapi_policy_types.h:215
TPM2B_NAME publicKey
Definition: ifapi_policy_types.h:42
TPM2B_OPERAND operandB
Definition: ifapi_policy_types.h:76
char * type
Definition: ifapi_policy_types.h:129
Definition: ifapi_policy_types.h:221
Definition: ifapi_policy_types.h:158
UINT32 count
Definition: ifapi_policy_types.h:207
char * keyPath
Definition: ifapi_policy_types.h:44
TPM2B_NAME objectName
Definition: ifapi_policy_types.h:60
struct TPML_POLICYAUTHORIZATIONS * policyAuthorizations
Definition: ifapi_policy_types.h:294
UINT16 offset
Definition: ifapi_policy_types.h:85
TPM2B_DIGEST policy
Definition: ifapi_policy_types.h:185
Definition: ifapi_policy_types.h:97
Definition: ifapi_policy_types.h:71
TPMS_POLICYCPHASH PolicyCpHash
Definition: ifapi_policy_types.h:262
TPM2B_OPERAND operandB
Definition: ifapi_policy_types.h:84
Definition: ifapi_policy_types.h:143
TPMI_ALG_HASH keyPEMhashAlg
Definition: ifapi_policy_types.h:47
TPMT_RSA_SCHEME rsaScheme
Definition: ifapi_policy_types.h:152
Definition: ifapi_policy_types.h:291
TPMS_POLICYLOCALITY PolicyLocality
Definition: ifapi_policy_types.h:257
TPM2B_NV_PUBLIC nvPublic
Definition: ifapi_policy_types.h:184
char * description
Definition: ifapi_policy_types.h:292
char * description
Definition: ifapi_policy_types.h:232
Definition: ifapi_policy_types.h:192
TPMT_PUBLIC keyPublic
Definition: ifapi_policy_types.h:45
TPMS_POLICYOR PolicyOr
Definition: ifapi_policy_types.h:253
TPMS_POLICYNAMEHASH PolicyNameHash
Definition: ifapi_policy_types.h:263
Definition: ifapi_policy_types.h:36
char * nvPath
Definition: ifapi_policy_types.h:183
TPMS_POLICYSIGNED PolicySigned
Definition: ifapi_policy_types.h:254
TPMT_TK_VERIFIED checkTicket
Definition: ifapi_policy_types.h:147
TPMS_POLICYACTION PolicyAction
Definition: ifapi_policy_types.h:271
TPM2B_NONCE policyRef
Definition: ifapi_policy_types.h:39
Definition: ifapi_policy_types.h:284
TPMS_POLICYDUPLICATIONSELECT PolicyDuplicationSelect
Definition: ifapi_policy_types.h:264
char * keyPath
Definition: ifapi_policy_types.h:148
Definition: ifapi_policy_types.h:213
Definition: ifapi_policy_types.h:252
Definition: ifapi_policy_types.h:239
char * name
Definition: ifapi_policy_types.h:231
Definition: ifapi_policy_types.h:108
char * keyPEM
Definition: ifapi_policy_types.h:150
TPM2B_NONCE nonceTPM
Definition: ifapi_policy_types.h:55
INT32 expiration
Definition: ifapi_policy_types.h:40
Definition: ifapi_policy_types.h:206
TPMS_POLICYTEMPLATE PolicyTemplate
Definition: ifapi_policy_types.h:269
TPM2B_DIGEST cpHash
Definition: ifapi_policy_types.h:103
INT32 expiration
Definition: ifapi_policy_types.h:58
UINT32 count
Definition: ifapi_policy_types.h:222
UINT32 count
Definition: ifapi_policy_types.h:285
TPMS_POLICYAUTHORIZE PolicyAuthorize
Definition: ifapi_policy_types.h:265
TPML_DIGEST_VALUES policyDigests
Definition: ifapi_policy_types.h:278
TPMU_POLICYELEMENT element
Definition: ifapi_policy_types.h:279
TPM2B_NONCE policyRef
Definition: ifapi_policy_types.h:57
struct TPML_POLICYELEMENTS * policy
Definition: ifapi_policy_types.h:234
Definition: fapi_types.h:15
Definition: ifapi_policy_types.h:54
TPMS_POLICYNVWRITTEN PolicyNvWritten
Definition: ifapi_policy_types.h:268
TPM2B_DIGEST cpHashA
Definition: ifapi_policy_types.h:56
TPMS_POLICYPHYSICALPRESENCE PolicyPhysicalPresence
Definition: ifapi_policy_types.h:261
Definition: ifapi_policy_types.h:163
char * objectPath
Definition: ifapi_policy_types.h:59
char * publicKeyHint
Definition: ifapi_policy_types.h:43
TPMS_POLICYCOUNTERTIMER PolicyCounterTimer
Definition: ifapi_policy_types.h:259
TPM2B_NONCE policyRef
Definition: ifapi_policy_types.h:131
TPMS_POLICYAUTHORIZENV PolicyAuthorizeNv
Definition: ifapi_policy_types.h:270
Definition: ifapi_policy_types.h:276
char * keyPEM
Definition: ifapi_policy_types.h:46
TPMI_POLICYTYPE type
Definition: ifapi_policy_types.h:277
TPM2_EO operation
Definition: ifapi_policy_types.h:86
UINT32 pcr
Definition: ifapi_policy_types.h:199
TPML_PCR_SELECTION currentPCRandBanks
Definition: ifapi_policy_types.h:216
TPM2B_NAME keyName
Definition: ifapi_policy_types.h:146
TPMI_YES_NO includeObject
Definition: ifapi_policy_types.h:121
Definition: ifapi_policy_execute.h:44
struct TPML_PCRVALUES * pcrs
Definition: ifapi_policy_types.h:214
TPMA_LOCALITY locality
Definition: ifapi_policy_types.h:66
TPMU_HA digest
Definition: ifapi_policy_types.h:201
TPM2B_NAME newParentName
Definition: ifapi_policy_types.h:120
TPM2B_PUBLIC templatePublic
Definition: ifapi_policy_types.h:176
TPM2B_DIGEST cpHashA
Definition: ifapi_policy_types.h:38
TPMT_SIGNATURE auth
Definition: ifapi_policy_types.h:41
TPMS_POLICYNV PolicyNV
Definition: ifapi_policy_types.h:258
char * newParentPath
Definition: ifapi_policy_types.h:122
TPM2B_DIGEST approvedPolicy
Definition: ifapi_policy_types.h:144
TPMS_POLICYPCR PolicyPCR
Definition: ifapi_policy_types.h:256
TPMS_POLICYCOMMANDCODE PolicyCommandCode
Definition: ifapi_policy_types.h:260
TPMS_POLICYPASSWORD PolicyPassword
Definition: ifapi_policy_types.h:267
Definition: ifapi_policy_types.h:198
TPMT_PUBLIC keyPublic
Definition: ifapi_policy_types.h:149
char * nvPath
Definition: ifapi_policy_types.h:72
UINT32 count
Definition: ifapi_policy_types.h:240
TPMS_POLICYSECRET PolicySecret
Definition: ifapi_policy_types.h:255