tpm2-tss 3.2.0
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
117typedef union {
118 StartAuthSession_IN StartAuthSession;
119 CreatePrimary_IN CreatePrimary;
120 Create_IN Create;
121 ContextSave_IN ContextSave;
122 ContextLoad_IN ContextLoad;
123 Load_IN Load;
124 LoadExternal_IN LoadExternal;
125 CreateLoaded_IN CreateLoaded;
126 EvictControl_IN EvictControl;
127 HMAC_Start_IN HMAC_Start;
128 HierarchyChangeAuth_IN HierarchyChangeAuth;
129 SequenceComplete_IN SequenceComplete;
130 Policy_IN Policy;
131 NV_IN NV;
132 FlushContext_IN FlushContext;
133} IESYS_CMD_IN_PARAM;
134
136enum _ESYS_STATE {
137 _ESYS_STATE_INIT = 0,
140 _ESYS_STATE_SENT,
142 _ESYS_STATE_RESUBMISSION,
144 _ESYS_STATE_INTERNALERROR
146};
147
155 enum _ESYS_STATE state;
156 TSS2_SYS_CONTEXT *sys;
160 int32_t timeout;
167 TPM2B_NONCE *encryptNonce;
173 TPM2B_DATA salt;
174 IESYS_CMD_IN_PARAM in;
178 TSS2_TCTI_CONTEXT *tcti_app_param;
181 void *dlhandle;
185};
186
192#define _ESYS_MAX_SUBMISSIONS 5
193
196#define _ESYS_ASSERT_NON_NULL(x) \
197 if (x == NULL) { \
198 LOG_ERROR(str(x) " == NULL."); \
199 return TSS2_ESYS_RC_BAD_REFERENCE; \
200 }
201
202#ifdef __cplusplus
203}
204#endif
205#endif /* ESYS_INT_H */
uint32_t ESYS_TR
Definition: tss2_esys.h:16
IESYS_SESSION * enc_session
Definition: esys_int.h:183
int32_t timeout
Definition: esys_int.h:160
int encryptNonceIdx
Definition: esys_int.h:166
IESYS_CMD_IN_PARAM in
Definition: esys_int.h:174
TSS2_TCTI_CONTEXT * tcti_app_param
Definition: esys_int.h:178
IESYS_RESOURCE rsrc
Definition: esys_int.h:25
enum _ESYS_STATE state
Definition: esys_int.h:155
void * dlhandle
Definition: esys_int.h:181
TSS2_SYS_CONTEXT * sys
Definition: esys_int.h:156
RSRC_NODE_T * session_tab[3]
Definition: esys_int.h:164
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:158
TPM2B_AUTH auth
Definition: esys_int.h:24
ESYS_TR session_type[3]
Definition: esys_int.h:162
RSRC_NODE_T * rsrc_list
Definition: esys_int.h:159
TPM2B_NONCE * encryptNonce
Definition: esys_int.h:167
int submissionCount
Definition: esys_int.h:171
int authsCount
Definition: esys_int.h:169
TPM2B_DATA salt
Definition: esys_int.h:173
struct RSRC_NODE_T RSRC_NODE_T
Definition: esys_int.h:154
Definition: esys_types.h:86
Definition: esys_types.h:51
Definition: esys_int.h:21