tpm2-tss 4.0.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_crypto.h"
11#include "esys_types.h"
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
22typedef struct RSRC_NODE_T {
23 ESYS_TR esys_handle;
25 TPM2B_AUTH auth;
27 struct RSRC_NODE_T * next;
29
30typedef struct {
31 ESYS_TR tpmKey;
32 ESYS_TR bind;
33 TPM2_SE sessionType;
34 TPMI_ALG_HASH authHash;
35 TPM2B_NONCE *nonceCaller;
36 TPM2B_NONCE nonceCallerData;
37 TPMT_SYM_DEF *symmetric;
38 TPMT_SYM_DEF symmetricData;
39} StartAuthSession_IN;
40
41typedef struct {
42 TPM2B_SENSITIVE_CREATE *inSensitive;
43 TPM2B_SENSITIVE_CREATE inSensitiveData;
44} CreatePrimary_IN;
45
46typedef struct {
47 TPM2B_SENSITIVE_CREATE *inSensitive;
48 TPM2B_SENSITIVE_CREATE inSensitiveData;
49} Create_IN;
50
51typedef struct {
52 ESYS_TR saveHandle;
53} ContextSave_IN;
54
55typedef struct {
56 TPMS_CONTEXT *context;
57 TPMS_CONTEXT contextData;
58} ContextLoad_IN;
59
60typedef struct {
61 TPM2B_PUBLIC *inPublic;
62 TPM2B_PUBLIC inPublicData;
63} Load_IN;
64
65typedef struct {
66 TPM2B_PUBLIC *inPublic;
67 TPM2B_PUBLIC inPublicData;
68} LoadExternal_IN;
69
70typedef struct {
71 TPM2B_SENSITIVE_CREATE *inSensitive;
72 TPM2B_SENSITIVE_CREATE inSensitiveData;
73 TPM2B_TEMPLATE *inPublic;
74 TPM2B_TEMPLATE inPublicData;
75} CreateLoaded_IN;
76
77typedef struct {
78 ESYS_TR objectHandle;
79 TPMI_DH_PERSISTENT persistentHandle;
80} EvictControl_IN;
81
82typedef struct {
83 TPM2B_AUTH authData;
84} HMAC_Start_IN;
85
86typedef HMAC_Start_IN MAC_Start_IN;
87
88typedef struct {
89 ESYS_TR authHandle;
90 TPM2B_AUTH newAuth;
91} HierarchyChangeAuth_IN;
92
93typedef struct {
94 ESYS_TR sequenceHandle;
95} SequenceComplete_IN;
96
97typedef struct {
98 ESYS_TR policySession;
99} Policy_IN;
100
101typedef struct {
102 ESYS_TR nvIndex;
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 MAC_Start_IN MAC_Start;
134 HierarchyChangeAuth_IN HierarchyChangeAuth;
135 SequenceComplete_IN SequenceComplete;
136 Policy_IN Policy;
137 NV_IN NV;
138 FlushContext_IN FlushContext;
139 PCR_IN PCR;
140} IESYS_CMD_IN_PARAM;
141
143enum _ESYS_STATE {
144 _ESYS_STATE_INIT = 0,
147 _ESYS_STATE_SENT,
149 _ESYS_STATE_RESUBMISSION,
151 _ESYS_STATE_INTERNALERROR
153};
154
162 enum _ESYS_STATE state;
163 TSS2_SYS_CONTEXT *sys;
167 int32_t timeout;
169 ESYS_TR session_type[3];
174 TPM2B_NONCE *encryptNonce;
180 TPM2B_DATA salt;
181 IESYS_CMD_IN_PARAM in;
183 ESYS_TR esys_handle;
185 TSS2_TCTI_CONTEXT *tcti_app_param;
188 void *dlhandle;
192 ESYS_TR sav_session1;
195 ESYS_TR sav_session2;
196 ESYS_TR sav_session3;
197
200};
201
207#define _ESYS_MAX_SUBMISSIONS 5
208
211#define _ESYS_ASSERT_NON_NULL(x) \
212 if (x == NULL) { \
213 LOG_ERROR(str(x) " == NULL."); \
214 return TSS2_ESYS_RC_BAD_REFERENCE; \
215 }
216
217#ifdef __cplusplus
218}
219#endif
220#endif /* ESYS_INT_H */
IESYS_SESSION * enc_session
Definition esys_int.h:190
int32_t timeout
Definition esys_int.h:167
int encryptNonceIdx
Definition esys_int.h:173
IESYS_CMD_IN_PARAM in
Definition esys_int.h:181
TSS2_TCTI_CONTEXT * tcti_app_param
Definition esys_int.h:185
IESYS_RESOURCE rsrc
Definition esys_int.h:26
enum _ESYS_STATE state
Definition esys_int.h:162
void * dlhandle
Definition esys_int.h:188
TSS2_SYS_CONTEXT * sys
Definition esys_int.h:163
RSRC_NODE_T * session_tab[3]
Definition esys_int.h:171
struct RSRC_NODE_T * next
Definition esys_int.h:27
ESYS_TR esys_handle
Definition esys_int.h:23
ESYS_TR esys_handle_cnt
Definition esys_int.h:165
TPM2B_AUTH auth
Definition esys_int.h:25
ESYS_TR session_type[3]
Definition esys_int.h:169
RSRC_NODE_T * rsrc_list
Definition esys_int.h:166
ESYS_CRYPTO_CALLBACKS crypto_backend
Definition esys_int.h:198
TPM2B_NONCE * encryptNonce
Definition esys_int.h:174
ESYS_TR sav_session1
Definition esys_int.h:192
int submissionCount
Definition esys_int.h:178
int authsCount
Definition esys_int.h:176
TPM2B_DATA salt
Definition esys_int.h:180
Definition esys_int.h:161
Definition esys_types.h:86
Definition esys_types.h:51
Definition esys_int.h:22
Definition tss2_esys.h:408