tpm2-tss 4.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 <stddef.h> // for NULL, size_t
10#include <stdint.h> // for int32_t
11
12#include "esys_types.h" // for IESYS_RESOURCE, IESYS_SESSION
13#include "tss2_common.h" // for TSS2_ESYS_RC_BAD_REFERENCE
14#include "tss2_esys.h" // for ESYS_TR, ESYS_CRYPTO_CALLBACKS
15#include "tss2_sys.h" // for TSS2_SYS_CONTEXT
16#include "tss2_tcti.h" // for TSS2_TCTI_CONTEXT
17#include "tss2_tpm2_types.h" // for TPM2B_SENSITIVE_CREATE, TPM2B_AUTH, TPM...
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
36
37typedef struct {
38 ESYS_TR tpmKey;
39 ESYS_TR bind;
40 TPM2_SE sessionType;
41 TPMI_ALG_HASH authHash;
42 TPM2B_NONCE *nonceCaller;
43 TPM2B_NONCE nonceCallerData;
44 TPMT_SYM_DEF *symmetric;
45 TPMT_SYM_DEF symmetricData;
46} StartAuthSession_IN;
47
48typedef struct {
49 TPM2B_SENSITIVE_CREATE *inSensitive;
50 TPM2B_SENSITIVE_CREATE inSensitiveData;
51} CreatePrimary_IN;
52
53typedef struct {
54 TPM2B_SENSITIVE_CREATE *inSensitive;
55 TPM2B_SENSITIVE_CREATE inSensitiveData;
56} Create_IN;
57
58typedef struct {
59 ESYS_TR saveHandle;
60} ContextSave_IN;
61
62typedef struct {
63 TPMS_CONTEXT *context;
64 TPMS_CONTEXT contextData;
65} ContextLoad_IN;
66
67typedef struct {
68 TPM2B_PUBLIC *inPublic;
69 TPM2B_PUBLIC inPublicData;
70} Load_IN;
71
72typedef struct {
73 TPM2B_PUBLIC *inPublic;
74 TPM2B_PUBLIC inPublicData;
75} LoadExternal_IN;
76
77typedef struct {
78 TPM2B_SENSITIVE_CREATE *inSensitive;
79 TPM2B_SENSITIVE_CREATE inSensitiveData;
80 TPM2B_TEMPLATE *inPublic;
81 TPM2B_TEMPLATE inPublicData;
82} CreateLoaded_IN;
83
84typedef struct {
85 ESYS_TR objectHandle;
86 TPMI_DH_PERSISTENT persistentHandle;
87} EvictControl_IN;
88
89typedef struct {
90 TPM2B_AUTH authData;
91} HMAC_Start_IN;
92
93typedef HMAC_Start_IN MAC_Start_IN;
94
95typedef struct {
96 ESYS_TR authHandle;
97 TPM2B_AUTH newAuth;
98} HierarchyChangeAuth_IN;
99
100typedef struct {
101 ESYS_TR sequenceHandle;
102} SequenceComplete_IN;
103
104typedef struct {
105 ESYS_TR policySession;
106} Policy_IN;
107
108typedef struct {
109 ESYS_TR nvIndex;
110 TPM2B_AUTH authData;
111 TPM2B_NV_PUBLIC *publicInfo;
112 TPM2B_NV_PUBLIC publicInfoData;
113} NV_IN;
114
115typedef struct {
116 ESYS_TR flushHandle;
117} FlushContext_IN;
118
119typedef struct {
120 ESYS_TR pcrHandle;
121 TPM2B_AUTH authData;
122} PCR_IN;
123
129typedef union {
130 StartAuthSession_IN StartAuthSession;
131 CreatePrimary_IN CreatePrimary;
132 Create_IN Create;
133 ContextSave_IN ContextSave;
134 ContextLoad_IN ContextLoad;
135 Load_IN Load;
136 LoadExternal_IN LoadExternal;
137 CreateLoaded_IN CreateLoaded;
138 EvictControl_IN EvictControl;
139 HMAC_Start_IN HMAC_Start;
140 MAC_Start_IN MAC_Start;
141 HierarchyChangeAuth_IN HierarchyChangeAuth;
142 SequenceComplete_IN SequenceComplete;
143 Policy_IN Policy;
144 NV_IN NV;
145 FlushContext_IN FlushContext;
146 PCR_IN PCR;
147} IESYS_CMD_IN_PARAM;
148
150enum ESYS_STATE {
151 ESYS_STATE_INIT = 0,
154 ESYS_STATE_SENT,
156 ESYS_STATE_RESUBMISSION,
158 ESYS_STATE_INTERNALERROR
160};
161
209
215#define ESYS_MAX_SUBMISSIONS 5
216
219#define ESYS_ASSERT_NON_NULL(x) \
220 if ((x) == NULL) { \
221 LOG_ERROR(str(x) " == NULL."); \
222 return TSS2_ESYS_RC_BAD_REFERENCE; \
223 }
224
225#ifdef __cplusplus
226}
227#endif
228#endif /* ESYS_INT_H */
uint32_t ESYS_TR
Definition tss2_esys.h:16
size_t reference_count
Definition esys_int.h:33
IESYS_SESSION * enc_session
Definition esys_int.h:198
int32_t timeout
Definition esys_int.h:174
int encryptNonceIdx
Definition esys_int.h:181
IESYS_CMD_IN_PARAM in
Definition esys_int.h:189
TSS2_TCTI_CONTEXT * tcti_app_param
Definition esys_int.h:193
IESYS_RESOURCE rsrc
Definition esys_int.h:32
void * dlhandle
Definition esys_int.h:196
TSS2_SYS_CONTEXT * sys
Definition esys_int.h:170
RSRC_NODE_T * session_tab[3]
Definition esys_int.h:178
struct RSRC_NODE_T * next
Definition esys_int.h:34
ESYS_TR esys_handle
Definition esys_int.h:29
ESYS_TR esys_handle_cnt
Definition esys_int.h:172
RSRC_NODE_T * auth_objects[3]
Definition esys_int.h:180
TPM2B_AUTH auth
Definition esys_int.h:31
ESYS_TR session_type[3]
Definition esys_int.h:176
RSRC_NODE_T * rsrc_list
Definition esys_int.h:173
ESYS_CRYPTO_CALLBACKS crypto_backend
Definition esys_int.h:206
TPM2B_NONCE * encryptNonce
Definition esys_int.h:182
ESYS_TR sav_session1
Definition esys_int.h:200
int submissionCount
Definition esys_int.h:186
int authsCount
Definition esys_int.h:184
TPM2B_DATA salt
Definition esys_int.h:188
enum ESYS_STATE state
Definition esys_int.h:169
Definition esys_int.h:168
Definition esys_types.h:87
Definition esys_types.h:51
Definition esys_int.h:28
Definition tss2_esys.h:384