1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*******************************************************************************
3  * Copyright 2017-2018, Fraunhofer SIT sponsored by Infineon Technologies AG
4  * All rights reserved.
5  *******************************************************************************/
6 #ifndef TSS2_ESYS_H
7 #define TSS2_ESYS_H
8 
9 #include "tss2_tcti.h"
10 #include "tss2_sys.h"
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 typedef uint32_t ESYS_TR;
17 
18 #define ESYS_TR_NONE     0xfffU
19 #define ESYS_TR_PASSWORD 0x0ffU
20 #define ESYS_TR_PCR0      0U
21 #define ESYS_TR_PCR1      1U
22 #define ESYS_TR_PCR2      2U
23 #define ESYS_TR_PCR3      3U
24 #define ESYS_TR_PCR4      4U
25 #define ESYS_TR_PCR5      5U
26 #define ESYS_TR_PCR6      6U
27 #define ESYS_TR_PCR7      7U
28 #define ESYS_TR_PCR8      8U
29 #define ESYS_TR_PCR9      9U
30 #define ESYS_TR_PCR10    10U
31 #define ESYS_TR_PCR11    11U
32 #define ESYS_TR_PCR12    12U
33 #define ESYS_TR_PCR13    13U
34 #define ESYS_TR_PCR14    14U
35 #define ESYS_TR_PCR15    15U
36 #define ESYS_TR_PCR16    16U
37 #define ESYS_TR_PCR17    17U
38 #define ESYS_TR_PCR18    18U
39 #define ESYS_TR_PCR19    19U
40 #define ESYS_TR_PCR20    20U
41 #define ESYS_TR_PCR21    21U
42 #define ESYS_TR_PCR22    22U
43 #define ESYS_TR_PCR23    23U
44 #define ESYS_TR_PCR24    24U
45 #define ESYS_TR_PCR25    25U
46 #define ESYS_TR_PCR26    26U
47 #define ESYS_TR_PCR27    27U
48 #define ESYS_TR_PCR28    28U
49 #define ESYS_TR_PCR29    29U
50 #define ESYS_TR_PCR30    30U
51 #define ESYS_TR_PCR31    31U
52 
53 /* From TPM_RH_CONSTANTS */
54 #define ESYS_TR_RH_OWNER       0x101U
55 #define ESYS_TR_RH_NULL        0x107U
56 #define ESYS_TR_RH_LOCKOUT     0x10AU
57 #define ESYS_TR_RH_ENDORSEMENT 0x10BU
58 #define ESYS_TR_RH_PLATFORM    0x10CU
59 #define ESYS_TR_RH_PLATFORM_NV 0x10DU
60 
61 #define ESYS_TR_RH_AUTH_FIRST  0x110U
62 #define ESYS_TR_RH_AUTH(x) (ESYS_TR_RH_AUTH_FIRST + (ESYS_TR)(x))
63 #define ESYS_TR_RH_ACT_FIRST  0x120U
64 #define ESYS_TR_RH_ACT(x) (ESYS_TR_RH_ACT_FIRST + (ESYS_TR)(x))
65 #define ESYS_TR_RH_ACT_LAST  0x12FU
66 
67 typedef struct ESYS_CONTEXT ESYS_CONTEXT;
68 
69 /*
70  * TPM 2.0 ESAPI Functions
71  */
72 
73 TSS2_RC
74 Esys_Initialize(
75     ESYS_CONTEXT **esys_context,
76     TSS2_TCTI_CONTEXT *tcti,
77     TSS2_ABI_VERSION *abiVersion);
78 
79 void
80 Esys_Finalize(
81     ESYS_CONTEXT **context);
82 
83 TSS2_RC
84 Esys_GetTcti(
85     ESYS_CONTEXT *esys_context,
86     TSS2_TCTI_CONTEXT **tcti);
87 
88 TSS2_RC
89 Esys_GetPollHandles(
90     ESYS_CONTEXT *esys_context,
91     TSS2_TCTI_POLL_HANDLE **handles,
92     size_t *count);
93 
94 TSS2_RC
95 Esys_SetTimeout(
96     ESYS_CONTEXT *esys_context,
97     int32_t timeout);
98 
99 TSS2_RC
100 Esys_TR_Serialize(
101     ESYS_CONTEXT *esys_context,
102     ESYS_TR object,
103     uint8_t **buffer,
104     size_t *buffer_size);
105 
106 TSS2_RC
107 Esys_TR_Deserialize(
108     ESYS_CONTEXT *esys_context,
109     uint8_t const *buffer,
110     size_t buffer_size,
111     ESYS_TR *esys_handle);
112 
113 TSS2_RC
114 Esys_TR_FromTPMPublic_Async(
115     ESYS_CONTEXT *esysContext,
116     TPM2_HANDLE tpm_handle,
117     ESYS_TR optionalSession1,
118     ESYS_TR optionalSession2,
119     ESYS_TR optionalSession3);
120 
121 TSS2_RC
122 Esys_TR_FromTPMPublic_Finish(
123     ESYS_CONTEXT *esysContext,
124     ESYS_TR *object);
125 
126 TSS2_RC
127 Esys_TR_FromTPMPublic(
128     ESYS_CONTEXT *esysContext,
129     TPM2_HANDLE tpm_handle,
130     ESYS_TR optionalSession1,
131     ESYS_TR optionalSession2,
132     ESYS_TR optionalSession3,
133     ESYS_TR *object);
134 
135 TSS2_RC
136 Esys_TR_Close(
137     ESYS_CONTEXT *esys_context,
138     ESYS_TR *rsrc_handle);
139 
140 TSS2_RC
141 Esys_TR_SetAuth(
142     ESYS_CONTEXT *esysContext,
143     ESYS_TR handle,
144     TPM2B_AUTH const *authValue);
145 
146 TSS2_RC
147 Esys_TR_GetName(
148     ESYS_CONTEXT *esysContext,
149     ESYS_TR handle,
150     TPM2B_NAME **name);
151 
152 TSS2_RC
153 Esys_TRSess_GetAttributes(
154     ESYS_CONTEXT *esysContext,
155     ESYS_TR session,
156     TPMA_SESSION *flags);
157 
158 TSS2_RC
159 Esys_TRSess_SetAttributes(
160     ESYS_CONTEXT *esysContext,
161     ESYS_TR session,
162     TPMA_SESSION flags,
163     TPMA_SESSION mask);
164 
165 TSS2_RC
166 Esys_TRSess_GetNonceTPM(
167     ESYS_CONTEXT *esysContext,
168     ESYS_TR session,
169     TPM2B_NONCE **nonceTPM);
170 
171 TSS2_RC
172 Esys_TR_GetTpmHandle(
173     ESYS_CONTEXT *esys_context,
174     ESYS_TR esys_handle,
175     TPM2_HANDLE *tpm_handle);
176 
177 TSS2_RC
178 Esys_TRSess_GetAuthRequired(
179     ESYS_CONTEXT *esys_context,
180     ESYS_TR esys_handle,
181     TPMI_YES_NO *auth_needed);
182 
183 /* Table 5 - TPM2_Startup Command */
184 
185 TSS2_RC
186 Esys_Startup(
187     ESYS_CONTEXT *esysContext,
188     TPM2_SU startupType);
189 
190 TSS2_RC
191 Esys_Startup_Async(
192     ESYS_CONTEXT *esysContext,
193     TPM2_SU startupType);
194 
195 TSS2_RC
196 Esys_Startup_Finish(
197     ESYS_CONTEXT *esysContext);
198 
199 /* Table 7 - TPM2_Shutdown Command */
200 
201 TSS2_RC
202 Esys_Shutdown(
203     ESYS_CONTEXT *esysContext,
204     ESYS_TR shandle1,
205     ESYS_TR shandle2,
206     ESYS_TR shandle3,
207     TPM2_SU shutdownType);
208 
209 TSS2_RC
210 Esys_Shutdown_Async(
211     ESYS_CONTEXT *esysContext,
212     ESYS_TR shandle1,
213     ESYS_TR shandle2,
214     ESYS_TR shandle3,
215     TPM2_SU shutdownType);
216 
217 TSS2_RC
218 Esys_Shutdown_Finish(
219     ESYS_CONTEXT *esysContext);
220 
221 /* Table 9 - TPM2_SelfTest Command */
222 
223 TSS2_RC
224 Esys_SelfTest(
225     ESYS_CONTEXT *esysContext,
226     ESYS_TR shandle1,
227     ESYS_TR shandle2,
228     ESYS_TR shandle3,
229     TPMI_YES_NO fullTest);
230 
231 TSS2_RC
232 Esys_SelfTest_Async(
233     ESYS_CONTEXT *esysContext,
234     ESYS_TR shandle1,
235     ESYS_TR shandle2,
236     ESYS_TR shandle3,
237     TPMI_YES_NO fullTest);
238 
239 TSS2_RC
240 Esys_SelfTest_Finish(
241     ESYS_CONTEXT *esysContext);
242 
243 /* Table 11 - TPM2_IncrementalSelfTest Command */
244 
245 TSS2_RC
246 Esys_IncrementalSelfTest(
247     ESYS_CONTEXT *esysContext,
248     ESYS_TR shandle1,
249     ESYS_TR shandle2,
250     ESYS_TR shandle3,
251     const TPML_ALG *toTest,
252     TPML_ALG **toDoList);
253 
254 TSS2_RC
255 Esys_IncrementalSelfTest_Async(
256     ESYS_CONTEXT *esysContext,
257     ESYS_TR shandle1,
258     ESYS_TR shandle2,
259     ESYS_TR shandle3,
260     const TPML_ALG *toTest);
261 
262 TSS2_RC
263 Esys_IncrementalSelfTest_Finish(
264     ESYS_CONTEXT *esysContext,
265     TPML_ALG **toDoList);
266 
267 /* Table 13 - TPM2_GetTestResult Command */
268 
269 TSS2_RC
270 Esys_GetTestResult(
271     ESYS_CONTEXT *esysContext,
272     ESYS_TR shandle1,
273     ESYS_TR shandle2,
274     ESYS_TR shandle3,
275     TPM2B_MAX_BUFFER **outData,
276     TPM2_RC *testResult);
277 
278 TSS2_RC
279 Esys_GetTestResult_Async(
280     ESYS_CONTEXT *esysContext,
281     ESYS_TR shandle1,
282     ESYS_TR shandle2,
283     ESYS_TR shandle3);
284 
285 TSS2_RC
286 Esys_GetTestResult_Finish(
287     ESYS_CONTEXT *esysContext,
288     TPM2B_MAX_BUFFER **outData,
289     TPM2_RC *testResult);
290 
291 /* Table 15 - TPM2_StartAuthSession Command */
292 
293 TSS2_RC
294 Esys_StartAuthSession(
295     ESYS_CONTEXT *esysContext,
296     ESYS_TR tpmKey,
297     ESYS_TR bind,
298     ESYS_TR shandle1,
299     ESYS_TR shandle2,
300     ESYS_TR shandle3,
301     const TPM2B_NONCE *nonceCaller,
302     TPM2_SE sessionType,
303     const TPMT_SYM_DEF *symmetric,
304     TPMI_ALG_HASH authHash,
305     ESYS_TR *sessionHandle);
306 
307 TSS2_RC
308 Esys_StartAuthSession_Async(
309     ESYS_CONTEXT *esysContext,
310     ESYS_TR tpmKey,
311     ESYS_TR bind,
312     ESYS_TR shandle1,
313     ESYS_TR shandle2,
314     ESYS_TR shandle3,
315     const TPM2B_NONCE *nonceCaller,
316     TPM2_SE sessionType,
317     const TPMT_SYM_DEF *symmetric,
318     TPMI_ALG_HASH authHash);
319 
320 TSS2_RC
321 Esys_StartAuthSession_Finish(
322     ESYS_CONTEXT *esysContext,
323     ESYS_TR *sessionHandle);
324 
325 /* Table 17 - TPM2_PolicyRestart Command */
326 
327 TSS2_RC
328 Esys_PolicyRestart(
329     ESYS_CONTEXT *esysContext,
330     ESYS_TR sessionHandle,
331     ESYS_TR shandle1,
332     ESYS_TR shandle2,
333     ESYS_TR shandle3);
334 
335 TSS2_RC
336 Esys_PolicyRestart_Async(
337     ESYS_CONTEXT *esysContext,
338     ESYS_TR sessionHandle,
339     ESYS_TR shandle1,
340     ESYS_TR shandle2,
341     ESYS_TR shandle3);
342 
343 TSS2_RC
344 Esys_PolicyRestart_Finish(
345     ESYS_CONTEXT *esysContext);
346 
347 /* Table 19 - TPM2_Create Command */
348 
349 TSS2_RC
350 Esys_Create(
351     ESYS_CONTEXT *esysContext,
352     ESYS_TR parentHandle,
353     ESYS_TR shandle1,
354     ESYS_TR shandle2,
355     ESYS_TR shandle3,
356     const TPM2B_SENSITIVE_CREATE *inSensitive,
357     const TPM2B_PUBLIC *inPublic,
358     const TPM2B_DATA *outsideInfo,
359     const TPML_PCR_SELECTION *creationPCR,
360     TPM2B_PRIVATE **outPrivate,
361     TPM2B_PUBLIC **outPublic,
362     TPM2B_CREATION_DATA **creationData,
363     TPM2B_DIGEST **creationHash,
364     TPMT_TK_CREATION **creationTicket);
365 
366 TSS2_RC
367 Esys_Create_Async(
368     ESYS_CONTEXT *esysContext,
369     ESYS_TR parentHandle,
370     ESYS_TR shandle1,
371     ESYS_TR shandle2,
372     ESYS_TR shandle3,
373     const TPM2B_SENSITIVE_CREATE *inSensitive,
374     const TPM2B_PUBLIC *inPublic,
375     const TPM2B_DATA *outsideInfo,
376     const TPML_PCR_SELECTION *creationPCR);
377 
378 TSS2_RC
379 Esys_Create_Finish(
380     ESYS_CONTEXT *esysContext,
381     TPM2B_PRIVATE **outPrivate,
382     TPM2B_PUBLIC **outPublic,
383     TPM2B_CREATION_DATA **creationData,
384     TPM2B_DIGEST **creationHash,
385     TPMT_TK_CREATION **creationTicket);
386 
387 /* Table 21 - TPM2_Load Command */
388 
389 TSS2_RC
390 Esys_Load(
391     ESYS_CONTEXT *esysContext,
392     ESYS_TR parentHandle,
393     ESYS_TR shandle1,
394     ESYS_TR shandle2,
395     ESYS_TR shandle3,
396     const TPM2B_PRIVATE *inPrivate,
397     const TPM2B_PUBLIC *inPublic,
398     ESYS_TR *objectHandle);
399 
400 TSS2_RC
401 Esys_Load_Async(
402     ESYS_CONTEXT *esysContext,
403     ESYS_TR parentHandle,
404     ESYS_TR shandle1,
405     ESYS_TR shandle2,
406     ESYS_TR shandle3,
407     const TPM2B_PRIVATE *inPrivate,
408     const TPM2B_PUBLIC *inPublic);
409 
410 TSS2_RC
411 Esys_Load_Finish(
412     ESYS_CONTEXT *esysContext,
413     ESYS_TR *objectHandle);
414 
415 /* Table 23 - TPM2_LoadExternal Command */
416 
417 TSS2_RC
418 Esys_LoadExternal(
419     ESYS_CONTEXT *esysContext,
420     ESYS_TR shandle1,
421     ESYS_TR shandle2,
422     ESYS_TR shandle3,
423     const TPM2B_SENSITIVE *inPrivate,
424     const TPM2B_PUBLIC *inPublic,
425     ESYS_TR hierarchy,
426     ESYS_TR *objectHandle);
427 
428 TSS2_RC
429 Esys_LoadExternal_Async(
430     ESYS_CONTEXT *esysContext,
431     ESYS_TR shandle1,
432     ESYS_TR shandle2,
433     ESYS_TR shandle3,
434     const TPM2B_SENSITIVE *inPrivate,
435     const TPM2B_PUBLIC *inPublic,
436     ESYS_TR hierarchy);
437 
438 TSS2_RC
439 Esys_LoadExternal_Finish(
440     ESYS_CONTEXT *esysContext,
441     ESYS_TR *objectHandle);
442 
443 /* Table 25 - TPM2_ReadPublic Command */
444 
445 TSS2_RC
446 Esys_ReadPublic(
447     ESYS_CONTEXT *esysContext,
448     ESYS_TR objectHandle,
449     ESYS_TR shandle1,
450     ESYS_TR shandle2,
451     ESYS_TR shandle3,
452     TPM2B_PUBLIC **outPublic,
453     TPM2B_NAME **name,
454     TPM2B_NAME **qualifiedName);
455 
456 TSS2_RC
457 Esys_ReadPublic_Async(
458     ESYS_CONTEXT *esysContext,
459     ESYS_TR objectHandle,
460     ESYS_TR shandle1,
461     ESYS_TR shandle2,
462     ESYS_TR shandle3);
463 
464 TSS2_RC
465 Esys_ReadPublic_Finish(
466     ESYS_CONTEXT *esysContext,
467     TPM2B_PUBLIC **outPublic,
468     TPM2B_NAME **name,
469     TPM2B_NAME **qualifiedName);
470 
471 /* Table 27 - TPM2_ActivateCredential Command */
472 
473 TSS2_RC
474 Esys_ActivateCredential(
475     ESYS_CONTEXT *esysContext,
476     ESYS_TR activateHandle,
477     ESYS_TR keyHandle,
478     ESYS_TR shandle1,
479     ESYS_TR shandle2,
480     ESYS_TR shandle3,
481     const TPM2B_ID_OBJECT *credentialBlob,
482     const TPM2B_ENCRYPTED_SECRET *secret,
483     TPM2B_DIGEST **certInfo);
484 
485 TSS2_RC
486 Esys_ActivateCredential_Async(
487     ESYS_CONTEXT *esysContext,
488     ESYS_TR activateHandle,
489     ESYS_TR keyHandle,
490     ESYS_TR shandle1,
491     ESYS_TR shandle2,
492     ESYS_TR shandle3,
493     const TPM2B_ID_OBJECT *credentialBlob,
494     const TPM2B_ENCRYPTED_SECRET *secret);
495 
496 TSS2_RC
497 Esys_ActivateCredential_Finish(
498     ESYS_CONTEXT *esysContext,
499     TPM2B_DIGEST **certInfo);
500 
501 TSS2_RC
502 Esys_ACT_SetTimeout(
503     ESYS_CONTEXT *esysContext,
504     ESYS_TR actHandle,
505     ESYS_TR shandle1,
506     ESYS_TR shandle2,
507     ESYS_TR shandle3,
508     UINT32 startTimeout);
509 
510 TSS2_RC
511 Esys_ACT_SetTimeout_Async(
512     ESYS_CONTEXT *esysContext,
513     ESYS_TR actHandle,
514     ESYS_TR shandle1,
515     ESYS_TR shandle2,
516     ESYS_TR shandle3,
517     UINT32 startTimeout);
518 
519 TSS2_RC
520 Esys_ACT_SetTimeout_Finish(
521     ESYS_CONTEXT *esysContext);
522 
523 /* Table 29 - TPM2_MakeCredential Command */
524 
525 TSS2_RC
526 Esys_MakeCredential(
527     ESYS_CONTEXT *esysContext,
528     ESYS_TR handle,
529     ESYS_TR shandle1,
530     ESYS_TR shandle2,
531     ESYS_TR shandle3,
532     const TPM2B_DIGEST *credential,
533     const TPM2B_NAME *objectName,
534     TPM2B_ID_OBJECT **credentialBlob,
535     TPM2B_ENCRYPTED_SECRET **secret);
536 
537 TSS2_RC
538 Esys_MakeCredential_Async(
539     ESYS_CONTEXT *esysContext,
540     ESYS_TR handle,
541     ESYS_TR shandle1,
542     ESYS_TR shandle2,
543     ESYS_TR shandle3,
544     const TPM2B_DIGEST *credential,
545     const TPM2B_NAME *objectName);
546 
547 TSS2_RC
548 Esys_MakeCredential_Finish(
549     ESYS_CONTEXT *esysContext,
550     TPM2B_ID_OBJECT **credentialBlob,
551     TPM2B_ENCRYPTED_SECRET **secret);
552 
553 /* Table 31 - TPM2_Unseal Command */
554 
555 TSS2_RC
556 Esys_Unseal(
557     ESYS_CONTEXT *esysContext,
558     ESYS_TR itemHandle,
559     ESYS_TR shandle1,
560     ESYS_TR shandle2,
561     ESYS_TR shandle3,
562     TPM2B_SENSITIVE_DATA **outData);
563 
564 TSS2_RC
565 Esys_Unseal_Async(
566     ESYS_CONTEXT *esysContext,
567     ESYS_TR itemHandle,
568     ESYS_TR shandle1,
569     ESYS_TR shandle2,
570     ESYS_TR shandle3);
571 
572 TSS2_RC
573 Esys_Unseal_Finish(
574     ESYS_CONTEXT *esysContext,
575     TPM2B_SENSITIVE_DATA **outData);
576 
577 /* Table 33 - TPM2_ObjectChangeAuth Command */
578 
579 TSS2_RC
580 Esys_ObjectChangeAuth(
581     ESYS_CONTEXT *esysContext,
582     ESYS_TR objectHandle,
583     ESYS_TR parentHandle,
584     ESYS_TR shandle1,
585     ESYS_TR shandle2,
586     ESYS_TR shandle3,
587     const TPM2B_AUTH *newAuth,
588     TPM2B_PRIVATE **outPrivate);
589 
590 TSS2_RC
591 Esys_ObjectChangeAuth_Async(
592     ESYS_CONTEXT *esysContext,
593     ESYS_TR objectHandle,
594     ESYS_TR parentHandle,
595     ESYS_TR shandle1,
596     ESYS_TR shandle2,
597     ESYS_TR shandle3,
598     const TPM2B_AUTH *newAuth);
599 
600 TSS2_RC
601 Esys_ObjectChangeAuth_Finish(
602     ESYS_CONTEXT *esysContext,
603     TPM2B_PRIVATE **outPrivate);
604 
605 /* Table 35 - TPM2_CreateLoaded Command */
606 
607 TSS2_RC
608 Esys_CreateLoaded(
609     ESYS_CONTEXT *esysContext,
610     ESYS_TR parentHandle,
611     ESYS_TR shandle1,
612     ESYS_TR shandle2,
613     ESYS_TR shandle3,
614     const TPM2B_SENSITIVE_CREATE *inSensitive,
615     const TPM2B_TEMPLATE *inPublic,
616     ESYS_TR *objectHandle,
617     TPM2B_PRIVATE **outPrivate,
618     TPM2B_PUBLIC **outPublic);
619 
620 TSS2_RC
621 Esys_CreateLoaded_Async(
622     ESYS_CONTEXT *esysContext,
623     ESYS_TR parentHandle,
624     ESYS_TR shandle1,
625     ESYS_TR shandle2,
626     ESYS_TR shandle3,
627     const TPM2B_SENSITIVE_CREATE *inSensitive,
628     const TPM2B_TEMPLATE *inPublic);
629 
630 TSS2_RC
631 Esys_CreateLoaded_Finish(
632     ESYS_CONTEXT *esysContext,
633     ESYS_TR *objectHandle,
634     TPM2B_PRIVATE **outPrivate,
635     TPM2B_PUBLIC **outPublic);
636 
637 /* Table 37 - TPM2_Duplicate Command */
638 
639 TSS2_RC
640 Esys_Duplicate(
641     ESYS_CONTEXT *esysContext,
642     ESYS_TR objectHandle,
643     ESYS_TR newParentHandle,
644     ESYS_TR shandle1,
645     ESYS_TR shandle2,
646     ESYS_TR shandle3,
647     const TPM2B_DATA *encryptionKeyIn,
648     const TPMT_SYM_DEF_OBJECT *symmetricAlg,
649     TPM2B_DATA **encryptionKeyOut,
650     TPM2B_PRIVATE **duplicate,
651     TPM2B_ENCRYPTED_SECRET **outSymSeed);
652 
653 TSS2_RC
654 Esys_Duplicate_Async(
655     ESYS_CONTEXT *esysContext,
656     ESYS_TR objectHandle,
657     ESYS_TR newParentHandle,
658     ESYS_TR shandle1,
659     ESYS_TR shandle2,
660     ESYS_TR shandle3,
661     const TPM2B_DATA *encryptionKeyIn,
662     const TPMT_SYM_DEF_OBJECT *symmetricAlg);
663 
664 TSS2_RC
665 Esys_Duplicate_Finish(
666     ESYS_CONTEXT *esysContext,
667     TPM2B_DATA **encryptionKeyOut,
668     TPM2B_PRIVATE **duplicate,
669     TPM2B_ENCRYPTED_SECRET **outSymSeed);
670 
671 /* Table 39 - TPM2_Rewrap Command */
672 
673 TSS2_RC
674 Esys_Rewrap(
675     ESYS_CONTEXT *esysContext,
676     ESYS_TR oldParent,
677     ESYS_TR newParent,
678     ESYS_TR shandle1,
679     ESYS_TR shandle2,
680     ESYS_TR shandle3,
681     const TPM2B_PRIVATE *inDuplicate,
682     const TPM2B_NAME *name,
683     const TPM2B_ENCRYPTED_SECRET *inSymSeed,
684     TPM2B_PRIVATE **outDuplicate,
685     TPM2B_ENCRYPTED_SECRET **outSymSeed);
686 
687 TSS2_RC
688 Esys_Rewrap_Async(
689     ESYS_CONTEXT *esysContext,
690     ESYS_TR oldParent,
691     ESYS_TR newParent,
692     ESYS_TR shandle1,
693     ESYS_TR shandle2,
694     ESYS_TR shandle3,
695     const TPM2B_PRIVATE *inDuplicate,
696     const TPM2B_NAME *name,
697     const TPM2B_ENCRYPTED_SECRET *inSymSeed);
698 
699 TSS2_RC
700 Esys_Rewrap_Finish(
701     ESYS_CONTEXT *esysContext,
702     TPM2B_PRIVATE **outDuplicate,
703     TPM2B_ENCRYPTED_SECRET **outSymSeed);
704 
705 /* Table 41 - TPM2_Import Command */
706 
707 TSS2_RC
708 Esys_Import(
709     ESYS_CONTEXT *esysContext,
710     ESYS_TR parentHandle,
711     ESYS_TR shandle1,
712     ESYS_TR shandle2,
713     ESYS_TR shandle3,
714     const TPM2B_DATA *encryptionKey,
715     const TPM2B_PUBLIC *objectPublic,
716     const TPM2B_PRIVATE *duplicate,
717     const TPM2B_ENCRYPTED_SECRET *inSymSeed,
718     const TPMT_SYM_DEF_OBJECT *symmetricAlg,
719     TPM2B_PRIVATE **outPrivate);
720 
721 TSS2_RC
722 Esys_Import_Async(
723     ESYS_CONTEXT *esysContext,
724     ESYS_TR parentHandle,
725     ESYS_TR shandle1,
726     ESYS_TR shandle2,
727     ESYS_TR shandle3,
728     const TPM2B_DATA *encryptionKey,
729     const TPM2B_PUBLIC *objectPublic,
730     const TPM2B_PRIVATE *duplicate,
731     const TPM2B_ENCRYPTED_SECRET *inSymSeed,
732     const TPMT_SYM_DEF_OBJECT *symmetricAlg);
733 
734 TSS2_RC
735 Esys_Import_Finish(
736     ESYS_CONTEXT *esysContext,
737     TPM2B_PRIVATE **outPrivate);
738 
739 /* Table 45 - TPM2_RSA_Encrypt Command */
740 
741 TSS2_RC
742 Esys_RSA_Encrypt(
743     ESYS_CONTEXT *esysContext,
744     ESYS_TR keyHandle,
745     ESYS_TR shandle1,
746     ESYS_TR shandle2,
747     ESYS_TR shandle3,
748     const TPM2B_PUBLIC_KEY_RSA *message,
749     const TPMT_RSA_DECRYPT *inScheme,
750     const TPM2B_DATA *label,
751     TPM2B_PUBLIC_KEY_RSA **outData);
752 
753 TSS2_RC
754 Esys_RSA_Encrypt_Async(
755     ESYS_CONTEXT *esysContext,
756     ESYS_TR keyHandle,
757     ESYS_TR shandle1,
758     ESYS_TR shandle2,
759     ESYS_TR shandle3,
760     const TPM2B_PUBLIC_KEY_RSA *message,
761     const TPMT_RSA_DECRYPT *inScheme,
762     const TPM2B_DATA *label);
763 
764 TSS2_RC
765 Esys_RSA_Encrypt_Finish(
766     ESYS_CONTEXT *esysContext,
767     TPM2B_PUBLIC_KEY_RSA **outData);
768 
769 /* Table 47 - TPM2_RSA_Decrypt Command */
770 
771 TSS2_RC
772 Esys_RSA_Decrypt(
773     ESYS_CONTEXT *esysContext,
774     ESYS_TR keyHandle,
775     ESYS_TR shandle1,
776     ESYS_TR shandle2,
777     ESYS_TR shandle3,
778     const TPM2B_PUBLIC_KEY_RSA *cipherText,
779     const TPMT_RSA_DECRYPT *inScheme,
780     const TPM2B_DATA *label,
781     TPM2B_PUBLIC_KEY_RSA **message);
782 
783 TSS2_RC
784 Esys_RSA_Decrypt_Async(
785     ESYS_CONTEXT *esysContext,
786     ESYS_TR keyHandle,
787     ESYS_TR shandle1,
788     ESYS_TR shandle2,
789     ESYS_TR shandle3,
790     const TPM2B_PUBLIC_KEY_RSA *cipherText,
791     const TPMT_RSA_DECRYPT *inScheme,
792     const TPM2B_DATA *label);
793 
794 TSS2_RC
795 Esys_RSA_Decrypt_Finish(
796     ESYS_CONTEXT *esysContext,
797     TPM2B_PUBLIC_KEY_RSA **message);
798 
799 /* Table 49 - TPM2_ECDH_KeyGen Command */
800 
801 TSS2_RC
802 Esys_ECDH_KeyGen(
803     ESYS_CONTEXT *esysContext,
804     ESYS_TR keyHandle,
805     ESYS_TR shandle1,
806     ESYS_TR shandle2,
807     ESYS_TR shandle3,
808     TPM2B_ECC_POINT **zPoint,
809     TPM2B_ECC_POINT **pubPoint);
810 
811 TSS2_RC
812 Esys_ECDH_KeyGen_Async(
813     ESYS_CONTEXT *esysContext,
814     ESYS_TR keyHandle,
815     ESYS_TR shandle1,
816     ESYS_TR shandle2,
817     ESYS_TR shandle3);
818 
819 TSS2_RC
820 Esys_ECDH_KeyGen_Finish(
821     ESYS_CONTEXT *esysContext,
822     TPM2B_ECC_POINT **zPoint,
823     TPM2B_ECC_POINT **pubPoint);
824 
825 /* Table 51 - TPM2_ECDH_ZGen Command */
826 
827 TSS2_RC
828 Esys_ECDH_ZGen(
829     ESYS_CONTEXT *esysContext,
830     ESYS_TR keyHandle,
831     ESYS_TR shandle1,
832     ESYS_TR shandle2,
833     ESYS_TR shandle3,
834     const TPM2B_ECC_POINT *inPoint,
835     TPM2B_ECC_POINT **outPoint);
836 
837 TSS2_RC
838 Esys_ECDH_ZGen_Async(
839     ESYS_CONTEXT *esysContext,
840     ESYS_TR keyHandle,
841     ESYS_TR shandle1,
842     ESYS_TR shandle2,
843     ESYS_TR shandle3,
844     const TPM2B_ECC_POINT *inPoint);
845 
846 TSS2_RC
847 Esys_ECDH_ZGen_Finish(
848     ESYS_CONTEXT *esysContext,
849     TPM2B_ECC_POINT **outPoint);
850 
851 /* Table 53 - TPM2_ECC_Parameters Command */
852 
853 TSS2_RC
854 Esys_ECC_Parameters(
855     ESYS_CONTEXT *esysContext,
856     ESYS_TR shandle1,
857     ESYS_TR shandle2,
858     ESYS_TR shandle3,
859     TPMI_ECC_CURVE curveID,
860     TPMS_ALGORITHM_DETAIL_ECC **parameters);
861 
862 TSS2_RC
863 Esys_ECC_Parameters_Async(
864     ESYS_CONTEXT *esysContext,
865     ESYS_TR shandle1,
866     ESYS_TR shandle2,
867     ESYS_TR shandle3,
868     TPMI_ECC_CURVE curveID);
869 
870 TSS2_RC
871 Esys_ECC_Parameters_Finish(
872     ESYS_CONTEXT *esysContext,
873     TPMS_ALGORITHM_DETAIL_ECC **parameters);
874 
875 /* Table 55 - TPM2_ZGen_2Phase Command */
876 
877 TSS2_RC
878 Esys_ZGen_2Phase(
879     ESYS_CONTEXT *esysContext,
880     ESYS_TR keyA,
881     ESYS_TR shandle1,
882     ESYS_TR shandle2,
883     ESYS_TR shandle3,
884     const TPM2B_ECC_POINT *inQsB,
885     const TPM2B_ECC_POINT *inQeB,
886     TPMI_ECC_KEY_EXCHANGE inScheme,
887     UINT16 counter,
888     TPM2B_ECC_POINT **outZ1,
889     TPM2B_ECC_POINT **outZ2);
890 
891 TSS2_RC
892 Esys_ZGen_2Phase_Async(
893     ESYS_CONTEXT *esysContext,
894     ESYS_TR keyA,
895     ESYS_TR shandle1,
896     ESYS_TR shandle2,
897     ESYS_TR shandle3,
898     const TPM2B_ECC_POINT *inQsB,
899     const TPM2B_ECC_POINT *inQeB,
900     TPMI_ECC_KEY_EXCHANGE inScheme,
901     UINT16 counter);
902 
903 TSS2_RC
904 Esys_ZGen_2Phase_Finish(
905     ESYS_CONTEXT *esysContext,
906     TPM2B_ECC_POINT **outZ1,
907     TPM2B_ECC_POINT **outZ2);
908 
909 /* Table 58 - TPM2_EncryptDecrypt Command */
910 
911 TSS2_RC
912 Esys_EncryptDecrypt(
913     ESYS_CONTEXT *esysContext,
914     ESYS_TR keyHandle,
915     ESYS_TR shandle1,
916     ESYS_TR shandle2,
917     ESYS_TR shandle3,
918     TPMI_YES_NO decrypt,
919     TPMI_ALG_CIPHER_MODE mode,
920     const TPM2B_IV *ivIn,
921     const TPM2B_MAX_BUFFER *inData,
922     TPM2B_MAX_BUFFER **outData,
923     TPM2B_IV **ivOut);
924 
925 TSS2_RC
926 Esys_EncryptDecrypt_Async(
927     ESYS_CONTEXT *esysContext,
928     ESYS_TR keyHandle,
929     ESYS_TR shandle1,
930     ESYS_TR shandle2,
931     ESYS_TR shandle3,
932     TPMI_YES_NO decrypt,
933     TPMI_ALG_CIPHER_MODE mode,
934     const TPM2B_IV *ivIn,
935     const TPM2B_MAX_BUFFER *inData);
936 
937 TSS2_RC
938 Esys_EncryptDecrypt_Finish(
939     ESYS_CONTEXT *esysContext,
940     TPM2B_MAX_BUFFER **outData,
941     TPM2B_IV **ivOut);
942 
943 /* Table 60 - TPM2_EncryptDecrypt2 Command */
944 
945 TSS2_RC
946 Esys_EncryptDecrypt2(
947     ESYS_CONTEXT *esysContext,
948     ESYS_TR keyHandle,
949     ESYS_TR shandle1,
950     ESYS_TR shandle2,
951     ESYS_TR shandle3,
952     const TPM2B_MAX_BUFFER *inData,
953     TPMI_YES_NO decrypt,
954     TPMI_ALG_CIPHER_MODE mode,
955     const TPM2B_IV *ivIn,
956     TPM2B_MAX_BUFFER **outData,
957     TPM2B_IV **ivOut);
958 
959 TSS2_RC
960 Esys_EncryptDecrypt2_Async(
961     ESYS_CONTEXT *esysContext,
962     ESYS_TR keyHandle,
963     ESYS_TR shandle1,
964     ESYS_TR shandle2,
965     ESYS_TR shandle3,
966     const TPM2B_MAX_BUFFER *inData,
967     TPMI_YES_NO decrypt,
968     TPMI_ALG_CIPHER_MODE mode,
969     const TPM2B_IV *ivIn);
970 
971 TSS2_RC
972 Esys_EncryptDecrypt2_Finish(
973     ESYS_CONTEXT *esysContext,
974     TPM2B_MAX_BUFFER **outData,
975     TPM2B_IV **ivOut);
976 
977 /* Table 62 - TPM2_Hash Command */
978 
979 TSS2_RC
980 Esys_Hash(
981     ESYS_CONTEXT *esysContext,
982     ESYS_TR shandle1,
983     ESYS_TR shandle2,
984     ESYS_TR shandle3,
985     const TPM2B_MAX_BUFFER *data,
986     TPMI_ALG_HASH hashAlg,
987     ESYS_TR hierarchy,
988     TPM2B_DIGEST **outHash,
989     TPMT_TK_HASHCHECK **validation);
990 
991 TSS2_RC
992 Esys_Hash_Async(
993     ESYS_CONTEXT *esysContext,
994     ESYS_TR shandle1,
995     ESYS_TR shandle2,
996     ESYS_TR shandle3,
997     const TPM2B_MAX_BUFFER *data,
998     TPMI_ALG_HASH hashAlg,
999     ESYS_TR hierarchy);
1000 
1001 TSS2_RC
1002 Esys_Hash_Finish(
1003     ESYS_CONTEXT *esysContext,
1004     TPM2B_DIGEST **outHash,
1005     TPMT_TK_HASHCHECK **validation);
1006 
1007 /* Table 64 - TPM2_HMAC Command */
1008 
1009 TSS2_RC
1010 Esys_HMAC(
1011     ESYS_CONTEXT *esysContext,
1012     ESYS_TR handle,
1013     ESYS_TR shandle1,
1014     ESYS_TR shandle2,
1015     ESYS_TR shandle3,
1016     const TPM2B_MAX_BUFFER *buffer,
1017     TPMI_ALG_HASH hashAlg,
1018     TPM2B_DIGEST **outHMAC);
1019 
1020 TSS2_RC
1021 Esys_HMAC_Async(
1022     ESYS_CONTEXT *esysContext,
1023     ESYS_TR handle,
1024     ESYS_TR shandle1,
1025     ESYS_TR shandle2,
1026     ESYS_TR shandle3,
1027     const TPM2B_MAX_BUFFER *buffer,
1028     TPMI_ALG_HASH hashAlg);
1029 
1030 TSS2_RC
1031 Esys_HMAC_Finish(
1032     ESYS_CONTEXT *esysContext,
1033     TPM2B_DIGEST **outHMAC);
1034 
1035 /* Table 66 - TPM2_GetRandom Command */
1036 
1037 TSS2_RC
1038 Esys_GetRandom(
1039     ESYS_CONTEXT *esysContext,
1040     ESYS_TR shandle1,
1041     ESYS_TR shandle2,
1042     ESYS_TR shandle3,
1043     UINT16 bytesRequested,
1044     TPM2B_DIGEST **randomBytes);
1045 
1046 TSS2_RC
1047 Esys_GetRandom_Async(
1048     ESYS_CONTEXT *esysContext,
1049     ESYS_TR shandle1,
1050     ESYS_TR shandle2,
1051     ESYS_TR shandle3,
1052     UINT16 bytesRequested);
1053 
1054 TSS2_RC
1055 Esys_GetRandom_Finish(
1056     ESYS_CONTEXT *esysContext,
1057     TPM2B_DIGEST **randomBytes);
1058 
1059 /* Table 68 - TPM2_StirRandom Command */
1060 
1061 TSS2_RC
1062 Esys_StirRandom(
1063     ESYS_CONTEXT *esysContext,
1064     ESYS_TR shandle1,
1065     ESYS_TR shandle2,
1066     ESYS_TR shandle3,
1067     const TPM2B_SENSITIVE_DATA *inData);
1068 
1069 TSS2_RC
1070 Esys_StirRandom_Async(
1071     ESYS_CONTEXT *esysContext,
1072     ESYS_TR shandle1,
1073     ESYS_TR shandle2,
1074     ESYS_TR shandle3,
1075     const TPM2B_SENSITIVE_DATA *inData);
1076 
1077 TSS2_RC
1078 Esys_StirRandom_Finish(
1079     ESYS_CONTEXT *esysContext);
1080 
1081 /* Table 71 - TPM2_HMAC_Start Command */
1082 
1083 TSS2_RC
1084 Esys_HMAC_Start(
1085     ESYS_CONTEXT *esysContext,
1086     ESYS_TR handle,
1087     ESYS_TR shandle1,
1088     ESYS_TR shandle2,
1089     ESYS_TR shandle3,
1090     const TPM2B_AUTH *auth,
1091     TPMI_ALG_HASH hashAlg,
1092     ESYS_TR *sequenceHandle);
1093 
1094 TSS2_RC
1095 Esys_HMAC_Start_Async(
1096     ESYS_CONTEXT *esysContext,
1097     ESYS_TR handle,
1098     ESYS_TR shandle1,
1099     ESYS_TR shandle2,
1100     ESYS_TR shandle3,
1101     const TPM2B_AUTH *auth,
1102     TPMI_ALG_HASH hashAlg);
1103 
1104 TSS2_RC
1105 Esys_HMAC_Start_Finish(
1106     ESYS_CONTEXT *esysContext,
1107     ESYS_TR *sequenceHandle);
1108 
1109 /* Table 73 - TPM2_HashSequenceStart Command */
1110 
1111 TSS2_RC
1112 Esys_HashSequenceStart(
1113     ESYS_CONTEXT *esysContext,
1114     ESYS_TR shandle1,
1115     ESYS_TR shandle2,
1116     ESYS_TR shandle3,
1117     const TPM2B_AUTH *auth,
1118     TPMI_ALG_HASH hashAlg,
1119     ESYS_TR *sequenceHandle);
1120 
1121 TSS2_RC
1122 Esys_HashSequenceStart_Async(
1123     ESYS_CONTEXT *esysContext,
1124     ESYS_TR shandle1,
1125     ESYS_TR shandle2,
1126     ESYS_TR shandle3,
1127     const TPM2B_AUTH *auth,
1128     TPMI_ALG_HASH hashAlg);
1129 
1130 TSS2_RC
1131 Esys_HashSequenceStart_Finish(
1132     ESYS_CONTEXT *esysContext,
1133     ESYS_TR *sequenceHandle);
1134 
1135 /* Table 75 - TPM2_SequenceUpdate Command */
1136 
1137 TSS2_RC
1138 Esys_SequenceUpdate(
1139     ESYS_CONTEXT *esysContext,
1140     ESYS_TR sequenceHandle,
1141     ESYS_TR shandle1,
1142     ESYS_TR shandle2,
1143     ESYS_TR shandle3,
1144     const TPM2B_MAX_BUFFER *buffer);
1145 
1146 TSS2_RC
1147 Esys_SequenceUpdate_Async(
1148     ESYS_CONTEXT *esysContext,
1149     ESYS_TR sequenceHandle,
1150     ESYS_TR shandle1,
1151     ESYS_TR shandle2,
1152     ESYS_TR shandle3,
1153     const TPM2B_MAX_BUFFER *buffer);
1154 
1155 TSS2_RC
1156 Esys_SequenceUpdate_Finish(
1157     ESYS_CONTEXT *esysContext);
1158 
1159 /* Table 77 - TPM2_SequenceComplete Command */
1160 
1161 TSS2_RC
1162 Esys_SequenceComplete(
1163     ESYS_CONTEXT *esysContext,
1164     ESYS_TR sequenceHandle,
1165     ESYS_TR shandle1,
1166     ESYS_TR shandle2,
1167     ESYS_TR shandle3,
1168     const TPM2B_MAX_BUFFER *buffer,
1169     ESYS_TR hierarchy,
1170     TPM2B_DIGEST **result,
1171     TPMT_TK_HASHCHECK **validation);
1172 
1173 TSS2_RC
1174 Esys_SequenceComplete_Async(
1175     ESYS_CONTEXT *esysContext,
1176     ESYS_TR sequenceHandle,
1177     ESYS_TR shandle1,
1178     ESYS_TR shandle2,
1179     ESYS_TR shandle3,
1180     const TPM2B_MAX_BUFFER *buffer,
1181     ESYS_TR hierarchy);
1182 
1183 TSS2_RC
1184 Esys_SequenceComplete_Finish(
1185     ESYS_CONTEXT *esysContext,
1186     TPM2B_DIGEST **result,
1187     TPMT_TK_HASHCHECK **validation);
1188 
1189 /* Table 79 - TPM2_EventSequenceComplete Command */
1190 
1191 TSS2_RC
1192 Esys_EventSequenceComplete(
1193     ESYS_CONTEXT *esysContext,
1194     ESYS_TR pcrHandle,
1195     ESYS_TR sequenceHandle,
1196     ESYS_TR shandle1,
1197     ESYS_TR shandle2,
1198     ESYS_TR shandle3,
1199     const TPM2B_MAX_BUFFER *buffer,
1200     TPML_DIGEST_VALUES **results);
1201 
1202 TSS2_RC
1203 Esys_EventSequenceComplete_Async(
1204     ESYS_CONTEXT *esysContext,
1205     ESYS_TR pcrHandle,
1206     ESYS_TR sequenceHandle,
1207     ESYS_TR shandle1,
1208     ESYS_TR shandle2,
1209     ESYS_TR shandle3,
1210     const TPM2B_MAX_BUFFER *buffer);
1211 
1212 TSS2_RC
1213 Esys_EventSequenceComplete_Finish(
1214     ESYS_CONTEXT *esysContext,
1215     TPML_DIGEST_VALUES **results);
1216 
1217 /* Table 81 - TPM2_Certify Command */
1218 
1219 TSS2_RC
1220 Esys_Certify(
1221     ESYS_CONTEXT *esysContext,
1222     ESYS_TR objectHandle,
1223     ESYS_TR signHandle,
1224     ESYS_TR shandle1,
1225     ESYS_TR shandle2,
1226     ESYS_TR shandle3,
1227     const TPM2B_DATA *qualifyingData,
1228     const TPMT_SIG_SCHEME *inScheme,
1229     TPM2B_ATTEST **certifyInfo,
1230     TPMT_SIGNATURE **signature);
1231 
1232 TSS2_RC
1233 Esys_Certify_Async(
1234     ESYS_CONTEXT *esysContext,
1235     ESYS_TR objectHandle,
1236     ESYS_TR signHandle,
1237     ESYS_TR shandle1,
1238     ESYS_TR shandle2,
1239     ESYS_TR shandle3,
1240     const TPM2B_DATA *qualifyingData,
1241     const TPMT_SIG_SCHEME *inScheme);
1242 
1243 TSS2_RC
1244 Esys_Certify_Finish(
1245     ESYS_CONTEXT *esysContext,
1246     TPM2B_ATTEST **certifyInfo,
1247     TPMT_SIGNATURE **signature);
1248 
1249 /* Table 83 - TPM2_CertifyCreation Command */
1250 
1251 TSS2_RC
1252 Esys_CertifyCreation(
1253     ESYS_CONTEXT *esysContext,
1254     ESYS_TR signHandle,
1255     ESYS_TR objectHandle,
1256     ESYS_TR shandle1,
1257     ESYS_TR shandle2,
1258     ESYS_TR shandle3,
1259     const TPM2B_DATA *qualifyingData,
1260     const TPM2B_DIGEST *creationHash,
1261     const TPMT_SIG_SCHEME *inScheme,
1262     const TPMT_TK_CREATION *creationTicket,
1263     TPM2B_ATTEST **certifyInfo,
1264     TPMT_SIGNATURE **signature);
1265 
1266 TSS2_RC
1267 Esys_CertifyCreation_Async(
1268     ESYS_CONTEXT *esysContext,
1269     ESYS_TR signHandle,
1270     ESYS_TR objectHandle,
1271     ESYS_TR shandle1,
1272     ESYS_TR shandle2,
1273     ESYS_TR shandle3,
1274     const TPM2B_DATA *qualifyingData,
1275     const TPM2B_DIGEST *creationHash,
1276     const TPMT_SIG_SCHEME *inScheme,
1277     const TPMT_TK_CREATION *creationTicket);
1278 
1279 TSS2_RC
1280 Esys_CertifyCreation_Finish(
1281     ESYS_CONTEXT *esysContext,
1282     TPM2B_ATTEST **certifyInfo,
1283     TPMT_SIGNATURE **signature);
1284 
1285 TSS2_RC
1286 Esys_CertifyX509(
1287     ESYS_CONTEXT *esysContext,
1288     ESYS_TR objectHandle,
1289     ESYS_TR signHandle,
1290     ESYS_TR shandle1,
1291     ESYS_TR shandle2,
1292     ESYS_TR shandle3,
1293     const TPM2B_DATA *reserved,
1294     const TPMT_SIG_SCHEME *inScheme,
1295     const TPM2B_MAX_BUFFER *partialCertificate,
1296     TPM2B_MAX_BUFFER **addedToCertificate,
1297     TPM2B_DIGEST **tbsDigest,
1298     TPMT_SIGNATURE **signature);
1299 
1300 TSS2_RC
1301 Esys_CertifyX509_Async(
1302     ESYS_CONTEXT *esysContext,
1303     ESYS_TR objectHandle,
1304     ESYS_TR signHandle,
1305     ESYS_TR shandle1,
1306     ESYS_TR shandle2,
1307     ESYS_TR shandle3,
1308     const TPM2B_DATA *reserved,
1309     const TPMT_SIG_SCHEME *inScheme,
1310     const TPM2B_MAX_BUFFER *partialCertificate);
1311 
1312 TSS2_RC
1313 Esys_CertifyX509_Finish(
1314     ESYS_CONTEXT *esysContext,
1315     TPM2B_MAX_BUFFER **addedToCertificate,
1316     TPM2B_DIGEST **tbsDigest,
1317     TPMT_SIGNATURE **signature);
1318 
1319 /* Table 85 - TPM2_Quote Command */
1320 
1321 TSS2_RC
1322 Esys_Quote(
1323     ESYS_CONTEXT *esysContext,
1324     ESYS_TR signHandle,
1325     ESYS_TR shandle1,
1326     ESYS_TR shandle2,
1327     ESYS_TR shandle3,
1328     const TPM2B_DATA *qualifyingData,
1329     const TPMT_SIG_SCHEME *inScheme,
1330     const TPML_PCR_SELECTION *PCRselect,
1331     TPM2B_ATTEST **quoted,
1332     TPMT_SIGNATURE **signature);
1333 
1334 TSS2_RC
1335 Esys_Quote_Async(
1336     ESYS_CONTEXT *esysContext,
1337     ESYS_TR signHandle,
1338     ESYS_TR shandle1,
1339     ESYS_TR shandle2,
1340     ESYS_TR shandle3,
1341     const TPM2B_DATA *qualifyingData,
1342     const TPMT_SIG_SCHEME *inScheme,
1343     const TPML_PCR_SELECTION *PCRselect);
1344 
1345 TSS2_RC
1346 Esys_Quote_Finish(
1347     ESYS_CONTEXT *esysContext,
1348     TPM2B_ATTEST **quoted,
1349     TPMT_SIGNATURE **signature);
1350 
1351 /* Table 87 - TPM2_GetSessionAuditDigest Command */
1352 
1353 TSS2_RC
1354 Esys_GetSessionAuditDigest(
1355     ESYS_CONTEXT *esysContext,
1356     ESYS_TR privacyAdminHandle,
1357     ESYS_TR signHandle,
1358     ESYS_TR sessionHandle,
1359     ESYS_TR shandle1,
1360     ESYS_TR shandle2,
1361     ESYS_TR shandle3,
1362     const TPM2B_DATA *qualifyingData,
1363     const TPMT_SIG_SCHEME *inScheme,
1364     TPM2B_ATTEST **auditInfo,
1365     TPMT_SIGNATURE **signature);
1366 
1367 TSS2_RC
1368 Esys_GetSessionAuditDigest_Async(
1369     ESYS_CONTEXT *esysContext,
1370     ESYS_TR privacyAdminHandle,
1371     ESYS_TR signHandle,
1372     ESYS_TR sessionHandle,
1373     ESYS_TR shandle1,
1374     ESYS_TR shandle2,
1375     ESYS_TR shandle3,
1376     const TPM2B_DATA *qualifyingData,
1377     const TPMT_SIG_SCHEME *inScheme);
1378 
1379 TSS2_RC
1380 Esys_GetSessionAuditDigest_Finish(
1381     ESYS_CONTEXT *esysContext,
1382     TPM2B_ATTEST **auditInfo,
1383     TPMT_SIGNATURE **signature);
1384 
1385 /* Table 89 - TPM2_GetCommandAuditDigest Command */
1386 
1387 TSS2_RC
1388 Esys_GetCommandAuditDigest(
1389     ESYS_CONTEXT *esysContext,
1390     ESYS_TR privacyHandle,
1391     ESYS_TR signHandle,
1392     ESYS_TR shandle1,
1393     ESYS_TR shandle2,
1394     ESYS_TR shandle3,
1395     const TPM2B_DATA *qualifyingData,
1396     const TPMT_SIG_SCHEME *inScheme,
1397     TPM2B_ATTEST **auditInfo,
1398     TPMT_SIGNATURE **signature);
1399 
1400 TSS2_RC
1401 Esys_GetCommandAuditDigest_Async(
1402     ESYS_CONTEXT *esysContext,
1403     ESYS_TR privacyHandle,
1404     ESYS_TR signHandle,
1405     ESYS_TR shandle1,
1406     ESYS_TR shandle2,
1407     ESYS_TR shandle3,
1408     const TPM2B_DATA *qualifyingData,
1409     const TPMT_SIG_SCHEME *inScheme);
1410 
1411 TSS2_RC
1412 Esys_GetCommandAuditDigest_Finish(
1413     ESYS_CONTEXT *esysContext,
1414     TPM2B_ATTEST **auditInfo,
1415     TPMT_SIGNATURE **signature);
1416 
1417 /* Table 91 - TPM2_GetTime Command */
1418 
1419 TSS2_RC
1420 Esys_GetTime(
1421     ESYS_CONTEXT *esysContext,
1422     ESYS_TR privacyAdminHandle,
1423     ESYS_TR signHandle,
1424     ESYS_TR shandle1,
1425     ESYS_TR shandle2,
1426     ESYS_TR shandle3,
1427     const TPM2B_DATA *qualifyingData,
1428     const TPMT_SIG_SCHEME *inScheme,
1429     TPM2B_ATTEST **timeInfo,
1430     TPMT_SIGNATURE **signature);
1431 
1432 TSS2_RC
1433 Esys_GetTime_Async(
1434     ESYS_CONTEXT *esysContext,
1435     ESYS_TR privacyAdminHandle,
1436     ESYS_TR signHandle,
1437     ESYS_TR shandle1,
1438     ESYS_TR shandle2,
1439     ESYS_TR shandle3,
1440     const TPM2B_DATA *qualifyingData,
1441     const TPMT_SIG_SCHEME *inScheme);
1442 
1443 TSS2_RC
1444 Esys_GetTime_Finish(
1445     ESYS_CONTEXT *esysContext,
1446     TPM2B_ATTEST **timeInfo,
1447     TPMT_SIGNATURE **signature);
1448 
1449 /* Table 93 - TPM2_Commit Command */
1450 
1451 TSS2_RC
1452 Esys_Commit(
1453     ESYS_CONTEXT *esysContext,
1454     ESYS_TR signHandle,
1455     ESYS_TR shandle1,
1456     ESYS_TR shandle2,
1457     ESYS_TR shandle3,
1458     const TPM2B_ECC_POINT *P1,
1459     const TPM2B_SENSITIVE_DATA *s2,
1460     const TPM2B_ECC_PARAMETER *y2,
1461     TPM2B_ECC_POINT **K,
1462     TPM2B_ECC_POINT **L,
1463     TPM2B_ECC_POINT **E,
1464     UINT16 *counter);
1465 
1466 TSS2_RC
1467 Esys_Commit_Async(
1468     ESYS_CONTEXT *esysContext,
1469     ESYS_TR signHandle,
1470     ESYS_TR shandle1,
1471     ESYS_TR shandle2,
1472     ESYS_TR shandle3,
1473     const TPM2B_ECC_POINT *P1,
1474     const TPM2B_SENSITIVE_DATA *s2,
1475     const TPM2B_ECC_PARAMETER *y2);
1476 
1477 TSS2_RC
1478 Esys_Commit_Finish(
1479     ESYS_CONTEXT *esysContext,
1480     TPM2B_ECC_POINT **K,
1481     TPM2B_ECC_POINT **L,
1482     TPM2B_ECC_POINT **E,
1483     UINT16 *counter);
1484 
1485 /* Table 95 - TPM2_EC_Ephemeral Command */
1486 
1487 TSS2_RC
1488 Esys_EC_Ephemeral(
1489     ESYS_CONTEXT *esysContext,
1490     ESYS_TR shandle1,
1491     ESYS_TR shandle2,
1492     ESYS_TR shandle3,
1493     TPMI_ECC_CURVE curveID,
1494     TPM2B_ECC_POINT **Q,
1495     UINT16 *counter);
1496 
1497 TSS2_RC
1498 Esys_EC_Ephemeral_Async(
1499     ESYS_CONTEXT *esysContext,
1500     ESYS_TR shandle1,
1501     ESYS_TR shandle2,
1502     ESYS_TR shandle3,
1503     TPMI_ECC_CURVE curveID);
1504 
1505 TSS2_RC
1506 Esys_EC_Ephemeral_Finish(
1507     ESYS_CONTEXT *esysContext,
1508     TPM2B_ECC_POINT **Q,
1509     UINT16 *counter);
1510 
1511 /* Table 97 - TPM2_VerifySignature Command */
1512 
1513 TSS2_RC
1514 Esys_VerifySignature(
1515     ESYS_CONTEXT *esysContext,
1516     ESYS_TR keyHandle,
1517     ESYS_TR shandle1,
1518     ESYS_TR shandle2,
1519     ESYS_TR shandle3,
1520     const TPM2B_DIGEST *digest,
1521     const TPMT_SIGNATURE *signature,
1522     TPMT_TK_VERIFIED **validation);
1523 
1524 TSS2_RC
1525 Esys_VerifySignature_Async(
1526     ESYS_CONTEXT *esysContext,
1527     ESYS_TR keyHandle,
1528     ESYS_TR shandle1,
1529     ESYS_TR shandle2,
1530     ESYS_TR shandle3,
1531     const TPM2B_DIGEST *digest,
1532     const TPMT_SIGNATURE *signature);
1533 
1534 TSS2_RC
1535 Esys_VerifySignature_Finish(
1536     ESYS_CONTEXT *esysContext,
1537     TPMT_TK_VERIFIED **validation);
1538 
1539 /* Table 99 - TPM2_Sign Command */
1540 
1541 TSS2_RC
1542 Esys_Sign(
1543     ESYS_CONTEXT *esysContext,
1544     ESYS_TR keyHandle,
1545     ESYS_TR shandle1,
1546     ESYS_TR shandle2,
1547     ESYS_TR shandle3,
1548     const TPM2B_DIGEST *digest,
1549     const TPMT_SIG_SCHEME *inScheme,
1550     const TPMT_TK_HASHCHECK *validation,
1551     TPMT_SIGNATURE **signature);
1552 
1553 TSS2_RC
1554 Esys_Sign_Async(
1555     ESYS_CONTEXT *esysContext,
1556     ESYS_TR keyHandle,
1557     ESYS_TR shandle1,
1558     ESYS_TR shandle2,
1559     ESYS_TR shandle3,
1560     const TPM2B_DIGEST *digest,
1561     const TPMT_SIG_SCHEME *inScheme,
1562     const TPMT_TK_HASHCHECK *validation);
1563 
1564 TSS2_RC
1565 Esys_Sign_Finish(
1566     ESYS_CONTEXT *esysContext,
1567     TPMT_SIGNATURE **signature);
1568 
1569 /* Table 101 - TPM2_SetCommandCodeAuditStatus Command */
1570 
1571 TSS2_RC
1572 Esys_SetCommandCodeAuditStatus(
1573     ESYS_CONTEXT *esysContext,
1574     ESYS_TR auth,
1575     ESYS_TR shandle1,
1576     ESYS_TR shandle2,
1577     ESYS_TR shandle3,
1578     TPMI_ALG_HASH auditAlg,
1579     const TPML_CC *setList,
1580     const TPML_CC *clearList);
1581 
1582 TSS2_RC
1583 Esys_SetCommandCodeAuditStatus_Async(
1584     ESYS_CONTEXT *esysContext,
1585     ESYS_TR auth,
1586     ESYS_TR shandle1,
1587     ESYS_TR shandle2,
1588     ESYS_TR shandle3,
1589     TPMI_ALG_HASH auditAlg,
1590     const TPML_CC *setList,
1591     const TPML_CC *clearList);
1592 
1593 TSS2_RC
1594 Esys_SetCommandCodeAuditStatus_Finish(
1595     ESYS_CONTEXT *esysContext);
1596 
1597 /* Table 103 - TPM2_PCR_Extend Command */
1598 
1599 TSS2_RC
1600 Esys_PCR_Extend(
1601     ESYS_CONTEXT *esysContext,
1602     ESYS_TR pcrHandle,
1603     ESYS_TR shandle1,
1604     ESYS_TR shandle2,
1605     ESYS_TR shandle3,
1606     const TPML_DIGEST_VALUES *digests);
1607 
1608 TSS2_RC
1609 Esys_PCR_Extend_Async(
1610     ESYS_CONTEXT *esysContext,
1611     ESYS_TR pcrHandle,
1612     ESYS_TR shandle1,
1613     ESYS_TR shandle2,
1614     ESYS_TR shandle3,
1615     const TPML_DIGEST_VALUES *digests);
1616 
1617 TSS2_RC
1618 Esys_PCR_Extend_Finish(
1619     ESYS_CONTEXT *esysContext);
1620 
1621 /* Table 105 - TPM2_PCR_Event Command */
1622 
1623 TSS2_RC
1624 Esys_PCR_Event(
1625     ESYS_CONTEXT *esysContext,
1626     ESYS_TR pcrHandle,
1627     ESYS_TR shandle1,
1628     ESYS_TR shandle2,
1629     ESYS_TR shandle3,
1630     const TPM2B_EVENT *eventData,
1631     TPML_DIGEST_VALUES **digests);
1632 
1633 TSS2_RC
1634 Esys_PCR_Event_Async(
1635     ESYS_CONTEXT *esysContext,
1636     ESYS_TR pcrHandle,
1637     ESYS_TR shandle1,
1638     ESYS_TR shandle2,
1639     ESYS_TR shandle3,
1640     const TPM2B_EVENT *eventData);
1641 
1642 TSS2_RC
1643 Esys_PCR_Event_Finish(
1644     ESYS_CONTEXT *esysContext,
1645     TPML_DIGEST_VALUES **digests);
1646 
1647 /* Table 107 - TPM2_PCR_Read Command */
1648 
1649 TSS2_RC
1650 Esys_PCR_Read(
1651     ESYS_CONTEXT *esysContext,
1652     ESYS_TR shandle1,
1653     ESYS_TR shandle2,
1654     ESYS_TR shandle3,
1655     const TPML_PCR_SELECTION *pcrSelectionIn,
1656     UINT32 *pcrUpdateCounter,
1657     TPML_PCR_SELECTION **pcrSelectionOut,
1658     TPML_DIGEST **pcrValues);
1659 
1660 TSS2_RC
1661 Esys_PCR_Read_Async(
1662     ESYS_CONTEXT *esysContext,
1663     ESYS_TR shandle1,
1664     ESYS_TR shandle2,
1665     ESYS_TR shandle3,
1666     const TPML_PCR_SELECTION *pcrSelectionIn);
1667 
1668 TSS2_RC
1669 Esys_PCR_Read_Finish(
1670     ESYS_CONTEXT *esysContext,
1671     UINT32 *pcrUpdateCounter,
1672     TPML_PCR_SELECTION **pcrSelectionOut,
1673     TPML_DIGEST **pcrValues);
1674 
1675 /* Table 109 - TPM2_PCR_Allocate Command */
1676 
1677 TSS2_RC
1678 Esys_PCR_Allocate(
1679     ESYS_CONTEXT *esysContext,
1680     ESYS_TR authHandle,
1681     ESYS_TR shandle1,
1682     ESYS_TR shandle2,
1683     ESYS_TR shandle3,
1684     const TPML_PCR_SELECTION *pcrAllocation,
1685     TPMI_YES_NO *allocationSuccess,
1686     UINT32 *maxPCR,
1687     UINT32 *sizeNeeded,
1688     UINT32 *sizeAvailable);
1689 
1690 TSS2_RC
1691 Esys_PCR_Allocate_Async(
1692     ESYS_CONTEXT *esysContext,
1693     ESYS_TR authHandle,
1694     ESYS_TR shandle1,
1695     ESYS_TR shandle2,
1696     ESYS_TR shandle3,
1697     const TPML_PCR_SELECTION *pcrAllocation);
1698 
1699 TSS2_RC
1700 Esys_PCR_Allocate_Finish(
1701     ESYS_CONTEXT *esysContext,
1702     TPMI_YES_NO *allocationSuccess,
1703     UINT32 *maxPCR,
1704     UINT32 *sizeNeeded,
1705     UINT32 *sizeAvailable);
1706 
1707 /* Table 111 - TPM2_PCR_SetAuthPolicy Command */
1708 
1709 TSS2_RC
1710 Esys_PCR_SetAuthPolicy(
1711     ESYS_CONTEXT *esysContext,
1712     ESYS_TR authHandle,
1713     ESYS_TR shandle1,
1714     ESYS_TR shandle2,
1715     ESYS_TR shandle3,
1716     const TPM2B_DIGEST *authPolicy,
1717     TPMI_ALG_HASH hashAlg,
1718     TPMI_DH_PCR pcrNum);
1719 
1720 TSS2_RC
1721 Esys_PCR_SetAuthPolicy_Async(
1722     ESYS_CONTEXT *esysContext,
1723     ESYS_TR authHandle,
1724     ESYS_TR shandle1,
1725     ESYS_TR shandle2,
1726     ESYS_TR shandle3,
1727     const TPM2B_DIGEST *authPolicy,
1728     TPMI_ALG_HASH hashAlg,
1729     TPMI_DH_PCR pcrNum);
1730 
1731 TSS2_RC
1732 Esys_PCR_SetAuthPolicy_Finish(
1733     ESYS_CONTEXT *esysContext);
1734 
1735 /* Table 113 - TPM2_PCR_SetAuthValue Command */
1736 
1737 TSS2_RC
1738 Esys_PCR_SetAuthValue(
1739     ESYS_CONTEXT *esysContext,
1740     ESYS_TR pcrHandle,
1741     ESYS_TR shandle1,
1742     ESYS_TR shandle2,
1743     ESYS_TR shandle3,
1744     const TPM2B_DIGEST *auth);
1745 
1746 TSS2_RC
1747 Esys_PCR_SetAuthValue_Async(
1748     ESYS_CONTEXT *esysContext,
1749     ESYS_TR pcrHandle,
1750     ESYS_TR shandle1,
1751     ESYS_TR shandle2,
1752     ESYS_TR shandle3,
1753     const TPM2B_DIGEST *auth);
1754 
1755 TSS2_RC
1756 Esys_PCR_SetAuthValue_Finish(
1757     ESYS_CONTEXT *esysContext);
1758 
1759 /* Table 115 - TPM2_PCR_Reset Command */
1760 
1761 TSS2_RC
1762 Esys_PCR_Reset(
1763     ESYS_CONTEXT *esysContext,
1764     ESYS_TR pcrHandle,
1765     ESYS_TR shandle1,
1766     ESYS_TR shandle2,
1767     ESYS_TR shandle3);
1768 
1769 TSS2_RC
1770 Esys_PCR_Reset_Async(
1771     ESYS_CONTEXT *esysContext,
1772     ESYS_TR pcrHandle,
1773     ESYS_TR shandle1,
1774     ESYS_TR shandle2,
1775     ESYS_TR shandle3);
1776 
1777 TSS2_RC
1778 Esys_PCR_Reset_Finish(
1779     ESYS_CONTEXT *esysContext);
1780 
1781 /* Table 117 - TPM2_PolicySigned Command */
1782 
1783 TSS2_RC
1784 Esys_PolicySigned(
1785     ESYS_CONTEXT *esysContext,
1786     ESYS_TR authObject,
1787     ESYS_TR policySession,
1788     ESYS_TR shandle1,
1789     ESYS_TR shandle2,
1790     ESYS_TR shandle3,
1791     const TPM2B_NONCE *nonceTPM,
1792     const TPM2B_DIGEST *cpHashA,
1793     const TPM2B_NONCE *policyRef,
1794     INT32 expiration,
1795     const TPMT_SIGNATURE *auth,
1796     TPM2B_TIMEOUT **timeout,
1797     TPMT_TK_AUTH **policyTicket);
1798 
1799 TSS2_RC
1800 Esys_PolicySigned_Async(
1801     ESYS_CONTEXT *esysContext,
1802     ESYS_TR authObject,
1803     ESYS_TR policySession,
1804     ESYS_TR shandle1,
1805     ESYS_TR shandle2,
1806     ESYS_TR shandle3,
1807     const TPM2B_NONCE *nonceTPM,
1808     const TPM2B_DIGEST *cpHashA,
1809     const TPM2B_NONCE *policyRef,
1810     INT32 expiration,
1811     const TPMT_SIGNATURE *auth);
1812 
1813 TSS2_RC
1814 Esys_PolicySigned_Finish(
1815     ESYS_CONTEXT *esysContext,
1816     TPM2B_TIMEOUT **timeout,
1817     TPMT_TK_AUTH **policyTicket);
1818 
1819 /* Table 119 - TPM2_PolicySecret Command */
1820 
1821 TSS2_RC
1822 Esys_PolicySecret(
1823     ESYS_CONTEXT *esysContext,
1824     ESYS_TR authHandle,
1825     ESYS_TR policySession,
1826     ESYS_TR shandle1,
1827     ESYS_TR shandle2,
1828     ESYS_TR shandle3,
1829     const TPM2B_NONCE *nonceTPM,
1830     const TPM2B_DIGEST *cpHashA,
1831     const TPM2B_NONCE *policyRef,
1832     INT32 expiration,
1833     TPM2B_TIMEOUT **timeout,
1834     TPMT_TK_AUTH **policyTicket);
1835 
1836 TSS2_RC
1837 Esys_PolicySecret_Async(
1838     ESYS_CONTEXT *esysContext,
1839     ESYS_TR authHandle,
1840     ESYS_TR policySession,
1841     ESYS_TR shandle1,
1842     ESYS_TR shandle2,
1843     ESYS_TR shandle3,
1844     const TPM2B_NONCE *nonceTPM,
1845     const TPM2B_DIGEST *cpHashA,
1846     const TPM2B_NONCE *policyRef,
1847     INT32 expiration);
1848 
1849 TSS2_RC
1850 Esys_PolicySecret_Finish(
1851     ESYS_CONTEXT *esysContext,
1852     TPM2B_TIMEOUT **timeout,
1853     TPMT_TK_AUTH **policyTicket);
1854 
1855 /* Table 121 - TPM2_PolicyTicket Command */
1856 
1857 TSS2_RC
1858 Esys_PolicyTicket(
1859     ESYS_CONTEXT *esysContext,
1860     ESYS_TR policySession,
1861     ESYS_TR shandle1,
1862     ESYS_TR shandle2,
1863     ESYS_TR shandle3,
1864     const TPM2B_TIMEOUT *timeout,
1865     const TPM2B_DIGEST *cpHashA,
1866     const TPM2B_NONCE *policyRef,
1867     const TPM2B_NAME *authName,
1868     const TPMT_TK_AUTH *ticket);
1869 
1870 TSS2_RC
1871 Esys_PolicyTicket_Async(
1872     ESYS_CONTEXT *esysContext,
1873     ESYS_TR policySession,
1874     ESYS_TR shandle1,
1875     ESYS_TR shandle2,
1876     ESYS_TR shandle3,
1877     const TPM2B_TIMEOUT *timeout,
1878     const TPM2B_DIGEST *cpHashA,
1879     const TPM2B_NONCE *policyRef,
1880     const TPM2B_NAME *authName,
1881     const TPMT_TK_AUTH *ticket);
1882 
1883 TSS2_RC
1884 Esys_PolicyTicket_Finish(
1885     ESYS_CONTEXT *esysContext);
1886 
1887 /* Table 123 - TPM2_PolicyOR Command */
1888 
1889 TSS2_RC
1890 Esys_PolicyOR(
1891     ESYS_CONTEXT *esysContext,
1892     ESYS_TR policySession,
1893     ESYS_TR shandle1,
1894     ESYS_TR shandle2,
1895     ESYS_TR shandle3,
1896     const TPML_DIGEST *pHashList);
1897 
1898 TSS2_RC
1899 Esys_PolicyOR_Async(
1900     ESYS_CONTEXT *esysContext,
1901     ESYS_TR policySession,
1902     ESYS_TR shandle1,
1903     ESYS_TR shandle2,
1904     ESYS_TR shandle3,
1905     const TPML_DIGEST *pHashList);
1906 
1907 TSS2_RC
1908 Esys_PolicyOR_Finish(
1909     ESYS_CONTEXT *esysContext);
1910 
1911 /* Table 125 - TPM2_PolicyPCR Command */
1912 
1913 TSS2_RC
1914 Esys_PolicyPCR(
1915     ESYS_CONTEXT *esysContext,
1916     ESYS_TR policySession,
1917     ESYS_TR shandle1,
1918     ESYS_TR shandle2,
1919     ESYS_TR shandle3,
1920     const TPM2B_DIGEST *pcrDigest,
1921     const TPML_PCR_SELECTION *pcrs);
1922 
1923 TSS2_RC
1924 Esys_PolicyPCR_Async(
1925     ESYS_CONTEXT *esysContext,
1926     ESYS_TR policySession,
1927     ESYS_TR shandle1,
1928     ESYS_TR shandle2,
1929     ESYS_TR shandle3,
1930     const TPM2B_DIGEST *pcrDigest,
1931     const TPML_PCR_SELECTION *pcrs);
1932 
1933 TSS2_RC
1934 Esys_PolicyPCR_Finish(
1935     ESYS_CONTEXT *esysContext);
1936 
1937 /* Table 127 - TPM2_PolicyLocality Command */
1938 
1939 TSS2_RC
1940 Esys_PolicyLocality(
1941     ESYS_CONTEXT *esysContext,
1942     ESYS_TR policySession,
1943     ESYS_TR shandle1,
1944     ESYS_TR shandle2,
1945     ESYS_TR shandle3,
1946     TPMA_LOCALITY locality);
1947 
1948 TSS2_RC
1949 Esys_PolicyLocality_Async(
1950     ESYS_CONTEXT *esysContext,
1951     ESYS_TR policySession,
1952     ESYS_TR shandle1,
1953     ESYS_TR shandle2,
1954     ESYS_TR shandle3,
1955     TPMA_LOCALITY locality);
1956 
1957 TSS2_RC
1958 Esys_PolicyLocality_Finish(
1959     ESYS_CONTEXT *esysContext);
1960 
1961 /* Table 129 - TPM2_PolicyNV Command */
1962 
1963 TSS2_RC
1964 Esys_PolicyNV(
1965     ESYS_CONTEXT *esysContext,
1966     ESYS_TR authHandle,
1967     ESYS_TR nvIndex,
1968     ESYS_TR policySession,
1969     ESYS_TR shandle1,
1970     ESYS_TR shandle2,
1971     ESYS_TR shandle3,
1972     const TPM2B_OPERAND *operandB,
1973     UINT16 offset,
1974     TPM2_EO operation);
1975 
1976 TSS2_RC
1977 Esys_PolicyNV_Async(
1978     ESYS_CONTEXT *esysContext,
1979     ESYS_TR authHandle,
1980     ESYS_TR nvIndex,
1981     ESYS_TR policySession,
1982     ESYS_TR shandle1,
1983     ESYS_TR shandle2,
1984     ESYS_TR shandle3,
1985     const TPM2B_OPERAND *operandB,
1986     UINT16 offset,
1987     TPM2_EO operation);
1988 
1989 TSS2_RC
1990 Esys_PolicyNV_Finish(
1991     ESYS_CONTEXT *esysContext);
1992 
1993 /* Table 131 - TPM2_PolicyCounterTimer Command */
1994 
1995 TSS2_RC
1996 Esys_PolicyCounterTimer(
1997     ESYS_CONTEXT *esysContext,
1998     ESYS_TR policySession,
1999     ESYS_TR shandle1,
2000     ESYS_TR shandle2,
2001     ESYS_TR shandle3,
2002     const TPM2B_OPERAND *operandB,
2003     UINT16 offset,
2004     TPM2_EO operation);
2005 
2006 TSS2_RC
2007 Esys_PolicyCounterTimer_Async(
2008     ESYS_CONTEXT *esysContext,
2009     ESYS_TR policySession,
2010     ESYS_TR shandle1,
2011     ESYS_TR shandle2,
2012     ESYS_TR shandle3,
2013     const TPM2B_OPERAND *operandB,
2014     UINT16 offset,
2015     TPM2_EO operation);
2016 
2017 TSS2_RC
2018 Esys_PolicyCounterTimer_Finish(
2019     ESYS_CONTEXT *esysContext);
2020 
2021 /* Table 133 - TPM2_PolicyCommandCode Command */
2022 
2023 TSS2_RC
2024 Esys_PolicyCommandCode(
2025     ESYS_CONTEXT *esysContext,
2026     ESYS_TR policySession,
2027     ESYS_TR shandle1,
2028     ESYS_TR shandle2,
2029     ESYS_TR shandle3,
2030     TPM2_CC code);
2031 
2032 TSS2_RC
2033 Esys_PolicyCommandCode_Async(
2034     ESYS_CONTEXT *esysContext,
2035     ESYS_TR policySession,
2036     ESYS_TR shandle1,
2037     ESYS_TR shandle2,
2038     ESYS_TR shandle3,
2039     TPM2_CC code);
2040 
2041 TSS2_RC
2042 Esys_PolicyCommandCode_Finish(
2043     ESYS_CONTEXT *esysContext);
2044 
2045 /* Table 135 - TPM2_PolicyPhysicalPresence Command */
2046 
2047 TSS2_RC
2048 Esys_PolicyPhysicalPresence(
2049     ESYS_CONTEXT *esysContext,
2050     ESYS_TR policySession,
2051     ESYS_TR shandle1,
2052     ESYS_TR shandle2,
2053     ESYS_TR shandle3);
2054 
2055 TSS2_RC
2056 Esys_PolicyPhysicalPresence_Async(
2057     ESYS_CONTEXT *esysContext,
2058     ESYS_TR policySession,
2059     ESYS_TR shandle1,
2060     ESYS_TR shandle2,
2061     ESYS_TR shandle3);
2062 
2063 TSS2_RC
2064 Esys_PolicyPhysicalPresence_Finish(
2065     ESYS_CONTEXT *esysContext);
2066 
2067 /* Table 137 - TPM2_PolicyCpHash Command */
2068 
2069 TSS2_RC
2070 Esys_PolicyCpHash(
2071     ESYS_CONTEXT *esysContext,
2072     ESYS_TR policySession,
2073     ESYS_TR shandle1,
2074     ESYS_TR shandle2,
2075     ESYS_TR shandle3,
2076     const TPM2B_DIGEST *cpHashA);
2077 
2078 TSS2_RC
2079 Esys_PolicyCpHash_Async(
2080     ESYS_CONTEXT *esysContext,
2081     ESYS_TR policySession,
2082     ESYS_TR shandle1,
2083     ESYS_TR shandle2,
2084     ESYS_TR shandle3,
2085     const TPM2B_DIGEST *cpHashA);
2086 
2087 TSS2_RC
2088 Esys_PolicyCpHash_Finish(
2089     ESYS_CONTEXT *esysContext);
2090 
2091 /* Table 139 - TPM2_PolicyNameHash Command */
2092 
2093 TSS2_RC
2094 Esys_PolicyNameHash(
2095     ESYS_CONTEXT *esysContext,
2096     ESYS_TR policySession,
2097     ESYS_TR shandle1,
2098     ESYS_TR shandle2,
2099     ESYS_TR shandle3,
2100     const TPM2B_DIGEST *nameHash);
2101 
2102 TSS2_RC
2103 Esys_PolicyNameHash_Async(
2104     ESYS_CONTEXT *esysContext,
2105     ESYS_TR policySession,
2106     ESYS_TR shandle1,
2107     ESYS_TR shandle2,
2108     ESYS_TR shandle3,
2109     const TPM2B_DIGEST *nameHash);
2110 
2111 TSS2_RC
2112 Esys_PolicyNameHash_Finish(
2113     ESYS_CONTEXT *esysContext);
2114 
2115 /* Table 141 - TPM2_PolicyDuplicationSelect Command */
2116 
2117 TSS2_RC
2118 Esys_PolicyDuplicationSelect(
2119     ESYS_CONTEXT *esysContext,
2120     ESYS_TR policySession,
2121     ESYS_TR shandle1,
2122     ESYS_TR shandle2,
2123     ESYS_TR shandle3,
2124     const TPM2B_NAME *objectName,
2125     const TPM2B_NAME *newParentName,
2126     TPMI_YES_NO includeObject);
2127 
2128 TSS2_RC
2129 Esys_PolicyDuplicationSelect_Async(
2130     ESYS_CONTEXT *esysContext,
2131     ESYS_TR policySession,
2132     ESYS_TR shandle1,
2133     ESYS_TR shandle2,
2134     ESYS_TR shandle3,
2135     const TPM2B_NAME *objectName,
2136     const TPM2B_NAME *newParentName,
2137     TPMI_YES_NO includeObject);
2138 
2139 TSS2_RC
2140 Esys_PolicyDuplicationSelect_Finish(
2141     ESYS_CONTEXT *esysContext);
2142 
2143 /* Table 143 - TPM2_PolicyAuthorize Command */
2144 
2145 TSS2_RC
2146 Esys_PolicyAuthorize(
2147     ESYS_CONTEXT *esysContext,
2148     ESYS_TR policySession,
2149     ESYS_TR shandle1,
2150     ESYS_TR shandle2,
2151     ESYS_TR shandle3,
2152     const TPM2B_DIGEST *approvedPolicy,
2153     const TPM2B_NONCE *policyRef,
2154     const TPM2B_NAME *keySign,
2155     const TPMT_TK_VERIFIED *checkTicket);
2156 
2157 TSS2_RC
2158 Esys_PolicyAuthorize_Async(
2159     ESYS_CONTEXT *esysContext,
2160     ESYS_TR policySession,
2161     ESYS_TR shandle1,
2162     ESYS_TR shandle2,
2163     ESYS_TR shandle3,
2164     const TPM2B_DIGEST *approvedPolicy,
2165     const TPM2B_NONCE *policyRef,
2166     const TPM2B_NAME *keySign,
2167     const TPMT_TK_VERIFIED *checkTicket);
2168 
2169 TSS2_RC
2170 Esys_PolicyAuthorize_Finish(
2171     ESYS_CONTEXT *esysContext);
2172 
2173 /* Table 145 - TPM2_PolicyAuthValue Command */
2174 
2175 TSS2_RC
2176 Esys_PolicyAuthValue(
2177     ESYS_CONTEXT *esysContext,
2178     ESYS_TR policySession,
2179     ESYS_TR shandle1,
2180     ESYS_TR shandle2,
2181     ESYS_TR shandle3);
2182 
2183 TSS2_RC
2184 Esys_PolicyAuthValue_Async(
2185     ESYS_CONTEXT *esysContext,
2186     ESYS_TR policySession,
2187     ESYS_TR shandle1,
2188     ESYS_TR shandle2,
2189     ESYS_TR shandle3);
2190 
2191 TSS2_RC
2192 Esys_PolicyAuthValue_Finish(
2193     ESYS_CONTEXT *esysContext);
2194 
2195 /* Table 147 - TPM2_PolicyPassword Command */
2196 
2197 TSS2_RC
2198 Esys_PolicyPassword(
2199     ESYS_CONTEXT *esysContext,
2200     ESYS_TR policySession,
2201     ESYS_TR shandle1,
2202     ESYS_TR shandle2,
2203     ESYS_TR shandle3);
2204 
2205 TSS2_RC
2206 Esys_PolicyPassword_Async(
2207     ESYS_CONTEXT *esysContext,
2208     ESYS_TR policySession,
2209     ESYS_TR shandle1,
2210     ESYS_TR shandle2,
2211     ESYS_TR shandle3);
2212 
2213 TSS2_RC
2214 Esys_PolicyPassword_Finish(
2215     ESYS_CONTEXT *esysContext);
2216 
2217 /* Table 149 - TPM2_PolicyGetDigest Command */
2218 
2219 TSS2_RC
2220 Esys_PolicyGetDigest(
2221     ESYS_CONTEXT *esysContext,
2222     ESYS_TR policySession,
2223     ESYS_TR shandle1,
2224     ESYS_TR shandle2,
2225     ESYS_TR shandle3,
2226     TPM2B_DIGEST **policyDigest);
2227 
2228 TSS2_RC
2229 Esys_PolicyGetDigest_Async(
2230     ESYS_CONTEXT *esysContext,
2231     ESYS_TR policySession,
2232     ESYS_TR shandle1,
2233     ESYS_TR shandle2,
2234     ESYS_TR shandle3);
2235 
2236 TSS2_RC
2237 Esys_PolicyGetDigest_Finish(
2238     ESYS_CONTEXT *esysContext,
2239     TPM2B_DIGEST **policyDigest);
2240 
2241 /* Table 151 - TPM2_PolicyNvWritten Command */
2242 
2243 TSS2_RC
2244 Esys_PolicyNvWritten(
2245     ESYS_CONTEXT *esysContext,
2246     ESYS_TR policySession,
2247     ESYS_TR shandle1,
2248     ESYS_TR shandle2,
2249     ESYS_TR shandle3,
2250     TPMI_YES_NO writtenSet);
2251 
2252 TSS2_RC
2253 Esys_PolicyNvWritten_Async(
2254     ESYS_CONTEXT *esysContext,
2255     ESYS_TR policySession,
2256     ESYS_TR shandle1,
2257     ESYS_TR shandle2,
2258     ESYS_TR shandle3,
2259     TPMI_YES_NO writtenSet);
2260 
2261 TSS2_RC
2262 Esys_PolicyNvWritten_Finish(
2263     ESYS_CONTEXT *esysContext);
2264 
2265 /* Table 153 - TPM2_PolicyTemplate Command */
2266 
2267 TSS2_RC
2268 Esys_PolicyTemplate(
2269     ESYS_CONTEXT *esysContext,
2270     ESYS_TR policySession,
2271     ESYS_TR shandle1,
2272     ESYS_TR shandle2,
2273     ESYS_TR shandle3,
2274     const TPM2B_DIGEST *templateHash);
2275 
2276 TSS2_RC
2277 Esys_PolicyTemplate_Async(
2278     ESYS_CONTEXT *esysContext,
2279     ESYS_TR policySession,
2280     ESYS_TR shandle1,
2281     ESYS_TR shandle2,
2282     ESYS_TR shandle3,
2283     const TPM2B_DIGEST *templateHash);
2284 
2285 TSS2_RC
2286 Esys_PolicyTemplate_Finish(
2287     ESYS_CONTEXT *esysContext);
2288 
2289 /* Table 155 - TPM2_PolicyAuthorizeNV Command */
2290 
2291 TSS2_RC
2292 Esys_PolicyAuthorizeNV(
2293     ESYS_CONTEXT *esysContext,
2294     ESYS_TR authHandle,
2295     ESYS_TR nvIndex,
2296     ESYS_TR policySession,
2297     ESYS_TR shandle1,
2298     ESYS_TR shandle2,
2299     ESYS_TR shandle3);
2300 
2301 TSS2_RC
2302 Esys_PolicyAuthorizeNV_Async(
2303     ESYS_CONTEXT *esysContext,
2304     ESYS_TR authHandle,
2305     ESYS_TR nvIndex,
2306     ESYS_TR policySession,
2307     ESYS_TR shandle1,
2308     ESYS_TR shandle2,
2309     ESYS_TR shandle3);
2310 
2311 TSS2_RC
2312 Esys_PolicyAuthorizeNV_Finish(
2313     ESYS_CONTEXT *esysContext);
2314 
2315 /* Table 157 - TPM2_CreatePrimary Command */
2316 
2317 TSS2_RC
2318 Esys_CreatePrimary(
2319     ESYS_CONTEXT *esysContext,
2320     ESYS_TR primaryHandle,
2321     ESYS_TR shandle1,
2322     ESYS_TR shandle2,
2323     ESYS_TR shandle3,
2324     const TPM2B_SENSITIVE_CREATE *inSensitive,
2325     const TPM2B_PUBLIC *inPublic,
2326     const TPM2B_DATA *outsideInfo,
2327     const TPML_PCR_SELECTION *creationPCR,
2328     ESYS_TR *objectHandle,
2329     TPM2B_PUBLIC **outPublic,
2330     TPM2B_CREATION_DATA **creationData,
2331     TPM2B_DIGEST **creationHash,
2332     TPMT_TK_CREATION **creationTicket);
2333 
2334 TSS2_RC
2335 Esys_CreatePrimary_Async(
2336     ESYS_CONTEXT *esysContext,
2337     ESYS_TR primaryHandle,
2338     ESYS_TR shandle1,
2339     ESYS_TR shandle2,
2340     ESYS_TR shandle3,
2341     const TPM2B_SENSITIVE_CREATE *inSensitive,
2342     const TPM2B_PUBLIC *inPublic,
2343     const TPM2B_DATA *outsideInfo,
2344     const TPML_PCR_SELECTION *creationPCR);
2345 
2346 TSS2_RC
2347 Esys_CreatePrimary_Finish(
2348     ESYS_CONTEXT *esysContext,
2349     ESYS_TR *objectHandle,
2350     TPM2B_PUBLIC **outPublic,
2351     TPM2B_CREATION_DATA **creationData,
2352     TPM2B_DIGEST **creationHash,
2353     TPMT_TK_CREATION **creationTicket);
2354 
2355 /* Table 159 - TPM2_HierarchyControl Command */
2356 
2357 TSS2_RC
2358 Esys_HierarchyControl(
2359     ESYS_CONTEXT *esysContext,
2360     ESYS_TR authHandle,
2361     ESYS_TR shandle1,
2362     ESYS_TR shandle2,
2363     ESYS_TR shandle3,
2364     ESYS_TR enable,
2365     TPMI_YES_NO state);
2366 
2367 TSS2_RC
2368 Esys_HierarchyControl_Async(
2369     ESYS_CONTEXT *esysContext,
2370     ESYS_TR authHandle,
2371     ESYS_TR shandle1,
2372     ESYS_TR shandle2,
2373     ESYS_TR shandle3,
2374     ESYS_TR enable,
2375     TPMI_YES_NO state);
2376 
2377 TSS2_RC
2378 Esys_HierarchyControl_Finish(
2379     ESYS_CONTEXT *esysContext);
2380 
2381 /* Table 161 - TPM2_SetPrimaryPolicy Command */
2382 
2383 TSS2_RC
2384 Esys_SetPrimaryPolicy(
2385     ESYS_CONTEXT *esysContext,
2386     ESYS_TR authHandle,
2387     ESYS_TR shandle1,
2388     ESYS_TR shandle2,
2389     ESYS_TR shandle3,
2390     const TPM2B_DIGEST *authPolicy,
2391     TPMI_ALG_HASH hashAlg);
2392 
2393 TSS2_RC
2394 Esys_SetPrimaryPolicy_Async(
2395     ESYS_CONTEXT *esysContext,
2396     ESYS_TR authHandle,
2397     ESYS_TR shandle1,
2398     ESYS_TR shandle2,
2399     ESYS_TR shandle3,
2400     const TPM2B_DIGEST *authPolicy,
2401     TPMI_ALG_HASH hashAlg);
2402 
2403 TSS2_RC
2404 Esys_SetPrimaryPolicy_Finish(
2405     ESYS_CONTEXT *esysContext);
2406 
2407 /* Table 163 - TPM2_ChangePPS Command */
2408 
2409 TSS2_RC
2410 Esys_ChangePPS(
2411     ESYS_CONTEXT *esysContext,
2412     ESYS_TR authHandle,
2413     ESYS_TR shandle1,
2414     ESYS_TR shandle2,
2415     ESYS_TR shandle3);
2416 
2417 TSS2_RC
2418 Esys_ChangePPS_Async(
2419     ESYS_CONTEXT *esysContext,
2420     ESYS_TR authHandle,
2421     ESYS_TR shandle1,
2422     ESYS_TR shandle2,
2423     ESYS_TR shandle3);
2424 
2425 TSS2_RC
2426 Esys_ChangePPS_Finish(
2427     ESYS_CONTEXT *esysContext);
2428 
2429 /* Table 165 - TPM2_ChangeEPS Command */
2430 
2431 TSS2_RC
2432 Esys_ChangeEPS(
2433     ESYS_CONTEXT *esysContext,
2434     ESYS_TR authHandle,
2435     ESYS_TR shandle1,
2436     ESYS_TR shandle2,
2437     ESYS_TR shandle3);
2438 
2439 TSS2_RC
2440 Esys_ChangeEPS_Async(
2441     ESYS_CONTEXT *esysContext,
2442     ESYS_TR authHandle,
2443     ESYS_TR shandle1,
2444     ESYS_TR shandle2,
2445     ESYS_TR shandle3);
2446 
2447 TSS2_RC
2448 Esys_ChangeEPS_Finish(
2449     ESYS_CONTEXT *esysContext);
2450 
2451 /* Table 167 - TPM2_Clear Command */
2452 
2453 TSS2_RC
2454 Esys_Clear(
2455     ESYS_CONTEXT *esysContext,
2456     ESYS_TR authHandle,
2457     ESYS_TR shandle1,
2458     ESYS_TR shandle2,
2459     ESYS_TR shandle3);
2460 
2461 TSS2_RC
2462 Esys_Clear_Async(
2463     ESYS_CONTEXT *esysContext,
2464     ESYS_TR authHandle,
2465     ESYS_TR shandle1,
2466     ESYS_TR shandle2,
2467     ESYS_TR shandle3);
2468 
2469 TSS2_RC
2470 Esys_Clear_Finish(
2471     ESYS_CONTEXT *esysContext);
2472 
2473 /* Table 169 - TPM2_ClearControl Command */
2474 
2475 TSS2_RC
2476 Esys_ClearControl(
2477     ESYS_CONTEXT *esysContext,
2478     ESYS_TR auth,
2479     ESYS_TR shandle1,
2480     ESYS_TR shandle2,
2481     ESYS_TR shandle3,
2482     TPMI_YES_NO disable);
2483 
2484 TSS2_RC
2485 Esys_ClearControl_Async(
2486     ESYS_CONTEXT *esysContext,
2487     ESYS_TR auth,
2488     ESYS_TR shandle1,
2489     ESYS_TR shandle2,
2490     ESYS_TR shandle3,
2491     TPMI_YES_NO disable);
2492 
2493 TSS2_RC
2494 Esys_ClearControl_Finish(
2495     ESYS_CONTEXT *esysContext);
2496 
2497 /* Table 171 - TPM2_HierarchyChangeAuth Command */
2498 
2499 TSS2_RC
2500 Esys_HierarchyChangeAuth(
2501     ESYS_CONTEXT *esysContext,
2502     ESYS_TR authHandle,
2503     ESYS_TR shandle1,
2504     ESYS_TR shandle2,
2505     ESYS_TR shandle3,
2506     const TPM2B_AUTH *newAuth);
2507 
2508 TSS2_RC
2509 Esys_HierarchyChangeAuth_Async(
2510     ESYS_CONTEXT *esysContext,
2511     ESYS_TR authHandle,
2512     ESYS_TR shandle1,
2513     ESYS_TR shandle2,
2514     ESYS_TR shandle3,
2515     const TPM2B_AUTH *newAuth);
2516 
2517 TSS2_RC
2518 Esys_HierarchyChangeAuth_Finish(
2519     ESYS_CONTEXT *esysContext);
2520 
2521 /* Table 173 - TPM2_DictionaryAttackLockReset Command */
2522 
2523 TSS2_RC
2524 Esys_DictionaryAttackLockReset(
2525     ESYS_CONTEXT *esysContext,
2526     ESYS_TR lockHandle,
2527     ESYS_TR shandle1,
2528     ESYS_TR shandle2,
2529     ESYS_TR shandle3);
2530 
2531 TSS2_RC
2532 Esys_DictionaryAttackLockReset_Async(
2533     ESYS_CONTEXT *esysContext,
2534     ESYS_TR lockHandle,
2535     ESYS_TR shandle1,
2536     ESYS_TR shandle2,
2537     ESYS_TR shandle3);
2538 
2539 TSS2_RC
2540 Esys_DictionaryAttackLockReset_Finish(
2541     ESYS_CONTEXT *esysContext);
2542 
2543 /* Table 175 - TPM2_DictionaryAttackParameters Command */
2544 
2545 TSS2_RC
2546 Esys_DictionaryAttackParameters(
2547     ESYS_CONTEXT *esysContext,
2548     ESYS_TR lockHandle,
2549     ESYS_TR shandle1,
2550     ESYS_TR shandle2,
2551     ESYS_TR shandle3,
2552     UINT32 newMaxTries,
2553     UINT32 newRecoveryTime,
2554     UINT32 lockoutRecovery);
2555 
2556 TSS2_RC
2557 Esys_DictionaryAttackParameters_Async(
2558     ESYS_CONTEXT *esysContext,
2559     ESYS_TR lockHandle,
2560     ESYS_TR shandle1,
2561     ESYS_TR shandle2,
2562     ESYS_TR shandle3,
2563     UINT32 newMaxTries,
2564     UINT32 newRecoveryTime,
2565     UINT32 lockoutRecovery);
2566 
2567 TSS2_RC
2568 Esys_DictionaryAttackParameters_Finish(
2569     ESYS_CONTEXT *esysContext);
2570 
2571 /* Table 177 - TPM2_PP_Commands Command */
2572 
2573 TSS2_RC
2574 Esys_PP_Commands(
2575     ESYS_CONTEXT *esysContext,
2576     ESYS_TR auth,
2577     ESYS_TR shandle1,
2578     ESYS_TR shandle2,
2579     ESYS_TR shandle3,
2580     const TPML_CC *setList,
2581     const TPML_CC *clearList);
2582 
2583 TSS2_RC
2584 Esys_PP_Commands_Async(
2585     ESYS_CONTEXT *esysContext,
2586     ESYS_TR auth,
2587     ESYS_TR shandle1,
2588     ESYS_TR shandle2,
2589     ESYS_TR shandle3,
2590     const TPML_CC *setList,
2591     const TPML_CC *clearList);
2592 
2593 TSS2_RC
2594 Esys_PP_Commands_Finish(
2595     ESYS_CONTEXT *esysContext);
2596 
2597 /* Table 179 - TPM2_SetAlgorithmSet Command */
2598 
2599 TSS2_RC
2600 Esys_SetAlgorithmSet(
2601     ESYS_CONTEXT *esysContext,
2602     ESYS_TR authHandle,
2603     ESYS_TR shandle1,
2604     ESYS_TR shandle2,
2605     ESYS_TR shandle3,
2606     UINT32 algorithmSet);
2607 
2608 TSS2_RC
2609 Esys_SetAlgorithmSet_Async(
2610     ESYS_CONTEXT *esysContext,
2611     ESYS_TR authHandle,
2612     ESYS_TR shandle1,
2613     ESYS_TR shandle2,
2614     ESYS_TR shandle3,
2615     UINT32 algorithmSet);
2616 
2617 TSS2_RC
2618 Esys_SetAlgorithmSet_Finish(
2619     ESYS_CONTEXT *esysContext);
2620 
2621 /* Table 181 - TPM2_FieldUpgradeStart Command */
2622 
2623 TSS2_RC
2624 Esys_FieldUpgradeStart(
2625     ESYS_CONTEXT *esysContext,
2626     ESYS_TR authorization,
2627     ESYS_TR keyHandle,
2628     ESYS_TR shandle1,
2629     ESYS_TR shandle2,
2630     ESYS_TR shandle3,
2631     const TPM2B_DIGEST *fuDigest,
2632     const TPMT_SIGNATURE *manifestSignature);
2633 
2634 TSS2_RC
2635 Esys_FieldUpgradeStart_Async(
2636     ESYS_CONTEXT *esysContext,
2637     ESYS_TR authorization,
2638     ESYS_TR keyHandle,
2639     ESYS_TR shandle1,
2640     ESYS_TR shandle2,
2641     ESYS_TR shandle3,
2642     const TPM2B_DIGEST *fuDigest,
2643     const TPMT_SIGNATURE *manifestSignature);
2644 
2645 TSS2_RC
2646 Esys_FieldUpgradeStart_Finish(
2647     ESYS_CONTEXT *esysContext);
2648 
2649 /* Table 183 - TPM2_FieldUpgradeData Command */
2650 
2651 TSS2_RC
2652 Esys_FieldUpgradeData(
2653     ESYS_CONTEXT *esysContext,
2654     ESYS_TR shandle1,
2655     ESYS_TR shandle2,
2656     ESYS_TR shandle3,
2657     const TPM2B_MAX_BUFFER *fuData,
2658     TPMT_HA **nextDigest,
2659     TPMT_HA **firstDigest);
2660 
2661 TSS2_RC
2662 Esys_FieldUpgradeData_Async(
2663     ESYS_CONTEXT *esysContext,
2664     ESYS_TR shandle1,
2665     ESYS_TR shandle2,
2666     ESYS_TR shandle3,
2667     const TPM2B_MAX_BUFFER *fuData);
2668 
2669 TSS2_RC
2670 Esys_FieldUpgradeData_Finish(
2671     ESYS_CONTEXT *esysContext,
2672     TPMT_HA **nextDigest,
2673     TPMT_HA **firstDigest);
2674 
2675 /* Table 185 - TPM2_FirmwareRead Command */
2676 
2677 TSS2_RC
2678 Esys_FirmwareRead(
2679     ESYS_CONTEXT *esysContext,
2680     ESYS_TR shandle1,
2681     ESYS_TR shandle2,
2682     ESYS_TR shandle3,
2683     UINT32 sequenceNumber,
2684     TPM2B_MAX_BUFFER **fuData);
2685 
2686 TSS2_RC
2687 Esys_FirmwareRead_Async(
2688     ESYS_CONTEXT *esysContext,
2689     ESYS_TR shandle1,
2690     ESYS_TR shandle2,
2691     ESYS_TR shandle3,
2692     UINT32 sequenceNumber);
2693 
2694 TSS2_RC
2695 Esys_FirmwareRead_Finish(
2696     ESYS_CONTEXT *esysContext,
2697     TPM2B_MAX_BUFFER **fuData);
2698 
2699 /* Table 187 - TPM2_ContextSave Command */
2700 
2701 TSS2_RC
2702 Esys_ContextSave(
2703     ESYS_CONTEXT *esysContext,
2704     ESYS_TR saveHandle,
2705     TPMS_CONTEXT **context);
2706 
2707 TSS2_RC
2708 Esys_ContextSave_Async(
2709     ESYS_CONTEXT *esysContext,
2710     ESYS_TR saveHandle);
2711 
2712 TSS2_RC
2713 Esys_ContextSave_Finish(
2714     ESYS_CONTEXT *esysContext,
2715     TPMS_CONTEXT **context);
2716 
2717 /* Table 189 - TPM2_ContextLoad Command */
2718 
2719 TSS2_RC
2720 Esys_ContextLoad(
2721     ESYS_CONTEXT *esysContext,
2722     const TPMS_CONTEXT *context,
2723     ESYS_TR *loadedHandle);
2724 
2725 TSS2_RC
2726 Esys_ContextLoad_Async(
2727     ESYS_CONTEXT *esysContext,
2728     const TPMS_CONTEXT *context);
2729 
2730 TSS2_RC
2731 Esys_ContextLoad_Finish(
2732     ESYS_CONTEXT *esysContext,
2733     ESYS_TR *loadedHandle);
2734 
2735 /* Table 191 - TPM2_FlushContext Command */
2736 
2737 TSS2_RC
2738 Esys_FlushContext(
2739     ESYS_CONTEXT *esysContext,
2740     ESYS_TR flushHandle);
2741 
2742 TSS2_RC
2743 Esys_FlushContext_Async(
2744     ESYS_CONTEXT *esysContext,
2745     ESYS_TR flushHandle);
2746 
2747 TSS2_RC
2748 Esys_FlushContext_Finish(
2749     ESYS_CONTEXT *esysContext);
2750 
2751 /* Table 193 - TPM2_EvictControl Command */
2752 
2753 TSS2_RC
2754 Esys_EvictControl(
2755     ESYS_CONTEXT *esysContext,
2756     ESYS_TR auth,
2757     ESYS_TR objectHandle,
2758     ESYS_TR shandle1,
2759     ESYS_TR shandle2,
2760     ESYS_TR shandle3,
2761     TPMI_DH_PERSISTENT persistentHandle,
2762     ESYS_TR *newObjectHandle);
2763 
2764 TSS2_RC
2765 Esys_EvictControl_Async(
2766     ESYS_CONTEXT *esysContext,
2767     ESYS_TR auth,
2768     ESYS_TR objectHandle,
2769     ESYS_TR shandle1,
2770     ESYS_TR shandle2,
2771     ESYS_TR shandle3,
2772     TPMI_DH_PERSISTENT persistentHandle);
2773 
2774 TSS2_RC
2775 Esys_EvictControl_Finish(
2776     ESYS_CONTEXT *esysContext,
2777     ESYS_TR *newObjectHandle);
2778 
2779 /* Table 195 - TPM2_ReadClock Command */
2780 
2781 TSS2_RC
2782 Esys_ReadClock(
2783     ESYS_CONTEXT *esysContext,
2784     ESYS_TR shandle1,
2785     ESYS_TR shandle2,
2786     ESYS_TR shandle3,
2787     TPMS_TIME_INFO **currentTime);
2788 
2789 TSS2_RC
2790 Esys_ReadClock_Async(
2791     ESYS_CONTEXT *esysContext,
2792     ESYS_TR shandle1,
2793     ESYS_TR shandle2,
2794     ESYS_TR shandle3);
2795 
2796 TSS2_RC
2797 Esys_ReadClock_Finish(
2798     ESYS_CONTEXT *esysContext,
2799     TPMS_TIME_INFO **currentTime);
2800 
2801 /* Table 197 - TPM2_ClockSet Command */
2802 
2803 TSS2_RC
2804 Esys_ClockSet(
2805     ESYS_CONTEXT *esysContext,
2806     ESYS_TR auth,
2807     ESYS_TR shandle1,
2808     ESYS_TR shandle2,
2809     ESYS_TR shandle3,
2810     UINT64 newTime);
2811 
2812 TSS2_RC
2813 Esys_ClockSet_Async(
2814     ESYS_CONTEXT *esysContext,
2815     ESYS_TR auth,
2816     ESYS_TR shandle1,
2817     ESYS_TR shandle2,
2818     ESYS_TR shandle3,
2819     UINT64 newTime);
2820 
2821 TSS2_RC
2822 Esys_ClockSet_Finish(
2823     ESYS_CONTEXT *esysContext);
2824 
2825 /* Table 199 - TPM2_ClockRateAdjust Command */
2826 
2827 TSS2_RC
2828 Esys_ClockRateAdjust(
2829     ESYS_CONTEXT *esysContext,
2830     ESYS_TR auth,
2831     ESYS_TR shandle1,
2832     ESYS_TR shandle2,
2833     ESYS_TR shandle3,
2834     TPM2_CLOCK_ADJUST rateAdjust);
2835 
2836 TSS2_RC
2837 Esys_ClockRateAdjust_Async(
2838     ESYS_CONTEXT *esysContext,
2839     ESYS_TR auth,
2840     ESYS_TR shandle1,
2841     ESYS_TR shandle2,
2842     ESYS_TR shandle3,
2843     TPM2_CLOCK_ADJUST rateAdjust);
2844 
2845 TSS2_RC
2846 Esys_ClockRateAdjust_Finish(
2847     ESYS_CONTEXT *esysContext);
2848 
2849 /* Table 201 - TPM2_GetCapability Command */
2850 
2851 TSS2_RC
2852 Esys_GetCapability(
2853     ESYS_CONTEXT *esysContext,
2854     ESYS_TR shandle1,
2855     ESYS_TR shandle2,
2856     ESYS_TR shandle3,
2857     TPM2_CAP capability,
2858     UINT32 property,
2859     UINT32 propertyCount,
2860     TPMI_YES_NO *moreData,
2861     TPMS_CAPABILITY_DATA **capabilityData);
2862 
2863 TSS2_RC
2864 Esys_GetCapability_Async(
2865     ESYS_CONTEXT *esysContext,
2866     ESYS_TR shandle1,
2867     ESYS_TR shandle2,
2868     ESYS_TR shandle3,
2869     TPM2_CAP capability,
2870     UINT32 property,
2871     UINT32 propertyCount);
2872 
2873 TSS2_RC
2874 Esys_GetCapability_Finish(
2875     ESYS_CONTEXT *esysContext,
2876     TPMI_YES_NO *moreData,
2877     TPMS_CAPABILITY_DATA **capabilityData);
2878 
2879 /* Table 203 - TPM2_TestParms Command */
2880 
2881 TSS2_RC
2882 Esys_TestParms(
2883     ESYS_CONTEXT *esysContext,
2884     ESYS_TR shandle1,
2885     ESYS_TR shandle2,
2886     ESYS_TR shandle3,
2887     const TPMT_PUBLIC_PARMS *parameters);
2888 
2889 TSS2_RC
2890 Esys_TestParms_Async(
2891     ESYS_CONTEXT *esysContext,
2892     ESYS_TR shandle1,
2893     ESYS_TR shandle2,
2894     ESYS_TR shandle3,
2895     const TPMT_PUBLIC_PARMS *parameters);
2896 
2897 TSS2_RC
2898 Esys_TestParms_Finish(
2899     ESYS_CONTEXT *esysContext);
2900 
2901 /* Table 205 - TPM2_NV_DefineSpace Command */
2902 
2903 TSS2_RC
2904 Esys_NV_DefineSpace(
2905     ESYS_CONTEXT *esysContext,
2906     ESYS_TR authHandle,
2907     ESYS_TR shandle1,
2908     ESYS_TR shandle2,
2909     ESYS_TR shandle3,
2910     const TPM2B_AUTH *auth,
2911     const TPM2B_NV_PUBLIC *publicInfo,
2912     ESYS_TR *nvHandle);
2913 
2914 TSS2_RC
2915 Esys_NV_DefineSpace_Async(
2916     ESYS_CONTEXT *esysContext,
2917     ESYS_TR authHandle,
2918     ESYS_TR shandle1,
2919     ESYS_TR shandle2,
2920     ESYS_TR shandle3,
2921     const TPM2B_AUTH *auth,
2922     const TPM2B_NV_PUBLIC *publicInfo);
2923 
2924 TSS2_RC
2925 Esys_NV_DefineSpace_Finish(
2926     ESYS_CONTEXT *esysContext,
2927     ESYS_TR *nvHandle);
2928 
2929 /* Table 207 - TPM2_NV_UndefineSpace Command */
2930 
2931 TSS2_RC
2932 Esys_NV_UndefineSpace(
2933     ESYS_CONTEXT *esysContext,
2934     ESYS_TR authHandle,
2935     ESYS_TR nvIndex,
2936     ESYS_TR shandle1,
2937     ESYS_TR shandle2,
2938     ESYS_TR shandle3);
2939 
2940 TSS2_RC
2941 Esys_NV_UndefineSpace_Async(
2942     ESYS_CONTEXT *esysContext,
2943     ESYS_TR authHandle,
2944     ESYS_TR nvIndex,
2945     ESYS_TR shandle1,
2946     ESYS_TR shandle2,
2947     ESYS_TR shandle3);
2948 
2949 TSS2_RC
2950 Esys_NV_UndefineSpace_Finish(
2951     ESYS_CONTEXT *esysContext);
2952 
2953 /* Table 209 - TPM2_NV_UndefineSpaceSpecial Command */
2954 
2955 TSS2_RC
2956 Esys_NV_UndefineSpaceSpecial(
2957     ESYS_CONTEXT *esysContext,
2958     ESYS_TR nvIndex,
2959     ESYS_TR platform,
2960     ESYS_TR shandle1,
2961     ESYS_TR shandle2,
2962     ESYS_TR shandle3);
2963 
2964 TSS2_RC
2965 Esys_NV_UndefineSpaceSpecial_Async(
2966     ESYS_CONTEXT *esysContext,
2967     ESYS_TR nvIndex,
2968     ESYS_TR platform,
2969     ESYS_TR shandle1,
2970     ESYS_TR shandle2,
2971     ESYS_TR shandle3);
2972 
2973 TSS2_RC
2974 Esys_NV_UndefineSpaceSpecial_Finish(
2975     ESYS_CONTEXT *esysContext);
2976 
2977 /* Table 211 - TPM2_NV_ReadPublic Command */
2978 
2979 TSS2_RC
2980 Esys_NV_ReadPublic(
2981     ESYS_CONTEXT *esysContext,
2982     ESYS_TR nvIndex,
2983     ESYS_TR shandle1,
2984     ESYS_TR shandle2,
2985     ESYS_TR shandle3,
2986     TPM2B_NV_PUBLIC **nvPublic,
2987     TPM2B_NAME **nvName);
2988 
2989 TSS2_RC
2990 Esys_NV_ReadPublic_Async(
2991     ESYS_CONTEXT *esysContext,
2992     ESYS_TR nvIndex,
2993     ESYS_TR shandle1,
2994     ESYS_TR shandle2,
2995     ESYS_TR shandle3);
2996 
2997 TSS2_RC
2998 Esys_NV_ReadPublic_Finish(
2999     ESYS_CONTEXT *esysContext,
3000     TPM2B_NV_PUBLIC **nvPublic,
3001     TPM2B_NAME **nvName);
3002 
3003 /* Table 213 - TPM2_NV_Write Command */
3004 
3005 TSS2_RC
3006 Esys_NV_Write(
3007     ESYS_CONTEXT *esysContext,
3008     ESYS_TR authHandle,
3009     ESYS_TR nvIndex,
3010     ESYS_TR shandle1,
3011     ESYS_TR shandle2,
3012     ESYS_TR shandle3,
3013     const TPM2B_MAX_NV_BUFFER *data,
3014     UINT16 offset);
3015 
3016 TSS2_RC
3017 Esys_NV_Write_Async(
3018     ESYS_CONTEXT *esysContext,
3019     ESYS_TR authHandle,
3020     ESYS_TR nvIndex,
3021     ESYS_TR shandle1,
3022     ESYS_TR shandle2,
3023     ESYS_TR shandle3,
3024     const TPM2B_MAX_NV_BUFFER *data,
3025     UINT16 offset);
3026 
3027 TSS2_RC
3028 Esys_NV_Write_Finish(
3029     ESYS_CONTEXT *esysContext);
3030 
3031 /* Table 215 - TPM2_NV_Increment Command */
3032 
3033 TSS2_RC
3034 Esys_NV_Increment(
3035     ESYS_CONTEXT *esysContext,
3036     ESYS_TR authHandle,
3037     ESYS_TR nvIndex,
3038     ESYS_TR shandle1,
3039     ESYS_TR shandle2,
3040     ESYS_TR shandle3);
3041 
3042 TSS2_RC
3043 Esys_NV_Increment_Async(
3044     ESYS_CONTEXT *esysContext,
3045     ESYS_TR authHandle,
3046     ESYS_TR nvIndex,
3047     ESYS_TR shandle1,
3048     ESYS_TR shandle2,
3049     ESYS_TR shandle3);
3050 
3051 TSS2_RC
3052 Esys_NV_Increment_Finish(
3053     ESYS_CONTEXT *esysContext);
3054 
3055 /* Table 217 - TPM2_NV_Extend Command */
3056 
3057 TSS2_RC
3058 Esys_NV_Extend(
3059     ESYS_CONTEXT *esysContext,
3060     ESYS_TR authHandle,
3061     ESYS_TR nvIndex,
3062     ESYS_TR shandle1,
3063     ESYS_TR shandle2,
3064     ESYS_TR shandle3,
3065     const TPM2B_MAX_NV_BUFFER *data);
3066 
3067 TSS2_RC
3068 Esys_NV_Extend_Async(
3069     ESYS_CONTEXT *esysContext,
3070     ESYS_TR authHandle,
3071     ESYS_TR nvIndex,
3072     ESYS_TR shandle1,
3073     ESYS_TR shandle2,
3074     ESYS_TR shandle3,
3075     const TPM2B_MAX_NV_BUFFER *data);
3076 
3077 TSS2_RC
3078 Esys_NV_Extend_Finish(
3079     ESYS_CONTEXT *esysContext);
3080 
3081 /* Table 219 - TPM2_NV_SetBits Command */
3082 
3083 TSS2_RC
3084 Esys_NV_SetBits(
3085     ESYS_CONTEXT *esysContext,
3086     ESYS_TR authHandle,
3087     ESYS_TR nvIndex,
3088     ESYS_TR shandle1,
3089     ESYS_TR shandle2,
3090     ESYS_TR shandle3,
3091     UINT64 bits);
3092 
3093 TSS2_RC
3094 Esys_NV_SetBits_Async(
3095     ESYS_CONTEXT *esysContext,
3096     ESYS_TR authHandle,
3097     ESYS_TR nvIndex,
3098     ESYS_TR shandle1,
3099     ESYS_TR shandle2,
3100     ESYS_TR shandle3,
3101     UINT64 bits);
3102 
3103 TSS2_RC
3104 Esys_NV_SetBits_Finish(
3105     ESYS_CONTEXT *esysContext);
3106 
3107 /* Table 221 - TPM2_NV_WriteLock Command */
3108 
3109 TSS2_RC
3110 Esys_NV_WriteLock(
3111     ESYS_CONTEXT *esysContext,
3112     ESYS_TR authHandle,
3113     ESYS_TR nvIndex,
3114     ESYS_TR shandle1,
3115     ESYS_TR shandle2,
3116     ESYS_TR shandle3);
3117 
3118 TSS2_RC
3119 Esys_NV_WriteLock_Async(
3120     ESYS_CONTEXT *esysContext,
3121     ESYS_TR authHandle,
3122     ESYS_TR nvIndex,
3123     ESYS_TR shandle1,
3124     ESYS_TR shandle2,
3125     ESYS_TR shandle3);
3126 
3127 TSS2_RC
3128 Esys_NV_WriteLock_Finish(
3129     ESYS_CONTEXT *esysContext);
3130 
3131 /* Table 223 - TPM2_NV_GlobalWriteLock Command */
3132 
3133 TSS2_RC
3134 Esys_NV_GlobalWriteLock(
3135     ESYS_CONTEXT *esysContext,
3136     ESYS_TR authHandle,
3137     ESYS_TR shandle1,
3138     ESYS_TR shandle2,
3139     ESYS_TR shandle3);
3140 
3141 TSS2_RC
3142 Esys_NV_GlobalWriteLock_Async(
3143     ESYS_CONTEXT *esysContext,
3144     ESYS_TR authHandle,
3145     ESYS_TR shandle1,
3146     ESYS_TR shandle2,
3147     ESYS_TR shandle3);
3148 
3149 TSS2_RC
3150 Esys_NV_GlobalWriteLock_Finish(
3151     ESYS_CONTEXT *esysContext);
3152 
3153 /* Table 225 - TPM2_NV_Read Command */
3154 
3155 TSS2_RC
3156 Esys_NV_Read(
3157     ESYS_CONTEXT *esysContext,
3158     ESYS_TR authHandle,
3159     ESYS_TR nvIndex,
3160     ESYS_TR shandle1,
3161     ESYS_TR shandle2,
3162     ESYS_TR shandle3,
3163     UINT16 size,
3164     UINT16 offset,
3165     TPM2B_MAX_NV_BUFFER **data);
3166 
3167 TSS2_RC
3168 Esys_NV_Read_Async(
3169     ESYS_CONTEXT *esysContext,
3170     ESYS_TR authHandle,
3171     ESYS_TR nvIndex,
3172     ESYS_TR shandle1,
3173     ESYS_TR shandle2,
3174     ESYS_TR shandle3,
3175     UINT16 size,
3176     UINT16 offset);
3177 
3178 TSS2_RC
3179 Esys_NV_Read_Finish(
3180     ESYS_CONTEXT *esysContext,
3181     TPM2B_MAX_NV_BUFFER **data);
3182 
3183 /* Table 227 - TPM2_NV_ReadLock Command */
3184 
3185 TSS2_RC
3186 Esys_NV_ReadLock(
3187     ESYS_CONTEXT *esysContext,
3188     ESYS_TR authHandle,
3189     ESYS_TR nvIndex,
3190     ESYS_TR shandle1,
3191     ESYS_TR shandle2,
3192     ESYS_TR shandle3);
3193 
3194 TSS2_RC
3195 Esys_NV_ReadLock_Async(
3196     ESYS_CONTEXT *esysContext,
3197     ESYS_TR authHandle,
3198     ESYS_TR nvIndex,
3199     ESYS_TR shandle1,
3200     ESYS_TR shandle2,
3201     ESYS_TR shandle3);
3202 
3203 TSS2_RC
3204 Esys_NV_ReadLock_Finish(
3205     ESYS_CONTEXT *esysContext);
3206 
3207 /* Table 229 - TPM2_NV_ChangeAuth Command */
3208 
3209 TSS2_RC
3210 Esys_NV_ChangeAuth(
3211     ESYS_CONTEXT *esysContext,
3212     ESYS_TR nvIndex,
3213     ESYS_TR shandle1,
3214     ESYS_TR shandle2,
3215     ESYS_TR shandle3,
3216     const TPM2B_AUTH *newAuth);
3217 
3218 TSS2_RC
3219 Esys_NV_ChangeAuth_Async(
3220     ESYS_CONTEXT *esysContext,
3221     ESYS_TR nvIndex,
3222     ESYS_TR shandle1,
3223     ESYS_TR shandle2,
3224     ESYS_TR shandle3,
3225     const TPM2B_AUTH *newAuth);
3226 
3227 TSS2_RC
3228 Esys_NV_ChangeAuth_Finish(
3229     ESYS_CONTEXT *esysContext);
3230 
3231 /* Table 231 - TPM2_NV_Certify Command */
3232 
3233 TSS2_RC
3234 Esys_NV_Certify(
3235     ESYS_CONTEXT *esysContext,
3236     ESYS_TR signHandle,
3237     ESYS_TR authHandle,
3238     ESYS_TR nvIndex,
3239     ESYS_TR shandle1,
3240     ESYS_TR shandle2,
3241     ESYS_TR shandle3,
3242     const TPM2B_DATA *qualifyingData,
3243     const TPMT_SIG_SCHEME *inScheme,
3244     UINT16 size,
3245     UINT16 offset,
3246     TPM2B_ATTEST **certifyInfo,
3247     TPMT_SIGNATURE **signature);
3248 
3249 TSS2_RC
3250 Esys_NV_Certify_Async(
3251     ESYS_CONTEXT *esysContext,
3252     ESYS_TR signHandle,
3253     ESYS_TR authHandle,
3254     ESYS_TR nvIndex,
3255     ESYS_TR shandle1,
3256     ESYS_TR shandle2,
3257     ESYS_TR shandle3,
3258     const TPM2B_DATA *qualifyingData,
3259     const TPMT_SIG_SCHEME *inScheme,
3260     UINT16 size,
3261     UINT16 offset);
3262 
3263 TSS2_RC
3264 Esys_NV_Certify_Finish(
3265     ESYS_CONTEXT *esysContext,
3266     TPM2B_ATTEST **certifyInfo,
3267     TPMT_SIGNATURE **signature);
3268 
3269 /* Table 233 - TPM2_Vendor_TCG_Test Command */
3270 
3271 TSS2_RC
3272 Esys_Vendor_TCG_Test(
3273     ESYS_CONTEXT *esysContext,
3274     ESYS_TR shandle1,
3275     ESYS_TR shandle2,
3276     ESYS_TR shandle3,
3277     const TPM2B_DATA *inputData,
3278     TPM2B_DATA **outputData);
3279 
3280 TSS2_RC
3281 Esys_Vendor_TCG_Test_Async(
3282     ESYS_CONTEXT *esysContext,
3283     ESYS_TR shandle1,
3284     ESYS_TR shandle2,
3285     ESYS_TR shandle3,
3286     const TPM2B_DATA *inputData);
3287 
3288 TSS2_RC
3289 Esys_Vendor_TCG_Test_Finish(
3290     ESYS_CONTEXT *esysContext,
3291     TPM2B_DATA **outputData);
3292 
3293 /*
3294  * TPM 2.0 ESAPI Helper Functions
3295  */
3296 void
3297 Esys_Free(
3298     void *__ptr);
3299 
3300 TSS2_RC
3301 Esys_GetSysContext(
3302     ESYS_CONTEXT *esys_context,
3303     TSS2_SYS_CONTEXT **sys_context);
3304 
3305 #ifdef __cplusplus
3306 }
3307 #endif
3308 
3309 #endif /* TSS2_ESYS_H */
3310