tpm2-tss 3.2.1
TPM Software stack 2.0 TCG spec compliant implementation
esys_int.h
1/* SPDX-License-Identifier: BSD-2-Clause */
2/*******************************************************************************
3 * Copyright 2017, Fraunhofer SIT sponsored by Infineon Technologies AG
4 * All rights reserved.
5 *******************************************************************************/
6#ifndef ESYS_INT_H
7#define ESYS_INT_H
8
9#include <stdint.h>
10#include "esys_types.h"
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
21typedef struct RSRC_NODE_T {
24 TPM2B_AUTH auth;
26 struct RSRC_NODE_T * next;
28
29typedef struct {
30 ESYS_TR tpmKey;
31 ESYS_TR bind;
32 TPM2_SE sessionType;
33 TPMI_ALG_HASH authHash;
34 TPM2B_NONCE *nonceCaller;
35 TPM2B_NONCE nonceCallerData;
36 TPMT_SYM_DEF *symmetric;
37 TPMT_SYM_DEF symmetricData;
38} StartAuthSession_IN;
39
40typedef struct {
41 TPM2B_SENSITIVE_CREATE *inSensitive;
42 TPM2B_SENSITIVE_CREATE inSensitiveData;
43} CreatePrimary_IN;
44
45typedef struct {
46 TPM2B_SENSITIVE_CREATE *inSensitive;
47 TPM2B_SENSITIVE_CREATE inSensitiveData;
48} Create_IN;
49
50typedef struct {
51 ESYS_TR saveHandle;
52} ContextSave_IN;
53
54typedef struct {
55 TPMS_CONTEXT *context;
56 TPMS_CONTEXT contextData;
57} ContextLoad_IN;
58
59typedef struct {
60 TPM2B_PUBLIC *inPublic;
61 TPM2B_PUBLIC inPublicData;
62} Load_IN;
63
64typedef struct {
65 TPM2B_PUBLIC *inPublic;
66 TPM2B_PUBLIC inPublicData;
67} LoadExternal_IN;
68
69typedef struct {
70 TPM2B_SENSITIVE_CREATE *inSensitive;
71 TPM2B_SENSITIVE_CREATE inSensitiveData;
72 TPM2B_TEMPLATE *inPublic;
73 TPM2B_TEMPLATE inPublicData;
74} CreateLoaded_IN;
75
76typedef struct {
77 ESYS_TR objectHandle;
78 TPMI_DH_PERSISTENT persistentHandle;
79} EvictControl_IN;
80
81typedef struct {
82 TPM2B_AUTH *auth;
83 TPM2B_AUTH authData;
84} HMAC_Start_IN;
85
86typedef struct {
87 ESYS_TR authHandle;
88 TPM2B_AUTH *newAuth;
89 TPM2B_AUTH newAuthData;
90} HierarchyChangeAuth_IN;
91
92typedef struct {
93 ESYS_TR sequenceHandle;
94} SequenceComplete_IN;
95
96typedef struct {
97 ESYS_TR policySession;
98} Policy_IN;
99
100typedef struct {
101 ESYS_TR nvIndex;
102 TPM2B_AUTH *auth;
103 TPM2B_AUTH authData;
104 TPM2B_NV_PUBLIC *publicInfo;
105 TPM2B_NV_PUBLIC publicInfoData;
106} NV_IN;
107
108typedef struct {
109 ESYS_TR flushHandle;
110} FlushContext_IN;
111
112typedef struct {
113 ESYS_TR pcrHandle;
114 TPM2B_AUTH authData;
115} PCR_IN;
116
122typedef union {
123 StartAuthSession_IN StartAuthSession;
124 CreatePrimary_IN CreatePrimary;
125 Create_IN Create;
126 ContextSave_IN ContextSave;
127 ContextLoad_IN ContextLoad;
128 Load_IN Load;
129 LoadExternal_IN LoadExternal;
130 CreateLoaded_IN CreateLoaded;
131 EvictControl_IN EvictControl;
132 HMAC_Start_IN HMAC_Start;
133 HierarchyChangeAuth_IN HierarchyChangeAuth;
134 SequenceComplete_IN SequenceComplete;
135 Policy_IN Policy;
136 NV_IN NV;
137 FlushContext_IN FlushContext;
138 PCR_IN PCR;
139} IESYS_CMD_IN_PARAM;
140
142enum _ESYS_STATE {
143 _ESYS_STATE_INIT = 0,
146 _ESYS_STATE_SENT,
148 _ESYS_STATE_RESUBMISSION,
150 _ESYS_STATE_INTERNALERROR
152};
153
161 enum _ESYS_STATE state;
162 TSS2_SYS_CONTEXT *sys;
166 int32_t timeout;
173 TPM2B_NONCE *encryptNonce;
179 TPM2B_DATA salt;
180 IESYS_CMD_IN_PARAM in;
184 TSS2_TCTI_CONTEXT *tcti_app_param;
187 void *dlhandle;
194 ESYS_TR sav_session2;
195 ESYS_TR sav_session3;
196};
197
203#define _ESYS_MAX_SUBMISSIONS 5
204
207#define _ESYS_ASSERT_NON_NULL(x) \
208 if (x == NULL) { \
209 LOG_ERROR(str(x) " == NULL."); \
210 return TSS2_ESYS_RC_BAD_REFERENCE; \
211 }
212
213#ifdef __cplusplus
214}
215#endif
216#endif /* ESYS_INT_H */
uint32_t ESYS_TR
Definition: tss2_esys.h:16
IESYS_SESSION * enc_session
Definition: esys_int.h:189
int32_t timeout
Definition: esys_int.h:166
int encryptNonceIdx
Definition: esys_int.h:172
IESYS_CMD_IN_PARAM in
Definition: esys_int.h:180
TSS2_TCTI_CONTEXT * tcti_app_param
Definition: esys_int.h:184
IESYS_RESOURCE rsrc
Definition: esys_int.h:25
enum _ESYS_STATE state
Definition: esys_int.h:161
void * dlhandle
Definition: esys_int.h:187
TSS2_SYS_CONTEXT * sys
Definition: esys_int.h:162
RSRC_NODE_T * session_tab[3]
Definition: esys_int.h:170
struct RSRC_NODE_T * next
Definition: esys_int.h:26
ESYS_TR esys_handle
Definition: esys_int.h:22
ESYS_TR esys_handle_cnt
Definition: esys_int.h:164
TPM2B_AUTH auth
Definition: esys_int.h:24
ESYS_TR session_type[3]
Definition: esys_int.h:168
RSRC_NODE_T * rsrc_list
Definition: esys_int.h:165
TPM2B_NONCE * encryptNonce
Definition: esys_int.h:173
ESYS_TR sav_session1
Definition: esys_int.h:191
int submissionCount
Definition: esys_int.h:177
int authsCount
Definition: esys_int.h:175
TPM2B_DATA salt
Definition: esys_int.h:179
struct RSRC_NODE_T RSRC_NODE_T
Definition: esys_int.h:160
Definition: esys_types.h:86
Definition: esys_types.h:51
Definition: esys_int.h:21