xref: /aosp_15_r20/external/tpm2-tss/doc/doxygen.dox (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
1*758e9fbaSOystein Eftevaag/*!
2*758e9fbaSOystein Eftevaag \defgroup esys Enhanced System API
3*758e9fbaSOystein Eftevaag Enhanced System API (ESAPI) as described in the [TSS 2.0 Enhanced System API (ESAPI) Specification](https://trustedcomputinggroup.org/wp-content/uploads/TSS_ESAPI_Version-0.9_Revision-04_reviewEND030918.pdf).
4*758e9fbaSOystein EftevaagThis API is a 1-to-1 mapping of the TPM2 commands documented in Part 3 of the TPM2 specification.
5*758e9fbaSOystein EftevaagAdditionally there are asynchronous versions of each command.
6*758e9fbaSOystein EftevaagIn addition to SAPI, the ESAPI performs tracking of meta data for TPM object and automatic calculation of session based authorization and encryption values.
7*758e9fbaSOystein EftevaagBoth the synchronous and asynchronous API are exposed through a single library: libtss2-esys.
8*758e9fbaSOystein Eftevaag*/
9*758e9fbaSOystein Eftevaag
10*758e9fbaSOystein Eftevaag/*!
11*758e9fbaSOystein Eftevaag \defgroup ESYS_CONTEXT Esys Context ESYS_CONTEXT
12*758e9fbaSOystein Eftevaag \ingroup esys
13*758e9fbaSOystein Eftevaag An ESYS_CONTEXT holds tdata for the connection to the TPM as
14*758e9fbaSOystein Eftevaag well as the metadata for TPM Resource; such as Transient key, Persistent
15*758e9fbaSOystein Eftevaag objects, NV spaces, Sessions or PCRs.
16*758e9fbaSOystein Eftevaag \{
17*758e9fbaSOystein Eftevaag \typedef ESYS_CONTEXT
18*758e9fbaSOystein Eftevaag Reference to the ESYS_CONTEXT that holds data for the connection to the TPM as
19*758e9fbaSOystein Eftevaag well as the metadata for TPM Resource; such as Transient key, Persistent
20*758e9fbaSOystein Eftevaag objects, NV spaces, Sessions or PCRs.
21*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Initialize(ESYS_CONTEXT ** esys_context, TSS2_TCTI_CONTEXT * tcti, TSS2_ABI_VERSION * abiVersion)
22*758e9fbaSOystein Eftevaag \fn void Esys_Finalize(ESYS_CONTEXT * esys_context)
23*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetTcti(ESYS_CONTEXT * esys_context, TSS2_TCTI_CONTEXT ** tcti)
24*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetPollHandles(ESYS_CONTEXT * esys_context, TSS2_TCTI_POLL_HANDLE ** handles, size_t * count)
25*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SetTimeout(ESYS_CONTEXT *esys_context, int32_t timeout)
26*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetSysContext(ESYS_CONTEXT *esys_context, TSS2_SYS_CONTEXT **sys_context)
27*758e9fbaSOystein Eftevaag \fn void Esys_Free(void *__ptr)
28*758e9fbaSOystein Eftevaag \}
29*758e9fbaSOystein Eftevaag*/
30*758e9fbaSOystein Eftevaag
31*758e9fbaSOystein Eftevaag/*!
32*758e9fbaSOystein Eftevaag \defgroup ESYS_TR Esys Tpm Resource ESYS_TR
33*758e9fbaSOystein Eftevaag \ingroup esys
34*758e9fbaSOystein Eftevaag Virtual objects with meta data for Tpm Resources.
35*758e9fbaSOystein Eftevaag The Esys TPM Resources are the virtual objects inside the ESYSCONTEXT that hold
36*758e9fbaSOystein Eftevaag the metadata for corresponding TPM Resources.
37*758e9fbaSOystein Eftevaag
38*758e9fbaSOystein Eftevaag There are a set of global ESYS_TR objects such as ESYS_TR_NON or for the
39*758e9fbaSOystein Eftevaag various PCRs and hierarchies. ESYS_TR_MIN_OBJECT denotes the first non-global
40*758e9fbaSOystein Eftevaag ESYS_TR object.
41*758e9fbaSOystein Eftevaag \{
42*758e9fbaSOystein Eftevaag \typedef ESYS_TR
43*758e9fbaSOystein Eftevaag Reference to the virtual object inside the ESYS_CONTEXT that holds the metadata
44*758e9fbaSOystein Eftevaag for the corresponding TPM Resource. Such can be Transient key, Persistent
45*758e9fbaSOystein Eftevaag objects, NV spaces, Sessions or PCRs.
46*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TR_SetAuth(ESYS_CONTEXT * esys_context, ESYS_TR esys_handle, TPM2B_AUTH const *authValue)
47*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TR_GetName(ESYS_CONTEXT * esys_context, ESYS_TR esys_handle, TPM2B_NAME ** name)
48*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TR_FromTPMPublic_Async( ESYS_CONTEXT *esysContext, TPM2_HANDLE tpm_handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
49*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TR_FromTPMPublic_Finish(ESYS_CONTEXT *esysContext, ESYS_TR *esys_handle)
50*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TR_FromTPMPublic(ESYS_CONTEXT *esysContext, TPM2_HANDLE tpm_handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, ESYS_TR *object)
51*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TR_Serialize(ESYS_CONTEXT *esys_context, ESYS_TR esys_handle, uint8_t **buffer, size_t *buffer_size)
52*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TR_Deserialize(ESYS_CONTEXT *esys_context, uint8_t const *buffer, size_t buffer_size, ESYS_TR *esys_handle)
53*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TR_Close(ESYS_CONTEXT *esys_context, ESYS_TR *object)
54*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TRSess_GetAttributes(ESYS_CONTEXT * esysContext, ESYS_TR esys_handle, TPMA_SESSION * flags)
55*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TRSess_SetAttributes(ESYS_CONTEXT * esys_context, ESYS_TR esys_handle, TPMA_SESSION flags, TPMA_SESSION mask)
56*758e9fbaSOystein Eftevaag \}
57*758e9fbaSOystein Eftevaag*/
58*758e9fbaSOystein Eftevaag
59*758e9fbaSOystein Eftevaag/*!
60*758e9fbaSOystein Eftevaag \defgroup ESYS_TR_defines Global ESYS_TR objects
61*758e9fbaSOystein Eftevaag \ingroup ESYS_TR
62*758e9fbaSOystein Eftevaag A set of defines for global virtual objects that are always present in every
63*758e9fbaSOystein Eftevaag ESYS_CONTEXT.
64*758e9fbaSOystein Eftevaag \{
65*758e9fbaSOystein Eftevaag \def ESYS_TR_NONE Identifier for ESYS_TR parameters if no TPM Resource is supplied.
66*758e9fbaSOystein Eftevaag \def ESYS_TR_PASSWORD Identifier for ESYS_TR sessions for password authentication.
67*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR0 TPM Resource PCR 0.
68*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR1 TPM Resource PCR 1.
69*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR2 TPM Resource PCR 2.
70*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR3 TPM Resource PCR 3.
71*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR4 TPM Resource PCR 4.
72*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR5 TPM Resource PCR 5.
73*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR6 TPM Resource PCR 6.
74*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR7 TPM Resource PCR 7.
75*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR8 TPM Resource PCR 8.
76*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR9 TPM Resource PCR 9.
77*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR10 TPM Resource PCR 10.
78*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR11 TPM Resource PCR 11.
79*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR12 TPM Resource PCR 12.
80*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR13 TPM Resource PCR 13.
81*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR14 TPM Resource PCR 14.
82*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR15 TPM Resource PCR 15.
83*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR16 TPM Resource PCR 16.
84*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR17 TPM Resource PCR 17.
85*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR18 TPM Resource PCR 18.
86*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR19 TPM Resource PCR 19.
87*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR20 TPM Resource PCR 20.
88*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR21 TPM Resource PCR 21.
89*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR22 TPM Resource PCR 22.
90*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR23 TPM Resource PCR 23.
91*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR24 TPM Resource PCR 24.
92*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR25 TPM Resource PCR 25.
93*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR26 TPM Resource PCR 26.
94*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR27 TPM Resource PCR 27.
95*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR28 TPM Resource PCR 28.
96*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR29 TPM Resource PCR 29.
97*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR30 TPM Resource PCR 30.
98*758e9fbaSOystein Eftevaag \def ESYS_TR_PCR31 TPM Resource PCR 31.
99*758e9fbaSOystein Eftevaag \def ESYS_TR_RH_OWNER TPM Resource Owner Hierarchy
100*758e9fbaSOystein Eftevaag \def ESYS_TR_RH_NULL TPM Resource Ephemeral Hierarchy
101*758e9fbaSOystein Eftevaag \def ESYS_TR_RH_LOCKOUT TPM Resource for Lockout Authorization
102*758e9fbaSOystein Eftevaag \def ESYS_TR_RH_ENDORSEMENT TPM Resource Endorsement Hierarchy
103*758e9fbaSOystein Eftevaag \def ESYS_TR_RH_PLATFORM TPM Resource Platform Hierarchy
104*758e9fbaSOystein Eftevaag \def ESYS_TR_RH_PLATFORM_NV Identifier for ESYS_TR used for phEnableNV
105*758e9fbaSOystein Eftevaag \def ESYS_TR_RH_AUTH_00 Identifier for ESYS_TR for the start of a range of authorization values that are vendor-specific.
106*758e9fbaSOystein Eftevaag \def ESYS_TR_RH_AUTH_FF Identifier for ESYS_TR for the end of a range of authorization values that are vendor-specific.
107*758e9fbaSOystein Eftevaag \def ESYS_TR_MIN_OBJECT The first non-global ESYS_TR object identifier. These are assigned by ESAPI and beyond this value.
108*758e9fbaSOystein Eftevaag \}
109*758e9fbaSOystein Eftevaag*/
110*758e9fbaSOystein Eftevaag
111*758e9fbaSOystein Eftevaag/*!
112*758e9fbaSOystein Eftevaag \defgroup esys_tpm Esys TPM Commands
113*758e9fbaSOystein Eftevaag \ingroup esys
114*758e9fbaSOystein Eftevaag The following function represent interactions with the corresponding TPM
115*758e9fbaSOystein Eftevaag commands.
116*758e9fbaSOystein Eftevaag \{
117*758e9fbaSOystein Eftevaag \defgroup Esys_ActivateCredential The ESAPI function for the TPM2_ActivateCredential command.
118*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ActivateCredential command
119*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
120*758e9fbaSOystein Eftevaag \{
121*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ActivateCredential_Async(ESYS_CONTEXT *esysContext, ESYS_TR activateHandle, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ID_OBJECT *credentialBlob, const TPM2B_ENCRYPTED_SECRET *secret)
122*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ActivateCredential(ESYS_CONTEXT *esysContext, ESYS_TR activateHandle, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ID_OBJECT *credentialBlob, const TPM2B_ENCRYPTED_SECRET *secret, TPM2B_DIGEST **certInfo)
123*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ActivateCredential_Finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **certInfo)
124*758e9fbaSOystein Eftevaag \}
125*758e9fbaSOystein Eftevaag \defgroup Esys_Certify The ESAPI function for the TPM2_Certify command.
126*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Certify command
127*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
128*758e9fbaSOystein Eftevaag \{
129*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Certify_Async(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme)
130*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Certify(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
131*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Certify_Finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
132*758e9fbaSOystein Eftevaag \}
133*758e9fbaSOystein Eftevaag \defgroup Esys_CertifyCreation The ESAPI function for the TPM2_CertifyCreation command.
134*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_CertifyCreation command
135*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
136*758e9fbaSOystein Eftevaag \{
137*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_CertifyCreation_Async(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPM2B_DIGEST *creationHash, const TPMT_SIG_SCHEME *inScheme, const TPMT_TK_CREATION *creationTicket)
138*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_CertifyCreation(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPM2B_DIGEST *creationHash, const TPMT_SIG_SCHEME *inScheme, const TPMT_TK_CREATION *creationTicket, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
139*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_CertifyCreation_Finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
140*758e9fbaSOystein Eftevaag \}
141*758e9fbaSOystein Eftevaag \defgroup Esys_ChangeEPS The ESAPI function for the TPM2_ChangeEPS command.
142*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ChangeEPS command
143*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
144*758e9fbaSOystein Eftevaag \{
145*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ChangeEPS_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
146*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ChangeEPS(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
147*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ChangeEPS_Finish(ESYS_CONTEXT *esysContext)
148*758e9fbaSOystein Eftevaag \}
149*758e9fbaSOystein Eftevaag \defgroup Esys_ChangePPS The ESAPI function for the TPM2_ChangePPS command.
150*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ChangePPS command
151*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
152*758e9fbaSOystein Eftevaag \{
153*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ChangePPS_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
154*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ChangePPS(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
155*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ChangePPS_Finish(ESYS_CONTEXT *esysContext)
156*758e9fbaSOystein Eftevaag \}
157*758e9fbaSOystein Eftevaag \defgroup Esys_Clear The ESAPI function for the TPM2_Clear command.
158*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Clear command
159*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
160*758e9fbaSOystein Eftevaag \{
161*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Clear_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
162*758e9fbaSOystein Eftevaag \}
163*758e9fbaSOystein Eftevaag \defgroup Esys_ClearControl The ESAPI function for the TPM2_ClearControl command.
164*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ClearControl command
165*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
166*758e9fbaSOystein Eftevaag \{
167*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ClearControl_Async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO disable)
168*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ClearControl(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO disable)
169*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ClearControl_Finish(ESYS_CONTEXT *esysContext)
170*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Clear(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
171*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Clear_Finish(ESYS_CONTEXT *esysContext)
172*758e9fbaSOystein Eftevaag \}
173*758e9fbaSOystein Eftevaag \defgroup Esys_ClockRateAdjust The ESAPI function for the TPM2_ClockRateAdjust command.
174*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ClockRateAdjust command
175*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
176*758e9fbaSOystein Eftevaag \{
177*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ClockRateAdjust_Async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CLOCK_ADJUST rateAdjust)
178*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ClockRateAdjust(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CLOCK_ADJUST rateAdjust)
179*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ClockRateAdjust_Finish(ESYS_CONTEXT *esysContext)
180*758e9fbaSOystein Eftevaag \}
181*758e9fbaSOystein Eftevaag \defgroup Esys_ClockSet The ESAPI function for the TPM2_ClockSet command.
182*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ClockSet command
183*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
184*758e9fbaSOystein Eftevaag \{
185*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ClockSet_Async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT64 newTime)
186*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ClockSet(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT64 newTime)
187*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ClockSet_Finish(ESYS_CONTEXT *esysContext)
188*758e9fbaSOystein Eftevaag \}
189*758e9fbaSOystein Eftevaag \defgroup Esys_Commit The ESAPI function for the TPM2_Commit command.
190*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Commit command
191*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
192*758e9fbaSOystein Eftevaag \{
193*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Commit_Async(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *P1, const TPM2B_SENSITIVE_DATA *s2, const TPM2B_ECC_PARAMETER *y2)
194*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Commit(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *P1, const TPM2B_SENSITIVE_DATA *s2, const TPM2B_ECC_PARAMETER *y2, TPM2B_ECC_POINT **K, TPM2B_ECC_POINT **L, TPM2B_ECC_POINT **E, UINT16 *counter)
195*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Commit_Finish(ESYS_CONTEXT *esysContext, TPM2B_ECC_POINT **K, TPM2B_ECC_POINT **L, TPM2B_ECC_POINT **E, UINT16 *counter)
196*758e9fbaSOystein Eftevaag \}
197*758e9fbaSOystein Eftevaag \defgroup Esys_ContextLoad The ESAPI function for the TPM2_ContextLoad command.
198*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ContextLoad command
199*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
200*758e9fbaSOystein Eftevaag \{
201*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ContextLoad_Async(ESYS_CONTEXT *esysContext, const TPMS_CONTEXT *context)
202*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ContextLoad(ESYS_CONTEXT *esysContext, const TPMS_CONTEXT *context, ESYS_TR *loadedHandle)
203*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ContextLoad_Finish(ESYS_CONTEXT *esysContext, ESYS_TR *loadedHandle)
204*758e9fbaSOystein Eftevaag \}
205*758e9fbaSOystein Eftevaag \defgroup Esys_ContextSave The ESAPI function for the TPM2_ContextSave command.
206*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ContextSave command
207*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
208*758e9fbaSOystein Eftevaag \{
209*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ContextSave_Async(ESYS_CONTEXT *esysContext, ESYS_TR saveHandle)
210*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ContextSave(ESYS_CONTEXT *esysContext, ESYS_TR saveHandle, TPMS_CONTEXT **context)
211*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ContextSave_Finish(ESYS_CONTEXT *esysContext, TPMS_CONTEXT **context)
212*758e9fbaSOystein Eftevaag \}
213*758e9fbaSOystein Eftevaag \defgroup Esys_Create The ESAPI function for the TPM2_Create command.
214*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Create command
215*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
216*758e9fbaSOystein Eftevaag \{
217*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Create_Async(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_CREATE *inSensitive, const TPM2B_PUBLIC *inPublic, const TPM2B_DATA *outsideInfo, const TPML_PCR_SELECTION *creationPCR)
218*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Create(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_CREATE *inSensitive, const TPM2B_PUBLIC *inPublic, const TPM2B_DATA *outsideInfo, const TPML_PCR_SELECTION *creationPCR, TPM2B_PRIVATE **outPrivate, TPM2B_PUBLIC **outPublic, TPM2B_CREATION_DATA **creationData, TPM2B_DIGEST **creationHash, TPMT_TK_CREATION **creationTicket)
219*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Create_Finish(ESYS_CONTEXT *esysContext, TPM2B_PRIVATE **outPrivate, TPM2B_PUBLIC **outPublic, TPM2B_CREATION_DATA **creationData, TPM2B_DIGEST **creationHash, TPMT_TK_CREATION **creationTicket)
220*758e9fbaSOystein Eftevaag \}
221*758e9fbaSOystein Eftevaag \defgroup Esys_CreatePrimary The ESAPI function for the TPM2_CreatePrimary command.
222*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_CreatePrimary command
223*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
224*758e9fbaSOystein Eftevaag \{
225*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_CreatePrimary_Async(ESYS_CONTEXT *esysContext, ESYS_TR primaryHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_CREATE *inSensitive, const TPM2B_PUBLIC *inPublic, const TPM2B_DATA *outsideInfo, const TPML_PCR_SELECTION *creationPCR)
226*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_CreatePrimary(ESYS_CONTEXT *esysContext, ESYS_TR primaryHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_CREATE *inSensitive, const TPM2B_PUBLIC *inPublic, const TPM2B_DATA *outsideInfo, const TPML_PCR_SELECTION *creationPCR, ESYS_TR *objectHandle, TPM2B_PUBLIC **outPublic, TPM2B_CREATION_DATA **creationData, TPM2B_DIGEST **creationHash, TPMT_TK_CREATION **creationTicket)
227*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_CreatePrimary_Finish(ESYS_CONTEXT *esysContext, ESYS_TR *objectHandle, TPM2B_PUBLIC **outPublic, TPM2B_CREATION_DATA **creationData, TPM2B_DIGEST **creationHash, TPMT_TK_CREATION **creationTicket)
228*758e9fbaSOystein Eftevaag \}
229*758e9fbaSOystein Eftevaag \defgroup Esys_DictionaryAttackLockReset The ESAPI function for the TPM2_DictionaryAttackLockReset command.
230*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_DictionaryAttackLockReset command
231*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
232*758e9fbaSOystein Eftevaag \{
233*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_DictionaryAttackLockReset_Async(ESYS_CONTEXT *esysContext, ESYS_TR lockHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
234*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_DictionaryAttackLockReset(ESYS_CONTEXT *esysContext, ESYS_TR lockHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
235*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_DictionaryAttackLockReset_Finish(ESYS_CONTEXT *esysContext)
236*758e9fbaSOystein Eftevaag \}
237*758e9fbaSOystein Eftevaag \defgroup Esys_DictionaryAttackParameters The ESAPI function for the TPM2_DictionaryAttackParameters command.
238*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_DictionaryAttackParameters command
239*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
240*758e9fbaSOystein Eftevaag \{
241*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_DictionaryAttackParameters_Async(ESYS_CONTEXT *esysContext, ESYS_TR lockHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT32 newMaxTries, UINT32 newRecoveryTime, UINT32 lockoutRecovery)
242*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_DictionaryAttackParameters(ESYS_CONTEXT *esysContext, ESYS_TR lockHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT32 newMaxTries, UINT32 newRecoveryTime, UINT32 lockoutRecovery)
243*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_DictionaryAttackParameters_Finish(ESYS_CONTEXT *esysContext)
244*758e9fbaSOystein Eftevaag \}
245*758e9fbaSOystein Eftevaag \defgroup Esys_Duplicate The ESAPI function for the TPM2_Duplicate command.
246*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Duplicate command
247*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
248*758e9fbaSOystein Eftevaag \{
249*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Duplicate_Async(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR newParentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *encryptionKeyIn, const TPMT_SYM_DEF_OBJECT *symmetricAlg)
250*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Duplicate(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR newParentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *encryptionKeyIn, const TPMT_SYM_DEF_OBJECT *symmetricAlg, TPM2B_DATA **encryptionKeyOut, TPM2B_PRIVATE **duplicate, TPM2B_ENCRYPTED_SECRET **outSymSeed)
251*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Duplicate_Finish(ESYS_CONTEXT *esysContext, TPM2B_DATA **encryptionKeyOut, TPM2B_PRIVATE **duplicate, TPM2B_ENCRYPTED_SECRET **outSymSeed)
252*758e9fbaSOystein Eftevaag \}
253*758e9fbaSOystein Eftevaag \defgroup Esys_ECC_Parameters The ESAPI function for the TPM2_ECC_Parameters command.
254*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ECC_Parameters command
255*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
256*758e9fbaSOystein Eftevaag \{
257*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ECC_Parameters_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ECC_CURVE curveID)
258*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ECC_Parameters(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ECC_CURVE curveID, TPMS_ALGORITHM_DETAIL_ECC **parameters)
259*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ECC_Parameters_Finish(ESYS_CONTEXT *esysContext, TPMS_ALGORITHM_DETAIL_ECC **parameters)
260*758e9fbaSOystein Eftevaag \}
261*758e9fbaSOystein Eftevaag \defgroup Esys_ECDH_KeyGen The ESAPI function for the TPM2_ECDH_KeyGen command.
262*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ECDH_KeyGen command
263*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
264*758e9fbaSOystein Eftevaag \{
265*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ECDH_KeyGen_Async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
266*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ECDH_KeyGen(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_ECC_POINT **zPoint, TPM2B_ECC_POINT **pubPoint)
267*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ECDH_KeyGen_Finish(ESYS_CONTEXT *esysContext, TPM2B_ECC_POINT **zPoint, TPM2B_ECC_POINT **pubPoint)
268*758e9fbaSOystein Eftevaag \}
269*758e9fbaSOystein Eftevaag \defgroup Esys_ECDH_ZGen The ESAPI function for the TPM2_ECDH_ZGen command.
270*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ECDH_ZGen command
271*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
272*758e9fbaSOystein Eftevaag \{
273*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ECDH_ZGen_Async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *inPoint)
274*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ECDH_ZGen(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *inPoint, TPM2B_ECC_POINT **outPoint)
275*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ECDH_ZGen_Finish(ESYS_CONTEXT *esysContext, TPM2B_ECC_POINT **outPoint)
276*758e9fbaSOystein Eftevaag \}
277*758e9fbaSOystein Eftevaag \defgroup Esys_EC_Ephemeral The ESAPI function for the TPM2_EC_Ephemeral command.
278*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_EC_Ephemeral command
279*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
280*758e9fbaSOystein Eftevaag \{
281*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EC_Ephemeral_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ECC_CURVE curveID)
282*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EC_Ephemeral(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ECC_CURVE curveID, TPM2B_ECC_POINT **Q, UINT16 *counter)
283*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EC_Ephemeral_Finish(ESYS_CONTEXT *esysContext, TPM2B_ECC_POINT **Q, UINT16 *counter)
284*758e9fbaSOystein Eftevaag \}
285*758e9fbaSOystein Eftevaag \defgroup Esys_EncryptDecrypt The ESAPI function for the TPM2_EncryptDecrypt command.
286*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_EncryptDecrypt command
287*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
288*758e9fbaSOystein Eftevaag \{
289*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EncryptDecrypt_Async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO decrypt, TPMI_ALG_SYM_MODE mode, const TPM2B_IV *ivIn, const TPM2B_MAX_BUFFER *inData)
290*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EncryptDecrypt(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO decrypt, TPMI_ALG_SYM_MODE mode, const TPM2B_IV *ivIn, const TPM2B_MAX_BUFFER *inData, TPM2B_MAX_BUFFER **outData, TPM2B_IV **ivOut)
291*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EncryptDecrypt_Finish(ESYS_CONTEXT *esysContext, TPM2B_MAX_BUFFER **outData, TPM2B_IV **ivOut)
292*758e9fbaSOystein Eftevaag \}
293*758e9fbaSOystein Eftevaag \defgroup Esys_EventSequenceComplete The ESAPI function for the TPM2_EventSequenceComplete command.
294*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_EventSequenceComplete command
295*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
296*758e9fbaSOystein Eftevaag \{
297*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EventSequenceComplete_Async(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer)
298*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EventSequenceComplete(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer, TPML_DIGEST_VALUES **results)
299*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EventSequenceComplete_Finish(ESYS_CONTEXT *esysContext, TPML_DIGEST_VALUES **results)
300*758e9fbaSOystein Eftevaag \}
301*758e9fbaSOystein Eftevaag \defgroup Esys_EvictControl The ESAPI function for the TPM2_EvictControl command.
302*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_EvictControl command
303*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
304*758e9fbaSOystein Eftevaag \{
305*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EvictControl_Async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_DH_PERSISTENT persistentHandle)
306*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EvictControl(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_DH_PERSISTENT persistentHandle, ESYS_TR *newObjectHandle)
307*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_EvictControl_Finish(ESYS_CONTEXT *esysContext, ESYS_TR *newObjectHandle)
308*758e9fbaSOystein Eftevaag \}
309*758e9fbaSOystein Eftevaag \defgroup Esys_FlushContext The ESAPI function for the TPM2_FlushContext command.
310*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_FlushContext command
311*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
312*758e9fbaSOystein Eftevaag \{
313*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_FlushContext_Async(ESYS_CONTEXT *esysContext, ESYS_TR flushHandle)
314*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_FlushContext(ESYS_CONTEXT *esysContext, ESYS_TR flushHandle)
315*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_FlushContext_Finish(ESYS_CONTEXT *esysContext)
316*758e9fbaSOystein Eftevaag \}
317*758e9fbaSOystein Eftevaag \defgroup Esys_GetCapability The ESAPI function for the TPM2_GetCapability command.
318*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_GetCapability command
319*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
320*758e9fbaSOystein Eftevaag \{
321*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetCapability_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CAP capability, UINT32 property, UINT32 propertyCount)
322*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetCapability(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CAP capability, UINT32 property, UINT32 propertyCount, TPMI_YES_NO *moreData, TPMS_CAPABILITY_DATA **capabilityData)
323*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetCapability_Finish(ESYS_CONTEXT *esysContext, TPMI_YES_NO *moreData, TPMS_CAPABILITY_DATA **capabilityData)
324*758e9fbaSOystein Eftevaag \}
325*758e9fbaSOystein Eftevaag \defgroup Esys_GetCommandAuditDigest The ESAPI function for the TPM2_GetCommandAuditDigest command.
326*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_GetCommandAuditDigest command
327*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
328*758e9fbaSOystein Eftevaag \{
329*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetCommandAuditDigest_Async(ESYS_CONTEXT *esysContext, ESYS_TR privacyHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme)
330*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetCommandAuditDigest(ESYS_CONTEXT *esysContext, ESYS_TR privacyHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, TPM2B_ATTEST **auditInfo, TPMT_SIGNATURE **signature)
331*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetCommandAuditDigest_Finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **auditInfo, TPMT_SIGNATURE **signature)
332*758e9fbaSOystein Eftevaag \}
333*758e9fbaSOystein Eftevaag \defgroup Esys_GetRandom The ESAPI function for the TPM2_GetRandom command.
334*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_GetRandom command
335*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
336*758e9fbaSOystein Eftevaag \{
337*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetRandom_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 bytesRequested)
338*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetRandom(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 bytesRequested, TPM2B_DIGEST **randomBytes)
339*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetRandom_Finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **randomBytes)
340*758e9fbaSOystein Eftevaag \}
341*758e9fbaSOystein Eftevaag \defgroup Esys_GetSessionAuditDigest The ESAPI function for the TPM2_GetSessionAuditDigest command.
342*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_GetSessionAuditDigest command
343*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
344*758e9fbaSOystein Eftevaag \{
345*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetSessionAuditDigest_Async(ESYS_CONTEXT *esysContext, ESYS_TR privacyAdminHandle, ESYS_TR signHandle, ESYS_TR sessionHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme)
346*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetSessionAuditDigest(ESYS_CONTEXT *esysContext, ESYS_TR privacyAdminHandle, ESYS_TR signHandle, ESYS_TR sessionHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, TPM2B_ATTEST **auditInfo, TPMT_SIGNATURE **signature)
347*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetSessionAuditDigest_Finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **auditInfo, TPMT_SIGNATURE **signature)
348*758e9fbaSOystein Eftevaag \}
349*758e9fbaSOystein Eftevaag \defgroup Esys_GetTestResult The ESAPI function for the TPM2_GetTestResult command.
350*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_GetTestResult command
351*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
352*758e9fbaSOystein Eftevaag \{
353*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetTestResult_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
354*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetTestResult(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_MAX_BUFFER **outData, TPM2_RC *testResult)
355*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetTestResult_Finish(ESYS_CONTEXT *esysContext, TPM2B_MAX_BUFFER **outData, TPM2_RC *testResult)
356*758e9fbaSOystein Eftevaag \}
357*758e9fbaSOystein Eftevaag \defgroup Esys_GetTime The ESAPI function for the TPM2_GetTime command.
358*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_GetTime command
359*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
360*758e9fbaSOystein Eftevaag \{
361*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetTime_Async(ESYS_CONTEXT *esysContext, ESYS_TR privacyAdminHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme)
362*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetTime(ESYS_CONTEXT *esysContext, ESYS_TR privacyAdminHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, TPM2B_ATTEST **timeInfo, TPMT_SIGNATURE **signature)
363*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_GetTime_Finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **timeInfo, TPMT_SIGNATURE **signature)
364*758e9fbaSOystein Eftevaag \}
365*758e9fbaSOystein Eftevaag \defgroup Esys_Hash The ESAPI function for the TPM2_Hash command.
366*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Hash command
367*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
368*758e9fbaSOystein Eftevaag \{
369*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Hash_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *data, TPMI_ALG_HASH hashAlg, TPMI_RH_HIERARCHY hierarchy)
370*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Hash(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *data, TPMI_ALG_HASH hashAlg, TPMI_RH_HIERARCHY hierarchy, TPM2B_DIGEST **outHash, TPMT_TK_HASHCHECK **validation)
371*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Hash_Finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **outHash, TPMT_TK_HASHCHECK **validation)
372*758e9fbaSOystein Eftevaag \}
373*758e9fbaSOystein Eftevaag \defgroup Esys_HashSequenceStart The ESAPI function for the TPM2_HashSequenceStart command.
374*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_HashSequenceStart command
375*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
376*758e9fbaSOystein Eftevaag \{
377*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HashSequenceStart_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg)
378*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HashSequenceStart(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg, ESYS_TR *sequenceHandle)
379*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HashSequenceStart_Finish(ESYS_CONTEXT *esysContext, ESYS_TR *sequenceHandle)
380*758e9fbaSOystein Eftevaag \}
381*758e9fbaSOystein Eftevaag \defgroup Esys_HierarchyChangeAuth The ESAPI function for the TPM2_HierarchyChangeAuth command.
382*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_HierarchyChangeAuth command
383*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
384*758e9fbaSOystein Eftevaag \{
385*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HierarchyChangeAuth_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth)
386*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HierarchyChangeAuth(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth)
387*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HierarchyChangeAuth_Finish(ESYS_CONTEXT *esysContext)
388*758e9fbaSOystein Eftevaag \}
389*758e9fbaSOystein Eftevaag \defgroup Esys_HierarchyControl The ESAPI function for the TPM2_HierarchyControl command.
390*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_HierarchyControl command
391*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
392*758e9fbaSOystein Eftevaag \{
393*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HierarchyControl_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_RH_ENABLES enable, TPMI_YES_NO state)
394*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HierarchyControl(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_RH_ENABLES enable, TPMI_YES_NO state)
395*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HierarchyControl_Finish(ESYS_CONTEXT *esysContext)
396*758e9fbaSOystein Eftevaag \}
397*758e9fbaSOystein Eftevaag \defgroup Esys_HMAC The ESAPI function for the TPM2_HMAC command.
398*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_HMAC command
399*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
400*758e9fbaSOystein Eftevaag \{
401*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HMAC_Async(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer, TPMI_ALG_HASH hashAlg)
402*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HMAC(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer, TPMI_ALG_HASH hashAlg, TPM2B_DIGEST **outHMAC)
403*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HMAC_Finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **outHMAC)
404*758e9fbaSOystein Eftevaag \}
405*758e9fbaSOystein Eftevaag \defgroup Esys_HMAC_Start The ESAPI function for the TPM2_HMAC_Start command.
406*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_HMAC_Start command
407*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
408*758e9fbaSOystein Eftevaag \{
409*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HMAC_Start_Async(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg)
410*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HMAC_Start(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg, ESYS_TR *sequenceHandle)
411*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_HMAC_Start_Finish(ESYS_CONTEXT *esysContext, ESYS_TR *sequenceHandle)
412*758e9fbaSOystein Eftevaag \}
413*758e9fbaSOystein Eftevaag \defgroup Esys_Import The ESAPI function for the TPM2_Import command.
414*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Import command
415*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
416*758e9fbaSOystein Eftevaag \{
417*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Import_Async(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *encryptionKey, const TPM2B_PUBLIC *objectPublic, const TPM2B_PRIVATE *duplicate, const TPM2B_ENCRYPTED_SECRET *inSymSeed, const TPMT_SYM_DEF_OBJECT *symmetricAlg)
418*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Import(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *encryptionKey, const TPM2B_PUBLIC *objectPublic, const TPM2B_PRIVATE *duplicate, const TPM2B_ENCRYPTED_SECRET *inSymSeed, const TPMT_SYM_DEF_OBJECT *symmetricAlg, TPM2B_PRIVATE **outPrivate)
419*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Import_Finish(ESYS_CONTEXT *esysContext, TPM2B_PRIVATE **outPrivate)
420*758e9fbaSOystein Eftevaag \}
421*758e9fbaSOystein Eftevaag \defgroup Esys_IncrementalSelfTest The ESAPI function for the TPM2_IncrementalSelfTest command.
422*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_IncrementalSelfTest command
423*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
424*758e9fbaSOystein Eftevaag \{
425*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_IncrementalSelfTest_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_ALG *toTest)
426*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_IncrementalSelfTest(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_ALG *toTest, TPML_ALG **toDoList)
427*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_IncrementalSelfTest_Finish(ESYS_CONTEXT *esysContext, TPML_ALG **toDoList)
428*758e9fbaSOystein Eftevaag \}
429*758e9fbaSOystein Eftevaag \defgroup Esys_Load The ESAPI function for the TPM2_Load command.
430*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Load command
431*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
432*758e9fbaSOystein Eftevaag \{
433*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Load_Async(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PRIVATE *inPrivate, const TPM2B_PUBLIC *inPublic)
434*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Load(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PRIVATE *inPrivate, const TPM2B_PUBLIC *inPublic, ESYS_TR *objectHandle)
435*758e9fbaSOystein Eftevaag \}
436*758e9fbaSOystein Eftevaag \defgroup Esys_LoadExternal The ESAPI function for the TPM2_LoadExternal command.
437*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_LoadExternal command
438*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
439*758e9fbaSOystein Eftevaag \{
440*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_LoadExternal_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE *inPrivate, const TPM2B_PUBLIC *inPublic, TPMI_RH_HIERARCHY hierarchy)
441*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_LoadExternal(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE *inPrivate, const TPM2B_PUBLIC *inPublic, TPMI_RH_HIERARCHY hierarchy, ESYS_TR *objectHandle)
442*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_LoadExternal_Finish(ESYS_CONTEXT *esysContext, ESYS_TR *objectHandle)
443*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Load_Finish(ESYS_CONTEXT *esysContext, ESYS_TR *objectHandle)
444*758e9fbaSOystein Eftevaag \}
445*758e9fbaSOystein Eftevaag \defgroup Esys_MakeCredential The ESAPI function for the TPM2_MakeCredential command.
446*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_MakeCredential command
447*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
448*758e9fbaSOystein Eftevaag \{
449*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_MakeCredential_Async(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *credential, const TPM2B_NAME *objectName)
450*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_MakeCredential(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *credential, const TPM2B_NAME *objectName, TPM2B_ID_OBJECT **credentialBlob, TPM2B_ENCRYPTED_SECRET **secret)
451*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_MakeCredential_Finish(ESYS_CONTEXT *esysContext, TPM2B_ID_OBJECT **credentialBlob, TPM2B_ENCRYPTED_SECRET **secret)
452*758e9fbaSOystein Eftevaag \}
453*758e9fbaSOystein Eftevaag \defgroup Esys_NV_Certify The ESAPI function for the TPM2_NV_Certify command.
454*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_Certify command
455*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
456*758e9fbaSOystein Eftevaag \{
457*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Certify_Async(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, UINT16 size, UINT16 offset)
458*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Certify(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, UINT16 size, UINT16 offset, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
459*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Certify_Finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
460*758e9fbaSOystein Eftevaag \}
461*758e9fbaSOystein Eftevaag \defgroup Esys_NV_ChangeAuth The ESAPI function for the TPM2_NV_ChangeAuth command.
462*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_ChangeAuth command
463*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
464*758e9fbaSOystein Eftevaag \{
465*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_ChangeAuth_Async(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth)
466*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_ChangeAuth(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth)
467*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_ChangeAuth_Finish(ESYS_CONTEXT *esysContext)
468*758e9fbaSOystein Eftevaag \}
469*758e9fbaSOystein Eftevaag \defgroup Esys_NV_DefineSpace The ESAPI function for the TPM2_NV_DefineSpace command.
470*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_DefineSpace command
471*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
472*758e9fbaSOystein Eftevaag \{
473*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_DefineSpace_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, const TPM2B_NV_PUBLIC *publicInfo)
474*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_DefineSpace(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, const TPM2B_NV_PUBLIC *publicInfo, ESYS_TR *nvHandle)
475*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_DefineSpace_Finish(ESYS_CONTEXT *esysContext, ESYS_TR *nvHandle)
476*758e9fbaSOystein Eftevaag \}
477*758e9fbaSOystein Eftevaag \defgroup Esys_NV_Extend The ESAPI function for the TPM2_NV_Extend command.
478*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_Extend command
479*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
480*758e9fbaSOystein Eftevaag \{
481*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Extend_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_NV_BUFFER *data)
482*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Extend(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_NV_BUFFER *data)
483*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Extend_Finish(ESYS_CONTEXT *esysContext)
484*758e9fbaSOystein Eftevaag \}
485*758e9fbaSOystein Eftevaag \defgroup Esys_NV_GlobalWriteLock The ESAPI function for the TPM2_NV_GlobalWriteLock command.
486*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_GlobalWriteLock command
487*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
488*758e9fbaSOystein Eftevaag \{
489*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_GlobalWriteLock_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
490*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_GlobalWriteLock(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
491*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_GlobalWriteLock_Finish(ESYS_CONTEXT *esysContext)
492*758e9fbaSOystein Eftevaag \}
493*758e9fbaSOystein Eftevaag \defgroup Esys_NV_Increment The ESAPI function for the TPM2_NV_Increment command.
494*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_Increment command
495*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
496*758e9fbaSOystein Eftevaag \{
497*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Increment_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
498*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Increment(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
499*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Increment_Finish(ESYS_CONTEXT *esysContext)
500*758e9fbaSOystein Eftevaag \}
501*758e9fbaSOystein Eftevaag \defgroup Esys_NV_Read The ESAPI function for the TPM2_NV_Read command.
502*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_Read command
503*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
504*758e9fbaSOystein Eftevaag \{
505*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Read_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 size, UINT16 offset)
506*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Read(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 size, UINT16 offset, TPM2B_MAX_NV_BUFFER **data)
507*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Read_Finish(ESYS_CONTEXT *esysContext, TPM2B_MAX_NV_BUFFER **data)
508*758e9fbaSOystein Eftevaag \}
509*758e9fbaSOystein Eftevaag \defgroup Esys_NV_ReadLock The ESAPI function for the TPM2_NV_ReadLock command.
510*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_ReadLock command
511*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
512*758e9fbaSOystein Eftevaag \{
513*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_ReadLock_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
514*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_ReadLock(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
515*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_ReadLock_Finish(ESYS_CONTEXT *esysContext)
516*758e9fbaSOystein Eftevaag \}
517*758e9fbaSOystein Eftevaag \defgroup Esys_NV_ReadPublic The ESAPI function for the TPM2_NV_ReadPublic command.
518*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_ReadPublic command
519*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
520*758e9fbaSOystein Eftevaag \{
521*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_ReadPublic_Async(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
522*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_ReadPublic(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_NV_PUBLIC **nvPublic, TPM2B_NAME **nvName)
523*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_ReadPublic_Finish(ESYS_CONTEXT *esysContext, TPM2B_NV_PUBLIC **nvPublic, TPM2B_NAME **nvName)
524*758e9fbaSOystein Eftevaag \}
525*758e9fbaSOystein Eftevaag \defgroup Esys_NV_SetBits The ESAPI function for the TPM2_NV_SetBits command.
526*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_SetBits command
527*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
528*758e9fbaSOystein Eftevaag \{
529*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_SetBits_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT64 bits)
530*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_SetBits(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT64 bits)
531*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_SetBits_Finish(ESYS_CONTEXT *esysContext)
532*758e9fbaSOystein Eftevaag \}
533*758e9fbaSOystein Eftevaag \defgroup Esys_NV_UndefineSpace The ESAPI function for the TPM2_NV_UndefineSpace command.
534*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_UndefineSpace command
535*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
536*758e9fbaSOystein Eftevaag \{
537*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_UndefineSpace_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
538*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_UndefineSpace(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
539*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_UndefineSpace_Finish(ESYS_CONTEXT *esysContext)
540*758e9fbaSOystein Eftevaag \}
541*758e9fbaSOystein Eftevaag \defgroup Esys_NV_UndefineSpaceSpecial The ESAPI function for the TPM2_NV_UndefineSpaceSpecial command.
542*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_UndefineSpaceSpecial command
543*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
544*758e9fbaSOystein Eftevaag \{
545*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_UndefineSpaceSpecial_Async(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR platform, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
546*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_UndefineSpaceSpecial(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR platform, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
547*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_UndefineSpaceSpecial_Finish(ESYS_CONTEXT *esysContext)
548*758e9fbaSOystein Eftevaag \}
549*758e9fbaSOystein Eftevaag \defgroup Esys_NV_Write The ESAPI function for the TPM2_NV_Write command.
550*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_Write command
551*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
552*758e9fbaSOystein Eftevaag \{
553*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Write_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_NV_BUFFER *data, UINT16 offset)
554*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Write(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_NV_BUFFER *data, UINT16 offset)
555*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_Write_Finish(ESYS_CONTEXT *esysContext)
556*758e9fbaSOystein Eftevaag \}
557*758e9fbaSOystein Eftevaag \defgroup Esys_NV_WriteLock The ESAPI function for the TPM2_NV_WriteLock command.
558*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_NV_WriteLock command
559*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
560*758e9fbaSOystein Eftevaag \{
561*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_WriteLock_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
562*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_WriteLock(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
563*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_NV_WriteLock_Finish(ESYS_CONTEXT *esysContext)
564*758e9fbaSOystein Eftevaag \}
565*758e9fbaSOystein Eftevaag \defgroup Esys_ObjectChangeAuth The ESAPI function for the TPM2_ObjectChangeAuth command.
566*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ObjectChangeAuth command
567*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
568*758e9fbaSOystein Eftevaag \{
569*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ObjectChangeAuth_Async(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth)
570*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ObjectChangeAuth(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth, TPM2B_PRIVATE **outPrivate)
571*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ObjectChangeAuth_Finish(ESYS_CONTEXT *esysContext, TPM2B_PRIVATE **outPrivate)
572*758e9fbaSOystein Eftevaag \}
573*758e9fbaSOystein Eftevaag \defgroup Esys_PCR_Allocate The ESAPI function for the TPM2_PCR_Allocate command.
574*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PCR_Allocate command
575*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
576*758e9fbaSOystein Eftevaag \{
577*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Allocate_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_PCR_SELECTION *pcrAllocation)
578*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Allocate(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_PCR_SELECTION *pcrAllocation, TPMI_YES_NO *allocationSuccess, UINT32 *maxPCR, UINT32 *sizeNeeded, UINT32 *sizeAvailable)
579*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Allocate_Finish(ESYS_CONTEXT *esysContext, TPMI_YES_NO *allocationSuccess, UINT32 *maxPCR, UINT32 *sizeNeeded, UINT32 *sizeAvailable)
580*758e9fbaSOystein Eftevaag \}
581*758e9fbaSOystein Eftevaag \defgroup Esys_PCR_Event The ESAPI function for the TPM2_PCR_Event command.
582*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PCR_Event command
583*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
584*758e9fbaSOystein Eftevaag \{
585*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Event_Async(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_EVENT *eventData)
586*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Event(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_EVENT *eventData, TPML_DIGEST_VALUES **digests)
587*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Event_Finish(ESYS_CONTEXT *esysContext, TPML_DIGEST_VALUES **digests)
588*758e9fbaSOystein Eftevaag \}
589*758e9fbaSOystein Eftevaag \defgroup Esys_PCR_Extend The ESAPI function for the TPM2_PCR_Extend command.
590*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PCR_Extend command
591*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
592*758e9fbaSOystein Eftevaag \{
593*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Extend_Async(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_DIGEST_VALUES *digests)
594*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Extend(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_DIGEST_VALUES *digests)
595*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Extend_Finish(ESYS_CONTEXT *esysContext)
596*758e9fbaSOystein Eftevaag \}
597*758e9fbaSOystein Eftevaag \defgroup Esys_PCR_Read The ESAPI function for the TPM2_PCR_Read command.
598*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PCR_Read command
599*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
600*758e9fbaSOystein Eftevaag \{
601*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Read_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_PCR_SELECTION *pcrSelectionIn)
602*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Read(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_PCR_SELECTION *pcrSelectionIn, UINT32 *pcrUpdateCounter, TPML_PCR_SELECTION **pcrSelectionOut, TPML_DIGEST **pcrValues)
603*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Read_Finish(ESYS_CONTEXT *esysContext, UINT32 *pcrUpdateCounter, TPML_PCR_SELECTION **pcrSelectionOut, TPML_DIGEST **pcrValues)
604*758e9fbaSOystein Eftevaag \}
605*758e9fbaSOystein Eftevaag \defgroup Esys_PCR_Reset The ESAPI function for the TPM2_PCR_Reset command.
606*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PCR_Reset command
607*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
608*758e9fbaSOystein Eftevaag \{
609*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Reset_Async(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
610*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Reset(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
611*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_Reset_Finish(ESYS_CONTEXT *esysContext)
612*758e9fbaSOystein Eftevaag \}
613*758e9fbaSOystein Eftevaag \defgroup Esys_PCR_SetAuthPolicy The ESAPI function for the TPM2_PCR_SetAuthPolicy command.
614*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PCR_SetAuthPolicy command
615*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
616*758e9fbaSOystein Eftevaag \{
617*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_SetAuthPolicy_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *authPolicy, TPMI_ALG_HASH hashAlg, TPMI_DH_PCR pcrNum)
618*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_SetAuthPolicy(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *authPolicy, TPMI_ALG_HASH hashAlg, TPMI_DH_PCR pcrNum)
619*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_SetAuthPolicy_Finish(ESYS_CONTEXT *esysContext)
620*758e9fbaSOystein Eftevaag \}
621*758e9fbaSOystein Eftevaag \defgroup Esys_PCR_SetAuthValue The ESAPI function for the TPM2_PCR_SetAuthValue command.
622*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PCR_SetAuthValue command
623*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
624*758e9fbaSOystein Eftevaag \{
625*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_SetAuthValue_Async(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *auth)
626*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_SetAuthValue(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *auth)
627*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PCR_SetAuthValue_Finish(ESYS_CONTEXT *esysContext)
628*758e9fbaSOystein Eftevaag \}
629*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyAuthorize The ESAPI function for the TPM2_PolicyAuthorize command.
630*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyAuthorize command
631*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
632*758e9fbaSOystein Eftevaag \{
633*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyAuthorize_Async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *approvedPolicy, const TPM2B_NONCE *policyRef, const TPM2B_NAME *keySign, const TPMT_TK_VERIFIED *checkTicket)
634*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyAuthorize(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *approvedPolicy, const TPM2B_NONCE *policyRef, const TPM2B_NAME *keySign, const TPMT_TK_VERIFIED *checkTicket)
635*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyAuthorize_Finish(ESYS_CONTEXT *esysContext)
636*758e9fbaSOystein Eftevaag \}
637*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyAuthValue The ESAPI function for the TPM2_PolicyAuthValue command.
638*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyAuthValue command
639*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
640*758e9fbaSOystein Eftevaag \{
641*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyAuthValue_Async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
642*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyAuthValue(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
643*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyAuthValue_Finish(ESYS_CONTEXT *esysContext)
644*758e9fbaSOystein Eftevaag \}
645*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyCommandCode The ESAPI function for the TPM2_PolicyCommandCode command.
646*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyCommandCode command
647*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
648*758e9fbaSOystein Eftevaag \{
649*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyCommandCode_Async(ESYS_CONTEXT *esysContext, ESYS_TR  policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CC code)
650*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyCommandCode(ESYS_CONTEXT *esysContext, ESYS_TR  policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CC code)
651*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyCommandCode_Finish(ESYS_CONTEXT *esysContext)
652*758e9fbaSOystein Eftevaag \}
653*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyCounterTimer The ESAPI function for the TPM2_PolicyCounterTimer command.
654*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyCounterTimer command
655*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
656*758e9fbaSOystein Eftevaag \{
657*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyCounterTimer_Async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_OPERAND *operandB, UINT16 offset, TPM2_EO operation)
658*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyCounterTimer(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_OPERAND *operandB, UINT16 offset, TPM2_EO operation)
659*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyCounterTimer_Finish(ESYS_CONTEXT *esysContext)
660*758e9fbaSOystein Eftevaag \}
661*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyCpHash The ESAPI function for the TPM2_PolicyCpHash command.
662*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyCpHash command
663*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
664*758e9fbaSOystein Eftevaag \{
665*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyCpHash_Async(ESYS_CONTEXT *esysContext, ESYS_TR  policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3,  const TPM2B_DIGEST *cpHashA)
666*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyCpHash(ESYS_CONTEXT *esysContext, ESYS_TR  policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *cpHashA)
667*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyCpHash_Finish(ESYS_CONTEXT *esysContext)
668*758e9fbaSOystein Eftevaag \}
669*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyDuplicationSelect The ESAPI function for the TPM2_PolicyDuplicationSelect command.
670*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyDuplicationSelect command
671*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
672*758e9fbaSOystein Eftevaag \{
673*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyDuplicationSelect_Async(ESYS_CONTEXT *esysContext, ESYS_TR  policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NAME *objectName, const TPM2B_NAME *newParentName, TPMI_YES_NO includeObject)
674*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyDuplicationSelect(ESYS_CONTEXT *esysContext, ESYS_TR  policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NAME *objectName, const TPM2B_NAME *newParentName, TPMI_YES_NO includeObject)
675*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyDuplicationSelect_Finish(ESYS_CONTEXT *esysContext)
676*758e9fbaSOystein Eftevaag \}
677*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyGetDigest The ESAPI function for the TPM2_PolicyGetDigest command.
678*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyGetDigest command
679*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
680*758e9fbaSOystein Eftevaag \{
681*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyGetDigest_Async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
682*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyGetDigest(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_DIGEST **policyDigest)
683*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyGetDigest_Finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **policyDigest)
684*758e9fbaSOystein Eftevaag \}
685*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyLocality The ESAPI function for the TPM2_PolicyLocality command.
686*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyLocality command
687*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
688*758e9fbaSOystein Eftevaag \{
689*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyLocality_Async(ESYS_CONTEXT *esysContext, ESYS_TR  policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMA_LOCALITY locality)
690*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyLocality(ESYS_CONTEXT *esysContext, ESYS_TR  policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMA_LOCALITY locality)
691*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyLocality_Finish(ESYS_CONTEXT *esysContext)
692*758e9fbaSOystein Eftevaag \}
693*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyNameHash The ESAPI function for the TPM2_PolicyNameHash command.
694*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyNameHash command
695*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
696*758e9fbaSOystein Eftevaag \{
697*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyNameHash_Async(ESYS_CONTEXT *esysContext, ESYS_TR  policySession,  ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *nameHash)
698*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyNameHash(ESYS_CONTEXT *esysContext, ESYS_TR  policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *nameHash)
699*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyNameHash_Finish(ESYS_CONTEXT *esysContext)
700*758e9fbaSOystein Eftevaag \}
701*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyNV The ESAPI function for the TPM2_PolicyNV command.
702*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyNV command
703*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
704*758e9fbaSOystein Eftevaag \{
705*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyNV_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_OPERAND *operandB, UINT16 offset, TPM2_EO operation)
706*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyNV(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_OPERAND *operandB, UINT16 offset, TPM2_EO operation)
707*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyNV_Finish(ESYS_CONTEXT *esysContext)
708*758e9fbaSOystein Eftevaag \}
709*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyNvWritten The ESAPI function for the TPM2_PolicyNvWritten command.
710*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyNvWritten command
711*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
712*758e9fbaSOystein Eftevaag \{
713*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyNvWritten_Async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO writtenSet)
714*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyNvWritten(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO writtenSet)
715*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyNvWritten_Finish(ESYS_CONTEXT *esysContext)
716*758e9fbaSOystein Eftevaag \}
717*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyOR The ESAPI function for the TPM2_PolicyOR command.
718*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyOR command
719*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
720*758e9fbaSOystein Eftevaag \{
721*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyOR_Async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_DIGEST *pHashList)
722*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyOR(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_DIGEST *pHashList)
723*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyOR_Finish(ESYS_CONTEXT *esysContext)
724*758e9fbaSOystein Eftevaag \}
725*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyPassword The ESAPI function for the TPM2_PolicyPassword command.
726*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyPassword command
727*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
728*758e9fbaSOystein Eftevaag \{
729*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyPassword_Async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
730*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyPassword(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
731*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyPassword_Finish(ESYS_CONTEXT *esysContext)
732*758e9fbaSOystein Eftevaag \}
733*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyPCR The ESAPI function for the TPM2_PolicyPCR command.
734*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyPCR command
735*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
736*758e9fbaSOystein Eftevaag \{
737*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyPCR_Async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *pcrDigest, const TPML_PCR_SELECTION *pcrs)
738*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyPCR(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *pcrDigest, const TPML_PCR_SELECTION *pcrs)
739*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyPCR_Finish(ESYS_CONTEXT *esysContext)
740*758e9fbaSOystein Eftevaag \}
741*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyPhysicalPresence The ESAPI function for the TPM2_PolicyPhysicalPresence command.
742*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyPhysicalPresence command
743*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
744*758e9fbaSOystein Eftevaag \{
745*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyPhysicalPresence_Async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
746*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyPhysicalPresence(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
747*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyPhysicalPresence_Finish(ESYS_CONTEXT *esysContext)
748*758e9fbaSOystein Eftevaag \}
749*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyRestart The ESAPI function for the TPM2_PolicyRestart command.
750*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyRestart command
751*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
752*758e9fbaSOystein Eftevaag \{
753*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyRestart_Async(ESYS_CONTEXT *esysContext, ESYS_TR sessionHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
754*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyRestart(ESYS_CONTEXT *esysContext, ESYS_TR sessionHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
755*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyRestart_Finish(ESYS_CONTEXT *esysContext)
756*758e9fbaSOystein Eftevaag \}
757*758e9fbaSOystein Eftevaag \defgroup Esys_PolicySecret The ESAPI function for the TPM2_PolicySecret command.
758*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicySecret command
759*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
760*758e9fbaSOystein Eftevaag \{
761*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicySecret_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceTPM, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, INT32 expiration)
762*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicySecret(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceTPM, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, INT32 expiration, TPM2B_TIMEOUT **timeout, TPMT_TK_AUTH **policyTicket)
763*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicySecret_Finish(ESYS_CONTEXT *esysContext, TPM2B_TIMEOUT **timeout, TPMT_TK_AUTH **policyTicket)
764*758e9fbaSOystein Eftevaag \}
765*758e9fbaSOystein Eftevaag \defgroup Esys_PolicySigned The ESAPI function for the TPM2_PolicySigned command.
766*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicySigned command
767*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
768*758e9fbaSOystein Eftevaag \{
769*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicySigned_Async(ESYS_CONTEXT *esysContext, ESYS_TR authObject, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceTPM, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, INT32 expiration, const TPMT_SIGNATURE *auth)
770*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicySigned(ESYS_CONTEXT *esysContext, ESYS_TR authObject, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceTPM, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, INT32 expiration, const TPMT_SIGNATURE *auth, TPM2B_TIMEOUT **timeout, TPMT_TK_AUTH **policyTicket)
771*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicySigned_Finish(ESYS_CONTEXT *esysContext, TPM2B_TIMEOUT **timeout, TPMT_TK_AUTH **policyTicket)
772*758e9fbaSOystein Eftevaag \}
773*758e9fbaSOystein Eftevaag \defgroup Esys_PolicyTicket The ESAPI function for the TPM2_PolicyTicket command.
774*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PolicyTicket command
775*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
776*758e9fbaSOystein Eftevaag \{
777*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyTicket_Async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_TIMEOUT *timeout, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, const TPM2B_NAME *authName, const TPMT_TK_AUTH *ticket)
778*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyTicket(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_TIMEOUT *timeout, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, const TPM2B_NAME *authName, const TPMT_TK_AUTH *ticket)
779*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PolicyTicket_Finish(ESYS_CONTEXT *esysContext)
780*758e9fbaSOystein Eftevaag \}
781*758e9fbaSOystein Eftevaag \defgroup Esys_PP_Commands The ESAPI function for the TPM2_PP_Commands command.
782*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_PP_Commands command
783*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
784*758e9fbaSOystein Eftevaag \{
785*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PP_Commands_Async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_CC *setList, const TPML_CC *clearList)
786*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PP_Commands(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_CC *setList, const TPML_CC *clearList)
787*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_PP_Commands_Finish(ESYS_CONTEXT *esysContext)
788*758e9fbaSOystein Eftevaag \}
789*758e9fbaSOystein Eftevaag \defgroup Esys_Quote The ESAPI function for the TPM2_Quote command.
790*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Quote command
791*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
792*758e9fbaSOystein Eftevaag \{
793*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Quote_Async(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, const TPML_PCR_SELECTION *PCRselect)
794*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Quote(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, const TPML_PCR_SELECTION *PCRselect, TPM2B_ATTEST **quoted, TPMT_SIGNATURE **signature)
795*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Quote_Finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **quoted, TPMT_SIGNATURE **signature)
796*758e9fbaSOystein Eftevaag \}
797*758e9fbaSOystein Eftevaag \defgroup Esys_ReadClock The ESAPI function for the TPM2_ReadClock command.
798*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ReadClock command
799*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
800*758e9fbaSOystein Eftevaag \{
801*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ReadClock_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
802*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ReadClock(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMS_TIME_INFO **currentTime)
803*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ReadClock_Finish(ESYS_CONTEXT *esysContext, TPMS_TIME_INFO **currentTime)
804*758e9fbaSOystein Eftevaag \}
805*758e9fbaSOystein Eftevaag \defgroup Esys_ReadPublic The ESAPI function for the TPM2_ReadPublic command.
806*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ReadPublic command
807*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
808*758e9fbaSOystein Eftevaag \{
809*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ReadPublic_Async(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
810*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ReadPublic(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_PUBLIC **outPublic, TPM2B_NAME **name, TPM2B_NAME **qualifiedName)
811*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ReadPublic_Finish(ESYS_CONTEXT *esysContext, TPM2B_PUBLIC **outPublic, TPM2B_NAME **name, TPM2B_NAME **qualifiedName)
812*758e9fbaSOystein Eftevaag \}
813*758e9fbaSOystein Eftevaag \defgroup Esys_Rewrap The ESAPI function for the TPM2_Rewrap command.
814*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Rewrap command
815*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
816*758e9fbaSOystein Eftevaag \{
817*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Rewrap_Async(ESYS_CONTEXT *esysContext, ESYS_TR oldParent, ESYS_TR newParent, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PRIVATE *inDuplicate, const TPM2B_NAME *name, const TPM2B_ENCRYPTED_SECRET *inSymSeed)
818*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Rewrap(ESYS_CONTEXT *esysContext, ESYS_TR oldParent, ESYS_TR newParent, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PRIVATE *inDuplicate, const TPM2B_NAME *name, const TPM2B_ENCRYPTED_SECRET *inSymSeed, TPM2B_PRIVATE **outDuplicate, TPM2B_ENCRYPTED_SECRET **outSymSeed)
819*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Rewrap_Finish(ESYS_CONTEXT *esysContext, TPM2B_PRIVATE **outDuplicate, TPM2B_ENCRYPTED_SECRET **outSymSeed)
820*758e9fbaSOystein Eftevaag \}
821*758e9fbaSOystein Eftevaag \defgroup Esys_RSA_Decrypt The ESAPI function for the TPM2_RSA_Decrypt command.
822*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_RSA_Decrypt command
823*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
824*758e9fbaSOystein Eftevaag \{
825*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_RSA_Decrypt_Async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PUBLIC_KEY_RSA *cipherText, const TPMT_RSA_DECRYPT *inScheme, const TPM2B_DATA *label)
826*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_RSA_Decrypt(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PUBLIC_KEY_RSA *cipherText, const TPMT_RSA_DECRYPT *inScheme, const TPM2B_DATA *label, TPM2B_PUBLIC_KEY_RSA **message)
827*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_RSA_Decrypt_Finish(ESYS_CONTEXT *esysContext, TPM2B_PUBLIC_KEY_RSA **message)
828*758e9fbaSOystein Eftevaag \}
829*758e9fbaSOystein Eftevaag \defgroup Esys_RSA_Encrypt The ESAPI function for the TPM2_RSA_Encrypt command.
830*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_RSA_Encrypt command
831*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
832*758e9fbaSOystein Eftevaag \{
833*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_RSA_Encrypt_Async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PUBLIC_KEY_RSA *message, const TPMT_RSA_DECRYPT *inScheme, const TPM2B_DATA *label)
834*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_RSA_Encrypt(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PUBLIC_KEY_RSA *message, const TPMT_RSA_DECRYPT *inScheme, const TPM2B_DATA *label, TPM2B_PUBLIC_KEY_RSA **outData)
835*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_RSA_Encrypt_Finish(ESYS_CONTEXT *esysContext, TPM2B_PUBLIC_KEY_RSA **outData)
836*758e9fbaSOystein Eftevaag \}
837*758e9fbaSOystein Eftevaag \defgroup Esys_SelfTest The ESAPI function for the TPM2_SelfTest command.
838*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_SelfTest command
839*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
840*758e9fbaSOystein Eftevaag \{
841*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SelfTest_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO fullTest)
842*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SelfTest(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO fullTest)
843*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SelfTest_Finish(ESYS_CONTEXT *esysContext)
844*758e9fbaSOystein Eftevaag \}
845*758e9fbaSOystein Eftevaag \defgroup Esys_SequenceComplete The ESAPI function for the TPM2_SequenceComplete command.
846*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_SequenceComplete command
847*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
848*758e9fbaSOystein Eftevaag \{
849*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SequenceComplete_Async(ESYS_CONTEXT *esysContext, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer, TPMI_RH_HIERARCHY hierarchy)
850*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SequenceComplete(ESYS_CONTEXT *esysContext, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer, TPMI_RH_HIERARCHY hierarchy, TPM2B_DIGEST **result, TPMT_TK_HASHCHECK **validation)
851*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SequenceComplete_Finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **result, TPMT_TK_HASHCHECK **validation)
852*758e9fbaSOystein Eftevaag \}
853*758e9fbaSOystein Eftevaag \defgroup Esys_SequenceUpdate The ESAPI function for the TPM2_SequenceUpdate command.
854*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_SequenceUpdate command
855*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
856*758e9fbaSOystein Eftevaag \{
857*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SequenceUpdate_Async(ESYS_CONTEXT *esysContext, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer)
858*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SequenceUpdate(ESYS_CONTEXT *esysContext, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer)
859*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SequenceUpdate_Finish(ESYS_CONTEXT *esysContext)
860*758e9fbaSOystein Eftevaag \}
861*758e9fbaSOystein Eftevaag \defgroup Esys_SetAlgorithmSet The ESAPI function for the TPM2_SetAlgorithmSet command.
862*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_SetAlgorithmSet command
863*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
864*758e9fbaSOystein Eftevaag \{
865*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SetAlgorithmSet_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT32 algorithmSet)
866*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SetAlgorithmSet(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT32 algorithmSet)
867*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SetAlgorithmSet_Finish(ESYS_CONTEXT *esysContext)
868*758e9fbaSOystein Eftevaag \}
869*758e9fbaSOystein Eftevaag \defgroup Esys_SetCommandCodeAuditStatus The ESAPI function for the TPM2_SetCommandCodeAuditStatus command.
870*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_SetCommandCodeAuditStatus command
871*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
872*758e9fbaSOystein Eftevaag \{
873*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SetCommandCodeAuditStatus_Async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ALG_HASH auditAlg, const TPML_CC *setList, const TPML_CC *clearList)
874*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SetCommandCodeAuditStatus(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ALG_HASH auditAlg, const TPML_CC *setList, const TPML_CC *clearList)
875*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SetCommandCodeAuditStatus_Finish(ESYS_CONTEXT *esysContext)
876*758e9fbaSOystein Eftevaag \}
877*758e9fbaSOystein Eftevaag \defgroup Esys_SetPrimaryPolicy The ESAPI function for the TPM2_SetPrimaryPolicy command.
878*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_SetPrimaryPolicy command
879*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
880*758e9fbaSOystein Eftevaag \{
881*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SetPrimaryPolicy_Async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *authPolicy, TPMI_ALG_HASH hashAlg)
882*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SetPrimaryPolicy(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *authPolicy, TPMI_ALG_HASH hashAlg)
883*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_SetPrimaryPolicy_Finish(ESYS_CONTEXT *esysContext)
884*758e9fbaSOystein Eftevaag \}
885*758e9fbaSOystein Eftevaag \defgroup Esys_Shutdown The ESAPI function for the TPM2_Shutdown command.
886*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Shutdown command
887*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
888*758e9fbaSOystein Eftevaag \{
889*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Shutdown_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_SU shutdownType)
890*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Shutdown(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_SU shutdownType)
891*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Shutdown_Finish(ESYS_CONTEXT *esysContext)
892*758e9fbaSOystein Eftevaag \}
893*758e9fbaSOystein Eftevaag \defgroup Esys_Sign The ESAPI function for the TPM2_Sign command.
894*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Sign command
895*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
896*758e9fbaSOystein Eftevaag \{
897*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Sign_Async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *digest, const TPMT_SIG_SCHEME *inScheme, const TPMT_TK_HASHCHECK *validation)
898*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Sign(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *digest, const TPMT_SIG_SCHEME *inScheme, const TPMT_TK_HASHCHECK *validation, TPMT_SIGNATURE **signature)
899*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Sign_Finish(ESYS_CONTEXT *esysContext, TPMT_SIGNATURE **signature)
900*758e9fbaSOystein Eftevaag \}
901*758e9fbaSOystein Eftevaag \defgroup Esys_StartAuthSession The ESAPI function for the TPM2_StartAuthSession command.
902*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_StartAuthSession command
903*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
904*758e9fbaSOystein Eftevaag \{
905*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_StartAuthSession_Async(ESYS_CONTEXT *esysContext, ESYS_TR tpmKey, ESYS_TR bind, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceCaller, TPM2_SE sessionType, const TPMT_SYM_DEF *symmetric, TPMI_ALG_HASH authHash)
906*758e9fbaSOystein Eftevaag
907*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_StartAuthSession(ESYS_CONTEXT *esysContext, ESYS_TR tpmKey, ESYS_TR bind, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceCaller, TPM2_SE sessionType, const TPMT_SYM_DEF *symmetric, TPMI_ALG_HASH authHash, ESYS_TR *sessionHandle)
908*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_StartAuthSession_Finish(ESYS_CONTEXT *esysContext, ESYS_TR *sessionHandle, TPM2B_NONCE **nonceTPM)
909*758e9fbaSOystein Eftevaag \}
910*758e9fbaSOystein Eftevaag \defgroup Esys_Startup The ESAPI function for the TPM2_Startup command.
911*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Startup command
912*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
913*758e9fbaSOystein Eftevaag \{
914*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Startup_Async(ESYS_CONTEXT *esysContext, TPM2_SU startupType)
915*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Startup(ESYS_CONTEXT *esysContext, TPM2_SU startupType)
916*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Startup_Finish(ESYS_CONTEXT *esysContext)
917*758e9fbaSOystein Eftevaag \}
918*758e9fbaSOystein Eftevaag \defgroup Esys_StirRandom The ESAPI function for the TPM2_StirRandom command.
919*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_StirRandom command
920*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
921*758e9fbaSOystein Eftevaag \{
922*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_StirRandom_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_DATA *inData)
923*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_StirRandom(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_DATA *inData)
924*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_StirRandom_Finish(ESYS_CONTEXT *esysContext)
925*758e9fbaSOystein Eftevaag \}
926*758e9fbaSOystein Eftevaag \defgroup Esys_TestParms The ESAPI function for the TPM2_TestParms command.
927*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_TestParms command
928*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
929*758e9fbaSOystein Eftevaag \{
930*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TestParms_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPMT_PUBLIC_PARMS *parameters)
931*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TestParms(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPMT_PUBLIC_PARMS *parameters)
932*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_TestParms_Finish(ESYS_CONTEXT *esysContext)
933*758e9fbaSOystein Eftevaag \}
934*758e9fbaSOystein Eftevaag \defgroup Esys_Unseal The ESAPI function for the TPM2_Unseal command.
935*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Unseal command
936*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
937*758e9fbaSOystein Eftevaag \{
938*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Unseal_Async(ESYS_CONTEXT *esysContext, ESYS_TR itemHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
939*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Unseal(ESYS_CONTEXT *esysContext, ESYS_TR itemHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_SENSITIVE_DATA **outData)
940*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Unseal_Finish(ESYS_CONTEXT *esysContext, TPM2B_SENSITIVE_DATA **outData)
941*758e9fbaSOystein Eftevaag \}
942*758e9fbaSOystein Eftevaag \defgroup Esys_Vendor_TCG_Test The ESAPI function for the TPM2_Vendor_TCG_Test command.
943*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_Vendor_TCG_Test command
944*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
945*758e9fbaSOystein Eftevaag \{
946*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Vendor_TCG_Test_Async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *inputData)
947*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Vendor_TCG_Test(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *inputData, TPM2B_DATA **outputData)
948*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_Vendor_TCG_Test_Finish(ESYS_CONTEXT *esysContext, TPM2B_DATA **outputData)
949*758e9fbaSOystein Eftevaag \}
950*758e9fbaSOystein Eftevaag \defgroup Esys_VerifySignature The ESAPI function for the TPM2_VerifySignature command.
951*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_VerifySignature command
952*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
953*758e9fbaSOystein Eftevaag \{
954*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_VerifySignature_Async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *digest, const TPMT_SIGNATURE *signature)
955*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_VerifySignature(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *digest, const TPMT_SIGNATURE *signature, TPMT_TK_VERIFIED **validation)
956*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_VerifySignature_Finish(ESYS_CONTEXT *esysContext, TPMT_TK_VERIFIED **validation)
957*758e9fbaSOystein Eftevaag \}
958*758e9fbaSOystein Eftevaag \defgroup Esys_ZGen_2Phase The ESAPI function for the TPM2_ZGen_2Phase command.
959*758e9fbaSOystein Eftevaag * ESAPI function to invoke the TPM2_ZGen_2Phase command
960*758e9fbaSOystein Eftevaag * either as a one-call or in an asynchronous manner.
961*758e9fbaSOystein Eftevaag \{
962*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ZGen_2Phase_Async(ESYS_CONTEXT *esysContext, ESYS_TR keyA, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *inQsB, const TPM2B_ECC_POINT *inQeB, TPMI_ECC_KEY_EXCHANGE inScheme, UINT16 counter)
963*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ZGen_2Phase(ESYS_CONTEXT *esysContext, ESYS_TR keyA, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *inQsB, const TPM2B_ECC_POINT *inQeB, TPMI_ECC_KEY_EXCHANGE inScheme, UINT16 counter, TPM2B_ECC_POINT **outZ1, TPM2B_ECC_POINT **outZ2)
964*758e9fbaSOystein Eftevaag \fn TSS2_RC Esys_ZGen_2Phase_Finish(ESYS_CONTEXT *esysContext, TPM2B_ECC_POINT **outZ1, TPM2B_ECC_POINT **outZ2)
965*758e9fbaSOystein Eftevaag \}
966*758e9fbaSOystein Eftevaag \}
967*758e9fbaSOystein Eftevaag*/
968*758e9fbaSOystein Eftevaag
969*758e9fbaSOystein Eftevaag/*!
970*758e9fbaSOystein Eftevaag \defgroup iesys Internals of Enhanced System API
971*758e9fbaSOystein Eftevaag \ingroup esys
972*758e9fbaSOystein Eftevaag This module holds internal APIs of the ESAPI implementation.
973*758e9fbaSOystein Eftevaag \{
974*758e9fbaSOystein Eftevaag \}
975*758e9fbaSOystein Eftevaag*/
976*758e9fbaSOystein Eftevaag
977*758e9fbaSOystein Eftevaag/* Note: all *_IN and the union IESYS_CMD_IN_PARAM are excluded from documentation */
978*758e9fbaSOystein Eftevaag/*!
979*758e9fbaSOystein Eftevaag \defgroup esys_int Internal ESAPI Types
980*758e9fbaSOystein Eftevaag \ingroup iesys
981*758e9fbaSOystein Eftevaag The ESAPI implementation requires a set of internal type definitions.
982*758e9fbaSOystein Eftevaag \{
983*758e9fbaSOystein Eftevaag \struct RSRC_NODE_T
984*758e9fbaSOystein Eftevaag \typedef RSRC_NODE_T
985*758e9fbaSOystein Eftevaag \enum _ESYS_STATE
986*758e9fbaSOystein Eftevaag \struct ESYS_CONTEXT
987*758e9fbaSOystein Eftevaag \def _ESYS_MAX_SUBMISSIONS
988*758e9fbaSOystein Eftevaag \def _ESYS_ASSERT_NON_NULL
989*758e9fbaSOystein Eftevaag \typedef IESYSC_RESOURCE_TYPE_CONSTANT
990*758e9fbaSOystein Eftevaag \def IESYSC_KEY_RSRC
991*758e9fbaSOystein Eftevaag \def IESYSC_NV_RSRC
992*758e9fbaSOystein Eftevaag \def IESYSC_SESSION_RSRC
993*758e9fbaSOystein Eftevaag \def IESYSC_WITHOUT_MISC_RSRC
994*758e9fbaSOystein Eftevaag \typedef IESYSC_PARAM_ENCRYPT
995*758e9fbaSOystein Eftevaag \def ENCRYPT
996*758e9fbaSOystein Eftevaag \def NO_ENCRYPT
997*758e9fbaSOystein Eftevaag \typedef IESYSC_PARAM_DECRYPT
998*758e9fbaSOystein Eftevaag \def DECRYPT
999*758e9fbaSOystein Eftevaag \def NO_DECRYPT
1000*758e9fbaSOystein Eftevaag \typedef IESYSC_TYPE_POLICY_AUTH
1001*758e9fbaSOystein Eftevaag \def POLICY_PASSWORD
1002*758e9fbaSOystein Eftevaag \def POLICY_AUTH
1003*758e9fbaSOystein Eftevaag \def NO_POLICY_AUTH
1004*758e9fbaSOystein Eftevaag \struct IESYS_SESSION
1005*758e9fbaSOystein Eftevaag \typedef IESYSC_RESOURCE_TYPE
1006*758e9fbaSOystein Eftevaag \union IESYS_RSRC_UNION
1007*758e9fbaSOystein Eftevaag \struct IESYS_RESOURCE
1008*758e9fbaSOystein Eftevaag \struct IESYS_METADATA
1009*758e9fbaSOystein Eftevaag \struct IESYS_CONTEXT_DATA
1010*758e9fbaSOystein Eftevaag \}
1011*758e9fbaSOystein Eftevaag*/
1012*758e9fbaSOystein Eftevaag
1013*758e9fbaSOystein Eftevaag/*!
1014*758e9fbaSOystein Eftevaag \defgroup iesys_crypto Internal Cryptographic Backend
1015*758e9fbaSOystein Eftevaag \ingroup iesys
1016*758e9fbaSOystein Eftevaag The types and functions used internally by ESAPI for cryptographic operations.
1017*758e9fbaSOystein Eftevaag Multiple implementations of these functions may exist for different
1018*758e9fbaSOystein Eftevaag cryptographic backends.
1019*758e9fbaSOystein Eftevaag \{
1020*758e9fbaSOystein Eftevaag \def IESYS_CRYPTO_CONTEXT_BLOB
1021*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_crypto_hash_get_digest_size(TPM2_ALG_ID hashAlg, size_t *size)
1022*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hash_start( IESYS_CRYPTO_CONTEXT_BLOB **context, TPM2_ALG_ID hashAlg)
1023*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hash_update( IESYS_CRYPTO_CONTEXT_BLOB *context, const uint8_t *buffer, size_t size)
1024*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hash_update2b( IESYS_CRYPTO_CONTEXT_BLOB *context, TPM2B *b)
1025*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hash_finish( IESYS_CRYPTO_CONTEXT_BLOB **context, uint8_t *buffer, size_t *size)
1026*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hash_finish2b( IESYS_CRYPTO_CONTEXT_BLOB **context, TPM2B *b)
1027*758e9fbaSOystein Eftevaag void iesys_cryptogcry_hash_abort(IESYS_CRYPTO_CONTEXT_BLOB **context)
1028*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hmac_start( IESYS_CRYPTO_CONTEXT_BLOB **context, TPM2_ALG_ID hmacAlg, const uint8_t *key, size_t size)
1029*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hmac_start2b( IESYS_CRYPTO_CONTEXT_BLOB **context, TPM2_ALG_ID hmacAlg, TPM2B *b)
1030*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hmac_update( IESYS_CRYPTO_CONTEXT_BLOB *context, const uint8_t *buffer, size_t size)
1031*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hmac_update2b( IESYS_CRYPTO_CONTEXT_BLOB *context, TPM2B *b)
1032*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hmac_finish( IESYS_CRYPTO_CONTEXT_BLOB **context, uint8_t *buffer, size_t *size)
1033*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_hmac_finish2b( IESYS_CRYPTO_CONTEXT_BLOB **context, TPM2B *b)
1034*758e9fbaSOystein Eftevaag \fn void iesys_cryptogcry_hmac_abort(IESYS_CRYPTO_CONTEXT_BLOB **context)
1035*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_crypto_pHash( TPM2_ALG_ID alg, const uint8_t rcBuffer[4], const uint8_t ccBuffer[4], const TPM2B_NAME *name1, const TPM2B_NAME *name2, const TPM2B_NAME *name3, const uint8_t *pBuffer, size_t pBuffer_size, uint8_t *pHash, size_t *pHash_size)
1036*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_crypto_authHmac( TPM2_ALG_ID alg, uint8_t *hmacKey, size_t hmacKeySize, const uint8_t *pHash, size_t pHash_size, const TPM2B_NONCE *nonceNewer, const TPM2B_NONCE *nonceOlder, const TPM2B_NONCE *nonceDecrypt, const TPM2B_NONCE *nonceEncrypt, TPMA_SESSION sessionAttributes, TPM2B_AUTH *hmac)
1037*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_random2b(TPM2B_NONCE *nonce, size_t num_bytes)
1038*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_pk_encrypt( TPM2B_PUBLIC *key, size_t in_size, BYTE *in_buffer, size_t max_out_size, BYTE *out_buffer, size_t *out_size, const char *label)
1039*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_crypto_KDFaHmac( TPM2_ALG_ID alg, uint8_t *hmacKey, size_t hmacKeySize, uint32_t counter, const char *label, TPM2B_NONCE *contextU, TPM2B_NONCE *contextV, uint32_t bitlength, uint8_t *hmac, size_t *hmacSize)
1040*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_crypto_KDFa( TPM2_ALG_ID hashAlg, uint8_t *hmacKey, size_t hmacKeySize, const char *label, TPM2B_NONCE *contextU, TPM2B_NONCE *contextV, uint32_t bitLength, uint32_t *counterInOut, BYTE *outKey, BOOL use_digest_size)
1041*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_crypto_KDFe( TPM2_ALG_ID hashAlg, TPM2B_ECC_PARAMETER *Z, const char *label, TPM2B_ECC_PARAMETER *partyUInfo, TPM2B_ECC_PARAMETER *partyVInfo, UINT32 bit_size, BYTE *key)
1042*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_sym_aes_encrypt( uint8_t *key, TPM2_ALG_ID tpm_sym_alg, TPMI_AES_KEY_BITS key_bits, TPM2_ALG_ID tpm_mode, size_t blk_len, uint8_t *dst, size_t dst_size, uint8_t *iv)
1043*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_sym_aes_decrypt( uint8_t *key, TPM2_ALG_ID tpm_sym_alg, TPMI_AES_KEY_BITS key_bits, TPM2_ALG_ID tpm_mode, size_t blk_len, uint8_t *dst, size_t dst_size, uint8_t *iv)
1044*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_xor_parameter_obfuscation( TPM2_ALG_ID hash_alg, uint8_t *key, size_t key_size, TPM2B_NONCE * contextU, TPM2B_NONCE * contextV, BYTE *data, size_t data_size)
1045*758e9fbaSOystein Eftevaag \fn TSS2_RC iesys_cryptogcry_get_ecdh_point( TPM2B_PUBLIC * key, size_t max_out_size, TPM2B_ECC_PARAMETER *Z, TPMS_ECC_POINT *Q, BYTE * out_buffer, size_t * out_size)
1046*758e9fbaSOystein Eftevaag  \}
1047*758e9fbaSOystein Eftevaag*/
1048*758e9fbaSOystein Eftevaag
1049*758e9fbaSOystein Eftevaag/*!
1050*758e9fbaSOystein Eftevaag \defgroup iesys_util Internal ESAPI utility functions.
1051*758e9fbaSOystein Eftevaag \ingroup iesys
1052*758e9fbaSOystein Eftevaag \todo Description and Documentat of functions
1053*758e9fbaSOystein Eftevaag \{
1054*758e9fbaSOystein Eftevaag \struct HASH_TAB_ITEM
1055*758e9fbaSOystein Eftevaag \}
1056*758e9fbaSOystein Eftevaag*/
1057*758e9fbaSOystein Eftevaag
1058*758e9fbaSOystein Eftevaag/*!
1059*758e9fbaSOystein Eftevaag \defgroup Testgroup Testing
1060*758e9fbaSOystein Eftevaag Description of the test plan.
1061*758e9fbaSOystein Eftevaag*/
1062*758e9fbaSOystein Eftevaag
1063*758e9fbaSOystein Eftevaag/*!
1064*758e9fbaSOystein Eftevaag \defgroup EsysTestgroup Esys-Testing
1065*758e9fbaSOystein Eftevaag \ingroup Testgroup
1066*758e9fbaSOystein Eftevaag \{
1067*758e9fbaSOystein Eftevaag @brief \{
1068*758e9fbaSOystein Eftevaag For every integration test a function with a name corresponding to the name of the source code
1069*758e9fbaSOystein Eftevaagfile of the test is created:
1070*758e9fbaSOystein Eftevaagtest_esys_<test_name>(ESYS_CONTEXT * esys_context).
1071*758e9fbaSOystein EftevaagThis function is called by the standard function test_invoke_esapi in every integration test.
1072*758e9fbaSOystein Eftevaag
1073*758e9fbaSOystein EftevaagFor some tests different test cases can be created with compiler defines to avoid duplicate
1074*758e9fbaSOystein Eftevaagcode in different test cases.The following defines are used and listed in the function's
1075*758e9fbaSOystein Eftevaagdocumentation if used:
1076*758e9fbaSOystein Eftevaag- TEST_ECC Create an ECC key instead of an RSA key.
1077*758e9fbaSOystein Eftevaag- TEST_SESSION Use session authentication instead of password authentication.
1078*758e9fbaSOystein Eftevaag- TEST_READ_LOCK Activate test of Esys_NV_ReadLock.
1079*758e9fbaSOystein Eftevaag- TEST_WRITE_LOCK Activate test of Esys_NV_WriteLock.
1080*758e9fbaSOystein Eftevaag- TEST_XOR_OBFUSCATION Use xor obfuscation for parameter encryption.
1081*758e9fbaSOystein Eftevaag- TEST_AES_ENCRYPTION Use AES for parameter encryption.
1082*758e9fbaSOystein Eftevaag- TEST_BOUND_SESSION Run test with a bound session.
1083*758e9fbaSOystein Eftevaag
1084*758e9fbaSOystein EftevaagThe ESAPI command calls which are used in a test are listed in the function's documentation
1085*758e9fbaSOystein Eftevaagand are marked according to the PC Client Profile Revision 01.03 v22:
1086*758e9fbaSOystein Eftevaag- (M) Mandatory
1087*758e9fbaSOystein Eftevaag- (O) Optional
1088*758e9fbaSOystein Eftevaag- (F) Commands added after TPM Specification Rev. 1.16 is integrated.
1089*758e9fbaSOystein Eftevaag\}
1090*758e9fbaSOystein Eftevaag\{
1091*758e9fbaSOystein Eftevaag\fn test_esys_evict_control_serialization(ESYS_CONTEXT * esys_context)
1092*758e9fbaSOystein Eftevaag \fn test_esys_lock(ESYS_CONTEXT * esys_context)
1093*758e9fbaSOystein Eftevaag \fn test_esys_get_capability(ESYS_CONTEXT * esys_context)
1094*758e9fbaSOystein Eftevaag \fn test_esys_zgen_2phase(ESYS_CONTEXT * esys_context)
1095*758e9fbaSOystein Eftevaag \fn test_esys_verify_signature(ESYS_CONTEXT * esys_context)
1096*758e9fbaSOystein Eftevaag \fn test_esys_import(ESYS_CONTEXT * esys_context)
1097*758e9fbaSOystein Eftevaag \fn test_esys_policy_regression(ESYS_CONTEXT * esys_context)
1098*758e9fbaSOystein Eftevaag \fn test_esys_policy_authorize_nv_opt(ESYS_CONTEXT * esys_context)
1099*758e9fbaSOystein Eftevaag \fn test_esys_policy_physical_presence_opt(ESYS_CONTEXT * esys_context)
1100*758e9fbaSOystein Eftevaag \fn test_esys_policy_template_opt(ESYS_CONTEXT * esys_context)
1101*758e9fbaSOystein Eftevaag \fn test_esys_policy_ticket(ESYS_CONTEXT * esys_context)
1102*758e9fbaSOystein Eftevaag \fn test_esys_change_eps(ESYS_CONTEXT * esys_context)
1103*758e9fbaSOystein Eftevaag \fn test_esys_policy_nv_undefine_special(ESYS_CONTEXT * esys_context)
1104*758e9fbaSOystein Eftevaag \fn test_esys_create_fail(ESYS_CONTEXT * esys_context)
1105*758e9fbaSOystein Eftevaag \fn test_esys_testparms(ESYS_CONTEXT * esys_context)
1106*758e9fbaSOystein Eftevaag \fn test_esys_create_password_auth(ESYS_CONTEXT * esys_context)
1107*758e9fbaSOystein Eftevaag \fn test_esys_stir_random(ESYS_CONTEXT * esys_context)
1108*758e9fbaSOystein Eftevaag \fn test_esys_clockset(ESYS_CONTEXT * esys_context)
1109*758e9fbaSOystein Eftevaag \fn test_esys_clear_control(ESYS_CONTEXT * esys_context)
1110*758e9fbaSOystein Eftevaag \fn test_esys_nv_ram_extend_index(ESYS_CONTEXT * esys_context)
1111*758e9fbaSOystein Eftevaag \fn test_esys_save_and_load_context(ESYS_CONTEXT * esys_context)
1112*758e9fbaSOystein Eftevaag \fn test_esys_encrypt_decrypt(ESYS_CONTEXT * esys_context)
1113*758e9fbaSOystein Eftevaag \fn test_esys_createloaded(ESYS_CONTEXT * esys_context)
1114*758e9fbaSOystein Eftevaag \fn test_esys_audit(ESYS_CONTEXT * esys_context)
1115*758e9fbaSOystein Eftevaag \fn test_esys_policy_password(ESYS_CONTEXT * esys_context)
1116*758e9fbaSOystein Eftevaag \fn test_esys_hierarchy_control(ESYS_CONTEXT * esys_context)
1117*758e9fbaSOystein Eftevaag \fn test_esys_tpm_tests(ESYS_CONTEXT * esys_context)
1118*758e9fbaSOystein Eftevaag \fn test_esys_certify(ESYS_CONTEXT * esys_context)
1119*758e9fbaSOystein Eftevaag \fn test_esys_pcr_basic(ESYS_CONTEXT * esys_context)
1120*758e9fbaSOystein Eftevaag \fn test_esys_quote(ESYS_CONTEXT * esys_context)
1121*758e9fbaSOystein Eftevaag \fn test_esys_tr_getName_hierarchy(ESYS_CONTEXT * ectx)
1122*758e9fbaSOystein Eftevaag \fn test_esys_field_upgrade(ESYS_CONTEXT * esys_context)
1123*758e9fbaSOystein Eftevaag \fn test_esys_unseal_password_auth(ESYS_CONTEXT * esys_context)
1124*758e9fbaSOystein Eftevaag \fn test_esys_nv_ram_set_bits(ESYS_CONTEXT * esys_context)
1125*758e9fbaSOystein Eftevaag \fn test_esys_nv_certify(ESYS_CONTEXT * esys_context)
1126*758e9fbaSOystein Eftevaag \fn test_esys_ecdh_keygen(ESYS_CONTEXT * esys_context)
1127*758e9fbaSOystein Eftevaag \fn test_esys_tr_fromTpmPublic_key(ESYS_CONTEXT * ectx)
1128*758e9fbaSOystein Eftevaag \fn test_esys_ecdh_zgen(ESYS_CONTEXT * esys_context)
1129*758e9fbaSOystein Eftevaag \fn test_esys_certify_creation(ESYS_CONTEXT * esys_context)
1130*758e9fbaSOystein Eftevaag \fn test_esys_nv_ram_counter(ESYS_CONTEXT * esys_context)
1131*758e9fbaSOystein Eftevaag \fn test_esys_event_sequence_complete(ESYS_CONTEXT * esys_context)
1132*758e9fbaSOystein Eftevaag \fn test_esys_create_session_auth(ESYS_CONTEXT * esys_context)
1133*758e9fbaSOystein Eftevaag \fn test_esys_tr_fromTpmPublic_nv(ESYS_CONTEXT * ectx)
1134*758e9fbaSOystein Eftevaag \fn test_esys_create_primary_hmac(ESYS_CONTEXT * esys_context)
1135*758e9fbaSOystein Eftevaag \fn test_esys_firmware_read(ESYS_CONTEXT * esys_context)
1136*758e9fbaSOystein Eftevaag \fn test_esys_hmacsequencestart(ESYS_CONTEXT * esys_context)
1137*758e9fbaSOystein Eftevaag \fn test_esys_hmac(ESYS_CONTEXT * esys_context)
1138*758e9fbaSOystein Eftevaag \fn test_esys_ecc_parameters(ESYS_CONTEXT * esys_context)
1139*758e9fbaSOystein Eftevaag \fn test_esys_hierarchychangeauth(ESYS_CONTEXT * esys_context)
1140*758e9fbaSOystein Eftevaag \fn test_esys_pcr_auth_value(ESYS_CONTEXT * esys_context)
1141*758e9fbaSOystein Eftevaag \fn test_esys_nv_ram_ordinary_index(ESYS_CONTEXT * esys_context)
1142*758e9fbaSOystein Eftevaag \fn test_esys_duplicate(ESYS_CONTEXT * esys_context)
1143*758e9fbaSOystein Eftevaag \fn test_esys_rsa_encrypt_decrypt(ESYS_CONTEXT * esys_context)
1144*758e9fbaSOystein Eftevaag \fn test_esys_set_algorithm_set(ESYS_CONTEXT * esys_context)
1145*758e9fbaSOystein Eftevaag \fn test_esys_object_changeauth(ESYS_CONTEXT * esys_context)
1146*758e9fbaSOystein Eftevaag \fn test_esys_pp_commands(ESYS_CONTEXT * esys_context)
1147*758e9fbaSOystein Eftevaag \fn test_esys_hash(ESYS_CONTEXT * esys_context)
1148*758e9fbaSOystein Eftevaag \fn test_esys_hashsequencestart(ESYS_CONTEXT * esys_context)
1149*758e9fbaSOystein Eftevaag \fn test_esys_clear(ESYS_CONTEXT * esys_context)
1150*758e9fbaSOystein Eftevaag \fn test_esys_policy_authorize(ESYS_CONTEXT * esys_context)
1151*758e9fbaSOystein Eftevaag \fn test_esys_get_time(ESYS_CONTEXT * esys_context)
1152*758e9fbaSOystein Eftevaag \fn test_esys_make_credential(ESYS_CONTEXT * esys_context)
1153*758e9fbaSOystein Eftevaag \fn test_esys_commit(ESYS_CONTEXT * esys_context)
1154*758e9fbaSOystein Eftevaag \fn test_esys_policy_nv_changeauth(ESYS_CONTEXT * esys_context)
1155*758e9fbaSOystein Eftevaag \}
1156*758e9fbaSOystein Eftevaag \}
1157*758e9fbaSOystein Eftevaag*/
1158*758e9fbaSOystein Eftevaag
1159*758e9fbaSOystein Eftevaag/*!
1160*758e9fbaSOystein Eftevaag \defgroup fapi Feature API
1161*758e9fbaSOystein Eftevaag Feature API (FAPI) as described in the [TSS 2.0 Feature API (FAPI) Specification](https://trustedcomputinggroup.org/wp-content/uploads/todo.pdf).
1162*758e9fbaSOystein Eftevaag This API provides a very abstract view on TPM functionalities most suitable for 80 percent of applications. In mostly uses standard types in its parameter list. Policies are encoded in JSON, whereas most key material is encoded as PEM.
1163*758e9fbaSOystein Eftevaag Both the synchronous and asynchronous API are exposed through a single library: libtss2-fapi.
1164*758e9fbaSOystein Eftevaag In order to perform an asynchronous invocation of FAPI functions, the following code serves as a template:
1165*758e9fbaSOystein Eftevaag do { r = Fapi_GetPollHandles(fc, &ph, &nph);
1166*758e9fbaSOystein Eftevaag      if (r == TSS2_RC_SUCCESS) { poll(ph, nph, -1); Fapi_Free(ph); }
1167*758e9fbaSOystein Eftevaag      r = Fapi_*_Finish(fc, ...); } while (r == TSS2_FAPI_RC_TRY_AGAIN);
1168*758e9fbaSOystein Eftevaag \{
1169*758e9fbaSOystein Eftevaag \typedef FAPI_CONTEXT
1170*758e9fbaSOystein Eftevaag Reference to the FAPI_CONTEXT that holds data for the connection to the TPM as
1171*758e9fbaSOystein Eftevaag well as the metadata for TPM Resource as well as links to the key- and policy
1172*758e9fbaSOystein Eftevaag store or key material for encrypted sessions.
1173*758e9fbaSOystein Eftevaag \defgroup Fapi_Initialize Fapi_Initialize
1174*758e9fbaSOystein Eftevaag FAPI functions to invoke Initialize either as one-call or in an asynchronous manner.
1175*758e9fbaSOystein Eftevaag \{
1176*758e9fbaSOystein Eftevaag \fn Fapi_Initialize(FAPI_CONTEXT **context, char const *uri)
1177*758e9fbaSOystein Eftevaag \fn Fapi_Initialize_Async(FAPI_CONTEXT **context, char const *uri)
1178*758e9fbaSOystein Eftevaag \fn Fapi_Initialize_Finish(FAPI_CONTEXT **context)
1179*758e9fbaSOystein Eftevaag \}
1180*758e9fbaSOystein Eftevaag \defgroup Fapi_Finalize Fapi_Finalize
1181*758e9fbaSOystein Eftevaag FAPI function to invoke Finalize.
1182*758e9fbaSOystein Eftevaag \{
1183*758e9fbaSOystein Eftevaag \fn Fapi_Finalize(FAPI_CONTEXT **context)
1184*758e9fbaSOystein Eftevaag \}
1185*758e9fbaSOystein Eftevaag \defgroup Fapi_GetTcti Fapi_GetTcti
1186*758e9fbaSOystein Eftevaag FAPI function to retrieve the TSS2_TCTI_CONTEXT currently used by the corresponding FAPI_CONTEXT.
1187*758e9fbaSOystein Eftevaag \{
1188*758e9fbaSOystein Eftevaag \fn Fapi_GetTcti(FAPI_CONTEXT *context, TSS2_TCTI_CONTEXT **tcti)
1189*758e9fbaSOystein Eftevaag \}
1190*758e9fbaSOystein Eftevaag \defgroup Fapi_GetPollHandles Fapi_GetPollHandles
1191*758e9fbaSOystein Eftevaag FAPI function to retrieve the poll handles currently used by the corresponding FAPI_CONTEXT.
1192*758e9fbaSOystein Eftevaag \{
1193*758e9fbaSOystein Eftevaag \fn Fapi_GetPollHandles(FAPI_CONTEXT *context, FAPI_POLL_HANDLE **handles, size_t *num_handles)
1194*758e9fbaSOystein Eftevaag \}
1195*758e9fbaSOystein Eftevaag \defgroup Fapi_Free Fapi_Free
1196*758e9fbaSOystein Eftevaag FAPI function to invoke Free.
1197*758e9fbaSOystein Eftevaag \{
1198*758e9fbaSOystein Eftevaag \fn Fapi_Free(void *ptr)
1199*758e9fbaSOystein Eftevaag \}
1200*758e9fbaSOystein Eftevaag \defgroup Fapi_GetInfo Fapi_GetInfo
1201*758e9fbaSOystein Eftevaag FAPI functions to invoke GetInfo either as one-call or in an asynchronous manner.
1202*758e9fbaSOystein Eftevaag \{
1203*758e9fbaSOystein Eftevaag \fn Fapi_GetInfo(FAPI_CONTEXT *context, char **info)
1204*758e9fbaSOystein Eftevaag \fn Fapi_GetInfo_Async(FAPI_CONTEXT *context)
1205*758e9fbaSOystein Eftevaag \fn Fapi_GetInfo_Finish(FAPI_CONTEXT *context, char **info)
1206*758e9fbaSOystein Eftevaag \}
1207*758e9fbaSOystein Eftevaag \defgroup Fapi_Provision Fapi_Provision
1208*758e9fbaSOystein Eftevaag FAPI functions to invoke Provision either as one-call or in an asynchronous manner.
1209*758e9fbaSOystein Eftevaag \{
1210*758e9fbaSOystein Eftevaag \fn Fapi_Provision(FAPI_CONTEXT *context, char const *authValueEh, char const *authValueSh, char const *authValueLockout)
1211*758e9fbaSOystein Eftevaag \fn Fapi_Provision_Async(FAPI_CONTEXT *context, char const *authValueEh, char const *authValueSh, char const *authValueLockout)
1212*758e9fbaSOystein Eftevaag \fn Fapi_Provision_Finish(FAPI_CONTEXT *context)
1213*758e9fbaSOystein Eftevaag \}
1214*758e9fbaSOystein Eftevaag \defgroup Fapi_GetPlatformCertificates Fapi_GetPlatformCertificates
1215*758e9fbaSOystein Eftevaag FAPI functions to invoke GetPlatformCertificates either as one-call or in an asynchronous manner.
1216*758e9fbaSOystein Eftevaag \{
1217*758e9fbaSOystein Eftevaag \fn Fapi_GetPlatformCertificates(FAPI_CONTEXT *context, uint8_t **certificates, size_t *certificatesSize)
1218*758e9fbaSOystein Eftevaag \fn Fapi_GetPlatformCertificates_Async(FAPI_CONTEXT *context)
1219*758e9fbaSOystein Eftevaag \fn Fapi_GetPlatformCertificates_Finish(FAPI_CONTEXT *context, uint8_t **certificates, size_t *certificatesSize)
1220*758e9fbaSOystein Eftevaag \}
1221*758e9fbaSOystein Eftevaag \defgroup Fapi_GetRandom Fapi_GetRandom
1222*758e9fbaSOystein Eftevaag FAPI functions to invoke GetRandom either as one-call or in an asynchronous manner.
1223*758e9fbaSOystein Eftevaag \{
1224*758e9fbaSOystein Eftevaag \fn Fapi_GetRandom(FAPI_CONTEXT *context, size_t numBytes, uint8_t **data)
1225*758e9fbaSOystein Eftevaag \fn Fapi_GetRandom_Async(FAPI_CONTEXT *context, size_t numBytes)
1226*758e9fbaSOystein Eftevaag \fn Fapi_GetRandom_Finish(FAPI_CONTEXT *context, uint8_t **data)
1227*758e9fbaSOystein Eftevaag \}
1228*758e9fbaSOystein Eftevaag \defgroup Fapi_Import Fapi_Import
1229*758e9fbaSOystein Eftevaag FAPI functions to invoke Import either as one-call or in an asynchronous manner.
1230*758e9fbaSOystein Eftevaag \{
1231*758e9fbaSOystein Eftevaag \fn Fapi_Import(FAPI_CONTEXT *context, char const *path, char const *importData)
1232*758e9fbaSOystein Eftevaag \fn Fapi_Import_Async(FAPI_CONTEXT *context, char const *path, char const *importData)
1233*758e9fbaSOystein Eftevaag \fn Fapi_Import_Finish(FAPI_CONTEXT *context)
1234*758e9fbaSOystein Eftevaag \}
1235*758e9fbaSOystein Eftevaag \defgroup Fapi_List Fapi_List
1236*758e9fbaSOystein Eftevaag FAPI functions to invoke List either as one-call or in an asynchronous manner.
1237*758e9fbaSOystein Eftevaag \{
1238*758e9fbaSOystein Eftevaag \fn Fapi_List(FAPI_CONTEXT *context, char const *searchPath, char **pathList)
1239*758e9fbaSOystein Eftevaag \fn Fapi_List_Async(FAPI_CONTEXT *context, char const *searchPath)
1240*758e9fbaSOystein Eftevaag \fn Fapi_List_Finish(FAPI_CONTEXT *context, char **pathlist)
1241*758e9fbaSOystein Eftevaag \}
1242*758e9fbaSOystein Eftevaag \defgroup Fapi_Delete Fapi_Delete
1243*758e9fbaSOystein Eftevaag FAPI functions to invoke Delete either as one-call or in an asynchronous manner.
1244*758e9fbaSOystein Eftevaag \{
1245*758e9fbaSOystein Eftevaag \fn Fapi_Delete(FAPI_CONTEXT *context, char const *path)
1246*758e9fbaSOystein Eftevaag \fn Fapi_Delete_Async(FAPI_CONTEXT *context, char const *path)
1247*758e9fbaSOystein Eftevaag \fn Fapi_Delete_Finish(FAPI_CONTEXT *context)
1248*758e9fbaSOystein Eftevaag \}
1249*758e9fbaSOystein Eftevaag \defgroup Fapi_ChangeAuth Fapi_ChangeAuth
1250*758e9fbaSOystein Eftevaag FAPI functions to invoke ChangeAuth either as one-call or in an asynchronous manner.
1251*758e9fbaSOystein Eftevaag \{
1252*758e9fbaSOystein Eftevaag \fn Fapi_ChangeAuth(FAPI_CONTEXT *context, char const *entityPath, char const *authValue)
1253*758e9fbaSOystein Eftevaag \fn Fapi_ChangeAuth_Async(FAPI_CONTEXT *context, char const *entityPath, char const *authValue)
1254*758e9fbaSOystein Eftevaag \fn Fapi_ChangeAuth_Finish(FAPI_CONTEXT *context)
1255*758e9fbaSOystein Eftevaag \}
1256*758e9fbaSOystein Eftevaag \defgroup Fapi_SetDescription Fapi_SetDescription
1257*758e9fbaSOystein Eftevaag FAPI functions to invoke SetDescription either as one-call or in an asynchronous manner.
1258*758e9fbaSOystein Eftevaag \{
1259*758e9fbaSOystein Eftevaag \fn Fapi_SetDescription(FAPI_CONTEXT *context, char const *path, char const *description)
1260*758e9fbaSOystein Eftevaag \fn Fapi_SetDescription_Async(FAPI_CONTEXT *context, char const *path, char const *description)
1261*758e9fbaSOystein Eftevaag \fn Fapi_SetDescription_Finish(FAPI_CONTEXT *context)
1262*758e9fbaSOystein Eftevaag \}
1263*758e9fbaSOystein Eftevaag \defgroup Fapi_GetDescription Fapi_GetDescription
1264*758e9fbaSOystein Eftevaag FAPI functions to invoke GetDescription either as one-call or in an asynchronous manner.
1265*758e9fbaSOystein Eftevaag \{
1266*758e9fbaSOystein Eftevaag \fn Fapi_GetDescription(FAPI_CONTEXT *context, char const *path, char **description)
1267*758e9fbaSOystein Eftevaag \fn Fapi_GetDescription_Async(FAPI_CONTEXT *context, char const *path)
1268*758e9fbaSOystein Eftevaag \fn Fapi_GetDescription_Finish(FAPI_CONTEXT *context, char **description)
1269*758e9fbaSOystein Eftevaag \}
1270*758e9fbaSOystein Eftevaag \defgroup Fapi_SetAppData Fapi_SetAppData
1271*758e9fbaSOystein Eftevaag FAPI functions to invoke SetAppData either as one-call or in an asynchronous manner.
1272*758e9fbaSOystein Eftevaag \{
1273*758e9fbaSOystein Eftevaag \fn Fapi_SetAppData(FAPI_CONTEXT *context, char const *path, uint8_t const *appData, size_t appDataSize)
1274*758e9fbaSOystein Eftevaag \fn Fapi_SetAppData_Async(FAPI_CONTEXT *context, char const *path, uint8_t const *appData, size_t appDataSize)
1275*758e9fbaSOystein Eftevaag \fn Fapi_SetAppData_Finish(FAPI_CONTEXT *context)
1276*758e9fbaSOystein Eftevaag \}
1277*758e9fbaSOystein Eftevaag \defgroup Fapi_GetAppData Fapi_GetAppData
1278*758e9fbaSOystein Eftevaag FAPI functions to invoke GetAppData either as one-call or in an asynchronous manner.
1279*758e9fbaSOystein Eftevaag \{
1280*758e9fbaSOystein Eftevaag \fn Fapi_GetAppData(FAPI_CONTEXT *context, char const *path, uint8_t **appData, size_t *appDataSize)
1281*758e9fbaSOystein Eftevaag \fn Fapi_GetAppData_Async(FAPI_CONTEXT *context, char const *path)
1282*758e9fbaSOystein Eftevaag \fn Fapi_GetAppData_Finish(FAPI_CONTEXT *context, uint8_t **appData, size_t *appDataSize)
1283*758e9fbaSOystein Eftevaag \}
1284*758e9fbaSOystein Eftevaag \defgroup Fapi_GetTpmBlobs Fapi_GetTpmBlobs
1285*758e9fbaSOystein Eftevaag FAPI functions to invoke GetTPMBlobs either as one-call or in an asynchronous manner.
1286*758e9fbaSOystein Eftevaag \{
1287*758e9fbaSOystein Eftevaag \fn Fapi_GetTpmBlobs(FAPI_CONTEXT *context, char const *path, uint8_t **tpm2bPublic, size_t *tpm2bPublicSize, uint8_t **tpm2bPrivate, size_t *tpm2bPrivateSize, char **policy)
1288*758e9fbaSOystein Eftevaag \fn Fapi_GetTpmBlobs_Async(FAPI_CONTEXT *context, char const *path)
1289*758e9fbaSOystein Eftevaag \fn Fapi_GetTpmBlobs_Finish(FAPI_CONTEXT *context, uint8_t **tpm2bPublic, size_t *tpm2bPublicSize, uint8_t **tpm2bPrivate, size_t *tpm2bPrivateSize, char **policy)
1290*758e9fbaSOystein Eftevaag \}
1291*758e9fbaSOystein Eftevaag \defgroup Fapi_CreateKey Fapi_CreateKey
1292*758e9fbaSOystein Eftevaag FAPI functions to invoke CreateKey either as one-call or in an asynchronous manner.
1293*758e9fbaSOystein Eftevaag \{
1294*758e9fbaSOystein Eftevaag \fn Fapi_CreateKey(FAPI_CONTEXT *context, char const *path, char const *type, char const *policyPath, char const *authvalue)
1295*758e9fbaSOystein Eftevaag \fn Fapi_CreateKey_Async(FAPI_CONTEXT *context, char const *keyPath, char const *type, char const *policyPath, char const *authvalue)
1296*758e9fbaSOystein Eftevaag \fn Fapi_CreateKey_Finish(FAPI_CONTEXT *context)
1297*758e9fbaSOystein Eftevaag \}
1298*758e9fbaSOystein Eftevaag \defgroup Fapi_Sign Fapi_Sign
1299*758e9fbaSOystein Eftevaag FAPI functions to invoke Sign either as one-call or in an asynchronous manner.
1300*758e9fbaSOystein Eftevaag \{
1301*758e9fbaSOystein Eftevaag \fn Fapi_Sign(FAPI_CONTEXT *context, char const *keyPath, char const *padding, uint8_t const *digest, size_t digestSize, uint8_t **signature, size_t *signatureSize, char **publicKey, char **certificate)
1302*758e9fbaSOystein Eftevaag \fn Fapi_Sign_Async(FAPI_CONTEXT *context, char const *keyPath, char const *padding, uint8_t const *digest, size_t digestSize)
1303*758e9fbaSOystein Eftevaag \fn Fapi_Sign_Finish(FAPI_CONTEXT *context, uint8_t **signature, size_t *signatureSize, char **publicKey, char **certificate)
1304*758e9fbaSOystein Eftevaag \}
1305*758e9fbaSOystein Eftevaag \defgroup Fapi_VerifySignature Fapi_VerifySignature
1306*758e9fbaSOystein Eftevaag FAPI functions to invoke VerifySignature either as one-call or in an asynchronous manner.
1307*758e9fbaSOystein Eftevaag \{
1308*758e9fbaSOystein Eftevaag \fn Fapi_VerifySignature(FAPI_CONTEXT *context, char const *keyPath, uint8_t const *digest, size_t digestSize, uint8_t const *signature, size_t signatureSize)
1309*758e9fbaSOystein Eftevaag \fn Fapi_VerifySignature_Async(FAPI_CONTEXT *context, char const *keyPath, uint8_t const *digest, size_t digestSize, uint8_t const *signature, size_t signatureSize)
1310*758e9fbaSOystein Eftevaag \fn Fapi_VerifySignature_Finish(FAPI_CONTEXT *context)
1311*758e9fbaSOystein Eftevaag \}
1312*758e9fbaSOystein Eftevaag \defgroup Fapi_Encrypt Fapi_Encrypt
1313*758e9fbaSOystein Eftevaag FAPI functions to invoke Encrypt either as one-call or in an asynchronous manner.
1314*758e9fbaSOystein Eftevaag \{
1315*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_Encrypt(
1316*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1317*758e9fbaSOystein Eftevaag    char     const *keyPath,
1318*758e9fbaSOystein Eftevaag    uint8_t  const *plainText,
1319*758e9fbaSOystein Eftevaag    size_t          plainTextSize,
1320*758e9fbaSOystein Eftevaag    uint8_t       **cipherText,
1321*758e9fbaSOystein Eftevaag    size_t         *cipherTextSize)
1322*758e9fbaSOystein Eftevaag
1323*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_Encrypt_Async(
1324*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1325*758e9fbaSOystein Eftevaag    char     const *keyPath,
1326*758e9fbaSOystein Eftevaag    uint8_t  const *plainText,
1327*758e9fbaSOystein Eftevaag    size_t          plainTextSize)
1328*758e9fbaSOystein Eftevaag
1329*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_Encrypt_Finish(
1330*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1331*758e9fbaSOystein Eftevaag    uint8_t       **cipherText,
1332*758e9fbaSOystein Eftevaag    size_t         *cipherTextSize )
1333*758e9fbaSOystein Eftevaag
1334*758e9fbaSOystein Eftevaag \}
1335*758e9fbaSOystein Eftevaag \defgroup Fapi_Decrypt Fapi_Decrypt
1336*758e9fbaSOystein Eftevaag FAPI functions to invoke Decrypt either as one-call or in an asynchronous manner.
1337*758e9fbaSOystein Eftevaag \{
1338*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_Decrypt(
1339*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1340*758e9fbaSOystein Eftevaag    char     const *keyPath,
1341*758e9fbaSOystein Eftevaag    uint8_t  const *cipherText,
1342*758e9fbaSOystein Eftevaag    size_t          cipherTextSize,
1343*758e9fbaSOystein Eftevaag    uint8_t       **plainText,
1344*758e9fbaSOystein Eftevaag    size_t         *plainTextSize)
1345*758e9fbaSOystein Eftevaag
1346*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_Decrypt_Async(
1347*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1348*758e9fbaSOystein Eftevaag    char     const *keyPath,
1349*758e9fbaSOystein Eftevaag    uint8_t  const *cipherText,
1350*758e9fbaSOystein Eftevaag    size_t          cipherTextSize);
1351*758e9fbaSOystein Eftevaag
1352*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_Decrypt_Finish(
1353*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1354*758e9fbaSOystein Eftevaag    uint8_t       **plainText,
1355*758e9fbaSOystein Eftevaag    size_t         *plainTextSize)
1356*758e9fbaSOystein Eftevaag \}
1357*758e9fbaSOystein Eftevaag \defgroup Fapi_SetCertificate Fapi_SetCertificate
1358*758e9fbaSOystein Eftevaag FAPI functions to invoke SetCertificate either as one-call or in an asynchronous manner.
1359*758e9fbaSOystein Eftevaag \{
1360*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_SetCertificate(
1361*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1362*758e9fbaSOystein Eftevaag    char     const *path,
1363*758e9fbaSOystein Eftevaag    char     const *x509certData)
1364*758e9fbaSOystein Eftevaag
1365*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_SetCertificate_Async(
1366*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1367*758e9fbaSOystein Eftevaag    char     const *path,
1368*758e9fbaSOystein Eftevaag    char     const *x509certData)
1369*758e9fbaSOystein Eftevaag
1370*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_SetCertificate_Finish(
1371*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context)
1372*758e9fbaSOystein Eftevaag \}
1373*758e9fbaSOystein Eftevaag \defgroup Fapi_GetCertificate Fapi_GetCertificate
1374*758e9fbaSOystein Eftevaag FAPI functions to invoke GetCertificate either as one-call or in an asynchronous manner.
1375*758e9fbaSOystein Eftevaag \{
1376*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_GetCertificate(
1377*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1378*758e9fbaSOystein Eftevaag    char     const *path,
1379*758e9fbaSOystein Eftevaag    char          **x509certData)
1380*758e9fbaSOystein Eftevaag
1381*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_GetCertificate_Async(
1382*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1383*758e9fbaSOystein Eftevaag    char     const *path)
1384*758e9fbaSOystein Eftevaag
1385*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_GetCertificate_Finish(
1386*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1387*758e9fbaSOystein Eftevaag    char          **x509certData)
1388*758e9fbaSOystein Eftevaag \}
1389*758e9fbaSOystein Eftevaag \defgroup Fapi_ExportKey Fapi_ExportKey
1390*758e9fbaSOystein Eftevaag FAPI functions to invoke ExportKey either as one-call or in an asynchronous manner.
1391*758e9fbaSOystein Eftevaag \{
1392*758e9fbaSOystein Eftevaag \fn Fapi_ExportKey(FAPI_CONTEXT *context, char const *pathOfKeyToDuplicate, char const *pathToPublicKeyOfNewParent, char **exportedData)
1393*758e9fbaSOystein Eftevaag \fn Fapi_ExportKey_Async(FAPI_CONTEXT *context, char const *pathOfKeyToDuplicate, char const *pathToPublicKeyOfNewParent)
1394*758e9fbaSOystein Eftevaag \fn Fapi_ExportKey_Finish(FAPI_CONTEXT *context, char **exportedData)
1395*758e9fbaSOystein Eftevaag \}
1396*758e9fbaSOystein Eftevaag \defgroup Fapi_CreateSeal Fapi_CreateSeal
1397*758e9fbaSOystein Eftevaag FAPI functions to invoke CreateSeal either as one-call or in an asynchronous manner.
1398*758e9fbaSOystein Eftevaag \{
1399*758e9fbaSOystein Eftevaag \fn Fapi_CreateSeal(FAPI_CONTEXT *context, char const *path, char const *type, size_t size, char const *policyPath, char const *authValue, uint8_t const *data)
1400*758e9fbaSOystein Eftevaag \fn Fapi_CreateSeal_Async(FAPI_CONTEXT *context, char const *path, char const *type, size_t size, char const *policyPath, char const *authValue, uint8_t const *data)
1401*758e9fbaSOystein Eftevaag \fn Fapi_CreateSeal_Finish(FAPI_CONTEXT *context)
1402*758e9fbaSOystein Eftevaag \}
1403*758e9fbaSOystein Eftevaag \defgroup Fapi_Unseal Fapi_Unseal
1404*758e9fbaSOystein Eftevaag FAPI functions to invoke Unseal either as one-call or in an asynchronous manner.
1405*758e9fbaSOystein Eftevaag \{
1406*758e9fbaSOystein Eftevaag \fn Fapi_Unseal(FAPI_CONTEXT *context, char const *path, uint8_t **data, size_t *size)
1407*758e9fbaSOystein Eftevaag \fn Fapi_Unseal_Async(FAPI_CONTEXT *context, char const *path)
1408*758e9fbaSOystein Eftevaag \fn Fapi_Unseal_Finish(FAPI_CONTEXT *context, uint8_t **data, size_t *size)
1409*758e9fbaSOystein Eftevaag \}
1410*758e9fbaSOystein Eftevaag \defgroup Fapi_ExportPolicy Fapi_ExportPolicy
1411*758e9fbaSOystein Eftevaag FAPI functions to invoke ExportPolicy either as one-call or in an asynchronous manner.
1412*758e9fbaSOystein Eftevaag \{
1413*758e9fbaSOystein Eftevaag \fn Fapi_ExportPolicy(FAPI_CONTEXT *context, char const *path, char **jsonPolicy)
1414*758e9fbaSOystein Eftevaag \fn Fapi_ExportPolicy_Async(FAPI_CONTEXT *context, char const *path)
1415*758e9fbaSOystein Eftevaag \fn Fapi_ExportPolicy_Finish(FAPI_CONTEXT *context, char **jsonPolicy)
1416*758e9fbaSOystein Eftevaag \}
1417*758e9fbaSOystein Eftevaag \defgroup Fapi_AuthorizePolicy Fapi_AuthorizePolicy
1418*758e9fbaSOystein Eftevaag FAPI functions to invoke AuthorizePolicy either as one-call or in an asynchronous manner.
1419*758e9fbaSOystein Eftevaag \{
1420*758e9fbaSOystein Eftevaag \fn Fapi_AuthorizePolicy(FAPI_CONTEXT *context, char const *policyPath, char const *keyPath, uint8_t const *policyRef, size_t policyRefSize)
1421*758e9fbaSOystein Eftevaag \fn Fapi_AuthorizePolicy_Async(FAPI_CONTEXT *context, char const *policyPath, char const *keyPath, uint8_t const *policyRef, size_t policyRefSize)
1422*758e9fbaSOystein Eftevaag \fn Fapi_AuthorizePolicy_Finish(FAPI_CONTEXT *context)
1423*758e9fbaSOystein Eftevaag \}
1424*758e9fbaSOystein Eftevaag \defgroup Fapi_WriteAuthorizeNv Fapi_WriteAuthorizeNv
1425*758e9fbaSOystein Eftevaag FAPI functions to invoke WriteAuthorizeNv either as one-call or in an asynchronous manner.
1426*758e9fbaSOystein Eftevaag \{
1427*758e9fbaSOystein Eftevaag \fn Fapi_WriteAuthorizeNv(FAPI_CONTEXT *context, char const *nvPath, char const *policyPath)
1428*758e9fbaSOystein Eftevaag \fn Fapi_WriteAuthorizeNv_Async(FAPI_CONTEXT *context, char const *nvPath, char const *policyPath)
1429*758e9fbaSOystein Eftevaag \fn Fapi_WriteAuthorizeNv_Finish(FAPI_CONTEXT *context)
1430*758e9fbaSOystein Eftevaag \}
1431*758e9fbaSOystein Eftevaag \defgroup Fapi_PcrRead Fapi_PcrRead
1432*758e9fbaSOystein Eftevaag FAPI functions to invoke PcrRead either as one-call or in an asynchronous manner.
1433*758e9fbaSOystein Eftevaag \{
1434*758e9fbaSOystein Eftevaag \fn Fapi_PcrRead(FAPI_CONTEXT *context, uint32_t pcrIndex, uint8_t **pcrValue, size_t *pcrValueSize, char **pcrLog)
1435*758e9fbaSOystein Eftevaag \fn Fapi_PcrRead_Async(FAPI_CONTEXT *context, uint32_t pcrIndex)
1436*758e9fbaSOystein Eftevaag \fn Fapi_PcrRead_Finish(FAPI_CONTEXT *context, uint8_t **pcrValue, size_t *pcrValueSize, char **pcrLog)
1437*758e9fbaSOystein Eftevaag \}
1438*758e9fbaSOystein Eftevaag \defgroup Fapi_PcrExtend Fapi_PcrExtend
1439*758e9fbaSOystein Eftevaag FAPI functions to invoke PcrExtend either as one-call or in an asynchronous manner.
1440*758e9fbaSOystein Eftevaag \{
1441*758e9fbaSOystein Eftevaag \fn Fapi_PcrExtend(FAPI_CONTEXT *context, uint32_t pcr, uint8_t const *data, size_t dataSize, char const *logData)
1442*758e9fbaSOystein Eftevaag \fn Fapi_PcrExtend_Async(FAPI_CONTEXT *context, uint32_t pcr, uint8_t const *data, size_t dataSize, char const *logData)
1443*758e9fbaSOystein Eftevaag \fn Fapi_PcrExtend_Finish(FAPI_CONTEXT *context)
1444*758e9fbaSOystein Eftevaag \}
1445*758e9fbaSOystein Eftevaag \defgroup Fapi_Quote Fapi_Quote
1446*758e9fbaSOystein Eftevaag FAPI functions to invoke Quote either as one-call or in an asynchronous manner.
1447*758e9fbaSOystein Eftevaag \{
1448*758e9fbaSOystein Eftevaag \fn Fapi_Quote(FAPI_CONTEXT *context, uint32_t *pcrList, size_t pcrListSize, char const *keyPath, char const *quoteType, uint8_t const *qualifyingData, size_t qualifyingDataSize, char **quoteInfo, uint8_t **signature, size_t *signatureSize, char **pcrLog, char **certificate)
1449*758e9fbaSOystein Eftevaag \fn Fapi_Quote_Async(FAPI_CONTEXT *context, uint32_t *pcrList, size_t pcrListSize, char const *keyPath, char const *quoteType, uint8_t const *qualifyingData, size_t qualifyingDataSize)
1450*758e9fbaSOystein Eftevaag \fn Fapi_Quote_Finish(FAPI_CONTEXT *context, char **quoteInfo, uint8_t **signature, size_t *signatureSize, char **pcrLog, char **certificate)
1451*758e9fbaSOystein Eftevaag \}
1452*758e9fbaSOystein Eftevaag \defgroup Fapi_VerifyQuote Fapi_VerifyQuote
1453*758e9fbaSOystein Eftevaag FAPI functions to invoke VerifyQuote either as one-call or in an asynchronous manner.
1454*758e9fbaSOystein Eftevaag \{
1455*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_VerifyQuote(
1456*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1457*758e9fbaSOystein Eftevaag    char     const *publicKeyPath,
1458*758e9fbaSOystein Eftevaag    uint8_t  const *qualifyingData,
1459*758e9fbaSOystein Eftevaag    size_t          qualifyingDataSize,
1460*758e9fbaSOystein Eftevaag    char     const *quoteInfo,
1461*758e9fbaSOystein Eftevaag    uint8_t  const *signature,
1462*758e9fbaSOystein Eftevaag    size_t          signatureSize,
1463*758e9fbaSOystein Eftevaag    char     const *pcrLog)
1464*758e9fbaSOystein Eftevaag
1465*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_VerifyQuote_Async(
1466*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1467*758e9fbaSOystein Eftevaag    char     const *publicKeyPath,
1468*758e9fbaSOystein Eftevaag    uint8_t  const *qualifyingData,
1469*758e9fbaSOystein Eftevaag    size_t          qualifyingDataSize,
1470*758e9fbaSOystein Eftevaag    char     const *quoteInfo,
1471*758e9fbaSOystein Eftevaag    uint8_t  const *signature,
1472*758e9fbaSOystein Eftevaag    size_t          signatureSize,
1473*758e9fbaSOystein Eftevaag    char     const *pcrLog)
1474*758e9fbaSOystein Eftevaag
1475*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_VerifyQuote_Finish(
1476*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context)
1477*758e9fbaSOystein Eftevaag \}
1478*758e9fbaSOystein Eftevaag \defgroup Fapi_CreateNv Fapi_CreateNv
1479*758e9fbaSOystein Eftevaag FAPI functions to invoke CreateNv either as one-call or in an asynchronous manner.
1480*758e9fbaSOystein Eftevaag \{
1481*758e9fbaSOystein Eftevaag \fn Fapi_CreateNv(FAPI_CONTEXT *context, char const *path, char const *type, size_t size, char const *policyPath, char const *authValue)
1482*758e9fbaSOystein Eftevaag \fn Fapi_CreateNv_Async(FAPI_CONTEXT *context, char const *path, char const *type, size_t size, char const *policyPath, char const *authValue)
1483*758e9fbaSOystein Eftevaag \fn Fapi_CreateNv_Finish(FAPI_CONTEXT *context)
1484*758e9fbaSOystein Eftevaag \}
1485*758e9fbaSOystein Eftevaag \defgroup Fapi_NvRead Fapi_NvRead
1486*758e9fbaSOystein Eftevaag FAPI functions to invoke NvRead either as one-call or in an asynchronous manner.
1487*758e9fbaSOystein Eftevaag \{
1488*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_NvRead(
1489*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1490*758e9fbaSOystein Eftevaag    char     const *path,
1491*758e9fbaSOystein Eftevaag    uint8_t      **data,
1492*758e9fbaSOystein Eftevaag    size_t        *size,
1493*758e9fbaSOystein Eftevaag    char         **logData)
1494*758e9fbaSOystein Eftevaag
1495*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_NvRead_Async(
1496*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1497*758e9fbaSOystein Eftevaag    char     const *path)
1498*758e9fbaSOystein Eftevaag
1499*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_NvRead_Finish(
1500*758e9fbaSOystein Eftevaag    FAPI_CONTEXT   *context,
1501*758e9fbaSOystein Eftevaag    uint8_t       **data,
1502*758e9fbaSOystein Eftevaag    size_t         *size,
1503*758e9fbaSOystein Eftevaag    char          **logData)
1504*758e9fbaSOystein Eftevaag \}
1505*758e9fbaSOystein Eftevaag \defgroup Fapi_NvWrite Fapi_NvWrite
1506*758e9fbaSOystein Eftevaag FAPI functions to invoke NvWrite either as one-call or in an asynchronous manner.
1507*758e9fbaSOystein Eftevaag \{
1508*758e9fbaSOystein Eftevaag \fn Fapi_NvWrite(FAPI_CONTEXT *context, char const *path, uint8_t const *data, size_t size)
1509*758e9fbaSOystein Eftevaag \fn Fapi_NvWrite_Async(FAPI_CONTEXT *context, char const *path, uint8_t const *data, size_t size)
1510*758e9fbaSOystein Eftevaag \fn Fapi_NvWrite_Finish(FAPI_CONTEXT *context)
1511*758e9fbaSOystein Eftevaag \}
1512*758e9fbaSOystein Eftevaag \defgroup Fapi_NvExtend Fapi_NvExtend
1513*758e9fbaSOystein Eftevaag FAPI functions to invoke NvExtend either as one-call or in an asynchronous manner.
1514*758e9fbaSOystein Eftevaag \{
1515*758e9fbaSOystein Eftevaag \fn TSS2_RC Fapi_NvExtend(
1516*758e9fbaSOystein Eftevaag    FAPI_CONTEXT  *context,
1517*758e9fbaSOystein Eftevaag    char    const *path,
1518*758e9fbaSOystein Eftevaag    uint8_t const *data,
1519*758e9fbaSOystein Eftevaag    size_t         size,
1520*758e9fbaSOystein Eftevaag    char    const *logData);
1521*758e9fbaSOystein Eftevaag
1522*758e9fbaSOystein Eftevaag \fn TSS2_RC Fapi_NvExtend_Async(
1523*758e9fbaSOystein Eftevaag    FAPI_CONTEXT  *context,
1524*758e9fbaSOystein Eftevaag    char    const *path,
1525*758e9fbaSOystein Eftevaag    uint8_t const *data,
1526*758e9fbaSOystein Eftevaag    size_t         size,
1527*758e9fbaSOystein Eftevaag    char    const *logData);
1528*758e9fbaSOystein Eftevaag
1529*758e9fbaSOystein Eftevaag\fn TSS2_RC Fapi_NvExtend_Finish(
1530*758e9fbaSOystein Eftevaag    FAPI_CONTEXT  *context);
1531*758e9fbaSOystein Eftevaag \}
1532*758e9fbaSOystein Eftevaag \defgroup Fapi_NvIncrement Fapi_NvIncrement
1533*758e9fbaSOystein Eftevaag FAPI functions to invoke NvIncrement either as one-call or in an asynchronous manner.
1534*758e9fbaSOystein Eftevaag \{
1535*758e9fbaSOystein Eftevaag \fn Fapi_NvIncrement(FAPI_CONTEXT *context, char const *path)
1536*758e9fbaSOystein Eftevaag \fn Fapi_NvIncrement_Async(FAPI_CONTEXT *context, char const *path)
1537*758e9fbaSOystein Eftevaag \fn Fapi_NvIncrement_Finish(FAPI_CONTEXT *context)
1538*758e9fbaSOystein Eftevaag \}
1539*758e9fbaSOystein Eftevaag \defgroup Fapi_NvSetBits Fapi_NvSetBits
1540*758e9fbaSOystein Eftevaag FAPI functions to invoke NvSetBits either as one-call or in an asynchronous manner.
1541*758e9fbaSOystein Eftevaag \{
1542*758e9fbaSOystein Eftevaag \fn Fapi_NvSetBits(FAPI_CONTEXT *context, char const *path, uint64_t bitmap)
1543*758e9fbaSOystein Eftevaag \fn Fapi_NvSetBits_Async(FAPI_CONTEXT *context, char const *path, uint64_t bitmap)
1544*758e9fbaSOystein Eftevaag \fn Fapi_NvSetBits_Finish(FAPI_CONTEXT *context)
1545*758e9fbaSOystein Eftevaag \}
1546*758e9fbaSOystein Eftevaag \defgroup Fapi_SetAuthCB Fapi_SetAuthCB
1547*758e9fbaSOystein Eftevaag FAPI functions to invoke SetAuthCB.
1548*758e9fbaSOystein Eftevaag \{
1549*758e9fbaSOystein Eftevaag \fn Fapi_SetAuthCB(FAPI_CONTEXT *context, Fapi_CB_Auth callback,  void *userData)
1550*758e9fbaSOystein Eftevaag \typedef (*Fapi_CB_Auth)(FAPI_CONTEXT *context, char const *description, char **auth,  void *userData)
1551*758e9fbaSOystein Eftevaag \}
1552*758e9fbaSOystein Eftevaag \defgroup Fapi_SetBranchCB Fapi_SetBranchCB
1553*758e9fbaSOystein Eftevaag FAPI functions to invoke SetBranchCB.
1554*758e9fbaSOystein Eftevaag \{
1555*758e9fbaSOystein Eftevaag \fn Fapi_SetBranchCB(FAPI_CONTEXT *context, Fapi_CB_Branch callback,  void *userData)
1556*758e9fbaSOystein Eftevaag \typedef (*Fapi_CB_Branch)(FAPI_CONTEXT *context, char const *description, char const **branchNames, size_t numBranches, size_t *selectedBranch, void *userData)
1557*758e9fbaSOystein Eftevaag \}
1558*758e9fbaSOystein Eftevaag \defgroup Fapi_SetSignCB Fapi_SetSignCB
1559*758e9fbaSOystein Eftevaag FAPI functions to invoke SetSignCB.
1560*758e9fbaSOystein Eftevaag \{
1561*758e9fbaSOystein Eftevaag \fn Fapi_SetSignCB(FAPI_CONTEXT *context, Fapi_CB_Sign callback, void *userData)
1562*758e9fbaSOystein Eftevaag \typedef (*Fapi_CB_Sign)(FAPI_CONTEXT *context, char const *description, char const *publicKey, char const *publicKeyHint, uint32_t hashAlg, uint8_t const *dataToSign, size_t dataToSignSize, uint8_t **signature, size_t *signatureSize,  void *userData)
1563*758e9fbaSOystein Eftevaag \}
1564*758e9fbaSOystein Eftevaag \}
1565*758e9fbaSOystein Eftevaag*/
1566*758e9fbaSOystein Eftevaag
1567*758e9fbaSOystein Eftevaag/*!
1568*758e9fbaSOystein Eftevaag \defgroup ifapi Internals of Feature API
1569*758e9fbaSOystein Eftevaag \ingroup fapi
1570*758e9fbaSOystein Eftevaag This module holds internal APIs of the FAPI implementation.
1571*758e9fbaSOystein Eftevaag
1572*758e9fbaSOystein Eftevaag Async programming style:
1573*758e9fbaSOystein Eftevaag
1574*758e9fbaSOystein Eftevaag The tss2-fapi implementation uses an asynchronous programming style internally.
1575*758e9fbaSOystein Eftevaag This means that whenever a piece of code performs a potentially blocking operation
1576*758e9fbaSOystein Eftevaag it will instead return TSS2_FAPI_RC_TRY_AGAIN (similarly to ESAPI). Then this function
1577*758e9fbaSOystein Eftevaag is called again once the Poll returns ok.
1578*758e9fbaSOystein Eftevaag In order to carry the state of execution information over between the different invocation
1579*758e9fbaSOystein Eftevaag of the same function, the current state is stored in a state variable and all variables
1580*758e9fbaSOystein Eftevaag are stored in some kind of context variables.
1581*758e9fbaSOystein Eftevaag On the next entry to the function the state is evaluated using a swtich() statement and
1582*758e9fbaSOystein Eftevaag execution is resumed.
1583*758e9fbaSOystein Eftevaag
1584*758e9fbaSOystein Eftevaag In order to understand the functional flow of code in FAPI, one can read the functions
1585*758e9fbaSOystein Eftevaag continuously over all fallthrough; and statecase(); statements. The statecase
1586*758e9fbaSOystein Eftevaag statements are the re-entry points of each function. The return_try_again() and FAPI_SYNC()
1587*758e9fbaSOystein Eftevaag statements are the preempt statements.
1588*758e9fbaSOystein Eftevaag \{
1589*758e9fbaSOystein Eftevaag \}
1590*758e9fbaSOystein Eftevaag*/
1591*758e9fbaSOystein Eftevaag
1592*758e9fbaSOystein Eftevaag/*!
1593*758e9fbaSOystein Eftevaag \defgroup fapi_crypto Internal Cryptographic Backend
1594*758e9fbaSOystein Eftevaag \ingroup ifapi
1595*758e9fbaSOystein Eftevaag The types and functions used internally by FAPI for cryptographic operations.
1596*758e9fbaSOystein Eftevaag Multiple implementations of these functions for different
1597*758e9fbaSOystein Eftevaag cryptographic backends may exist.
1598*758e9fbaSOystein Eftevaag \{
1599*758e9fbaSOystein Eftevaag\fn static TSS2_RC ecdsa_verify_signature(
1600*758e9fbaSOystein Eftevaag    EVP_PKEY *publicKey,
1601*758e9fbaSOystein Eftevaag    const uint8_t *signature,
1602*758e9fbaSOystein Eftevaag    size_t signatureSize,
1603*758e9fbaSOystein Eftevaag    const uint8_t *digest,
1604*758e9fbaSOystein Eftevaag    size_t digestSize)
1605*758e9fbaSOystein Eftevaag\fn TSS2_RC get_crl_from_cert(X509 *cert, X509_CRL **crl)
1606*758e9fbaSOystein Eftevaag\fn static TSS2_RC get_ecc_tpm2b_public_from_evp(
1607*758e9fbaSOystein Eftevaag    EVP_PKEY *publicKey,
1608*758e9fbaSOystein Eftevaag    TPM2B_PUBLIC *tpmPublic)
1609*758e9fbaSOystein Eftevaag\fn static ENGINE * get_engine()
1610*758e9fbaSOystein Eftevaag\fn static const EVP_MD * get_hash_md(TPM2_ALG_ID hashAlgorithm)
1611*758e9fbaSOystein Eftevaag\fn static const EVP_MD * get_ossl_hash_md(TPM2_ALG_ID hashAlgorithm)
1612*758e9fbaSOystein Eftevaag\fn static TSS2_RC get_rsa_tpm2b_public_from_evp(
1613*758e9fbaSOystein Eftevaag    EVP_PKEY *publicKey,
1614*758e9fbaSOystein Eftevaag    TPM2B_PUBLIC *tpmPublic)
1615*758e9fbaSOystein Eftevaag\fn static int get_sig_scheme(TPM2_ALG_ID signatureScheme)
1616*758e9fbaSOystein Eftevaag\fn static int ifapi_bn2binpad(const BIGNUM *bn, unsigned char *bin, int binSize)
1617*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_cert_to_pem(
1618*758e9fbaSOystein Eftevaag    const uint8_t *certBuffer,
1619*758e9fbaSOystein Eftevaag    size_t certBufferSize,
1620*758e9fbaSOystein Eftevaag    char **pemCert,
1621*758e9fbaSOystein Eftevaag    TPM2_ALG_ID *certAlgorithmId,
1622*758e9fbaSOystein Eftevaag    TPM2B_PUBLIC *tpmPublic)
1623*758e9fbaSOystein Eftevaag\fn void ifapi_crypto_hash_abort(IFAPI_CRYPTO_CONTEXT_BLOB **context)
1624*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_crypto_hash_finish(IFAPI_CRYPTO_CONTEXT_BLOB **context,
1625*758e9fbaSOystein Eftevaag                         uint8_t *digest, size_t *digestSize)
1626*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_crypto_hash_start(IFAPI_CRYPTO_CONTEXT_BLOB **context,
1627*758e9fbaSOystein Eftevaag                        TPM2_ALG_ID hashAlgorithm)
1628*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_crypto_hash_update(IFAPI_CRYPTO_CONTEXT_BLOB *context,
1629*758e9fbaSOystein Eftevaag                         const uint8_t *buffer, size_t size)
1630*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_der_sig_to_tpm(
1631*758e9fbaSOystein Eftevaag    const TPMT_PUBLIC *tpmPublic,
1632*758e9fbaSOystein Eftevaag    const unsigned char *signature,
1633*758e9fbaSOystein Eftevaag    size_t signatureSize,
1634*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hashAlgorithm,
1635*758e9fbaSOystein Eftevaag    TPMT_SIGNATURE *tpmSignature)
1636*758e9fbaSOystein Eftevaag\fn static TSS2_RC ifapi_ecc_der_sig_to_tpm(
1637*758e9fbaSOystein Eftevaag    const unsigned char *signature,
1638*758e9fbaSOystein Eftevaag    size_t signatureSize,
1639*758e9fbaSOystein Eftevaag    int keySize,
1640*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hashAlgorithm,
1641*758e9fbaSOystein Eftevaag    TPMT_SIGNATURE *tpmSignature)
1642*758e9fbaSOystein Eftevaag\fn static TSS2_RC ifapi_get_evp_from_pem(const char *pemKey, EVP_PKEY **publicKey)
1643*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_hash_alg_for_size(uint16_t size, TPMI_ALG_HASH *hashAlgorithm)
1644*758e9fbaSOystein Eftevaag\fn TPM2_RC ifapi_get_profile_sig_scheme(
1645*758e9fbaSOystein Eftevaag    const IFAPI_PROFILE *profile,
1646*758e9fbaSOystein Eftevaag    const TPMT_PUBLIC *tpmPublic,
1647*758e9fbaSOystein Eftevaag    TPMT_SIG_SCHEME *signatureScheme)
1648*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_public_from_pem_cert(const char* pem_cert, TPM2B_PUBLIC *tpm_public)
1649*758e9fbaSOystein Eftevaag\fn TPM2_ALG_ID ifapi_get_signature_algorithm_from_pem(const char *pemKey)
1650*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_tpm2b_public_from_pem(
1651*758e9fbaSOystein Eftevaag    const char *pemKey,
1652*758e9fbaSOystein Eftevaag    TPM2B_PUBLIC *tpmPublic)
1653*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_tpm_key_fingerprint(
1654*758e9fbaSOystein Eftevaag    const TPM2B_PUBLIC *tpmPublicKey,
1655*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hashAlg,
1656*758e9fbaSOystein Eftevaag    TPM2B_DIGEST *fingerprint)
1657*758e9fbaSOystein Eftevaag\fn size_t ifapi_hash_get_digest_size(TPM2_ALG_ID hashAlgorithm)
1658*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_initialize_sign_public(TPM2_ALG_ID signatureAlgorithm,
1659*758e9fbaSOystein Eftevaag        TPM2B_PUBLIC *public)
1660*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_pub_pem_key_from_tpm(
1661*758e9fbaSOystein Eftevaag    const TPM2B_PUBLIC *tpmPublicKey,
1662*758e9fbaSOystein Eftevaag    char **pemKey,
1663*758e9fbaSOystein Eftevaag    int *pemKeySize)
1664*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_tpm_ecc_sig_to_der(
1665*758e9fbaSOystein Eftevaag    const TPMT_SIGNATURE *tpmSignature,
1666*758e9fbaSOystein Eftevaag    uint8_t **signature,
1667*758e9fbaSOystein Eftevaag    size_t *signatureSize)
1668*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_verify_ek_cert(
1669*758e9fbaSOystein Eftevaag    char* root_cert_pem,
1670*758e9fbaSOystein Eftevaag    char* intermed_cert_pem,
1671*758e9fbaSOystein Eftevaag    char* ek_cert_pem)
1672*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_verify_signature(
1673*758e9fbaSOystein Eftevaag    const IFAPI_OBJECT *keyObject,
1674*758e9fbaSOystein Eftevaag    const uint8_t *signature,
1675*758e9fbaSOystein Eftevaag    size_t signatureSize,
1676*758e9fbaSOystein Eftevaag    const uint8_t *digest,
1677*758e9fbaSOystein Eftevaag    size_t digestSize)
1678*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_verify_signature_quote(
1679*758e9fbaSOystein Eftevaag    const IFAPI_OBJECT *keyObject,
1680*758e9fbaSOystein Eftevaag    const uint8_t *signature,
1681*758e9fbaSOystein Eftevaag    size_t signatureSize,
1682*758e9fbaSOystein Eftevaag    const uint8_t *digest,
1683*758e9fbaSOystein Eftevaag    size_t digestSize,
1684*758e9fbaSOystein Eftevaag    const TPMT_SIG_SCHEME *signatureScheme)
1685*758e9fbaSOystein Eftevaag\fn static TSS2_RC ossl_ecc_pub_from_tpm(const TPM2B_PUBLIC *tpmPublicKey, EVP_PKEY *evpPublicKey)
1686*758e9fbaSOystein Eftevaag\fn static TSS2_RC ossl_rsa_pub_from_tpm(const TPM2B_PUBLIC *tpmPublicKey, EVP_PKEY *evpPublicKey)
1687*758e9fbaSOystein Eftevaag\fn static TSS2_RC rsa_verify_signature(
1688*758e9fbaSOystein Eftevaag    EVP_PKEY *publicKey,
1689*758e9fbaSOystein Eftevaag    const uint8_t *signature,
1690*758e9fbaSOystein Eftevaag    size_t signatureSize,
1691*758e9fbaSOystein Eftevaag    const uint8_t *digest,
1692*758e9fbaSOystein Eftevaag    size_t digestSize)
1693*758e9fbaSOystein Eftevaag\}
1694*758e9fbaSOystein Eftevaag*/
1695*758e9fbaSOystein Eftevaag
1696*758e9fbaSOystein Eftevaag/*!
1697*758e9fbaSOystein Eftevaag \defgroup ifapi_policy_intantiate Policy instantiation module
1698*758e9fbaSOystein Eftevaag \ingroup ifapi
1699*758e9fbaSOystein Eftevaag Provides functions for instantiation of the policies. The defaults will be initialized according to the given values.
1700*758e9fbaSOystein Eftevaag \{
1701*758e9fbaSOystein Eftevaag\fn static TSS2_RC get_policy_elements(TPML_POLICYELEMENTS *policy, NODE_OBJECT_T **policy_element_list)
1702*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policyeval_instantiate_async(
1703*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EVAL_INST_CTX *context,
1704*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy,
1705*758e9fbaSOystein Eftevaag    ifapi_policyeval_INST_CB *callbacks)
1706*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policyeval_instantiate_finish(
1707*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EVAL_INST_CTX *context)
1708*758e9fbaSOystein Eftevaag \}
1709*758e9fbaSOystein Eftevaag*/
1710*758e9fbaSOystein Eftevaag
1711*758e9fbaSOystein Eftevaag /*!
1712*758e9fbaSOystein Eftevaag \defgroup ifapi_policy Policy calculation module
1713*758e9fbaSOystein Eftevaag \ingroup ifapi
1714*758e9fbaSOystein Eftevaag Provides functions for policy calculation (without TPM).
1715*758e9fbaSOystein Eftevaag \{
1716*758e9fbaSOystein Eftevaag
1717*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_tree(
1718*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
1719*758e9fbaSOystein Eftevaag    const char *policyPath,
1720*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy,
1721*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
1722*758e9fbaSOystein Eftevaag    size_t *digest_idx,
1723*758e9fbaSOystein Eftevaag    size_t *hash_size)
1724*758e9fbaSOystein Eftevaag
1725*758e9fbaSOystein Eftevaag\fn static TSS2_RC calculate_policy_key_param(
1726*758e9fbaSOystein Eftevaag    TPM2_CC command_code,
1727*758e9fbaSOystein Eftevaag    TPM2B_NAME *name,
1728*758e9fbaSOystein Eftevaag    TPM2B_NONCE *policyRef,
1729*758e9fbaSOystein Eftevaag    size_t hash_size,
1730*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg,
1731*758e9fbaSOystein Eftevaag    TPMU_HA *digest)
1732*758e9fbaSOystein Eftevaag\fn static void copy_policy_digest(TPML_DIGEST_VALUES *dest, TPML_DIGEST_VALUES *src,
1733*758e9fbaSOystein Eftevaag                   size_t digest_idx, size_t hash_size, char *txt)
1734*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy(
1735*758e9fbaSOystein Eftevaag    TPML_POLICYELEMENTS *policy,
1736*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *policyDigests,
1737*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
1738*758e9fbaSOystein Eftevaag    size_t hash_size,
1739*758e9fbaSOystein Eftevaag    size_t digest_idx)
1740*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_auth_value(
1741*758e9fbaSOystein Eftevaag    TPMS_POLICYAUTHVALUE *policy,
1742*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1743*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1744*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_authorize(
1745*758e9fbaSOystein Eftevaag    TPMS_POLICYAUTHORIZE *policy,
1746*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1747*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1748*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_authorize_nv(
1749*758e9fbaSOystein Eftevaag    TPMS_POLICYAUTHORIZENV *policy,
1750*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1751*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1752*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_command_code(
1753*758e9fbaSOystein Eftevaag    TPMS_POLICYCOMMANDCODE *policy,
1754*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1755*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1756*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_counter_timer(
1757*758e9fbaSOystein Eftevaag    TPMS_POLICYCOUNTERTIMER *policy,
1758*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1759*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1760*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_cp_hash(
1761*758e9fbaSOystein Eftevaag    TPMS_POLICYCPHASH *policy,
1762*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1763*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1764*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_digest_hash(
1765*758e9fbaSOystein Eftevaag    TPM2B_DIGEST *digest,
1766*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1767*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg,
1768*758e9fbaSOystein Eftevaag    TPM2_CC command_code)
1769*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_duplicate(
1770*758e9fbaSOystein Eftevaag    TPMS_POLICYDUPLICATIONSELECT *policy,
1771*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1772*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1773*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_locality(
1774*758e9fbaSOystein Eftevaag    TPMS_POLICYLOCALITY *policy,
1775*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1776*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1777*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_name_hash(
1778*758e9fbaSOystein Eftevaag    TPMS_POLICYNAMEHASH *policy,
1779*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1780*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1781*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_nv(
1782*758e9fbaSOystein Eftevaag    TPMS_POLICYNV *policy,
1783*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1784*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1785*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_nv_written(
1786*758e9fbaSOystein Eftevaag    TPMS_POLICYNVWRITTEN *policy,
1787*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1788*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1789*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_or(
1790*758e9fbaSOystein Eftevaag    TPMS_POLICYOR *policyOr,
1791*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1792*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
1793*758e9fbaSOystein Eftevaag    size_t hash_size,
1794*758e9fbaSOystein Eftevaag    size_t digest_idx)
1795*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_password(
1796*758e9fbaSOystein Eftevaag    TPMS_POLICYPASSWORD *policy,
1797*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1798*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1799*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_physical_presence(
1800*758e9fbaSOystein Eftevaag    TPMS_POLICYPHYSICALPRESENCE *policy,
1801*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1802*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1803*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_secret(
1804*758e9fbaSOystein Eftevaag    TPMS_POLICYSECRET *policy,
1805*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1806*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1807*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_policy_signed(
1808*758e9fbaSOystein Eftevaag    TPMS_POLICYSIGNED *policy,
1809*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1810*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1811*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_simple_policy(
1812*758e9fbaSOystein Eftevaag    TPM2_CC command_code1,
1813*758e9fbaSOystein Eftevaag    TPM2_CC command_code2,
1814*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1815*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1816*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_compute_policy_pcr(
1817*758e9fbaSOystein Eftevaag    TPMS_POLICYPCR *policy,
1818*758e9fbaSOystein Eftevaag    TPML_DIGEST_VALUES *current_digest,
1819*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg)
1820*758e9fbaSOystein Eftevaag\fn static void log_policy_digest(TPML_DIGEST_VALUES *dest, size_t digest_idx, size_t hash_size,
1821*758e9fbaSOystein Eftevaag                  char *txt)
1822*758e9fbaSOystein Eftevaag
1823*758e9fbaSOystein Eftevaag \}
1824*758e9fbaSOystein Eftevaag*/
1825*758e9fbaSOystein Eftevaag
1826*758e9fbaSOystein Eftevaag/*!
1827*758e9fbaSOystein Eftevaag \defgroup ifapi_policy_callbacks Policy callback functions.
1828*758e9fbaSOystein Eftevaag \ingroup ifapi
1829*758e9fbaSOystein Eftevaag Provides internal callbacks functions for policy execution.
1830*758e9fbaSOystein Eftevaag \{
1831*758e9fbaSOystein Eftevaag\fn static void cleanup_policy_list(struct POLICY_LIST * list)
1832*758e9fbaSOystein Eftevaag\fn static TSS2_RC compare_policy_digest(
1833*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy,
1834*758e9fbaSOystein Eftevaag    void *authPolicyVoid,
1835*758e9fbaSOystein Eftevaag    void *nameAlgVoid,
1836*758e9fbaSOystein Eftevaag    bool *equal)
1837*758e9fbaSOystein Eftevaag\fn static TSS2_RC equal_policy_authorization(
1838*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy,
1839*758e9fbaSOystein Eftevaag    void *publicVoid,
1840*758e9fbaSOystein Eftevaag    void *nameAlgVoid,
1841*758e9fbaSOystein Eftevaag    bool *equal)
1842*758e9fbaSOystein Eftevaag\fn static void get_nv_auth_object(
1843*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *nv_object,
1844*758e9fbaSOystein Eftevaag    ESYS_TR nv_index,
1845*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *auth_object,
1846*758e9fbaSOystein Eftevaag    ESYS_TR *auth_index)
1847*758e9fbaSOystein Eftevaag\fn static TSS2_RC get_policy_digest(TPMS_POLICY *policy,
1848*758e9fbaSOystein Eftevaag                  TPMI_ALG_HASH hashAlg,
1849*758e9fbaSOystein Eftevaag                  TPM2B_DIGEST *digest)
1850*758e9fbaSOystein Eftevaag\fn static TSS2_RC get_policy_signature(
1851*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy,
1852*758e9fbaSOystein Eftevaag    TPMT_PUBLIC *public,
1853*758e9fbaSOystein Eftevaag    TPMT_SIGNATURE *signature)
1854*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_branch_selection(
1855*758e9fbaSOystein Eftevaag    TPML_POLICYBRANCHES *branches,
1856*758e9fbaSOystein Eftevaag    size_t *branch_idx,
1857*758e9fbaSOystein Eftevaag    void *userdata)
1858*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_exec_auth_nv_policy(
1859*758e9fbaSOystein Eftevaag    TPM2B_NV_PUBLIC *nv_public,
1860*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
1861*758e9fbaSOystein Eftevaag    void *userdata)
1862*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_exec_auth_policy(
1863*758e9fbaSOystein Eftevaag    TPMT_PUBLIC *key_public,
1864*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
1865*758e9fbaSOystein Eftevaag    TPM2B_DIGEST *digest,
1866*758e9fbaSOystein Eftevaag    TPMT_SIGNATURE *signature,
1867*758e9fbaSOystein Eftevaag    void *userdata)
1868*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_duplicate_name(
1869*758e9fbaSOystein Eftevaag    TPM2B_NAME *name,
1870*758e9fbaSOystein Eftevaag    void *userdata)
1871*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_key_public(
1872*758e9fbaSOystein Eftevaag    const char *path,
1873*758e9fbaSOystein Eftevaag    TPMT_PUBLIC *public,
1874*758e9fbaSOystein Eftevaag    void *ctx)
1875*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_nv_public(
1876*758e9fbaSOystein Eftevaag    const char *path,
1877*758e9fbaSOystein Eftevaag    TPM2B_NV_PUBLIC *nv_public,
1878*758e9fbaSOystein Eftevaag    void *ctx)
1879*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_object_name(
1880*758e9fbaSOystein Eftevaag    const char *path,
1881*758e9fbaSOystein Eftevaag    TPM2B_NAME *name,
1882*758e9fbaSOystein Eftevaag    void *ctx)
1883*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policy_action(
1884*758e9fbaSOystein Eftevaag    const char *action,
1885*758e9fbaSOystein Eftevaag    void *userdata)
1886*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policyeval_cbauth(
1887*758e9fbaSOystein Eftevaag    TPM2B_NAME *name,
1888*758e9fbaSOystein Eftevaag    ESYS_TR *object_handle,
1889*758e9fbaSOystein Eftevaag    ESYS_TR *auth_handle,
1890*758e9fbaSOystein Eftevaag    ESYS_TR *authSession,
1891*758e9fbaSOystein Eftevaag    void *userdata)
1892*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_read_pcr(
1893*758e9fbaSOystein Eftevaag    TPMS_PCR_SELECT *pcr_select,
1894*758e9fbaSOystein Eftevaag    TPML_PCR_SELECTION *pcr_selection,
1895*758e9fbaSOystein Eftevaag    TPML_PCRVALUES **pcr_values,
1896*758e9fbaSOystein Eftevaag    void *ctx)
1897*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_sign_buffer(
1898*758e9fbaSOystein Eftevaag    char *key_pem,
1899*758e9fbaSOystein Eftevaag    char *public_key_hint,
1900*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH key_pem_hash_alg,
1901*758e9fbaSOystein Eftevaag    uint8_t *buffer,
1902*758e9fbaSOystein Eftevaag    size_t buffer_size,
1903*758e9fbaSOystein Eftevaag    uint8_t **signature,
1904*758e9fbaSOystein Eftevaag    size_t *signature_size,
1905*758e9fbaSOystein Eftevaag    void *userdata)
1906*758e9fbaSOystein Eftevaag\fn static TSS2_RC search_policy(
1907*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
1908*758e9fbaSOystein Eftevaag    Policy_Compare_Object compare,
1909*758e9fbaSOystein Eftevaag    bool all_objects,
1910*758e9fbaSOystein Eftevaag    void *object1,
1911*758e9fbaSOystein Eftevaag    void *object2,
1912*758e9fbaSOystein Eftevaag    struct POLICY_LIST **policy_found)
1913*758e9fbaSOystein Eftevaag
1914*758e9fbaSOystein Eftevaag \}
1915*758e9fbaSOystein Eftevaag*/
1916*758e9fbaSOystein Eftevaag
1917*758e9fbaSOystein Eftevaag/*!
1918*758e9fbaSOystein Eftevaag \defgroup ifapi_policy_execution Policy execution functions.
1919*758e9fbaSOystein Eftevaag \ingroup ifapi
1920*758e9fbaSOystein Eftevaag Provides internal functions for policy execution.
1921*758e9fbaSOystein Eftevaag \{
1922*758e9fbaSOystein Eftevaag\fn static TSS2_RC compute_or_digest_list(
1923*758e9fbaSOystein Eftevaag    TPML_POLICYBRANCHES *branches,
1924*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg,
1925*758e9fbaSOystein Eftevaag    TPML_DIGEST *digest_list)
1926*758e9fbaSOystein Eftevaag\fn static TSS2_RC compute_policy_list(
1927*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *pol_ctx,
1928*758e9fbaSOystein Eftevaag    TPML_POLICYELEMENTS *elements)
1929*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_action(
1930*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1931*758e9fbaSOystein Eftevaag    TPMS_POLICYACTION *policy,
1932*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1933*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_auth_value(
1934*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1935*758e9fbaSOystein Eftevaag    TPMS_POLICYAUTHVALUE *policy,
1936*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1937*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_authorize(
1938*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1939*758e9fbaSOystein Eftevaag    TPMS_POLICYAUTHORIZE *policy,
1940*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
1941*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1942*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_authorize_nv(
1943*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1944*758e9fbaSOystein Eftevaag    TPMS_POLICYAUTHORIZENV *policy,
1945*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
1946*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1947*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_command_code(
1948*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1949*758e9fbaSOystein Eftevaag    TPMS_POLICYCOMMANDCODE *policy,
1950*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1951*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_counter_timer(
1952*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1953*758e9fbaSOystein Eftevaag    TPMS_POLICYCOUNTERTIMER *policy,
1954*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1955*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_cp_hash(
1956*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1957*758e9fbaSOystein Eftevaag    TPMS_POLICYCPHASH *policy,
1958*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1959*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_duplicate(
1960*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1961*758e9fbaSOystein Eftevaag    TPMS_POLICYDUPLICATIONSELECT *policy,
1962*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1963*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_element(
1964*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1965*758e9fbaSOystein Eftevaag    TPMT_POLICYELEMENT *policy,
1966*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
1967*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1968*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_locality(
1969*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1970*758e9fbaSOystein Eftevaag    TPMS_POLICYLOCALITY *policy,
1971*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1972*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_name_hash(
1973*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1974*758e9fbaSOystein Eftevaag    TPMS_POLICYNAMEHASH *policy,
1975*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1976*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_nv(
1977*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1978*758e9fbaSOystein Eftevaag    TPMS_POLICYNV *policy,
1979*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1980*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_nv_written(
1981*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1982*758e9fbaSOystein Eftevaag    TPMS_POLICYNVWRITTEN *policy,
1983*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1984*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_or(
1985*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1986*758e9fbaSOystein Eftevaag    TPMS_POLICYOR *policy,
1987*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg,
1988*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1989*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_password(
1990*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1991*758e9fbaSOystein Eftevaag    TPMS_POLICYPASSWORD *policy,
1992*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1993*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_pcr(
1994*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
1995*758e9fbaSOystein Eftevaag    TPMS_POLICYPCR *policy,
1996*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH current_hash_alg,
1997*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
1998*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_physical_presence(
1999*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
2000*758e9fbaSOystein Eftevaag    TPMS_POLICYPHYSICALPRESENCE *policy,
2001*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
2002*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_secret(
2003*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
2004*758e9fbaSOystein Eftevaag    TPMS_POLICYSECRET *policy,
2005*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
2006*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
2007*758e9fbaSOystein Eftevaag\fn static TSS2_RC execute_policy_signed(
2008*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
2009*758e9fbaSOystein Eftevaag    TPMS_POLICYSIGNED *policy,
2010*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
2011*758e9fbaSOystein Eftevaag\fn TSS2_RC get_policy_digest_idx(TPML_DIGEST_VALUES *digest_values, TPMI_ALG_HASH hashAlg,
2012*758e9fbaSOystein Eftevaag                      size_t *idx)
2013*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_extend_authorization(
2014*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy,
2015*758e9fbaSOystein Eftevaag    TPMS_POLICYAUTHORIZATION *authorization)
2016*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policyeval_execute(
2017*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *esys_ctx,
2018*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *current_policy)
2019*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policyeval_execute_prepare(
2020*758e9fbaSOystein Eftevaag    IFAPI_POLICY_EXEC_CTX *pol_ctx,
2021*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
2022*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy)
2023*758e9fbaSOystein Eftevaag
2024*758e9fbaSOystein Eftevaag \}
2025*758e9fbaSOystein Eftevaag*/
2026*758e9fbaSOystein Eftevaag
2027*758e9fbaSOystein Eftevaag/*!
2028*758e9fbaSOystein Eftevaag \defgroup ifapi_policy_util_exec Policy utilitiy module
2029*758e9fbaSOystein Eftevaag \ingroup ifapi
2030*758e9fbaSOystein Eftevaag Provides functions for the execution of policies for object authorization.
2031*758e9fbaSOystein Eftevaag\{
2032*758e9fbaSOystein Eftevaag
2033*758e9fbaSOystein Eftevaag\fn static void clear_all_policies(FAPI_CONTEXT *context)
2034*758e9fbaSOystein Eftevaag\fn static TSS2_RC clear_current_policy(FAPI_CONTEXT *context)
2035*758e9fbaSOystein Eftevaag\fn static TSS2_RC create_session(
2036*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2037*758e9fbaSOystein Eftevaag    ESYS_TR *session,
2038*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg)
2039*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policyutil_execute(FAPI_CONTEXT *context, ESYS_TR *session)
2040*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policyutil_execute_prepare(
2041*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2042*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
2043*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy)
2044*758e9fbaSOystein Eftevaag\fn static TSS2_RC new_policy(
2045*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2046*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy,
2047*758e9fbaSOystein Eftevaag    IFAPI_POLICYUTIL_STACK **current_policy)
2048*758e9fbaSOystein Eftevaag
2049*758e9fbaSOystein Eftevaag\}
2050*758e9fbaSOystein Eftevaag    */
2051*758e9fbaSOystein Eftevaag
2052*758e9fbaSOystein Eftevaag /*!
2053*758e9fbaSOystein Eftevaag \defgroup ifapi_helper Helper functions module
2054*758e9fbaSOystein Eftevaag \ingroup ifapi
2055*758e9fbaSOystein Eftevaag Provides helper functions.
2056*758e9fbaSOystein Eftevaag \{
2057*758e9fbaSOystein Eftevaag\fn bool add_string_to_list(NODE_STR_T *str_list, char *string)
2058*758e9fbaSOystein Eftevaag\fn TSS2_RC append_object_to_list(void *object, NODE_OBJECT_T **object_list)
2059*758e9fbaSOystein Eftevaag\fn static void cleanup_policy_element(TPMT_POLICYELEMENT *policy)
2060*758e9fbaSOystein Eftevaag\fn static void cleanup_policy_elements(TPML_POLICYELEMENTS *policy)
2061*758e9fbaSOystein Eftevaag\fn static void cleanup_policy_object(POLICY_OBJECT * object)
2062*758e9fbaSOystein Eftevaag\fn static TSS2_RC copy_policy(TPMS_POLICY * dest,
2063*758e9fbaSOystein Eftevaag        const TPMS_POLICY * src)
2064*758e9fbaSOystein Eftevaag\fn static TPML_POLICYBRANCHES * copy_policy_branches(const TPML_POLICYBRANCHES *from_branches)
2065*758e9fbaSOystein Eftevaag\fn static TSS2_RC copy_policy_element(const TPMT_POLICYELEMENT *from_policy, TPMT_POLICYELEMENT *to_policy)
2066*758e9fbaSOystein Eftevaag\fn static TPML_POLICYELEMENTS * copy_policy_elements(const TPML_POLICYELEMENTS *from_policy)
2067*758e9fbaSOystein Eftevaag\fn static TSS2_RC copy_policy_object(POLICY_OBJECT * dest, const POLICY_OBJECT * src)
2068*758e9fbaSOystein Eftevaag\fn static TSS2_RC copy_policyauthorization(TPMS_POLICYAUTHORIZATION * dest,
2069*758e9fbaSOystein Eftevaag        const TPMS_POLICYAUTHORIZATION * src)
2070*758e9fbaSOystein Eftevaag\fn static TSS2_RC create_dirs(const char *supdir, NODE_STR_T *dir_list, mode_t mode)
2071*758e9fbaSOystein Eftevaag\fn void free_string_list(NODE_STR_T *node)
2072*758e9fbaSOystein Eftevaag\fn char * get_description(IFAPI_OBJECT *object)
2073*758e9fbaSOystein Eftevaag\fn bool ifapi_TPM2B_DIGEST_cmp(TPM2B_DIGEST *in1, TPM2B_DIGEST *in2)
2074*758e9fbaSOystein Eftevaag\fn bool ifapi_TPM2B_ECC_PARAMETER_cmp(TPM2B_ECC_PARAMETER *in1,
2075*758e9fbaSOystein Eftevaag                              TPM2B_ECC_PARAMETER *in2)
2076*758e9fbaSOystein Eftevaag\fn bool ifapi_TPM2B_PUBLIC_KEY_RSA_cmp(TPM2B_PUBLIC_KEY_RSA *in1,
2077*758e9fbaSOystein Eftevaag                               TPM2B_PUBLIC_KEY_RSA *in2)
2078*758e9fbaSOystein Eftevaag\fn bool ifapi_TPMS_ECC_POINT_cmp(TPMS_ECC_POINT *in1, TPMS_ECC_POINT *in2)
2079*758e9fbaSOystein Eftevaag\fn bool ifapi_TPMT_PUBLIC_cmp(TPMT_PUBLIC *in1, TPMT_PUBLIC *in2)
2080*758e9fbaSOystein Eftevaag\fn bool ifapi_TPMU_PUBLIC_ID_cmp(TPMU_PUBLIC_ID *in1, UINT32 selector1,
2081*758e9fbaSOystein Eftevaag                         TPMU_PUBLIC_ID *in2, UINT32 selector2)
2082*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_asprintf(char **str, const char *fmt, ...)
2083*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_calculate_pcr_digest(
2084*758e9fbaSOystein Eftevaag    json_object *jso_event_list,
2085*758e9fbaSOystein Eftevaag    const FAPI_QUOTE_INFO *quote_info,
2086*758e9fbaSOystein Eftevaag    TPM2B_DIGEST *pcr_digest)
2087*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_check_profile_pcr_selection(
2088*758e9fbaSOystein Eftevaag    const TPML_PCR_SELECTION *pcr_profile,
2089*758e9fbaSOystein Eftevaag    const TPML_PCR_SELECTION *pcr_capablity)
2090*758e9fbaSOystein Eftevaag\fn void ifapi_cleanup_policy(TPMS_POLICY *policy)
2091*758e9fbaSOystein Eftevaag\fn bool ifapi_cmp_public_key(
2092*758e9fbaSOystein Eftevaag    TPM2B_PUBLIC *key1,
2093*758e9fbaSOystein Eftevaag    TPM2B_PUBLIC *key2)
2094*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_compute_policy_digest(
2095*758e9fbaSOystein Eftevaag    TPML_PCRVALUES *pcrs,
2096*758e9fbaSOystein Eftevaag    TPML_PCR_SELECTION *pcr_selection,
2097*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg,
2098*758e9fbaSOystein Eftevaag    TPM2B_DIGEST *pcr_digest)
2099*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_compute_quote_info(
2100*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *sig_key_object,
2101*758e9fbaSOystein Eftevaag    TPM2B_ATTEST *tpm_quoted,
2102*758e9fbaSOystein Eftevaag    char **quoteInfo)
2103*758e9fbaSOystein Eftevaag\fn TPMS_POLICY * ifapi_copy_policy(
2104*758e9fbaSOystein Eftevaag    const TPMS_POLICY *from_policy)
2105*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_create_dirs(const char *supdir, const char *path)
2106*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_extend_vpcr(
2107*758e9fbaSOystein Eftevaag    TPM2B_DIGEST *vpcr,
2108*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH bank,
2109*758e9fbaSOystein Eftevaag    const IFAPI_EVENT *event)
2110*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_filter_pcr_selection_by_index(
2111*758e9fbaSOystein Eftevaag    TPML_PCR_SELECTION *pcr_selection,
2112*758e9fbaSOystein Eftevaag    const TPM2_HANDLE *pcr_index,
2113*758e9fbaSOystein Eftevaag    size_t pcr_count)
2114*758e9fbaSOystein Eftevaag\fn void ifapi_free_node_list(NODE_OBJECT_T *node)
2115*758e9fbaSOystein Eftevaag\fn void ifapi_free_object_list(NODE_OBJECT_T *node)
2116*758e9fbaSOystein Eftevaag\fn int ifapi_get_curl_buffer(unsigned char * url, unsigned char ** buffer,
2117*758e9fbaSOystein Eftevaag                          size_t *buffer_size)
2118*758e9fbaSOystein Eftevaag\fn ESYS_TR ifapi_get_hierary_handle(const char *path)
2119*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_name(TPMT_PUBLIC *publicInfo, TPM2B_NAME *name)
2120*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_nv_start_index(const char *path, TPM2_HANDLE *start_nv_index)
2121*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_quote_info(
2122*758e9fbaSOystein Eftevaag    char const *quoteInfo,
2123*758e9fbaSOystein Eftevaag    TPM2B_ATTEST *tpm_quoted,
2124*758e9fbaSOystein Eftevaag    FAPI_QUOTE_INFO *fapi_quote_info)
2125*758e9fbaSOystein Eftevaag\fn bool ifapi_hierarchy_path_p(const char *path)
2126*758e9fbaSOystein Eftevaag\fn void ifapi_init_hierarchy_object(
2127*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *hierarchy,
2128*758e9fbaSOystein Eftevaag    ESYS_TR esys_handle)
2129*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_nv_get_name(TPM2B_NV_PUBLIC *publicInfo, TPM2B_NAME *name)
2130*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_object_cmp_name(IFAPI_OBJECT *object, void *name, bool *equal)
2131*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_object_cmp_nv_public(IFAPI_OBJECT *object, void *nv_public, bool *equal)
2132*758e9fbaSOystein Eftevaag\fn size_t ifapi_path_length(NODE_STR_T *node)
2133*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_path_string(char **dest, const char *supdir, NODE_STR_T *node, char *name)
2134*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_path_string_n(char **dest, const char *supdir, NODE_STR_T *node, char *name,
2135*758e9fbaSOystein Eftevaag                    size_t n)
2136*758e9fbaSOystein Eftevaag\fn bool ifapi_path_type_p(const char *path, const char *type)
2137*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_set_key_flags(const char *type, bool policy, IFAPI_KEY_TEMPLATE *template)
2138*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_set_nv_flags(const char *type, IFAPI_NV_TEMPLATE *template,
2139*758e9fbaSOystein Eftevaag                   const char *policy)
2140*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_tpm_to_fapi_signature(
2141*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *sig_key_object,
2142*758e9fbaSOystein Eftevaag    TPMT_SIGNATURE *tpm_signature,
2143*758e9fbaSOystein Eftevaag    uint8_t **signature,
2144*758e9fbaSOystein Eftevaag    size_t *signatureSize)
2145*758e9fbaSOystein Eftevaag\fn NODE_STR_T * init_string_list(const char *string)
2146*758e9fbaSOystein Eftevaag\fn bool object_with_auth(IFAPI_OBJECT *object)
2147*758e9fbaSOystein Eftevaag\fn static size_t path_str_length(NODE_STR_T *node, int delim_length)
2148*758e9fbaSOystein Eftevaag\fn TSS2_RC push_object_to_list(void *object, NODE_OBJECT_T **object_list)
2149*758e9fbaSOystein Eftevaag\fn NODE_STR_T * split_string(const char *string, char *delimiter)
2150*758e9fbaSOystein Eftevaag\fn int vasprintf(char **str, const char *fmt, va_list args)
2151*758e9fbaSOystein Eftevaag\fn static size_t write_curl_buffer_cb(void *contents, size_t size, size_t nmemb, void *userp)
2152*758e9fbaSOystein Eftevaag
2153*758e9fbaSOystein Eftevaag \}
2154*758e9fbaSOystein Eftevaag*/
2155*758e9fbaSOystein Eftevaag
2156*758e9fbaSOystein Eftevaag /*!
2157*758e9fbaSOystein Eftevaag \defgroup ifapi_utility Utility module
2158*758e9fbaSOystein Eftevaag \ingroup ifapi
2159*758e9fbaSOystein Eftevaag Provides internal utility functions.
2160*758e9fbaSOystein Eftevaag \{
2161*758e9fbaSOystein Eftevaag\fn static void full_path_to_fapi_path(IFAPI_KEYSTORE *keystore, char *path)
2162*758e9fbaSOystein Eftevaag\fn static TSS2_RC get_explicit_key_path(
2163*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2164*758e9fbaSOystein Eftevaag    const char *ipath,
2165*758e9fbaSOystein Eftevaag    NODE_STR_T **result)
2166*758e9fbaSOystein Eftevaag\fn static size_t get_name_alg(FAPI_CONTEXT *context, IFAPI_OBJECT *object)
2167*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_authorize_object(FAPI_CONTEXT *context, IFAPI_OBJECT *object, ESYS_TR *session)
2168*758e9fbaSOystein Eftevaag\fn TPM2_RC ifapi_capability_get(FAPI_CONTEXT *context, TPM2_CAP capability,
2169*758e9fbaSOystein Eftevaag                     UINT32 count, TPMS_CAPABILITY_DATA **capability_data)
2170*758e9fbaSOystein Eftevaag\fn TPM2_RC ifapi_capability_init(FAPI_CONTEXT *context)
2171*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_change_auth_hierarchy(
2172*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2173*758e9fbaSOystein Eftevaag    ESYS_TR handle,
2174*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *hierarchy_object,
2175*758e9fbaSOystein Eftevaag    TPM2B_AUTH *newAuthValue)
2176*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_change_policy_hierarchy(
2177*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2178*758e9fbaSOystein Eftevaag    ESYS_TR handle,
2179*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *hierarchy_object,
2180*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy)
2181*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_cleanup_session(FAPI_CONTEXT *context)
2182*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_esys_serialize_object(ESYS_CONTEXT *ectx, IFAPI_OBJECT *object)
2183*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_flush_object(FAPI_CONTEXT *context, ESYS_TR handle)
2184*758e9fbaSOystein Eftevaag\fn void ifapi_flush_policy_session(FAPI_CONTEXT *context, ESYS_TR session, TSS2_RC r)
2185*758e9fbaSOystein Eftevaag\fn void ifapi_free_object(FAPI_CONTEXT *context, IFAPI_OBJECT **object)
2186*758e9fbaSOystein Eftevaag\fn void ifapi_free_objects(FAPI_CONTEXT *context)
2187*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_certificates(
2188*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2189*758e9fbaSOystein Eftevaag    UINT32 min_handle,
2190*758e9fbaSOystein Eftevaag    UINT32 max_handle,
2191*758e9fbaSOystein Eftevaag    NODE_OBJECT_T **cert_list)
2192*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_description(IFAPI_OBJECT *object, char **description)
2193*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_free_handle_async(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle)
2194*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_free_handle_finish(FAPI_CONTEXT *fctx, TPM2_HANDLE *handle,
2195*758e9fbaSOystein Eftevaag                             TPM2_HANDLE max)
2196*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_json(FAPI_CONTEXT *context, IFAPI_OBJECT *object, char **json_string)
2197*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_random(FAPI_CONTEXT *context, size_t numBytes, uint8_t **data)
2198*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_session_async(ESYS_CONTEXT *esys, ESYS_TR saltkey, const IFAPI_PROFILE *profile,
2199*758e9fbaSOystein Eftevaag                        TPMI_ALG_HASH hashAlg)
2200*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_session_finish(ESYS_CONTEXT *esys, ESYS_TR *session,
2201*758e9fbaSOystein Eftevaag                         TPMA_SESSION flags)
2202*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_sessions_async(FAPI_CONTEXT *context,
2203*758e9fbaSOystein Eftevaag                         IFAPI_SESSION_TYPE session_flags,
2204*758e9fbaSOystein Eftevaag                         TPMA_SESSION attribute_flags1,
2205*758e9fbaSOystein Eftevaag                         TPMA_SESSION attribute_flags2)
2206*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_sessions_finish(
2207*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2208*758e9fbaSOystein Eftevaag    const IFAPI_PROFILE *profile,
2209*758e9fbaSOystein Eftevaag    TPMI_ALG_HASH hash_alg)
2210*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_sig_scheme(
2211*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2212*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *object,
2213*758e9fbaSOystein Eftevaag    char const *padding,
2214*758e9fbaSOystein Eftevaag    TPM2B_DIGEST *digest,
2215*758e9fbaSOystein Eftevaag    TPMT_SIG_SCHEME *sig_scheme)
2216*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_init_primary_async(FAPI_CONTEXT *context, TSS2_KEY_TYPE ktype)
2217*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_init_primary_finish(FAPI_CONTEXT *context, TSS2_KEY_TYPE ktype)
2218*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_initialize_object(
2219*758e9fbaSOystein Eftevaag    ESYS_CONTEXT *ectx,
2220*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *object)
2221*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_key_create(
2222*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2223*758e9fbaSOystein Eftevaag    IFAPI_KEY_TEMPLATE *template)
2224*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_key_create_prepare(
2225*758e9fbaSOystein Eftevaag    FAPI_CONTEXT  *context,
2226*758e9fbaSOystein Eftevaag    char   const *keyPath,
2227*758e9fbaSOystein Eftevaag    char   const *policyPath)
2228*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_key_create_prepare_auth(
2229*758e9fbaSOystein Eftevaag    FAPI_CONTEXT  *context,
2230*758e9fbaSOystein Eftevaag    char   const *keyPath,
2231*758e9fbaSOystein Eftevaag    char   const *policyPath,
2232*758e9fbaSOystein Eftevaag    char   const *authValue)
2233*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_key_create_prepare_sensitive(
2234*758e9fbaSOystein Eftevaag    FAPI_CONTEXT  *context,
2235*758e9fbaSOystein Eftevaag    char    const *keyPath,
2236*758e9fbaSOystein Eftevaag    char    const *policyPath,
2237*758e9fbaSOystein Eftevaag    size_t         dataSize,
2238*758e9fbaSOystein Eftevaag    char    const *authValue,
2239*758e9fbaSOystein Eftevaag    uint8_t const *data)
2240*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_key_sign(
2241*758e9fbaSOystein Eftevaag    FAPI_CONTEXT     *context,
2242*758e9fbaSOystein Eftevaag    IFAPI_OBJECT     *sig_key_object,
2243*758e9fbaSOystein Eftevaag    char const       *padding,
2244*758e9fbaSOystein Eftevaag    TPM2B_DIGEST     *digest,
2245*758e9fbaSOystein Eftevaag    TPMT_SIGNATURE  **tpm_signature,
2246*758e9fbaSOystein Eftevaag    char            **publicKey,
2247*758e9fbaSOystein Eftevaag    char            **certificate)
2248*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_load_key(
2249*758e9fbaSOystein Eftevaag    FAPI_CONTEXT  *context,
2250*758e9fbaSOystein Eftevaag    char    const *keyPath,
2251*758e9fbaSOystein Eftevaag    IFAPI_OBJECT **key_object)
2252*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_load_key_async(FAPI_CONTEXT *context, size_t position)
2253*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_load_key_finish(FAPI_CONTEXT *context, bool flush_parent)
2254*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_load_keys_async(FAPI_CONTEXT *context, char const *keyPath)
2255*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_load_keys_finish(
2256*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2257*758e9fbaSOystein Eftevaag    bool flush_parent,
2258*758e9fbaSOystein Eftevaag    ESYS_TR *handle,
2259*758e9fbaSOystein Eftevaag    IFAPI_OBJECT **key_object)
2260*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_load_primary_async(FAPI_CONTEXT *context, char *path)
2261*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_load_primary_finish(FAPI_CONTEXT *context, ESYS_TR *handle)
2262*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_merge_profile_into_nv_template(
2263*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2264*758e9fbaSOystein Eftevaag    IFAPI_NV_TEMPLATE *template)
2265*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_merge_profile_into_template(
2266*758e9fbaSOystein Eftevaag    const IFAPI_PROFILE *profile,
2267*758e9fbaSOystein Eftevaag    IFAPI_KEY_TEMPLATE *template)
2268*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_non_tpm_mode_init(FAPI_CONTEXT *context)
2269*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_nv_read(
2270*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2271*758e9fbaSOystein Eftevaag    uint8_t     **data,
2272*758e9fbaSOystein Eftevaag    size_t       *size)
2273*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_nv_write(
2274*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2275*758e9fbaSOystein Eftevaag    char         *nvPath,
2276*758e9fbaSOystein Eftevaag    size_t         param_offset,
2277*758e9fbaSOystein Eftevaag    uint8_t const *data,
2278*758e9fbaSOystein Eftevaag    size_t         size)
2279*758e9fbaSOystein Eftevaag\fn void ifapi_primary_clean(FAPI_CONTEXT *context)
2280*758e9fbaSOystein Eftevaag\fn void ifapi_session_clean(FAPI_CONTEXT *context)
2281*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_session_init(FAPI_CONTEXT *context)
2282*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_set_auth(
2283*758e9fbaSOystein Eftevaag    FAPI_CONTEXT *context,
2284*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *auth_object,
2285*758e9fbaSOystein Eftevaag    const char *description)
2286*758e9fbaSOystein Eftevaag\fn void ifapi_set_description(IFAPI_OBJECT *object, char *description)
2287*758e9fbaSOystein Eftevaag\fn static TSS2_RC init_explicit_key_path(
2288*758e9fbaSOystein Eftevaag    const char *context_profile,
2289*758e9fbaSOystein Eftevaag    const char *ipath,
2290*758e9fbaSOystein Eftevaag    NODE_STR_T **list_node1,
2291*758e9fbaSOystein Eftevaag    NODE_STR_T **current_list_node,
2292*758e9fbaSOystein Eftevaag    NODE_STR_T **result)
2293*758e9fbaSOystein Eftevaag\fn static size_t policy_digest_size(IFAPI_OBJECT *object)
2294*758e9fbaSOystein Eftevaag\fn static TSS2_RC pop_object_from_list(FAPI_CONTEXT *context, NODE_OBJECT_T **object_list)
2295*758e9fbaSOystein Eftevaag\fn static TSS2_RC push_object_with_size_to_list(void *object, size_t size, NODE_OBJECT_T **object_list)
2296*758e9fbaSOystein Eftevaag
2297*758e9fbaSOystein Eftevaag \}
2298*758e9fbaSOystein Eftevaag*/
2299*758e9fbaSOystein Eftevaag
2300*758e9fbaSOystein Eftevaag/*!
2301*758e9fbaSOystein Eftevaag \defgroup ifapi_io Basic IO module
2302*758e9fbaSOystein Eftevaag \ingroup ifapi
2303*758e9fbaSOystein Eftevaag Provides internal basic IO functions for policy and key store module.
2304*758e9fbaSOystein Eftevaag \{
2305*758e9fbaSOystein Eftevaag\fn static TSS2_RC dirfiles_all(const char *dir_name, NODE_OBJECT_T **list, size_t *n)
2306*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_check_create_dir(
2307*758e9fbaSOystein Eftevaag    const char *dirname)
2308*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_check_file_writeable(
2309*758e9fbaSOystein Eftevaag    const char *file)
2310*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_dirfiles(
2311*758e9fbaSOystein Eftevaag    const char *dirname,
2312*758e9fbaSOystein Eftevaag    char ***files,
2313*758e9fbaSOystein Eftevaag    size_t *numfiles)
2314*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_dirfiles_all(
2315*758e9fbaSOystein Eftevaag    const char *searchPath,
2316*758e9fbaSOystein Eftevaag    char ***pathlist,
2317*758e9fbaSOystein Eftevaag    size_t *numPaths)
2318*758e9fbaSOystein Eftevaag\fn bool ifapi_io_path_exists(const char *path)
2319*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_poll(IFAPI_IO * io)
2320*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_poll_handles(IFAPI_IO *io, FAPI_POLL_HANDLE **handles, size_t *num_handles)
2321*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_read_async(
2322*758e9fbaSOystein Eftevaag    struct IFAPI_IO *io,
2323*758e9fbaSOystein Eftevaag    const char *filename)
2324*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_read_finish(
2325*758e9fbaSOystein Eftevaag    struct IFAPI_IO *io,
2326*758e9fbaSOystein Eftevaag    uint8_t **buffer,
2327*758e9fbaSOystein Eftevaag    size_t *length)
2328*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_remove_directories(
2329*758e9fbaSOystein Eftevaag    const char *dirname)
2330*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_remove_file(const char *file)
2331*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_write_async(
2332*758e9fbaSOystein Eftevaag    struct IFAPI_IO *io,
2333*758e9fbaSOystein Eftevaag    const char *filename,
2334*758e9fbaSOystein Eftevaag    const uint8_t *buffer,
2335*758e9fbaSOystein Eftevaag    size_t length)
2336*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_io_write_finish(
2337*758e9fbaSOystein Eftevaag    struct IFAPI_IO *io)
2338*758e9fbaSOystein Eftevaag
2339*758e9fbaSOystein Eftevaag \}
2340*758e9fbaSOystein Eftevaag*/
2341*758e9fbaSOystein Eftevaag
2342*758e9fbaSOystein Eftevaag/*!
2343*758e9fbaSOystein Eftevaag \defgroup ifapi_keystore Key store module
2344*758e9fbaSOystein Eftevaag \ingroup ifapi
2345*758e9fbaSOystein Eftevaag Provides internal fapi functions for reading and writing to the key store.
2346*758e9fbaSOystein Eftevaag \{
2347*758e9fbaSOystein Eftevaag\fn static TSS2_RC copy_uint8_ary(UINT8_ARY *dest, const UINT8_ARY * src)
2348*758e9fbaSOystein Eftevaag\fn static TSS2_RC expand_directory(IFAPI_KEYSTORE *keystore, const char *path, char **directory_name)
2349*758e9fbaSOystein Eftevaag\fn static TSS2_RC expand_path(IFAPI_KEYSTORE *keystore, const char *path, char **file_name)
2350*758e9fbaSOystein Eftevaag\fn static TSS2_RC expand_path_to_object(
2351*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2352*758e9fbaSOystein Eftevaag    const char *path,
2353*758e9fbaSOystein Eftevaag    const char *dir,
2354*758e9fbaSOystein Eftevaag    char **file_name)
2355*758e9fbaSOystein Eftevaag\fn void full_path_to_fapi_path(IFAPI_KEYSTORE *keystore, char *path)
2356*758e9fbaSOystein Eftevaag\fn static TSS2_RC get_explicit_key_path(
2357*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2358*758e9fbaSOystein Eftevaag    const char *ipath,
2359*758e9fbaSOystein Eftevaag    NODE_STR_T **result)
2360*758e9fbaSOystein Eftevaag\fn void ifapi_cleanup_ifapi_duplicate(IFAPI_DUPLICATE * duplicate)
2361*758e9fbaSOystein Eftevaag\fn void ifapi_cleanup_ifapi_ext_pub_key(IFAPI_EXT_PUB_KEY * key)
2362*758e9fbaSOystein Eftevaag\fn void ifapi_cleanup_ifapi_hierarchy(IFAPI_HIERARCHY * hierarchy)
2363*758e9fbaSOystein Eftevaag\fn void ifapi_cleanup_ifapi_key(IFAPI_KEY * key)
2364*758e9fbaSOystein Eftevaag\fn void ifapi_cleanup_ifapi_keystore(IFAPI_KEYSTORE * keystore)
2365*758e9fbaSOystein Eftevaag\fn void ifapi_cleanup_ifapi_nv(IFAPI_NV * nv)
2366*758e9fbaSOystein Eftevaag\fn void ifapi_cleanup_ifapi_object(
2367*758e9fbaSOystein Eftevaag    IFAPI_OBJECT * object)
2368*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_copy_ifapi_key(IFAPI_KEY * dest, const IFAPI_KEY * src)
2369*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_copy_ifapi_key_object(IFAPI_OBJECT * dest, const IFAPI_OBJECT * src)
2370*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_check_overwrite(
2371*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2372*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2373*758e9fbaSOystein Eftevaag    const char *path)
2374*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_check_writeable(
2375*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2376*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2377*758e9fbaSOystein Eftevaag    const char *path)
2378*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_delete(
2379*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE * keystore,
2380*758e9fbaSOystein Eftevaag    char *path)
2381*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_initialize(
2382*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2383*758e9fbaSOystein Eftevaag    const char *config_systemdir,
2384*758e9fbaSOystein Eftevaag    const char *config_userdir,
2385*758e9fbaSOystein Eftevaag    const char *config_defaultprofile)
2386*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_list_all(
2387*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2388*758e9fbaSOystein Eftevaag    const char *searchpath,
2389*758e9fbaSOystein Eftevaag    char ***results,
2390*758e9fbaSOystein Eftevaag    size_t *numresults)
2391*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_load_async(
2392*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2393*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2394*758e9fbaSOystein Eftevaag    const char *path)
2395*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_load_finish(
2396*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2397*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2398*758e9fbaSOystein Eftevaag    IFAPI_OBJECT *object)
2399*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_remove_directories(IFAPI_KEYSTORE *keystore, const char *dir_name)
2400*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_search_nv_obj(
2401*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2402*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2403*758e9fbaSOystein Eftevaag    TPM2B_NV_PUBLIC *nv_public,
2404*758e9fbaSOystein Eftevaag    char **found_path)
2405*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_search_obj(
2406*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2407*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2408*758e9fbaSOystein Eftevaag    TPM2B_NAME *name,
2409*758e9fbaSOystein Eftevaag    char **found_path)
2410*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_store_async(
2411*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2412*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2413*758e9fbaSOystein Eftevaag    const char *path,
2414*758e9fbaSOystein Eftevaag    const IFAPI_OBJECT *object)
2415*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_keystore_store_finish(
2416*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2417*758e9fbaSOystein Eftevaag    IFAPI_IO *io)
2418*758e9fbaSOystein Eftevaag\fn static TSS2_RC initialize_explicit_key_path(
2419*758e9fbaSOystein Eftevaag    const char *context_profile,
2420*758e9fbaSOystein Eftevaag    const char *ipath,
2421*758e9fbaSOystein Eftevaag    NODE_STR_T **list_node1,
2422*758e9fbaSOystein Eftevaag    NODE_STR_T **current_list_node,
2423*758e9fbaSOystein Eftevaag    NODE_STR_T **result)
2424*758e9fbaSOystein Eftevaag\fn static TSS2_RC keystore_list_all_abs(
2425*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2426*758e9fbaSOystein Eftevaag    const char *searchpath,
2427*758e9fbaSOystein Eftevaag    char ***results,
2428*758e9fbaSOystein Eftevaag    size_t *numresults)
2429*758e9fbaSOystein Eftevaag\fn static TSS2_RC keystore_search_obj(
2430*758e9fbaSOystein Eftevaag    IFAPI_KEYSTORE *keystore,
2431*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2432*758e9fbaSOystein Eftevaag    void *cmp_object,
2433*758e9fbaSOystein Eftevaag    ifapi_keystore_object_cmp cmp_function,
2434*758e9fbaSOystein Eftevaag    char **found_path)
2435*758e9fbaSOystein Eftevaag\fn     static TSS2_RC rel_path_to_abs_path(
2436*758e9fbaSOystein Eftevaag        IFAPI_KEYSTORE *keystore,
2437*758e9fbaSOystein Eftevaag        const char *rel_path,
2438*758e9fbaSOystein Eftevaag        char **abs_path)
2439*758e9fbaSOystein Eftevaag
2440*758e9fbaSOystein Eftevaag \}
2441*758e9fbaSOystein Eftevaag*/
2442*758e9fbaSOystein Eftevaag
2443*758e9fbaSOystein Eftevaag/*!
2444*758e9fbaSOystein Eftevaag \defgroup ifapi_policy_store Policy store module
2445*758e9fbaSOystein Eftevaag \ingroup ifapi
2446*758e9fbaSOystein Eftevaag Provides internal fapi functions for reading and writing to the policy store.
2447*758e9fbaSOystein Eftevaag \{
2448*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policy_delete(
2449*758e9fbaSOystein Eftevaag    IFAPI_POLICY_STORE * pstore,
2450*758e9fbaSOystein Eftevaag    char *path)
2451*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policy_store_initialize(
2452*758e9fbaSOystein Eftevaag    IFAPI_POLICY_STORE *pstore,
2453*758e9fbaSOystein Eftevaag    const char *config_policydir)
2454*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policy_store_load_async(
2455*758e9fbaSOystein Eftevaag    IFAPI_POLICY_STORE *pstore,
2456*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2457*758e9fbaSOystein Eftevaag    const char *path)
2458*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policy_store_load_finish(
2459*758e9fbaSOystein Eftevaag    IFAPI_POLICY_STORE *pstore,
2460*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2461*758e9fbaSOystein Eftevaag    TPMS_POLICY *policy)
2462*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policy_store_store_async(
2463*758e9fbaSOystein Eftevaag    IFAPI_POLICY_STORE *pstore,
2464*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2465*758e9fbaSOystein Eftevaag    const char *path,
2466*758e9fbaSOystein Eftevaag    const TPMS_POLICY *policy)
2467*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_policy_store_store_finish(
2468*758e9fbaSOystein Eftevaag    IFAPI_POLICY_STORE *pstore,
2469*758e9fbaSOystein Eftevaag    IFAPI_IO *io)
2470*758e9fbaSOystein Eftevaag\fn static TSS2_RC policy_rel_path_to_abs_path(
2471*758e9fbaSOystein Eftevaag    IFAPI_POLICY_STORE *pstore,
2472*758e9fbaSOystein Eftevaag    const char *rel_path,
2473*758e9fbaSOystein Eftevaag    char **abs_path)
2474*758e9fbaSOystein Eftevaag
2475*758e9fbaSOystein Eftevaag \}
2476*758e9fbaSOystein Eftevaag*/
2477*758e9fbaSOystein Eftevaag
2478*758e9fbaSOystein Eftevaag/*!
2479*758e9fbaSOystein Eftevaag \defgroup ifapi_configuration  Configuration utilities.
2480*758e9fbaSOystein Eftevaag \ingroup ifapi
2481*758e9fbaSOystein Eftevaag Provides internal fapi functions for deserialization of the configuration data and
2482*758e9fbaSOystein Eftevaag the initialization of the configuration.
2483*758e9fbaSOystein Eftevaag \{
2484*758e9fbaSOystein Eftevaag
2485*758e9fbaSOystein Eftevaag\fn static TSS2_RC ifapi_json_IFAPI_CONFIG_deserialize(json_object *jso, IFAPI_CONFIG *out)
2486*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_config_initialize_async(IFAPI_IO *io)
2487*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_config_initialize_finish(IFAPI_IO *io, IFAPI_CONFIG *config)
2488*758e9fbaSOystein Eftevaag\fn static TSS2_RC ifapi_json_IFAPI_CONFIG_deserialize(json_object *jso, IFAPI_CONFIG *out)
2489*758e9fbaSOystein Eftevaag
2490*758e9fbaSOystein Eftevaag \}
2491*758e9fbaSOystein Eftevaag*/
2492*758e9fbaSOystein Eftevaag
2493*758e9fbaSOystein Eftevaag/*!
2494*758e9fbaSOystein Eftevaag \defgroup ifapi_eventlog  Event log utilities.
2495*758e9fbaSOystein Eftevaag \ingroup ifapi
2496*758e9fbaSOystein Eftevaag Provides internal fapi functions for the handling of event logs
2497*758e9fbaSOystein Eftevaag\{
2498*758e9fbaSOystein Eftevaag\fn void ifapi_cleanup_event(IFAPI_EVENT * event)
2499*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_eventlog_append_async(
2500*758e9fbaSOystein Eftevaag    IFAPI_EVENTLOG *eventlog,
2501*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2502*758e9fbaSOystein Eftevaag    const IFAPI_EVENT *event)
2503*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_eventlog_append_finish(
2504*758e9fbaSOystein Eftevaag    IFAPI_EVENTLOG *eventlog,
2505*758e9fbaSOystein Eftevaag    IFAPI_IO *io)
2506*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_eventlog_get_async(
2507*758e9fbaSOystein Eftevaag    IFAPI_EVENTLOG *eventlog,
2508*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2509*758e9fbaSOystein Eftevaag    const TPM2_HANDLE *pcrList,
2510*758e9fbaSOystein Eftevaag    size_t pcrListSize)
2511*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_eventlog_get_finish(
2512*758e9fbaSOystein Eftevaag    IFAPI_EVENTLOG *eventlog,
2513*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2514*758e9fbaSOystein Eftevaag    char **log)
2515*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_eventlog_initialize(
2516*758e9fbaSOystein Eftevaag    IFAPI_EVENTLOG *eventlog,
2517*758e9fbaSOystein Eftevaag    const char *log_dir)
2518*758e9fbaSOystein Eftevaag \}
2519*758e9fbaSOystein Eftevaag*/
2520*758e9fbaSOystein Eftevaag
2521*758e9fbaSOystein Eftevaag/*!
2522*758e9fbaSOystein Eftevaag \defgroup ifapi_profile  Profile module
2523*758e9fbaSOystein Eftevaag \ingroup ifapi
2524*758e9fbaSOystein Eftevaag Provides functions for the handling of profiles stored in the object store.
2525*758e9fbaSOystein Eftevaag\{
2526*758e9fbaSOystein Eftevaag
2527*758e9fbaSOystein Eftevaag\fn static TSS2_RC ifapi_profile_checkpcrs(const TPML_PCR_SELECTION *pcr_profile)
2528*758e9fbaSOystein Eftevaag\fn static TSS2_RC ifapi_profile_json_deserialize(
2529*758e9fbaSOystein Eftevaag    json_object *jso,
2530*758e9fbaSOystein Eftevaag    IFAPI_PROFILE *out)
2531*758e9fbaSOystein Eftevaag\fn void ifapi_profiles_finalize(
2532*758e9fbaSOystein Eftevaag    IFAPI_PROFILES *profiles)
2533*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_profiles_get(
2534*758e9fbaSOystein Eftevaag    const IFAPI_PROFILES *profiles,
2535*758e9fbaSOystein Eftevaag    const char *name,
2536*758e9fbaSOystein Eftevaag    const IFAPI_PROFILE **profile)
2537*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_profiles_initialize_async(
2538*758e9fbaSOystein Eftevaag    IFAPI_PROFILES *profiles,
2539*758e9fbaSOystein Eftevaag    IFAPI_IO *io,
2540*758e9fbaSOystein Eftevaag    const char *profilesdir,
2541*758e9fbaSOystein Eftevaag    const char *defaultprofile)
2542*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_profiles_initialize_finish(
2543*758e9fbaSOystein Eftevaag    IFAPI_PROFILES *profiles,
2544*758e9fbaSOystein Eftevaag    IFAPI_IO *io)
2545*758e9fbaSOystein Eftevaag
2546*758e9fbaSOystein Eftevaag\}
2547*758e9fbaSOystein Eftevaag*/
2548*758e9fbaSOystein Eftevaag
2549*758e9fbaSOystein Eftevaag/*!
2550*758e9fbaSOystein Eftevaag \defgroup ifapi_serialization FAPI object serialization module
2551*758e9fbaSOystein Eftevaag \ingroup ifapi
2552*758e9fbaSOystein Eftevaag Provides functions for the serialization of FAPI objects to JSON.
2553*758e9fbaSOystein Eftevaag \{
2554*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_FAPI_QUOTE_INFO_serialize(const FAPI_QUOTE_INFO *in,
2555*758e9fbaSOystein Eftevaag                                     json_object **jso)
2556*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_CAP_INFO_serialize(const IFAPI_CAP_INFO *in, json_object **jso)
2557*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_DUPLICATE_serialize(const IFAPI_DUPLICATE *in,
2558*758e9fbaSOystein Eftevaag                                     json_object **jso)
2559*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_EVENT_TYPE_serialize(const IFAPI_EVENT_TYPE in,
2560*758e9fbaSOystein Eftevaag                                      json_object **jso)
2561*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_EVENT_TYPE_serialize_txt(
2562*758e9fbaSOystein Eftevaag    const IFAPI_EVENT_TYPE in,
2563*758e9fbaSOystein Eftevaag    json_object **str_jso)
2564*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_EVENT_UNION_serialize(const IFAPI_EVENT_UNION *in,
2565*758e9fbaSOystein Eftevaag                                       UINT32 selector, json_object **jso)
2566*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_EVENT_serialize(const IFAPI_EVENT *in, json_object **jso)
2567*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_EXT_PUB_KEY_serialize(const IFAPI_EXT_PUB_KEY *in,
2568*758e9fbaSOystein Eftevaag                                       json_object **jso)
2569*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_HIERARCHY_serialize(const IFAPI_HIERARCHY *in, json_object **jso)
2570*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_IMA_EVENT_serialize(const IFAPI_IMA_EVENT *in,
2571*758e9fbaSOystein Eftevaag                                     json_object **jso)
2572*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_INFO_serialize(const IFAPI_INFO *in, json_object **jso)
2573*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_KEY_serialize(const IFAPI_KEY *in, json_object **jso)
2574*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_NV_serialize(const IFAPI_NV *in, json_object **jso)
2575*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_OBJECT_TYPE_CONSTANT_serialize(const IFAPI_OBJECT_TYPE_CONSTANT
2576*758e9fbaSOystein Eftevaag        in, json_object **jso)
2577*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_OBJECT_serialize(const IFAPI_OBJECT *in,
2578*758e9fbaSOystein Eftevaag                                  json_object **jso)
2579*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_TSS_EVENT_serialize(const IFAPI_TSS_EVENT *in,
2580*758e9fbaSOystein Eftevaag                                     json_object **jso)
2581*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_UINT8_ARY_serialize(const UINT8_ARY *in, json_object **jso)
2582*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_char_serialize(
2583*758e9fbaSOystein Eftevaag    const char *in,
2584*758e9fbaSOystein Eftevaag    json_object **jso)
2585*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_INT32_serialize(const INT32 in, json_object **jso)
2586*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_CREATION_DATA_serialize(const TPM2B_CREATION_DATA *in, json_object **jso)
2587*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_DATA_serialize(const TPM2B_DATA *in, json_object **jso)
2588*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_DIGEST_serialize(const TPM2B_DIGEST *in, json_object **jso)
2589*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_ECC_PARAMETER_serialize(const TPM2B_ECC_PARAMETER *in, json_object **jso)
2590*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_ENCRYPTED_SECRET_serialize(const TPM2B_ENCRYPTED_SECRET *in, json_object **jso)
2591*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_EVENT_serialize(const TPM2B_EVENT *in, json_object **jso)
2592*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_MAX_NV_BUFFER_serialize(const TPM2B_MAX_NV_BUFFER *in, json_object **jso)
2593*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_NAME_serialize(const TPM2B_NAME *in, json_object **jso)
2594*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_NONCE_serialize(const TPM2B_NONCE *in, json_object **jso)
2595*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_NV_PUBLIC_serialize(const TPM2B_NV_PUBLIC *in, json_object **jso)
2596*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_OPERAND_serialize(const TPM2B_OPERAND *in, json_object **jso)
2597*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_PRIVATE_serialize(const TPM2B_PRIVATE *in, json_object **jso)
2598*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_PUBLIC_KEY_RSA_serialize(const TPM2B_PUBLIC_KEY_RSA *in, json_object **jso)
2599*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_PUBLIC_serialize(const TPM2B_PUBLIC *in, json_object **jso)
2600*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_ALG_ID_serialize(const TPM2_ALG_ID in, json_object **jso)
2601*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_CAP_serialize(const TPM2_CAP in, json_object **jso)
2602*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_CC_serialize(const TPM2_CC in, json_object **jso)
2603*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_ECC_CURVE_serialize(const TPM2_ECC_CURVE in, json_object **jso)
2604*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_EO_serialize(const TPM2_EO in, json_object **jso)
2605*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_GENERATED_serialize(const TPM2_GENERATED in, json_object **jso)
2606*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_HANDLE_serialize(const TPM2_HANDLE in, json_object **jso)
2607*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_NT_serialize(const TPM2_NT in, json_object **jso)
2608*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_PT_PCR_serialize(const TPM2_PT_PCR in, json_object **jso)
2609*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_PT_serialize(const TPM2_PT in, json_object **jso)
2610*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_ST_serialize(const TPM2_ST in, json_object **jso)
2611*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMA_ALGORITHM_serialize(const TPMA_ALGORITHM in, json_object **jso)
2612*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMA_CC_serialize(const TPMA_CC in, json_object **jso)
2613*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMA_LOCALITY_serialize(const TPMA_LOCALITY in, json_object **jso)
2614*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMA_NV_serialize(const TPMA_NV in, json_object **jso)
2615*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMA_OBJECT_serialize(const TPMA_OBJECT in, json_object **jso)
2616*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_AES_KEY_BITS_serialize(const TPMI_AES_KEY_BITS in, json_object **jso)
2617*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_ASYM_SCHEME_serialize(const TPMI_ALG_ASYM_SCHEME in, json_object **jso)
2618*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_ECC_SCHEME_serialize(const TPMI_ALG_ECC_SCHEME in, json_object **jso)
2619*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_HASH_serialize(const TPMI_ALG_HASH in, json_object **jso)
2620*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_KDF_serialize(const TPMI_ALG_KDF in, json_object **jso)
2621*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_KEYEDHASH_SCHEME_serialize(const TPMI_ALG_KEYEDHASH_SCHEME in, json_object **jso)
2622*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_PUBLIC_serialize(const TPMI_ALG_PUBLIC in, json_object **jso)
2623*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_RSA_SCHEME_serialize(const TPMI_ALG_RSA_SCHEME in, json_object **jso)
2624*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_SIG_SCHEME_serialize(const TPMI_ALG_SIG_SCHEME in,
2625*758e9fbaSOystein Eftevaag        json_object **jso)
2626*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_SYM_MODE_serialize(const TPMI_ALG_SYM_MODE in,
2627*758e9fbaSOystein Eftevaag                                       json_object **jso)
2628*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_SYM_OBJECT_serialize(const TPMI_ALG_SYM_OBJECT in,
2629*758e9fbaSOystein Eftevaag        json_object **jso)
2630*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ECC_CURVE_serialize(const TPMI_ECC_CURVE in, json_object **jso)
2631*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_RH_HIERARCHY_serialize(const TPMI_RH_HIERARCHY in,
2632*758e9fbaSOystein Eftevaag                                       json_object **jso)
2633*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_RH_NV_INDEX_serialize(const TPMI_RH_NV_INDEX in,
2634*758e9fbaSOystein Eftevaag                                      json_object **jso)
2635*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_RSA_KEY_BITS_serialize(const TPMI_RSA_KEY_BITS in, json_object **jso)
2636*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ST_ATTEST_serialize(const TPMI_ST_ATTEST in, json_object **jso)
2637*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_YES_NO_serialize(const TPMI_YES_NO in, json_object **jso)
2638*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_ALG_PROPERTY_serialize(const TPML_ALG_PROPERTY *in, json_object **jso)
2639*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_CCA_serialize(const TPML_CCA *in, json_object **jso)
2640*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_CC_serialize(const TPML_CC *in, json_object **jso)
2641*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_DIGEST_VALUES_serialize(const TPML_DIGEST_VALUES *in, json_object **jso)
2642*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_ECC_CURVE_serialize(const TPML_ECC_CURVE *in, json_object **jso)
2643*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_HANDLE_serialize(const TPML_HANDLE *in, json_object **jso)
2644*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_PCR_SELECTION_serialize(const TPML_PCR_SELECTION *in, json_object **jso)
2645*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_TAGGED_PCR_PROPERTY_serialize(const TPML_TAGGED_PCR_PROPERTY *in, json_object **jso)
2646*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_TAGGED_TPM_PROPERTY_serialize(const TPML_TAGGED_TPM_PROPERTY *in, json_object **jso)
2647*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ALG_PROPERTY_serialize(const TPMS_ALG_PROPERTY *in, json_object **jso)
2648*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ASYM_PARMS_serialize(const TPMS_ASYM_PARMS *in, json_object **jso)
2649*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ATTEST_serialize(const TPMS_ATTEST *in, json_object **jso)
2650*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_CAPABILITY_DATA_serialize(const TPMS_CAPABILITY_DATA *in, json_object **jso)
2651*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_CERTIFY_INFO_serialize(const TPMS_CERTIFY_INFO *in, json_object **jso)
2652*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_CLOCK_INFO_serialize(const TPMS_CLOCK_INFO *in, json_object **jso)
2653*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_COMMAND_AUDIT_INFO_serialize(const TPMS_COMMAND_AUDIT_INFO *in, json_object **jso)
2654*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_CREATION_DATA_serialize(const TPMS_CREATION_DATA *in, json_object **jso)
2655*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_CREATION_INFO_serialize(const TPMS_CREATION_INFO *in, json_object **jso)
2656*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ECC_PARMS_serialize(const TPMS_ECC_PARMS *in, json_object **jso)
2657*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ECC_POINT_serialize(const TPMS_ECC_POINT *in, json_object **jso)
2658*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_EMPTY_serialize(const TPMS_EMPTY *in, json_object **jso)
2659*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ENC_SCHEME_OAEP_serialize(const TPMS_ENC_SCHEME_OAEP *in, json_object **jso)
2660*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ENC_SCHEME_RSAES_serialize(const TPMS_ENC_SCHEME_RSAES *in, json_object **jso)
2661*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_KEYEDHASH_PARMS_serialize(const TPMS_KEYEDHASH_PARMS *in, json_object **jso)
2662*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_KEY_SCHEME_ECDH_serialize(const TPMS_KEY_SCHEME_ECDH *in, json_object **jso)
2663*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_NV_CERTIFY_INFO_serialize(const TPMS_NV_CERTIFY_INFO *in, json_object **jso)
2664*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_NV_PUBLIC_serialize(const TPMS_NV_PUBLIC *in, json_object **jso)
2665*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_PCR_SELECTION_serialize(const TPMS_PCR_SELECTION *in,
2666*758e9fbaSOystein Eftevaag                                        json_object **jso)
2667*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_PCR_SELECT_serialize(const TPMS_PCR_SELECT *in,
2668*758e9fbaSOystein Eftevaag                                        json_object **jso)
2669*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_QUOTE_INFO_serialize(const TPMS_QUOTE_INFO *in, json_object **jso)
2670*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_RSA_PARMS_serialize(const TPMS_RSA_PARMS *in, json_object **jso)
2671*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_ECDAA_serialize(const TPMS_SCHEME_ECDAA *in, json_object **jso)
2672*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_HASH_serialize(const TPMS_SCHEME_HASH *in, json_object **jso)
2673*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_HMAC_serialize(const TPMS_SCHEME_HMAC *in, json_object **jso)
2674*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_KDF1_SP800_108_serialize(const TPMS_SCHEME_KDF1_SP800_108 *in, json_object **jso)
2675*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_KDF1_SP800_56A_serialize(const TPMS_SCHEME_KDF1_SP800_56A *in, json_object **jso)
2676*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_MGF1_serialize(const TPMS_SCHEME_MGF1 *in, json_object **jso)
2677*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_XOR_serialize(const TPMS_SCHEME_XOR *in, json_object **jso)
2678*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SESSION_AUDIT_INFO_serialize(const TPMS_SESSION_AUDIT_INFO *in, json_object **jso)
2679*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_ECC_serialize(const TPMS_SIGNATURE_ECC *in, json_object **jso)
2680*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_ECDAA_serialize(const TPMS_SIGNATURE_ECDAA *in, json_object **jso)
2681*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_ECDSA_serialize(const TPMS_SIGNATURE_ECDSA *in, json_object **jso)
2682*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_ECSCHNORR_serialize(const TPMS_SIGNATURE_ECSCHNORR *in, json_object **jso)
2683*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_RSAPSS_serialize(const TPMS_SIGNATURE_RSAPSS *in, json_object **jso)
2684*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_RSASSA_serialize(const TPMS_SIGNATURE_RSASSA *in, json_object **jso)
2685*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_RSA_serialize(const TPMS_SIGNATURE_RSA *in, json_object **jso)
2686*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_SM2_serialize(const TPMS_SIGNATURE_SM2 *in, json_object **jso)
2687*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_ECDAA_serialize(const TPMS_SIG_SCHEME_ECDAA *in, json_object **jso)
2688*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_ECDSA_serialize(const TPMS_SIG_SCHEME_ECDSA *in, json_object **jso)
2689*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_ECSCHNORR_serialize(const TPMS_SIG_SCHEME_ECSCHNORR *in, json_object **jso)
2690*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_RSAPSS_serialize(const TPMS_SIG_SCHEME_RSAPSS *in, json_object **jso)
2691*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_RSASSA_serialize(const TPMS_SIG_SCHEME_RSASSA *in, json_object **jso)
2692*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_SM2_serialize(const TPMS_SIG_SCHEME_SM2 *in, json_object **jso)
2693*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SYMCIPHER_PARMS_serialize(const TPMS_SYMCIPHER_PARMS *in, json_object **jso)
2694*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_TAGGED_PCR_SELECT_serialize(const TPMS_TAGGED_PCR_SELECT *in,
2695*758e9fbaSOystein Eftevaag        json_object **jso)
2696*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_TAGGED_PROPERTY_serialize(const TPMS_TAGGED_PROPERTY *in, json_object **jso)
2697*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_TIME_ATTEST_INFO_serialize(const TPMS_TIME_ATTEST_INFO *in, json_object **jso)
2698*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_TIME_INFO_serialize(const TPMS_TIME_INFO *in, json_object **jso)
2699*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_ASYM_SCHEME_serialize(const TPMT_ASYM_SCHEME *in, json_object **jso)
2700*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_ECC_SCHEME_serialize(const TPMT_ECC_SCHEME *in, json_object **jso)
2701*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_HA_serialize(const TPMT_HA *in, json_object **jso)
2702*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_KDF_SCHEME_serialize(const TPMT_KDF_SCHEME *in, json_object **jso)
2703*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_KEYEDHASH_SCHEME_serialize(const TPMT_KEYEDHASH_SCHEME *in, json_object **jso)
2704*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_PUBLIC_serialize(const TPMT_PUBLIC *in, json_object **jso)
2705*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_RSA_SCHEME_serialize(const TPMT_RSA_SCHEME *in, json_object **jso)
2706*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_SIGNATURE_serialize(const TPMT_SIGNATURE *in, json_object **jso)
2707*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_SIG_SCHEME_serialize(const TPMT_SIG_SCHEME *in, json_object **jso)
2708*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_SYM_DEF_OBJECT_serialize(const TPMT_SYM_DEF_OBJECT *in, json_object **jso)
2709*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_TK_CREATION_serialize(const TPMT_TK_CREATION *in, json_object **jso)
2710*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_ASYM_SCHEME_serialize(const TPMU_ASYM_SCHEME *in, UINT32 selector, json_object **jso)
2711*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_ATTEST_serialize(const TPMU_ATTEST *in, UINT32 selector, json_object **jso)
2712*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_CAPABILITIES_serialize(const TPMU_CAPABILITIES *in, UINT32 selector, json_object **jso)
2713*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_HA_serialize(const TPMU_HA *in, UINT32 selector,
2714*758e9fbaSOystein Eftevaag                             json_object **jso)
2715*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_KDF_SCHEME_serialize(const TPMU_KDF_SCHEME *in, UINT32 selector, json_object **jso)
2716*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_PUBLIC_ID_serialize(const TPMU_PUBLIC_ID *in, UINT32 selector, json_object **jso)
2717*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_PUBLIC_PARMS_serialize(const TPMU_PUBLIC_PARMS *in, UINT32 selector, json_object **jso)
2718*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_SCHEME_KEYEDHASH_serialize(const TPMU_SCHEME_KEYEDHASH *in, UINT32 selector, json_object **jso)
2719*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_SIGNATURE_serialize(const TPMU_SIGNATURE *in, UINT32 selector, json_object **jso)
2720*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_SIG_SCHEME_serialize(const TPMU_SIG_SCHEME *in, UINT32 selector, json_object **jso)
2721*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_SYM_KEY_BITS_serialize(const TPMU_SYM_KEY_BITS *in, UINT32 selector, json_object **jso)
2722*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_SYM_MODE_serialize(const TPMU_SYM_MODE *in, UINT32 selector, json_object **jso)
2723*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_UINT16_serialize(const UINT16 in, json_object **jso)
2724*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_UINT32_serialize(const UINT32 in, json_object **jso)
2725*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_UINT64_serialize(UINT64 in, json_object **jso)
2726*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_pcr_select_serialize(
2727*758e9fbaSOystein Eftevaag    const UINT8 sizeofSelect,
2728*758e9fbaSOystein Eftevaag    const BYTE pcrSelect[],
2729*758e9fbaSOystein Eftevaag    json_object **jso)
2730*758e9fbaSOystein Eftevaag    \fn TSS2_RC ifapi_json_TPMI_POLICYTYPE_serialize(const TPMI_POLICYTYPE in,
2731*758e9fbaSOystein Eftevaag                                     json_object **jso)
2732*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_POLICYTYPE_serialize_txt(
2733*758e9fbaSOystein Eftevaag    const TPMI_POLICYTYPE in,
2734*758e9fbaSOystein Eftevaag    json_object **str_jso)
2735*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_PCRVALUES_serialize(const TPML_PCRVALUES *in, json_object **jso)
2736*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_POLICYAUTHORIZATIONS_serialize(const TPML_POLICYAUTHORIZATIONS
2737*758e9fbaSOystein Eftevaag        *in, json_object **jso)
2738*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_POLICYBRANCHES_serialize(const TPML_POLICYBRANCHES *in,
2739*758e9fbaSOystein Eftevaag        json_object **jso)
2740*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_POLICYELEMENTS_serialize(const TPML_POLICYELEMENTS *in,
2741*758e9fbaSOystein Eftevaag        json_object **jso)
2742*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_PCRVALUE_serialize(const TPMS_PCRVALUE *in, json_object **jso)
2743*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYACTION_serialize(const TPMS_POLICYACTION *in,
2744*758e9fbaSOystein Eftevaag                                       json_object **jso)
2745*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYAUTHORIZATION_serialize(
2746*758e9fbaSOystein Eftevaag    const TPMS_POLICYAUTHORIZATION *in,
2747*758e9fbaSOystein Eftevaag    json_object **jso)
2748*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYAUTHORIZENV_serialize(const TPMS_POLICYAUTHORIZENV *in,
2749*758e9fbaSOystein Eftevaag        json_object **jso)
2750*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYAUTHORIZE_serialize(const TPMS_POLICYAUTHORIZE *in,
2751*758e9fbaSOystein Eftevaag        json_object **jso)
2752*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYAUTHVALUE_serialize(const TPMS_POLICYAUTHVALUE *in,
2753*758e9fbaSOystein Eftevaag        json_object **jso)
2754*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYBRANCH_serialize(const TPMS_POLICYBRANCH *in,
2755*758e9fbaSOystein Eftevaag                                       json_object **jso)
2756*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYCOMMANDCODE_serialize(const TPMS_POLICYCOMMANDCODE *in,
2757*758e9fbaSOystein Eftevaag        json_object **jso)
2758*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYCOUNTERTIMER_serialize(const TPMS_POLICYCOUNTERTIMER *in,
2759*758e9fbaSOystein Eftevaag        json_object **jso)
2760*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYCPHASH_serialize(const TPMS_POLICYCPHASH *in,
2761*758e9fbaSOystein Eftevaag                                       json_object **jso)
2762*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYDUPLICATIONSELECT_serialize(const
2763*758e9fbaSOystein Eftevaag        TPMS_POLICYDUPLICATIONSELECT *in, json_object **jso)
2764*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYLOCALITY_serialize(const TPMS_POLICYLOCALITY *in,
2765*758e9fbaSOystein Eftevaag        json_object **jso)
2766*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYNAMEHASH_serialize(const TPMS_POLICYNAMEHASH *in,
2767*758e9fbaSOystein Eftevaag        json_object **jso)
2768*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYNVWRITTEN_serialize(const TPMS_POLICYNVWRITTEN *in,
2769*758e9fbaSOystein Eftevaag        json_object **jso)
2770*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYNV_serialize(const TPMS_POLICYNV *in, json_object **jso)
2771*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYOR_serialize(const TPMS_POLICYOR *in, json_object **jso)
2772*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYPASSWORD_serialize(const TPMS_POLICYPASSWORD *in,
2773*758e9fbaSOystein Eftevaag        json_object **jso)
2774*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYPCR_serialize(const TPMS_POLICYPCR *in, json_object **jso)
2775*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYPHYSICALPRESENCE_serialize(const
2776*758e9fbaSOystein Eftevaag        TPMS_POLICYPHYSICALPRESENCE *in, json_object **jso)
2777*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYSECRET_serialize(const TPMS_POLICYSECRET *in,
2778*758e9fbaSOystein Eftevaag                                       json_object **jso)
2779*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYSIGNED_serialize(const TPMS_POLICYSIGNED *in,
2780*758e9fbaSOystein Eftevaag                                       json_object **jso)
2781*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYTEMPLATE_serialize(const TPMS_POLICYTEMPLATE *in,
2782*758e9fbaSOystein Eftevaag        json_object **jso)
2783*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICY_serialize(const TPMS_POLICY *in,
2784*758e9fbaSOystein Eftevaag        json_object **jso)
2785*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_POLICYELEMENT_serialize(const TPMT_POLICYELEMENT *in,
2786*758e9fbaSOystein Eftevaag                                        json_object **jso)
2787*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_POLICYELEMENT_serialize(const TPMU_POLICYELEMENT *in,
2788*758e9fbaSOystein Eftevaag                                        UINT32 selector, json_object **jso)
2789*758e9fbaSOystein Eftevaag\fn static TSS2_RC ifapi_json_char_serialize(
2790*758e9fbaSOystein Eftevaag    const char *in,
2791*758e9fbaSOystein Eftevaag    json_object **jso)
2792*758e9fbaSOystein Eftevaag
2793*758e9fbaSOystein Eftevaag
2794*758e9fbaSOystein Eftevaag \}
2795*758e9fbaSOystein Eftevaag*/
2796*758e9fbaSOystein Eftevaag
2797*758e9fbaSOystein Eftevaag
2798*758e9fbaSOystein Eftevaag/*!
2799*758e9fbaSOystein Eftevaag \defgroup ifapi_deserialization FAPI object deserialization module
2800*758e9fbaSOystein Eftevaag \ingroup ifapi
2801*758e9fbaSOystein Eftevaag Provides functions for the deserialization from JSON to FAPI objects.
2802*758e9fbaSOystein Eftevaag \{
2803*758e9fbaSOystein Eftevaag\fn static bool get_number(const char *token, int64_t *num)
2804*758e9fbaSOystein Eftevaag\fn static int get_token_start_idx(const char *token)
2805*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_FAPI_QUOTE_INFO_deserialize(json_object *jso,  FAPI_QUOTE_INFO *out)
2806*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_DUPLICATE_deserialize(json_object *jso, IFAPI_DUPLICATE *out)
2807*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_EVENT_TYPE_deserialize(json_object *jso, IFAPI_EVENT_TYPE *out)
2808*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_EVENT_TYPE_deserialize_txt(json_object *jso,
2809*758e9fbaSOystein Eftevaag        IFAPI_EVENT_TYPE *out)
2810*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_EVENT_UNION_deserialize(
2811*758e9fbaSOystein Eftevaag    UINT32 selector,
2812*758e9fbaSOystein Eftevaag    json_object *jso,
2813*758e9fbaSOystein Eftevaag    IFAPI_EVENT_UNION *out)
2814*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_EVENT_deserialize(json_object *jso,  IFAPI_EVENT *out)
2815*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_EXT_PUB_KEY_deserialize(json_object *jso,
2816*758e9fbaSOystein Eftevaag        IFAPI_EXT_PUB_KEY *out)
2817*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_HIERARCHY_deserialize(json_object *jso,  IFAPI_HIERARCHY *out)
2818*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_IMA_EVENT_deserialize(json_object *jso,  IFAPI_IMA_EVENT *out)
2819*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_KEY_deserialize(json_object *jso,  IFAPI_KEY *out)
2820*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_NV_deserialize(json_object *jso,  IFAPI_NV *out)
2821*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_OBJECT_TYPE_CONSTANT_deserialize(json_object *jso,
2822*758e9fbaSOystein Eftevaag        IFAPI_OBJECT_TYPE_CONSTANT *out)
2823*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_OBJECT_deserialize(json_object *jso, IFAPI_OBJECT *out)
2824*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_IFAPI_TSS_EVENT_deserialize(json_object *jso,  IFAPI_TSS_EVENT *out)
2825*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_char_deserialize(
2826*758e9fbaSOystein Eftevaag    json_object *jso,
2827*758e9fbaSOystein Eftevaag    char **out)
2828*758e9fbaSOystein Eftevaag\fn static TSS2_RC get_boolean_from_json(json_object *jso, TPMI_YES_NO *value)
2829*758e9fbaSOystein Eftevaag\fn static bool get_number(const char *token, int64_t *num)
2830*758e9fbaSOystein Eftevaag\fn static TSS2_RC get_number_from_json(json_object *jso, int64_t *num)
2831*758e9fbaSOystein Eftevaag\fn bool ifapi_get_sub_object(json_object *jso, char *name, json_object **sub_jso)
2832*758e9fbaSOystein Eftevaag\fn static TSS2_RC ifapi_hex_to_byte_ary(const char hex[], UINT32 vlen, BYTE val[])
2833*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_BYTE_array_deserialize(size_t max, json_object *jso, BYTE *out)
2834*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_BYTE_deserialize(json_object *jso, BYTE *out)
2835*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_CREATION_DATA_deserialize(json_object *jso,
2836*758e9fbaSOystein Eftevaag        TPM2B_CREATION_DATA *out)
2837*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_DATA_deserialize(json_object *jso,  TPM2B_DATA *out)
2838*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_DIGEST_deserialize(json_object *jso,  TPM2B_DIGEST *out)
2839*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_ECC_PARAMETER_deserialize(json_object *jso,
2840*758e9fbaSOystein Eftevaag        TPM2B_ECC_PARAMETER *out)
2841*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_ENCRYPTED_SECRET_deserialize(json_object *jso,
2842*758e9fbaSOystein Eftevaag        TPM2B_ENCRYPTED_SECRET *out)
2843*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_EVENT_deserialize(json_object *jso,  TPM2B_EVENT *out)
2844*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_MAX_NV_BUFFER_deserialize(json_object *jso,
2845*758e9fbaSOystein Eftevaag        TPM2B_MAX_NV_BUFFER *out)
2846*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_NAME_deserialize(json_object *jso,  TPM2B_NAME *out)
2847*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_NONCE_deserialize(json_object *jso, TPM2B_NONCE *out)
2848*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_NV_PUBLIC_deserialize(json_object *jso, TPM2B_NV_PUBLIC *out)
2849*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_OPERAND_deserialize(json_object *jso, TPM2B_OPERAND *out)
2850*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_PRIVATE_deserialize(json_object *jso,  TPM2B_PRIVATE *out)
2851*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_PUBLIC_KEY_RSA_deserialize(json_object *jso,
2852*758e9fbaSOystein Eftevaag        TPM2B_PUBLIC_KEY_RSA *out)
2853*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2B_PUBLIC_deserialize(json_object *jso, TPM2B_PUBLIC *out)
2854*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_ALG_ID_deserialize(json_object *jso, TPM2_ALG_ID *out)
2855*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_CC_deserialize(json_object *jso, TPM2_CC *out)
2856*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_ECC_CURVE_deserialize(json_object *jso, TPM2_ECC_CURVE *out)
2857*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_EO_deserialize(json_object *jso, TPM2_EO *out)
2858*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_GENERATED_deserialize(json_object *jso, TPM2_GENERATED *out)
2859*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_HANDLE_deserialize(json_object *jso, TPM2_HANDLE *out)
2860*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_NT_deserialize(json_object *jso, TPM2_NT *out)
2861*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_PT_PCR_deserialize(json_object *jso, TPM2_PT_PCR *out)
2862*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPM2_ST_deserialize(json_object *jso, TPM2_ST *out)
2863*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMA_LOCALITY_deserialize(json_object *jso, TPMA_LOCALITY *out)
2864*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMA_NV_deserialize(json_object *jso, TPMA_NV *out)
2865*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMA_OBJECT_deserialize(json_object *jso, TPMA_OBJECT *out)
2866*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_AES_KEY_BITS_deserialize(json_object *jso, TPMI_AES_KEY_BITS *out)
2867*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_ECC_SCHEME_deserialize(json_object *jso,
2868*758e9fbaSOystein Eftevaag        TPMI_ALG_ECC_SCHEME *out)
2869*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_HASH_deserialize(json_object *jso, TPMI_ALG_HASH *out)
2870*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_KDF_deserialize(json_object *jso, TPMI_ALG_KDF *out)
2871*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_KEYEDHASH_SCHEME_deserialize(json_object *jso,
2872*758e9fbaSOystein Eftevaag        TPMI_ALG_KEYEDHASH_SCHEME *out)
2873*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_PUBLIC_deserialize(json_object *jso, TPMI_ALG_PUBLIC *out)
2874*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_RSA_DECRYPT_deserialize(json_object *jso,
2875*758e9fbaSOystein Eftevaag        TPMI_ALG_RSA_DECRYPT *out)
2876*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_RSA_SCHEME_deserialize(json_object *jso,
2877*758e9fbaSOystein Eftevaag        TPMI_ALG_RSA_SCHEME *out)
2878*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_SIG_SCHEME_deserialize(json_object *jso,
2879*758e9fbaSOystein Eftevaag        TPMI_ALG_SIG_SCHEME *out)
2880*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_SYM_MODE_deserialize(json_object *jso,
2881*758e9fbaSOystein Eftevaag        TPMI_ALG_SYM_MODE *out)
2882*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_SYM_OBJECT_deserialize(json_object *jso,
2883*758e9fbaSOystein Eftevaag        TPMI_ALG_SYM_OBJECT *out)
2884*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ALG_SYM_deserialize(json_object *jso, TPMI_ALG_SYM *out)
2885*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ECC_CURVE_deserialize(json_object *jso, TPMI_ECC_CURVE *out)
2886*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_RH_HIERARCHY_deserialize(json_object *jso,
2887*758e9fbaSOystein Eftevaag        TPMI_RH_HIERARCHY *out)
2888*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_RH_NV_INDEX_deserialize(json_object *jso, TPMI_RH_NV_INDEX *out)
2889*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_RSA_KEY_BITS_deserialize(json_object *jso,
2890*758e9fbaSOystein Eftevaag        TPMI_RSA_KEY_BITS *out)
2891*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_ST_ATTEST_deserialize(json_object *jso, TPMI_ST_ATTEST *out)
2892*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_YES_NO_deserialize(json_object *jso, TPMI_YES_NO *out)
2893*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_DIGEST_VALUES_deserialize(json_object *jso,
2894*758e9fbaSOystein Eftevaag        TPML_DIGEST_VALUES *out)
2895*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_PCR_SELECTION_deserialize(json_object *jso,
2896*758e9fbaSOystein Eftevaag        TPML_PCR_SELECTION *out)
2897*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ATTEST_deserialize(json_object *jso,  TPMS_ATTEST *out)
2898*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_CERTIFY_INFO_deserialize(json_object *jso,
2899*758e9fbaSOystein Eftevaag        TPMS_CERTIFY_INFO *out)
2900*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_CLOCK_INFO_deserialize(json_object *jso,  TPMS_CLOCK_INFO *out)
2901*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_COMMAND_AUDIT_INFO_deserialize(json_object *jso,
2902*758e9fbaSOystein Eftevaag        TPMS_COMMAND_AUDIT_INFO *out)
2903*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_CREATION_DATA_deserialize(json_object *jso,
2904*758e9fbaSOystein Eftevaag        TPMS_CREATION_DATA *out)
2905*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_CREATION_INFO_deserialize(json_object *jso,
2906*758e9fbaSOystein Eftevaag        TPMS_CREATION_INFO *out)
2907*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ECC_PARMS_deserialize(json_object *jso,  TPMS_ECC_PARMS *out)
2908*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ECC_POINT_deserialize(json_object *jso,  TPMS_ECC_POINT *out)
2909*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_EMPTY_deserialize(json_object *jso, TPMS_EMPTY *out)
2910*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ENC_SCHEME_OAEP_deserialize(json_object *jso,
2911*758e9fbaSOystein Eftevaag        TPMS_ENC_SCHEME_OAEP *out)
2912*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_ENC_SCHEME_RSAES_deserialize(json_object *jso,
2913*758e9fbaSOystein Eftevaag        TPMS_ENC_SCHEME_RSAES *out)
2914*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_KEYEDHASH_PARMS_deserialize(json_object *jso,
2915*758e9fbaSOystein Eftevaag        TPMS_KEYEDHASH_PARMS *out)
2916*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_KEY_SCHEME_ECDH_deserialize(json_object *jso,
2917*758e9fbaSOystein Eftevaag        TPMS_KEY_SCHEME_ECDH *out)
2918*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_NV_CERTIFY_INFO_deserialize(json_object *jso,
2919*758e9fbaSOystein Eftevaag        TPMS_NV_CERTIFY_INFO *out)
2920*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_NV_PUBLIC_deserialize(json_object *jso,  TPMS_NV_PUBLIC *out)
2921*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_PCR_SELECTION_deserialize(json_object *jso,
2922*758e9fbaSOystein Eftevaag        TPMS_PCR_SELECTION *out)
2923*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_PCR_SELECT_deserialize(json_object *jso,  TPMS_PCR_SELECT *out)
2924*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_QUOTE_INFO_deserialize(json_object *jso,  TPMS_QUOTE_INFO *out)
2925*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_RSA_PARMS_deserialize(json_object *jso,  TPMS_RSA_PARMS *out)
2926*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_ECDAA_deserialize(json_object *jso,
2927*758e9fbaSOystein Eftevaag        TPMS_SCHEME_ECDAA *out)
2928*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_HASH_deserialize(json_object *jso,
2929*758e9fbaSOystein Eftevaag                                        TPMS_SCHEME_HASH *out)
2930*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_HMAC_deserialize(json_object *jso, TPMS_SCHEME_HMAC *out)
2931*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_KDF1_SP800_108_deserialize(json_object *jso,
2932*758e9fbaSOystein Eftevaag        TPMS_SCHEME_KDF1_SP800_108 *out)
2933*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_KDF1_SP800_56A_deserialize(json_object *jso,
2934*758e9fbaSOystein Eftevaag        TPMS_SCHEME_KDF1_SP800_56A *out)
2935*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_MGF1_deserialize(json_object *jso, TPMS_SCHEME_MGF1 *out)
2936*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SCHEME_XOR_deserialize(json_object *jso,  TPMS_SCHEME_XOR *out)
2937*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SESSION_AUDIT_INFO_deserialize(json_object *jso,
2938*758e9fbaSOystein Eftevaag        TPMS_SESSION_AUDIT_INFO *out)
2939*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_ECC_deserialize(json_object *jso,
2940*758e9fbaSOystein Eftevaag        TPMS_SIGNATURE_ECC *out)
2941*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_ECDAA_deserialize(json_object *jso,
2942*758e9fbaSOystein Eftevaag        TPMS_SIGNATURE_ECDAA *out)
2943*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_ECDSA_deserialize(json_object *jso,
2944*758e9fbaSOystein Eftevaag        TPMS_SIGNATURE_ECDSA *out)
2945*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_ECSCHNORR_deserialize(json_object *jso,
2946*758e9fbaSOystein Eftevaag        TPMS_SIGNATURE_ECSCHNORR *out)
2947*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_RSAPSS_deserialize(json_object *jso,
2948*758e9fbaSOystein Eftevaag        TPMS_SIGNATURE_RSAPSS *out)
2949*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_RSASSA_deserialize(json_object *jso,
2950*758e9fbaSOystein Eftevaag        TPMS_SIGNATURE_RSASSA *out)
2951*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_RSA_deserialize(json_object *jso,
2952*758e9fbaSOystein Eftevaag        TPMS_SIGNATURE_RSA *out)
2953*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIGNATURE_SM2_deserialize(json_object *jso,
2954*758e9fbaSOystein Eftevaag        TPMS_SIGNATURE_SM2 *out)
2955*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_ECDAA_deserialize(json_object *jso,
2956*758e9fbaSOystein Eftevaag        TPMS_SIG_SCHEME_ECDAA *out)
2957*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_ECDSA_deserialize(json_object *jso,
2958*758e9fbaSOystein Eftevaag        TPMS_SIG_SCHEME_ECDSA *out)
2959*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_ECSCHNORR_deserialize(json_object *jso,
2960*758e9fbaSOystein Eftevaag        TPMS_SIG_SCHEME_ECSCHNORR *out)
2961*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_RSAPSS_deserialize(json_object *jso,
2962*758e9fbaSOystein Eftevaag        TPMS_SIG_SCHEME_RSAPSS *out)
2963*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_RSASSA_deserialize(json_object *jso,
2964*758e9fbaSOystein Eftevaag        TPMS_SIG_SCHEME_RSASSA *out)
2965*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SIG_SCHEME_SM2_deserialize(json_object *jso,
2966*758e9fbaSOystein Eftevaag        TPMS_SIG_SCHEME_SM2 *out)
2967*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_SYMCIPHER_PARMS_deserialize(json_object *jso,
2968*758e9fbaSOystein Eftevaag        TPMS_SYMCIPHER_PARMS *out)
2969*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_TIME_ATTEST_INFO_deserialize(json_object *jso,
2970*758e9fbaSOystein Eftevaag        TPMS_TIME_ATTEST_INFO *out)
2971*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_TIME_INFO_deserialize(json_object *jso,  TPMS_TIME_INFO *out)
2972*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_ECC_SCHEME_deserialize(json_object *jso,  TPMT_ECC_SCHEME *out)
2973*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_HA_deserialize(json_object *jso,  TPMT_HA *out)
2974*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_KDF_SCHEME_deserialize(json_object *jso,  TPMT_KDF_SCHEME *out)
2975*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_KEYEDHASH_SCHEME_deserialize(json_object *jso,
2976*758e9fbaSOystein Eftevaag        TPMT_KEYEDHASH_SCHEME *out)
2977*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_PUBLIC_deserialize(json_object *jso,  TPMT_PUBLIC *out)
2978*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_RSA_DECRYPT_deserialize(json_object *jso,
2979*758e9fbaSOystein Eftevaag                                        TPMT_RSA_DECRYPT *out)
2980*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_RSA_SCHEME_deserialize(json_object *jso,  TPMT_RSA_SCHEME *out)
2981*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_SIGNATURE_deserialize(json_object *jso,  TPMT_SIGNATURE *out)
2982*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_SIG_SCHEME_deserialize(json_object *jso,  TPMT_SIG_SCHEME *out)
2983*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_SYM_DEF_OBJECT_deserialize(json_object *jso,
2984*758e9fbaSOystein Eftevaag        TPMT_SYM_DEF_OBJECT *out)
2985*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_SYM_DEF_deserialize(json_object *jso,  TPMT_SYM_DEF *out)
2986*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_TK_CREATION_deserialize(json_object *jso,
2987*758e9fbaSOystein Eftevaag                                        TPMT_TK_CREATION *out)
2988*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_TK_VERIFIED_deserialize(json_object *jso,
2989*758e9fbaSOystein Eftevaag                                        TPMT_TK_VERIFIED *out)
2990*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_ASYM_SCHEME_deserialize(
2991*758e9fbaSOystein Eftevaag    UINT32 selector,
2992*758e9fbaSOystein Eftevaag    json_object *jso,
2993*758e9fbaSOystein Eftevaag    TPMU_ASYM_SCHEME *out)
2994*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_ATTEST_deserialize(
2995*758e9fbaSOystein Eftevaag    UINT32 selector,
2996*758e9fbaSOystein Eftevaag    json_object *jso,
2997*758e9fbaSOystein Eftevaag    TPMU_ATTEST *out)
2998*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_HA_deserialize(
2999*758e9fbaSOystein Eftevaag    UINT32 selector,
3000*758e9fbaSOystein Eftevaag    json_object *jso,
3001*758e9fbaSOystein Eftevaag    TPMU_HA *out)
3002*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_KDF_SCHEME_deserialize(
3003*758e9fbaSOystein Eftevaag    UINT32 selector,
3004*758e9fbaSOystein Eftevaag    json_object *jso,
3005*758e9fbaSOystein Eftevaag    TPMU_KDF_SCHEME *out)
3006*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_PUBLIC_ID_deserialize(
3007*758e9fbaSOystein Eftevaag    UINT32 selector,
3008*758e9fbaSOystein Eftevaag    json_object *jso,
3009*758e9fbaSOystein Eftevaag    TPMU_PUBLIC_ID *out)
3010*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_PUBLIC_PARMS_deserialize(
3011*758e9fbaSOystein Eftevaag    UINT32 selector,
3012*758e9fbaSOystein Eftevaag    json_object *jso,
3013*758e9fbaSOystein Eftevaag    TPMU_PUBLIC_PARMS *out)
3014*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_SCHEME_KEYEDHASH_deserialize(
3015*758e9fbaSOystein Eftevaag    UINT32 selector,
3016*758e9fbaSOystein Eftevaag    json_object *jso,
3017*758e9fbaSOystein Eftevaag    TPMU_SCHEME_KEYEDHASH *out)
3018*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_SIGNATURE_deserialize(
3019*758e9fbaSOystein Eftevaag    UINT32 selector,
3020*758e9fbaSOystein Eftevaag    json_object *jso,
3021*758e9fbaSOystein Eftevaag    TPMU_SIGNATURE *out)
3022*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_SIG_SCHEME_deserialize(
3023*758e9fbaSOystein Eftevaag    UINT32 selector,
3024*758e9fbaSOystein Eftevaag    json_object *jso,
3025*758e9fbaSOystein Eftevaag    TPMU_SIG_SCHEME *out)
3026*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_SYM_KEY_BITS_deserialize(
3027*758e9fbaSOystein Eftevaag    UINT32 selector,
3028*758e9fbaSOystein Eftevaag    json_object *jso,
3029*758e9fbaSOystein Eftevaag    TPMU_SYM_KEY_BITS *out)
3030*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_SYM_MODE_deserialize(
3031*758e9fbaSOystein Eftevaag    UINT32 selector,
3032*758e9fbaSOystein Eftevaag    json_object *jso,
3033*758e9fbaSOystein Eftevaag    TPMU_SYM_MODE *out)
3034*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_UINT16_deserialize(json_object *jso, UINT16 *out)
3035*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_UINT32_deserialize(json_object *jso, UINT32 *out)
3036*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_UINT64_deserialize(json_object *jso, UINT64 *out)
3037*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_UINT8_ARY_deserialize(
3038*758e9fbaSOystein Eftevaag    json_object *jso,
3039*758e9fbaSOystein Eftevaag    UINT8_ARY *out)
3040*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_UINT8_deserialize(json_object *jso, UINT8 *out)
3041*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_byte_deserialize(
3042*758e9fbaSOystein Eftevaag    json_object *jso,
3043*758e9fbaSOystein Eftevaag    UINT32 max,
3044*758e9fbaSOystein Eftevaag    BYTE *out,
3045*758e9fbaSOystein Eftevaag    UINT16 *out_size)
3046*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_pcr_selection_deserialize(
3047*758e9fbaSOystein Eftevaag    json_object *jso,
3048*758e9fbaSOystein Eftevaag    UINT8 *sizeofSelect,
3049*758e9fbaSOystein Eftevaag    BYTE pcrSelect[])
3050*758e9fbaSOystein Eftevaag\fn static const char * strip_prefix(const char *in, ...)
3051*758e9fbaSOystein Eftevaag    \fn static bool get_number(const char *token, int64_t *num)
3052*758e9fbaSOystein Eftevaag\fn static int get_token_start_idx(const char *token)
3053*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_POLICYTYPE_deserialize(json_object *jso, TPMI_POLICYTYPE *out)
3054*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMI_POLICYTYPE_deserialize_txt(json_object *jso,
3055*758e9fbaSOystein Eftevaag        TPMI_POLICYTYPE *out)
3056*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_PCRVALUES_deserialize(json_object *jso,  TPML_PCRVALUES **out)
3057*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_POLICYAUTHORIZATIONS_deserialize(json_object *jso,
3058*758e9fbaSOystein Eftevaag        TPML_POLICYAUTHORIZATIONS **out)
3059*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_POLICYBRANCHES_deserialize(json_object *jso,
3060*758e9fbaSOystein Eftevaag        TPML_POLICYBRANCHES **out)
3061*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPML_POLICYELEMENTS_deserialize(json_object *jso,
3062*758e9fbaSOystein Eftevaag        TPML_POLICYELEMENTS **out)
3063*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_PCRVALUE_deserialize(json_object *jso,  TPMS_PCRVALUE *out)
3064*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYACTION_deserialize(json_object *jso,
3065*758e9fbaSOystein Eftevaag        TPMS_POLICYACTION *out)
3066*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYAUTHORIZATION_deserialize(json_object *jso,
3067*758e9fbaSOystein Eftevaag        TPMS_POLICYAUTHORIZATION *out)
3068*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYAUTHORIZENV_deserialize(json_object *jso,
3069*758e9fbaSOystein Eftevaag        TPMS_POLICYAUTHORIZENV *out)
3070*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYAUTHORIZE_deserialize(json_object *jso,
3071*758e9fbaSOystein Eftevaag        TPMS_POLICYAUTHORIZE *out)
3072*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYAUTHVALUE_deserialize(json_object *jso,
3073*758e9fbaSOystein Eftevaag        TPMS_POLICYAUTHVALUE *out)
3074*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYBRANCH_deserialize(json_object *jso,
3075*758e9fbaSOystein Eftevaag        TPMS_POLICYBRANCH *out)
3076*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYCOMMANDCODE_deserialize(json_object *jso,
3077*758e9fbaSOystein Eftevaag        TPMS_POLICYCOMMANDCODE *out)
3078*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYCOUNTERTIMER_deserialize(json_object *jso,
3079*758e9fbaSOystein Eftevaag        TPMS_POLICYCOUNTERTIMER *out)
3080*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYCPHASH_deserialize(json_object *jso,
3081*758e9fbaSOystein Eftevaag        TPMS_POLICYCPHASH *out)
3082*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYDUPLICATIONSELECT_deserialize(json_object *jso,
3083*758e9fbaSOystein Eftevaag        TPMS_POLICYDUPLICATIONSELECT *out)
3084*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYLOCALITY_deserialize(json_object *jso,
3085*758e9fbaSOystein Eftevaag        TPMS_POLICYLOCALITY *out)
3086*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYNAMEHASH_deserialize(json_object *jso,
3087*758e9fbaSOystein Eftevaag        TPMS_POLICYNAMEHASH *out)
3088*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYNVWRITTEN_deserialize(json_object *jso,
3089*758e9fbaSOystein Eftevaag        TPMS_POLICYNVWRITTEN *out)
3090*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYNV_deserialize(json_object *jso,  TPMS_POLICYNV *out)
3091*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYOR_deserialize(json_object *jso,  TPMS_POLICYOR *out)
3092*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYPASSWORD_deserialize(json_object *jso,
3093*758e9fbaSOystein Eftevaag        TPMS_POLICYPASSWORD *out)
3094*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYPCR_deserialize(json_object *jso,  TPMS_POLICYPCR *out)
3095*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYPHYSICALPRESENCE_deserialize(json_object *jso,
3096*758e9fbaSOystein Eftevaag        TPMS_POLICYPHYSICALPRESENCE *out)
3097*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYSECRET_deserialize(json_object *jso,
3098*758e9fbaSOystein Eftevaag        TPMS_POLICYSECRET *out)
3099*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYSIGNED_deserialize(json_object *jso,
3100*758e9fbaSOystein Eftevaag        TPMS_POLICYSIGNED *out)
3101*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICYTEMPLATE_deserialize(json_object *jso,
3102*758e9fbaSOystein Eftevaag        TPMS_POLICYTEMPLATE *out)
3103*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMS_POLICY_deserialize(json_object *jso,
3104*758e9fbaSOystein Eftevaag        TPMS_POLICY *out)
3105*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMT_POLICYELEMENT_deserialize(json_object *jso,
3106*758e9fbaSOystein Eftevaag        TPMT_POLICYELEMENT *out)
3107*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_json_TPMU_POLICYELEMENT_deserialize(
3108*758e9fbaSOystein Eftevaag    UINT32 selector,
3109*758e9fbaSOystein Eftevaag    json_object *jso,
3110*758e9fbaSOystein Eftevaag    TPMU_POLICYELEMENT *out)
3111*758e9fbaSOystein Eftevaag
3112*758e9fbaSOystein Eftevaag
3113*758e9fbaSOystein Eftevaag \}
3114*758e9fbaSOystein Eftevaag*/
3115*758e9fbaSOystein Eftevaag
3116*758e9fbaSOystein Eftevaag/*!
3117*758e9fbaSOystein Eftevaag \defgroup ifapi_vendor  Vendor specific module
3118*758e9fbaSOystein Eftevaag \ingroup ifapi
3119*758e9fbaSOystein Eftevaag\{
3120*758e9fbaSOystein Eftevaag Provides functions implementing vendor specific extensions.
3121*758e9fbaSOystein Eftevaag\fn TSS2_RC ifapi_get_intl_ek_certificate(FAPI_CONTEXT *context, TPM2B_PUBLIC *ek_public,
3122*758e9fbaSOystein Eftevaag                              unsigned char ** cert_buffer, size_t *cert_size)
3123*758e9fbaSOystein Eftevaag
3124*758e9fbaSOystein Eftevaag
3125*758e9fbaSOystein Eftevaag\}
3126*758e9fbaSOystein Eftevaag*/
3127*758e9fbaSOystein Eftevaag
3128*758e9fbaSOystein Eftevaag/*!
3129*758e9fbaSOystein Eftevaag \defgroup FapiTestgroup Fapi-Testing
3130*758e9fbaSOystein Eftevaag Testing of FAPI functionality. The tested FAPI functions are listed in each
3131*758e9fbaSOystein Eftevaag of the testcase functions' descriptions.
3132*758e9fbaSOystein Eftevaag \ingroup Testgroup
3133*758e9fbaSOystein Eftevaag \{
3134*758e9fbaSOystein Eftevaag \fn test_fapi_data_crypt(FAPI_CONTEXT *context)
3135*758e9fbaSOystein Eftevaag \fn test_fapi_duplicate(FAPI_CONTEXT *context)
3136*758e9fbaSOystein Eftevaag \fn test_fapi_ext_public_key(FAPI_CONTEXT *context)
3137*758e9fbaSOystein Eftevaag \fn test_fapi_get_random(FAPI_CONTEXT *context)
3138*758e9fbaSOystein Eftevaag \fn test_fapi_info(FAPI_CONTEXT *context)
3139*758e9fbaSOystein Eftevaag \fn test_fapi_key_change_auth(FAPI_CONTEXT *context)
3140*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_ckda_sign(FAPI_CONTEXT *context)
3141*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_policies_sign(FAPI_CONTEXT *context)
3142*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_policy_authorize_nv(FAPI_CONTEXT *context)
3143*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_policy_authorize_sign(FAPI_CONTEXT *context)
3144*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_policy_nv_sign(FAPI_CONTEXT *context)
3145*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_policy_or_sign(FAPI_CONTEXT *context)
3146*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_policy_password_sign(FAPI_CONTEXT *context)
3147*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_policy_pcr_sign(FAPI_CONTEXT *context)
3148*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_policy_secret_nv_sign(FAPI_CONTEXT *context)
3149*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_policy_signed(FAPI_CONTEXT *context)
3150*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_sign(FAPI_CONTEXT *context)
3151*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_sign_password_provision(FAPI_CONTEXT *context)
3152*758e9fbaSOystein Eftevaag \fn test_fapi_key_create_sign_policy_provision(FAPI_CONTEXT *context)
3153*758e9fbaSOystein Eftevaag \fn test_fapi_nv_extend(FAPI_CONTEXT *context)
3154*758e9fbaSOystein Eftevaag \fn test_fapi_nv_increment(FAPI_CONTEXT *context)
3155*758e9fbaSOystein Eftevaag \fn test_fapi_nv_ordinary(FAPI_CONTEXT *context)
3156*758e9fbaSOystein Eftevaag \fn test_fapi_nv_set_bits(FAPI_CONTEXT *context)
3157*758e9fbaSOystein Eftevaag \fn test_fapi_nv_written_policy(FAPI_CONTEXT *context)
3158*758e9fbaSOystein Eftevaag \fn test_fapi_pcr_test(FAPI_CONTEXT *context)
3159*758e9fbaSOystein Eftevaag \fn test_fapi_platform_certificates(FAPI_CONTEXT *context)
3160*758e9fbaSOystein Eftevaag \fn test_fapi_quote(FAPI_CONTEXT *context)
3161*758e9fbaSOystein Eftevaag \fn test_fapi_unseal(FAPI_CONTEXT *context)
3162*758e9fbaSOystein Eftevaag \}
3163*758e9fbaSOystein Eftevaag*/
3164