tpm2-tss 4.1.3
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;
28 struct RSRC_NODE_T * next;
30
31typedef struct {
32 ESYS_TR tpmKey;
33 ESYS_TR bind;
34 TPM2_SE sessionType;
35 TPMI_ALG_HASH authHash;
36 TPM2B_NONCE *nonceCaller;
37 TPM2B_NONCE nonceCallerData;
38 TPMT_SYM_DEF *symmetric;
39 TPMT_SYM_DEF symmetricData;
40} StartAuthSession_IN;
41
42typedef struct {
43 TPM2B_SENSITIVE_CREATE *inSensitive;
44 TPM2B_SENSITIVE_CREATE inSensitiveData;
45} CreatePrimary_IN;
46
47typedef struct {
48 TPM2B_SENSITIVE_CREATE *inSensitive;
49 TPM2B_SENSITIVE_CREATE inSensitiveData;
50} Create_IN;
51
52typedef struct {
53 ESYS_TR saveHandle;
54} ContextSave_IN;
55
56typedef struct {
57 TPMS_CONTEXT *context;
58 TPMS_CONTEXT contextData;
59} ContextLoad_IN;
60
61typedef struct {
62 TPM2B_PUBLIC *inPublic;
63 TPM2B_PUBLIC inPublicData;
64} Load_IN;
65
66typedef struct {
67 TPM2B_PUBLIC *inPublic;
68 TPM2B_PUBLIC inPublicData;
69} LoadExternal_IN;
70
71typedef struct {
72 TPM2B_SENSITIVE_CREATE *inSensitive;
73 TPM2B_SENSITIVE_CREATE inSensitiveData;
74 TPM2B_TEMPLATE *inPublic;
75 TPM2B_TEMPLATE inPublicData;
76} CreateLoaded_IN;
77
78typedef struct {
79 ESYS_TR objectHandle;
80 TPMI_DH_PERSISTENT persistentHandle;
81} EvictControl_IN;
82
83typedef struct {
84 TPM2B_AUTH authData;
85} HMAC_Start_IN;
86
87typedef HMAC_Start_IN MAC_Start_IN;
88
89typedef struct {
90 ESYS_TR authHandle;
91 TPM2B_AUTH newAuth;
92} HierarchyChangeAuth_IN;
93
94typedef struct {
95 ESYS_TR sequenceHandle;
96} SequenceComplete_IN;
97
98typedef struct {
99 ESYS_TR policySession;
100} Policy_IN;
101
102typedef struct {
103 ESYS_TR nvIndex;
104 TPM2B_AUTH authData;
105 TPM2B_NV_PUBLIC *publicInfo;
106 TPM2B_NV_PUBLIC publicInfoData;
107} NV_IN;
108
109typedef struct {
110 ESYS_TR flushHandle;
111} FlushContext_IN;
112
113typedef struct {
114 ESYS_TR pcrHandle;
115 TPM2B_AUTH authData;
116} PCR_IN;
117
123typedef union {
124 StartAuthSession_IN StartAuthSession;
125 CreatePrimary_IN CreatePrimary;
126 Create_IN Create;
127 ContextSave_IN ContextSave;
128 ContextLoad_IN ContextLoad;
129 Load_IN Load;
130 LoadExternal_IN LoadExternal;
131 CreateLoaded_IN CreateLoaded;
132 EvictControl_IN EvictControl;
133 HMAC_Start_IN HMAC_Start;
134 MAC_Start_IN MAC_Start;
135 HierarchyChangeAuth_IN HierarchyChangeAuth;
136 SequenceComplete_IN SequenceComplete;
137 Policy_IN Policy;
138 NV_IN NV;
139 FlushContext_IN FlushContext;
140 PCR_IN PCR;
141} IESYS_CMD_IN_PARAM;
142
144enum _ESYS_STATE {
145 _ESYS_STATE_INIT = 0,
148 _ESYS_STATE_SENT,
150 _ESYS_STATE_RESUBMISSION,
152 _ESYS_STATE_INTERNALERROR
154};
155
163 enum _ESYS_STATE state;
164 TSS2_SYS_CONTEXT *sys;
168 int32_t timeout;
170 ESYS_TR session_type[3];
175 TPM2B_NONCE *encryptNonce;
181 TPM2B_DATA salt;
182 IESYS_CMD_IN_PARAM in;
184 ESYS_TR esys_handle;
186 TSS2_TCTI_CONTEXT *tcti_app_param;
189 void *dlhandle;
193 ESYS_TR sav_session1;
196 ESYS_TR sav_session2;
197 ESYS_TR sav_session3;
198
201};
202
208#define _ESYS_MAX_SUBMISSIONS 5
209
212#define _ESYS_ASSERT_NON_NULL(x) \
213 if (x == NULL) { \
214 LOG_ERROR(str(x) " == NULL."); \
215 return TSS2_ESYS_RC_BAD_REFERENCE; \
216 }
217
218#ifdef __cplusplus
219}
220#endif
221#endif /* ESYS_INT_H */
size_t reference_count
Definition esys_int.h:27
IESYS_SESSION * enc_session
Definition esys_int.h:191
int32_t timeout
Definition esys_int.h:168
int encryptNonceIdx
Definition esys_int.h:174
IESYS_CMD_IN_PARAM in
Definition esys_int.h:182
TSS2_TCTI_CONTEXT * tcti_app_param
Definition esys_int.h:186
IESYS_RESOURCE rsrc
Definition esys_int.h:26
enum _ESYS_STATE state
Definition esys_int.h:163
void * dlhandle
Definition esys_int.h:189
TSS2_SYS_CONTEXT * sys
Definition esys_int.h:164
RSRC_NODE_T * session_tab[3]
Definition esys_int.h:172
struct RSRC_NODE_T * next
Definition esys_int.h:28
ESYS_TR esys_handle
Definition esys_int.h:23
ESYS_TR esys_handle_cnt
Definition esys_int.h:166
TPM2B_AUTH auth
Definition esys_int.h:25
ESYS_TR session_type[3]
Definition esys_int.h:170
RSRC_NODE_T * rsrc_list
Definition esys_int.h:167
ESYS_CRYPTO_CALLBACKS crypto_backend
Definition esys_int.h:199
TPM2B_NONCE * encryptNonce
Definition esys_int.h:175
ESYS_TR sav_session1
Definition esys_int.h:193
int submissionCount
Definition esys_int.h:179
int authsCount
Definition esys_int.h:177
TPM2B_DATA salt
Definition esys_int.h:181
Definition esys_int.h:162
Definition esys_types.h:86
Definition esys_types.h:51
Definition esys_int.h:22
Definition tss2_esys.h:416