/* SPDX-License-Identifier: BSD-2-Clause */
/*******************************************************************************
 * Copyright 2017-2018, Fraunhofer SIT sponsored by Infineon Technologies AG
 * All rights reserved.
 *******************************************************************************/
#ifndef TSS2_ESYS_H
#define TSS2_ESYS_H

#include "tss2_tcti.h"
#include "tss2_sys.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef uint32_t ESYS_TR;

#define ESYS_TR_NONE     0xfffU
#define ESYS_TR_PASSWORD 0x0ffU
#define ESYS_TR_PCR0      0U
#define ESYS_TR_PCR1      1U
#define ESYS_TR_PCR2      2U
#define ESYS_TR_PCR3      3U
#define ESYS_TR_PCR4      4U
#define ESYS_TR_PCR5      5U
#define ESYS_TR_PCR6      6U
#define ESYS_TR_PCR7      7U
#define ESYS_TR_PCR8      8U
#define ESYS_TR_PCR9      9U
#define ESYS_TR_PCR10    10U
#define ESYS_TR_PCR11    11U
#define ESYS_TR_PCR12    12U
#define ESYS_TR_PCR13    13U
#define ESYS_TR_PCR14    14U
#define ESYS_TR_PCR15    15U
#define ESYS_TR_PCR16    16U
#define ESYS_TR_PCR17    17U
#define ESYS_TR_PCR18    18U
#define ESYS_TR_PCR19    19U
#define ESYS_TR_PCR20    20U
#define ESYS_TR_PCR21    21U
#define ESYS_TR_PCR22    22U
#define ESYS_TR_PCR23    23U
#define ESYS_TR_PCR24    24U
#define ESYS_TR_PCR25    25U
#define ESYS_TR_PCR26    26U
#define ESYS_TR_PCR27    27U
#define ESYS_TR_PCR28    28U
#define ESYS_TR_PCR29    29U
#define ESYS_TR_PCR30    30U
#define ESYS_TR_PCR31    31U

/* From TPM_RH_CONSTANTS */
#define ESYS_TR_RH_OWNER       0x101U
#define ESYS_TR_RH_NULL        0x107U
#define ESYS_TR_RH_LOCKOUT     0x10AU
#define ESYS_TR_RH_ENDORSEMENT 0x10BU
#define ESYS_TR_RH_PLATFORM    0x10CU
#define ESYS_TR_RH_PLATFORM_NV 0x10DU

#define ESYS_TR_RH_AUTH_FIRST  0x110U
#define ESYS_TR_RH_AUTH(x) (ESYS_TR_RH_AUTH_FIRST + (ESYS_TR)(x))

typedef struct ESYS_CONTEXT ESYS_CONTEXT;

/*
 * TPM 2.0 ESAPI Functions
 */

TSS2_RC
Esys_Initialize(
    ESYS_CONTEXT **esys_context,
    TSS2_TCTI_CONTEXT *tcti,
    TSS2_ABI_VERSION *abiVersion);

void
Esys_Finalize(
    ESYS_CONTEXT **context);

TSS2_RC
Esys_GetTcti(
    ESYS_CONTEXT *esys_context,
    TSS2_TCTI_CONTEXT **tcti);

TSS2_RC
Esys_GetPollHandles(
    ESYS_CONTEXT *esys_context,
    TSS2_TCTI_POLL_HANDLE **handles,
    size_t *count);

TSS2_RC
Esys_SetTimeout(
    ESYS_CONTEXT *esys_context,
    int32_t timeout);

TSS2_RC
Esys_TR_Serialize(
    ESYS_CONTEXT *esys_context,
    ESYS_TR object,
    uint8_t **buffer,
    size_t *buffer_size);

TSS2_RC
Esys_TR_Deserialize(
    ESYS_CONTEXT *esys_context,
    uint8_t const *buffer,
    size_t buffer_size,
    ESYS_TR *esys_handle);

TSS2_RC
Esys_TR_FromTPMPublic_Async(
    ESYS_CONTEXT *esysContext,
    TPM2_HANDLE tpm_handle,
    ESYS_TR optionalSession1,
    ESYS_TR optionalSession2,
    ESYS_TR optionalSession3);

TSS2_RC
Esys_TR_FromTPMPublic_Finish(
    ESYS_CONTEXT *esysContext,
    ESYS_TR *object);

TSS2_RC
Esys_TR_FromTPMPublic(
    ESYS_CONTEXT *esysContext,
    TPM2_HANDLE tpm_handle,
    ESYS_TR optionalSession1,
    ESYS_TR optionalSession2,
    ESYS_TR optionalSession3,
    ESYS_TR *object);

TSS2_RC
Esys_TR_Close(
    ESYS_CONTEXT *esys_context,
    ESYS_TR *rsrc_handle);

TSS2_RC
Esys_TR_SetAuth(
    ESYS_CONTEXT *esysContext,
    ESYS_TR handle,
    TPM2B_AUTH const *authValue);

TSS2_RC
Esys_TR_GetName(
    ESYS_CONTEXT *esysContext,
    ESYS_TR handle,
    TPM2B_NAME **name);

TSS2_RC
Esys_TRSess_GetAttributes(
    ESYS_CONTEXT *esysContext,
    ESYS_TR session,
    TPMA_SESSION *flags);

TSS2_RC
Esys_TRSess_SetAttributes(
    ESYS_CONTEXT *esysContext,
    ESYS_TR session,
    TPMA_SESSION flags,
    TPMA_SESSION mask);

TSS2_RC
Esys_TRSess_GetNonceTPM(
    ESYS_CONTEXT *esysContext,
    ESYS_TR session,
    TPM2B_NONCE **nonceTPM);

TSS2_RC
Esys_TR_GetTpmHandle(
    ESYS_CONTEXT *esys_context,
    ESYS_TR esys_handle,
    TPM2_HANDLE *tpm_handle);

TSS2_RC
Esys_TRSess_GetAuthRequired(
    ESYS_CONTEXT *esys_context,
    ESYS_TR esys_handle,
    TPMI_YES_NO *auth_needed);

/* Table 5 - TPM2_Startup Command */

TSS2_RC
Esys_Startup(
    ESYS_CONTEXT *esysContext,
    TPM2_SU startupType);

TSS2_RC
Esys_Startup_Async(
    ESYS_CONTEXT *esysContext,
    TPM2_SU startupType);

TSS2_RC
Esys_Startup_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 7 - TPM2_Shutdown Command */

TSS2_RC
Esys_Shutdown(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPM2_SU shutdownType);

TSS2_RC
Esys_Shutdown_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPM2_SU shutdownType);

TSS2_RC
Esys_Shutdown_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 9 - TPM2_SelfTest Command */

TSS2_RC
Esys_SelfTest(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMI_YES_NO fullTest);

TSS2_RC
Esys_SelfTest_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMI_YES_NO fullTest);

TSS2_RC
Esys_SelfTest_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 11 - TPM2_IncrementalSelfTest Command */

TSS2_RC
Esys_IncrementalSelfTest(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPML_ALG *toTest,
    TPML_ALG **toDoList);

TSS2_RC
Esys_IncrementalSelfTest_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPML_ALG *toTest);

TSS2_RC
Esys_IncrementalSelfTest_Finish(
    ESYS_CONTEXT *esysContext,
    TPML_ALG **toDoList);

/* Table 13 - TPM2_GetTestResult Command */

TSS2_RC
Esys_GetTestResult(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPM2B_MAX_BUFFER **outData,
    TPM2_RC *testResult);

TSS2_RC
Esys_GetTestResult_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_GetTestResult_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_MAX_BUFFER **outData,
    TPM2_RC *testResult);

/* Table 15 - TPM2_StartAuthSession Command */

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);

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);

TSS2_RC
Esys_StartAuthSession_Finish(
    ESYS_CONTEXT *esysContext,
    ESYS_TR *sessionHandle);

/* Table 17 - TPM2_PolicyRestart Command */

TSS2_RC
Esys_PolicyRestart(
    ESYS_CONTEXT *esysContext,
    ESYS_TR sessionHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyRestart_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR sessionHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyRestart_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 19 - TPM2_Create Command */

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);

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);

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);

/* Table 21 - TPM2_Load Command */

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);

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);

TSS2_RC
Esys_Load_Finish(
    ESYS_CONTEXT *esysContext,
    ESYS_TR *objectHandle);

/* Table 23 - TPM2_LoadExternal Command */

TSS2_RC
Esys_LoadExternal(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_SENSITIVE *inPrivate,
    const TPM2B_PUBLIC *inPublic,
    ESYS_TR hierarchy,
    ESYS_TR *objectHandle);

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,
    ESYS_TR hierarchy);

TSS2_RC
Esys_LoadExternal_Finish(
    ESYS_CONTEXT *esysContext,
    ESYS_TR *objectHandle);

/* Table 25 - TPM2_ReadPublic Command */

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);

TSS2_RC
Esys_ReadPublic_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR objectHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_ReadPublic_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_PUBLIC **outPublic,
    TPM2B_NAME **name,
    TPM2B_NAME **qualifiedName);

/* Table 27 - TPM2_ActivateCredential Command */

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);

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);

TSS2_RC
Esys_ActivateCredential_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_DIGEST **certInfo);

/* Table 29 - TPM2_MakeCredential Command */

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);

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);

TSS2_RC
Esys_MakeCredential_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ID_OBJECT **credentialBlob,
    TPM2B_ENCRYPTED_SECRET **secret);

/* Table 31 - TPM2_Unseal Command */

TSS2_RC
Esys_Unseal(
    ESYS_CONTEXT *esysContext,
    ESYS_TR itemHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPM2B_SENSITIVE_DATA **outData);

TSS2_RC
Esys_Unseal_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR itemHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_Unseal_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_SENSITIVE_DATA **outData);

/* Table 33 - TPM2_ObjectChangeAuth Command */

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);

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);

TSS2_RC
Esys_ObjectChangeAuth_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_PRIVATE **outPrivate);

/* Table 35 - TPM2_CreateLoaded Command */

TSS2_RC
Esys_CreateLoaded(
    ESYS_CONTEXT *esysContext,
    ESYS_TR parentHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_SENSITIVE_CREATE *inSensitive,
    const TPM2B_TEMPLATE *inPublic,
    ESYS_TR *objectHandle,
    TPM2B_PRIVATE **outPrivate,
    TPM2B_PUBLIC **outPublic);

TSS2_RC
Esys_CreateLoaded_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR parentHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_SENSITIVE_CREATE *inSensitive,
    const TPM2B_TEMPLATE *inPublic);

TSS2_RC
Esys_CreateLoaded_Finish(
    ESYS_CONTEXT *esysContext,
    ESYS_TR *objectHandle,
    TPM2B_PRIVATE **outPrivate,
    TPM2B_PUBLIC **outPublic);

/* Table 37 - TPM2_Duplicate Command */

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);

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);

TSS2_RC
Esys_Duplicate_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_DATA **encryptionKeyOut,
    TPM2B_PRIVATE **duplicate,
    TPM2B_ENCRYPTED_SECRET **outSymSeed);

/* Table 39 - TPM2_Rewrap Command */

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);

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);

TSS2_RC
Esys_Rewrap_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_PRIVATE **outDuplicate,
    TPM2B_ENCRYPTED_SECRET **outSymSeed);

/* Table 41 - TPM2_Import Command */

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);

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);

TSS2_RC
Esys_Import_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_PRIVATE **outPrivate);

/* Table 45 - TPM2_RSA_Encrypt Command */

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);

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);

TSS2_RC
Esys_RSA_Encrypt_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_PUBLIC_KEY_RSA **outData);

/* Table 47 - TPM2_RSA_Decrypt Command */

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);

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);

TSS2_RC
Esys_RSA_Decrypt_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_PUBLIC_KEY_RSA **message);

/* Table 49 - TPM2_ECDH_KeyGen Command */

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);

TSS2_RC
Esys_ECDH_KeyGen_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR keyHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_ECDH_KeyGen_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ECC_POINT **zPoint,
    TPM2B_ECC_POINT **pubPoint);

/* Table 51 - TPM2_ECDH_ZGen Command */

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);

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);

TSS2_RC
Esys_ECDH_ZGen_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ECC_POINT **outPoint);

/* Table 53 - TPM2_ECC_Parameters Command */

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);

TSS2_RC
Esys_ECC_Parameters_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMI_ECC_CURVE curveID);

TSS2_RC
Esys_ECC_Parameters_Finish(
    ESYS_CONTEXT *esysContext,
    TPMS_ALGORITHM_DETAIL_ECC **parameters);

/* Table 55 - TPM2_ZGen_2Phase Command */

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);

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);

TSS2_RC
Esys_ZGen_2Phase_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ECC_POINT **outZ1,
    TPM2B_ECC_POINT **outZ2);

/* Table 58 - TPM2_EncryptDecrypt Command */

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);

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);

TSS2_RC
Esys_EncryptDecrypt_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_MAX_BUFFER **outData,
    TPM2B_IV **ivOut);

/* Table 60 - TPM2_EncryptDecrypt2 Command */

TSS2_RC
Esys_EncryptDecrypt2(
    ESYS_CONTEXT *esysContext,
    ESYS_TR keyHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_MAX_BUFFER *inData,
    TPMI_YES_NO decrypt,
    TPMI_ALG_SYM_MODE mode,
    const TPM2B_IV *ivIn,
    TPM2B_MAX_BUFFER **outData,
    TPM2B_IV **ivOut);

TSS2_RC
Esys_EncryptDecrypt2_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR keyHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_MAX_BUFFER *inData,
    TPMI_YES_NO decrypt,
    TPMI_ALG_SYM_MODE mode,
    const TPM2B_IV *ivIn);

TSS2_RC
Esys_EncryptDecrypt2_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_MAX_BUFFER **outData,
    TPM2B_IV **ivOut);

/* Table 62 - TPM2_Hash Command */

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,
    ESYS_TR hierarchy,
    TPM2B_DIGEST **outHash,
    TPMT_TK_HASHCHECK **validation);

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,
    ESYS_TR hierarchy);

TSS2_RC
Esys_Hash_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_DIGEST **outHash,
    TPMT_TK_HASHCHECK **validation);

/* Table 64 - TPM2_HMAC Command */

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);

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);

TSS2_RC
Esys_HMAC_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_DIGEST **outHMAC);

/* Table 66 - TPM2_GetRandom Command */

TSS2_RC
Esys_GetRandom(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    UINT16 bytesRequested,
    TPM2B_DIGEST **randomBytes);

TSS2_RC
Esys_GetRandom_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    UINT16 bytesRequested);

TSS2_RC
Esys_GetRandom_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_DIGEST **randomBytes);

/* Table 68 - TPM2_StirRandom Command */

TSS2_RC
Esys_StirRandom(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_SENSITIVE_DATA *inData);

TSS2_RC
Esys_StirRandom_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_SENSITIVE_DATA *inData);

TSS2_RC
Esys_StirRandom_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 71 - TPM2_HMAC_Start Command */

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);

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);

TSS2_RC
Esys_HMAC_Start_Finish(
    ESYS_CONTEXT *esysContext,
    ESYS_TR *sequenceHandle);

/* Table 73 - TPM2_HashSequenceStart Command */

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);

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);

TSS2_RC
Esys_HashSequenceStart_Finish(
    ESYS_CONTEXT *esysContext,
    ESYS_TR *sequenceHandle);

/* Table 75 - TPM2_SequenceUpdate Command */

TSS2_RC
Esys_SequenceUpdate(
    ESYS_CONTEXT *esysContext,
    ESYS_TR sequenceHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_MAX_BUFFER *buffer);

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);

TSS2_RC
Esys_SequenceUpdate_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 77 - TPM2_SequenceComplete Command */

TSS2_RC
Esys_SequenceComplete(
    ESYS_CONTEXT *esysContext,
    ESYS_TR sequenceHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_MAX_BUFFER *buffer,
    ESYS_TR hierarchy,
    TPM2B_DIGEST **result,
    TPMT_TK_HASHCHECK **validation);

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,
    ESYS_TR hierarchy);

TSS2_RC
Esys_SequenceComplete_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_DIGEST **result,
    TPMT_TK_HASHCHECK **validation);

/* Table 79 - TPM2_EventSequenceComplete Command */

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);

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);

TSS2_RC
Esys_EventSequenceComplete_Finish(
    ESYS_CONTEXT *esysContext,
    TPML_DIGEST_VALUES **results);

/* Table 81 - TPM2_Certify Command */

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);

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);

TSS2_RC
Esys_Certify_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ATTEST **certifyInfo,
    TPMT_SIGNATURE **signature);

/* Table 83 - TPM2_CertifyCreation Command */

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);

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);

TSS2_RC
Esys_CertifyCreation_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ATTEST **certifyInfo,
    TPMT_SIGNATURE **signature);

/* Table 85 - TPM2_Quote Command */

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);

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);

TSS2_RC
Esys_Quote_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ATTEST **quoted,
    TPMT_SIGNATURE **signature);

/* Table 87 - TPM2_GetSessionAuditDigest Command */

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);

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);

TSS2_RC
Esys_GetSessionAuditDigest_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ATTEST **auditInfo,
    TPMT_SIGNATURE **signature);

/* Table 89 - TPM2_GetCommandAuditDigest Command */

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);

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);

TSS2_RC
Esys_GetCommandAuditDigest_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ATTEST **auditInfo,
    TPMT_SIGNATURE **signature);

/* Table 91 - TPM2_GetTime Command */

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);

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);

TSS2_RC
Esys_GetTime_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ATTEST **timeInfo,
    TPMT_SIGNATURE **signature);

/* Table 93 - TPM2_Commit Command */

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);

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);

TSS2_RC
Esys_Commit_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ECC_POINT **K,
    TPM2B_ECC_POINT **L,
    TPM2B_ECC_POINT **E,
    UINT16 *counter);

/* Table 95 - TPM2_EC_Ephemeral Command */

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);

TSS2_RC
Esys_EC_Ephemeral_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMI_ECC_CURVE curveID);

TSS2_RC
Esys_EC_Ephemeral_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ECC_POINT **Q,
    UINT16 *counter);

/* Table 97 - TPM2_VerifySignature Command */

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);

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);

TSS2_RC
Esys_VerifySignature_Finish(
    ESYS_CONTEXT *esysContext,
    TPMT_TK_VERIFIED **validation);

/* Table 99 - TPM2_Sign Command */

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);

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);

TSS2_RC
Esys_Sign_Finish(
    ESYS_CONTEXT *esysContext,
    TPMT_SIGNATURE **signature);

/* Table 101 - TPM2_SetCommandCodeAuditStatus Command */

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);

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);

TSS2_RC
Esys_SetCommandCodeAuditStatus_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 103 - TPM2_PCR_Extend Command */

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);

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);

TSS2_RC
Esys_PCR_Extend_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 105 - TPM2_PCR_Event Command */

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);

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);

TSS2_RC
Esys_PCR_Event_Finish(
    ESYS_CONTEXT *esysContext,
    TPML_DIGEST_VALUES **digests);

/* Table 107 - TPM2_PCR_Read Command */

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);

TSS2_RC
Esys_PCR_Read_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPML_PCR_SELECTION *pcrSelectionIn);

TSS2_RC
Esys_PCR_Read_Finish(
    ESYS_CONTEXT *esysContext,
    UINT32 *pcrUpdateCounter,
    TPML_PCR_SELECTION **pcrSelectionOut,
    TPML_DIGEST **pcrValues);

/* Table 109 - TPM2_PCR_Allocate Command */

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);

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);

TSS2_RC
Esys_PCR_Allocate_Finish(
    ESYS_CONTEXT *esysContext,
    TPMI_YES_NO *allocationSuccess,
    UINT32 *maxPCR,
    UINT32 *sizeNeeded,
    UINT32 *sizeAvailable);

/* Table 111 - TPM2_PCR_SetAuthPolicy Command */

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);

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);

TSS2_RC
Esys_PCR_SetAuthPolicy_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 113 - TPM2_PCR_SetAuthValue Command */

TSS2_RC
Esys_PCR_SetAuthValue(
    ESYS_CONTEXT *esysContext,
    ESYS_TR pcrHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_DIGEST *auth);

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);

TSS2_RC
Esys_PCR_SetAuthValue_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 115 - TPM2_PCR_Reset Command */

TSS2_RC
Esys_PCR_Reset(
    ESYS_CONTEXT *esysContext,
    ESYS_TR pcrHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PCR_Reset_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR pcrHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PCR_Reset_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 117 - TPM2_PolicySigned Command */

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);

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);

TSS2_RC
Esys_PolicySigned_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_TIMEOUT **timeout,
    TPMT_TK_AUTH **policyTicket);

/* Table 119 - TPM2_PolicySecret Command */

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);

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);

TSS2_RC
Esys_PolicySecret_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_TIMEOUT **timeout,
    TPMT_TK_AUTH **policyTicket);

/* Table 121 - TPM2_PolicyTicket Command */

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);

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);

TSS2_RC
Esys_PolicyTicket_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 123 - TPM2_PolicyOR Command */

TSS2_RC
Esys_PolicyOR(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPML_DIGEST *pHashList);

TSS2_RC
Esys_PolicyOR_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPML_DIGEST *pHashList);

TSS2_RC
Esys_PolicyOR_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 125 - TPM2_PolicyPCR Command */

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);

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);

TSS2_RC
Esys_PolicyPCR_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 127 - TPM2_PolicyLocality Command */

TSS2_RC
Esys_PolicyLocality(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMA_LOCALITY locality);

TSS2_RC
Esys_PolicyLocality_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMA_LOCALITY locality);

TSS2_RC
Esys_PolicyLocality_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 129 - TPM2_PolicyNV Command */

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);

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);

TSS2_RC
Esys_PolicyNV_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 131 - TPM2_PolicyCounterTimer Command */

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);

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);

TSS2_RC
Esys_PolicyCounterTimer_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 133 - TPM2_PolicyCommandCode Command */

TSS2_RC
Esys_PolicyCommandCode(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPM2_CC code);

TSS2_RC
Esys_PolicyCommandCode_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPM2_CC code);

TSS2_RC
Esys_PolicyCommandCode_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 135 - TPM2_PolicyPhysicalPresence Command */

TSS2_RC
Esys_PolicyPhysicalPresence(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyPhysicalPresence_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyPhysicalPresence_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 137 - TPM2_PolicyCpHash Command */

TSS2_RC
Esys_PolicyCpHash(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_DIGEST *cpHashA);

TSS2_RC
Esys_PolicyCpHash_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_DIGEST *cpHashA);

TSS2_RC
Esys_PolicyCpHash_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 139 - TPM2_PolicyNameHash Command */

TSS2_RC
Esys_PolicyNameHash(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_DIGEST *nameHash);

TSS2_RC
Esys_PolicyNameHash_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_DIGEST *nameHash);

TSS2_RC
Esys_PolicyNameHash_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 141 - TPM2_PolicyDuplicationSelect Command */

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);

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);

TSS2_RC
Esys_PolicyDuplicationSelect_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 143 - TPM2_PolicyAuthorize Command */

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);

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);

TSS2_RC
Esys_PolicyAuthorize_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 145 - TPM2_PolicyAuthValue Command */

TSS2_RC
Esys_PolicyAuthValue(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyAuthValue_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyAuthValue_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 147 - TPM2_PolicyPassword Command */

TSS2_RC
Esys_PolicyPassword(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyPassword_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyPassword_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 149 - TPM2_PolicyGetDigest Command */

TSS2_RC
Esys_PolicyGetDigest(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPM2B_DIGEST **policyDigest);

TSS2_RC
Esys_PolicyGetDigest_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyGetDigest_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_DIGEST **policyDigest);

/* Table 151 - TPM2_PolicyNvWritten Command */

TSS2_RC
Esys_PolicyNvWritten(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMI_YES_NO writtenSet);

TSS2_RC
Esys_PolicyNvWritten_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMI_YES_NO writtenSet);

TSS2_RC
Esys_PolicyNvWritten_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 153 - TPM2_PolicyTemplate Command */

TSS2_RC
Esys_PolicyTemplate(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_DIGEST *templateHash);

TSS2_RC
Esys_PolicyTemplate_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_DIGEST *templateHash);

TSS2_RC
Esys_PolicyTemplate_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 155 - TPM2_PolicyAuthorizeNV Command */

TSS2_RC
Esys_PolicyAuthorizeNV(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR nvIndex,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyAuthorizeNV_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR nvIndex,
    ESYS_TR policySession,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_PolicyAuthorizeNV_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 157 - TPM2_CreatePrimary Command */

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);

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);

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);

/* Table 159 - TPM2_HierarchyControl Command */

TSS2_RC
Esys_HierarchyControl(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    ESYS_TR enable,
    TPMI_YES_NO state);

TSS2_RC
Esys_HierarchyControl_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    ESYS_TR enable,
    TPMI_YES_NO state);

TSS2_RC
Esys_HierarchyControl_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 161 - TPM2_SetPrimaryPolicy Command */

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);

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);

TSS2_RC
Esys_SetPrimaryPolicy_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 163 - TPM2_ChangePPS Command */

TSS2_RC
Esys_ChangePPS(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_ChangePPS_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_ChangePPS_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 165 - TPM2_ChangeEPS Command */

TSS2_RC
Esys_ChangeEPS(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_ChangeEPS_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_ChangeEPS_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 167 - TPM2_Clear Command */

TSS2_RC
Esys_Clear(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_Clear_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_Clear_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 169 - TPM2_ClearControl Command */

TSS2_RC
Esys_ClearControl(
    ESYS_CONTEXT *esysContext,
    ESYS_TR auth,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMI_YES_NO disable);

TSS2_RC
Esys_ClearControl_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR auth,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMI_YES_NO disable);

TSS2_RC
Esys_ClearControl_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 171 - TPM2_HierarchyChangeAuth Command */

TSS2_RC
Esys_HierarchyChangeAuth(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_AUTH *newAuth);

TSS2_RC
Esys_HierarchyChangeAuth_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_AUTH *newAuth);

TSS2_RC
Esys_HierarchyChangeAuth_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 173 - TPM2_DictionaryAttackLockReset Command */

TSS2_RC
Esys_DictionaryAttackLockReset(
    ESYS_CONTEXT *esysContext,
    ESYS_TR lockHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_DictionaryAttackLockReset_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR lockHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_DictionaryAttackLockReset_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 175 - TPM2_DictionaryAttackParameters Command */

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);

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);

TSS2_RC
Esys_DictionaryAttackParameters_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 177 - TPM2_PP_Commands Command */

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);

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);

TSS2_RC
Esys_PP_Commands_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 179 - TPM2_SetAlgorithmSet Command */

TSS2_RC
Esys_SetAlgorithmSet(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    UINT32 algorithmSet);

TSS2_RC
Esys_SetAlgorithmSet_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    UINT32 algorithmSet);

TSS2_RC
Esys_SetAlgorithmSet_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 181 - TPM2_FieldUpgradeStart Command */

TSS2_RC
Esys_FieldUpgradeStart(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authorization,
    ESYS_TR keyHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_DIGEST *fuDigest,
    const TPMT_SIGNATURE *manifestSignature);

TSS2_RC
Esys_FieldUpgradeStart_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authorization,
    ESYS_TR keyHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_DIGEST *fuDigest,
    const TPMT_SIGNATURE *manifestSignature);

TSS2_RC
Esys_FieldUpgradeStart_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 183 - TPM2_FieldUpgradeData Command */

TSS2_RC
Esys_FieldUpgradeData(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_MAX_BUFFER *fuData,
    TPMT_HA **nextDigest,
    TPMT_HA **firstDigest);

TSS2_RC
Esys_FieldUpgradeData_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_MAX_BUFFER *fuData);

TSS2_RC
Esys_FieldUpgradeData_Finish(
    ESYS_CONTEXT *esysContext,
    TPMT_HA **nextDigest,
    TPMT_HA **firstDigest);

/* Table 185 - TPM2_FirmwareRead Command */

TSS2_RC
Esys_FirmwareRead(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    UINT32 sequenceNumber,
    TPM2B_MAX_BUFFER **fuData);

TSS2_RC
Esys_FirmwareRead_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    UINT32 sequenceNumber);

TSS2_RC
Esys_FirmwareRead_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_MAX_BUFFER **fuData);

/* Table 187 - TPM2_ContextSave Command */

TSS2_RC
Esys_ContextSave(
    ESYS_CONTEXT *esysContext,
    ESYS_TR saveHandle,
    TPMS_CONTEXT **context);

TSS2_RC
Esys_ContextSave_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR saveHandle);

TSS2_RC
Esys_ContextSave_Finish(
    ESYS_CONTEXT *esysContext,
    TPMS_CONTEXT **context);

/* Table 189 - TPM2_ContextLoad Command */

TSS2_RC
Esys_ContextLoad(
    ESYS_CONTEXT *esysContext,
    const TPMS_CONTEXT *context,
    ESYS_TR *loadedHandle);

TSS2_RC
Esys_ContextLoad_Async(
    ESYS_CONTEXT *esysContext,
    const TPMS_CONTEXT *context);

TSS2_RC
Esys_ContextLoad_Finish(
    ESYS_CONTEXT *esysContext,
    ESYS_TR *loadedHandle);

/* Table 191 - TPM2_FlushContext Command */

TSS2_RC
Esys_FlushContext(
    ESYS_CONTEXT *esysContext,
    ESYS_TR flushHandle);

TSS2_RC
Esys_FlushContext_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR flushHandle);

TSS2_RC
Esys_FlushContext_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 193 - TPM2_EvictControl Command */

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);

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);

TSS2_RC
Esys_EvictControl_Finish(
    ESYS_CONTEXT *esysContext,
    ESYS_TR *newObjectHandle);

/* Table 195 - TPM2_ReadClock Command */

TSS2_RC
Esys_ReadClock(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPMS_TIME_INFO **currentTime);

TSS2_RC
Esys_ReadClock_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_ReadClock_Finish(
    ESYS_CONTEXT *esysContext,
    TPMS_TIME_INFO **currentTime);

/* Table 197 - TPM2_ClockSet Command */

TSS2_RC
Esys_ClockSet(
    ESYS_CONTEXT *esysContext,
    ESYS_TR auth,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    UINT64 newTime);

TSS2_RC
Esys_ClockSet_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR auth,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    UINT64 newTime);

TSS2_RC
Esys_ClockSet_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 199 - TPM2_ClockRateAdjust Command */

TSS2_RC
Esys_ClockRateAdjust(
    ESYS_CONTEXT *esysContext,
    ESYS_TR auth,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPM2_CLOCK_ADJUST rateAdjust);

TSS2_RC
Esys_ClockRateAdjust_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR auth,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPM2_CLOCK_ADJUST rateAdjust);

TSS2_RC
Esys_ClockRateAdjust_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 201 - TPM2_GetCapability Command */

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);

TSS2_RC
Esys_GetCapability_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    TPM2_CAP capability,
    UINT32 property,
    UINT32 propertyCount);

TSS2_RC
Esys_GetCapability_Finish(
    ESYS_CONTEXT *esysContext,
    TPMI_YES_NO *moreData,
    TPMS_CAPABILITY_DATA **capabilityData);

/* Table 203 - TPM2_TestParms Command */

TSS2_RC
Esys_TestParms(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPMT_PUBLIC_PARMS *parameters);

TSS2_RC
Esys_TestParms_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPMT_PUBLIC_PARMS *parameters);

TSS2_RC
Esys_TestParms_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 205 - TPM2_NV_DefineSpace Command */

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);

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);

TSS2_RC
Esys_NV_DefineSpace_Finish(
    ESYS_CONTEXT *esysContext,
    ESYS_TR *nvHandle);

/* Table 207 - TPM2_NV_UndefineSpace Command */

TSS2_RC
Esys_NV_UndefineSpace(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR nvIndex,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_UndefineSpace_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR nvIndex,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_UndefineSpace_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 209 - TPM2_NV_UndefineSpaceSpecial Command */

TSS2_RC
Esys_NV_UndefineSpaceSpecial(
    ESYS_CONTEXT *esysContext,
    ESYS_TR nvIndex,
    ESYS_TR platform,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_UndefineSpaceSpecial_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR nvIndex,
    ESYS_TR platform,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_UndefineSpaceSpecial_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 211 - TPM2_NV_ReadPublic Command */

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);

TSS2_RC
Esys_NV_ReadPublic_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR nvIndex,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_ReadPublic_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_NV_PUBLIC **nvPublic,
    TPM2B_NAME **nvName);

/* Table 213 - TPM2_NV_Write Command */

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);

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);

TSS2_RC
Esys_NV_Write_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 215 - TPM2_NV_Increment Command */

TSS2_RC
Esys_NV_Increment(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR nvIndex,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_Increment_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR nvIndex,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_Increment_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 217 - TPM2_NV_Extend Command */

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);

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);

TSS2_RC
Esys_NV_Extend_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 219 - TPM2_NV_SetBits Command */

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);

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);

TSS2_RC
Esys_NV_SetBits_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 221 - TPM2_NV_WriteLock Command */

TSS2_RC
Esys_NV_WriteLock(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR nvIndex,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_WriteLock_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR nvIndex,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_WriteLock_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 223 - TPM2_NV_GlobalWriteLock Command */

TSS2_RC
Esys_NV_GlobalWriteLock(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_GlobalWriteLock_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_GlobalWriteLock_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 225 - TPM2_NV_Read Command */

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);

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);

TSS2_RC
Esys_NV_Read_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_MAX_NV_BUFFER **data);

/* Table 227 - TPM2_NV_ReadLock Command */

TSS2_RC
Esys_NV_ReadLock(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR nvIndex,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_ReadLock_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR authHandle,
    ESYS_TR nvIndex,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3);

TSS2_RC
Esys_NV_ReadLock_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 229 - TPM2_NV_ChangeAuth Command */

TSS2_RC
Esys_NV_ChangeAuth(
    ESYS_CONTEXT *esysContext,
    ESYS_TR nvIndex,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_AUTH *newAuth);

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);

TSS2_RC
Esys_NV_ChangeAuth_Finish(
    ESYS_CONTEXT *esysContext);

/* Table 231 - TPM2_NV_Certify Command */

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);

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);

TSS2_RC
Esys_NV_Certify_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_ATTEST **certifyInfo,
    TPMT_SIGNATURE **signature);

/* Table 233 - TPM2_Vendor_TCG_Test Command */

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);

TSS2_RC
Esys_Vendor_TCG_Test_Async(
    ESYS_CONTEXT *esysContext,
    ESYS_TR shandle1,
    ESYS_TR shandle2,
    ESYS_TR shandle3,
    const TPM2B_DATA *inputData);

TSS2_RC
Esys_Vendor_TCG_Test_Finish(
    ESYS_CONTEXT *esysContext,
    TPM2B_DATA **outputData);

/*
 * TPM 2.0 ESAPI Helper Functions
 */
void
Esys_Free(
    void *__ptr);

TSS2_RC
Esys_GetSysContext(
    ESYS_CONTEXT *esys_context,
    TSS2_SYS_CONTEXT **sys_context);

#ifdef __cplusplus
}
#endif

#endif /* TSS2_ESYS_H */
