Doc: Fix doxygen

Update Doxygen files wrt to the new directory structure.
Now generating documentation for those parts that are documented.

Fixes #912

Signed-off-by: Andreas Fuchs <andreas.fuchs@sit.fraunhofer.de>
diff --git a/.gitignore b/.gitignore
index 2ee1b61..558d34e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -75,3 +75,5 @@
 
 test/helper/tpm_startup
 test/helper/tpm_transientempty
+Doxyfile
+doc/rtf
diff --git a/doc/Doxyfile.in b/Doxyfile.in
similarity index 96%
rename from doc/Doxyfile.in
rename to Doxyfile.in
index 537dfae..3d021b5 100644
--- a/doc/Doxyfile.in
+++ b/Doxyfile.in
@@ -1,4 +1,9 @@
-# Doxyfile 1.8.9.1
+# Unfortunately AC_CONFIG_FILES is too intelligent if this file lives inside the
+# /doc subdirectory; i.e. it will set @top_srcdir@ to ".." which screws up all
+# doxygen generation. Thus this file needs to live on top-level until anybody
+# comes up with a different solution.
+
+# Doxyfile 1.8.11
 
 # This file describes the settings to be used by the documentation system
 # doxygen (www.doxygen.org) for a project.
@@ -58,7 +63,7 @@
 # entered, it will be relative to the location where doxygen was started. If
 # left blank the current directory will be used.
 
-OUTPUT_DIRECTORY       = ./doc/doxy
+OUTPUT_DIRECTORY       = @top_builddir@/doc
 
 # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
 # directories (in 2 levels) under the output directory of each output format and
@@ -118,17 +123,7 @@
 # the entity):The $name class, The $name widget, The $name file, is, provides,
 # specifies, contains, represents, a, an and the.
 
-ABBREVIATE_BRIEF       = "The $name class" \
-                         "The $name widget" \
-                         "The $name file" \
-                         is \
-                         provides \
-                         specifies \
-                         contains \
-                         represents \
-                         a \
-                         an \
-                         the
+ABBREVIATE_BRIEF       = 
 
 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
 # doxygen will generate a detailed section even if there is only a brief
@@ -353,6 +348,13 @@
 
 DISTRIBUTE_GROUP_DOC   = NO
 
+# If one adds a struct or class to a group and this option is enabled, then also
+# any nested class or struct is added to the same group. By default this option
+# is disabled and one has to add nested compounds explicitly via \ingroup.
+# The default value is: NO.
+
+GROUP_NESTED_COMPOUNDS = YES
+
 # Set the SUBGROUPING tag to YES to allow class member groups of the same type
 # (for instance a group of public functions) to be put as a subgroup of that
 # type (e.g. under the Public Functions section). Set it to NO to prevent
@@ -371,7 +373,7 @@
 # SEPARATE_MEMBER_PAGES.
 # The default value is: NO.
 
-INLINE_GROUPED_CLASSES = NO
+INLINE_GROUPED_CLASSES = YES
 
 # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
 # with only public data fields or simple typedef fields will be shown inline in
@@ -419,7 +421,7 @@
 # normally produced when WARNINGS is set to YES.
 # The default value is: NO.
 
-EXTRACT_ALL            = YES
+EXTRACT_ALL            = NO
 
 # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
 # be included in the documentation.
@@ -708,7 +710,7 @@
 # messages are off.
 # The default value is: NO.
 
-QUIET                  = NO
+QUIET                  = YES
 
 # The WARNINGS tag can be used to turn on/off the warning messages that are
 # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
@@ -740,7 +742,7 @@
 # parameter documentation, but not about the absence of documentation.
 # The default value is: NO.
 
-WARN_NO_PARAMDOC       = NO
+WARN_NO_PARAMDOC       = YES
 
 # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
 # a warning is encountered.
@@ -771,15 +773,15 @@
 # The INPUT tag is used to specify the files and/or directories that contain
 # documented source files. You may enter file names like myfile.cpp or
 # directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
+# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
 # Note: If this tag is empty the current directory is searched.
 
-INPUT                  = ./doc/coding_standard_c.md \
-                         ./doc/logging.md \
-                         ./doc/doxygen.dox \
-                         ./README.md \
-                         ./include/esapi \
-                         ./esapi
+INPUT                  = @top_srcdir@/doc/coding_standard_c.md \
+                         @top_srcdir@/doc/logging.md \
+                         @top_srcdir@/doc/doxygen.dox \
+                         @top_srcdir@/README.md \
+                         @top_srcdir@/include/tss2/tss2_esys.h \
+                         @top_srcdir@/src/tss2-esys
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -792,14 +794,22 @@
 
 # If the value of the INPUT tag contains directories, you can use the
 # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
+# *.h) to filter out the source-files in the directories.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# read by doxygen.
+#
+# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
+# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
+# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
+# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl,
+# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js.
 
-FILE_PATTERNS          = *.c *.h *.md *.dox
+FILE_PATTERNS          = *.c \
+                         *.h \
+                         *.md \
+                         *.dox
 
 # The RECURSIVE tag can be used to specify whether or not subdirectories should
 # be searched for input files as well.
@@ -841,7 +851,7 @@
 # Note that the wildcards are matched against the file with absolute path, so to
 # exclude all test directories use the pattern */test/*
 
-EXCLUDE_SYMBOLS        = 
+EXCLUDE_SYMBOLS        = *_IN IESYS_CMD_IN_PARAM
 
 # The EXAMPLE_PATH tag can be used to specify one or more files or directories
 # that contain example code fragments that are included (see the \include
@@ -883,6 +893,10 @@
 # Note that the filter must not add or remove lines; it is applied before the
 # code is scanned, but not when the output code is generated. If lines are added
 # or removed, the anchors will not be placed correctly.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
 
 INPUT_FILTER           = 
 
@@ -892,6 +906,10 @@
 # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
 # filters are used. If the FILTER_PATTERNS tag is empty or if none of the
 # patterns match the file name, INPUT_FILTER is applied.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
 
 FILTER_PATTERNS        = 
 
@@ -915,7 +933,7 @@
 # (index.html). This can be useful if you have a project on for instance GitHub
 # and want to reuse the introduction page also for the doxygen output.
 
-USE_MDFILE_AS_MAINPAGE = 
+USE_MDFILE_AS_MAINPAGE = README.md
 
 #---------------------------------------------------------------------------
 # Configuration options related to source browsing
@@ -928,7 +946,7 @@
 # also VERBATIM_HEADERS is set to NO.
 # The default value is: NO.
 
-SOURCE_BROWSER         = YES
+SOURCE_BROWSER         = NO
 
 # Setting the INLINE_SOURCES tag to YES will include the body of functions,
 # classes and enums directly into the documentation.
@@ -1009,7 +1027,7 @@
 # rich C++ code for which doxygen's built-in parser lacks the necessary type
 # information.
 # Note: The availability of this option depends on whether or not doxygen was
-# compiled with the --with-libclang option.
+# generated with the -Duse-libclang=ON option for CMake.
 # The default value is: NO.
 
 CLANG_ASSISTED_PARSING = NO
@@ -1063,7 +1081,7 @@
 # The default directory is: html.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_OUTPUT            = ../html
+HTML_OUTPUT            = html
 
 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
 # generated HTML page (for example: .htm, .php, .asp).
@@ -1169,8 +1187,9 @@
 
 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
 # page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
+# to YES can help to show when doxygen was last run and thus if the
+# documentation is up to date.
+# The default value is: NO.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_TIMESTAMP         = NO
@@ -1598,7 +1617,7 @@
 # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
 # The default value is: YES.
 
-GENERATE_LATEX         = YES
+GENERATE_LATEX         = NO
 
 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1644,9 +1663,12 @@
 PAPER_TYPE             = a4
 
 # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
+# that should be included in the LaTeX output. The package can be specified just
+# by its name or with the correct syntax as to be used with the LaTeX
+# \usepackage command. To get the times font for instance you can specify :
+# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
+# To use the option intlimits with the amsmath package you can specify:
+# EXTRA_PACKAGES=[intlimits]{amsmath}
 # If left blank no extra packages will be included.
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
@@ -1766,7 +1788,7 @@
 # readers/editors.
 # The default value is: NO.
 
-GENERATE_RTF           = NO
+GENERATE_RTF           = YES
 
 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1840,7 +1862,7 @@
 # The default directory is: man.
 # This tag requires that the tag GENERATE_MAN is set to YES.
 
-MAN_OUTPUT             = ../man
+MAN_OUTPUT             = man
 
 # The MAN_EXTENSION tag determines the extension that is added to the generated
 # man pages. In case the manual section does not start with a number, the number
@@ -1865,7 +1887,7 @@
 # The default value is: NO.
 # This tag requires that the tag GENERATE_MAN is set to YES.
 
-MAN_LINKS              = YES
+MAN_LINKS              = NO
 
 #---------------------------------------------------------------------------
 # Configuration options related to the XML output
@@ -2185,7 +2207,7 @@
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-CLASS_GRAPH            = YES
+CLASS_GRAPH            = NO
 
 # If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
 # graph for each documented class showing the direct and indirect implementation
@@ -2194,7 +2216,7 @@
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-COLLABORATION_GRAPH    = YES
+COLLABORATION_GRAPH    = NO
 
 # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
 # groups, showing the direct groups dependencies.
@@ -2239,7 +2261,7 @@
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-INCLUDE_GRAPH          = YES
+INCLUDE_GRAPH          = NO
 
 # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
 # set to YES then doxygen will generate a graph for each documented file showing
@@ -2248,7 +2270,7 @@
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-INCLUDED_BY_GRAPH      = YES
+INCLUDED_BY_GRAPH      = NO
 
 # If the CALL_GRAPH tag is set to YES then doxygen will generate a call
 # dependency graph for every global function or class method.
@@ -2260,7 +2282,7 @@
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-CALL_GRAPH             = NO
+CALL_GRAPH             = YES
 
 # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
 # dependency graph for every global function or class method.
@@ -2272,14 +2294,14 @@
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-CALLER_GRAPH           = NO
+CALLER_GRAPH           = YES
 
 # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
 # hierarchy of all classes instead of a textual one.
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-GRAPHICAL_HIERARCHY    = YES
+GRAPHICAL_HIERARCHY    = NO
 
 # If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
 # dependencies a directory has on other directories in a graphical way. The
@@ -2291,13 +2313,17 @@
 DIRECTORY_GRAPH        = YES
 
 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
+# generated by dot. For an explanation of the image formats see the section
+# output formats in the documentation of the dot tool (Graphviz (see:
+# http://www.graphviz.org/)).
 # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
 # to make the SVG files visible in IE 9+ (other browsers do not have this
 # requirement).
 # Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,
 # png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,
-# gif:cairo:gd, gif:gd, gif:gd:gd and svg.
+# gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd, png:cairo,
+# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
+# png:gdiplus:gdiplus.
 # The default value is: png.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
diff --git a/configure.ac b/configure.ac
index 9a657db..e76fb00 100644
--- a/configure.ac
+++ b/configure.ac
@@ -38,7 +38,7 @@
                   subdir-objects])
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) #Backward compatible setting of "silent-rules"
 
-AC_CONFIG_FILES([Makefile doc/Doxyfile])
+AC_CONFIG_FILES([Makefile Doxyfile])
 
 # propagate configure arguments to distcheck
 AC_SUBST([DISTCHECK_CONFIGURE_FLAGS],[$ac_configure_args])
@@ -164,7 +164,8 @@
 AX_ADD_COMPILER_FLAG([-Wno-missing-braces])
 
 dnl --------- Doxy Gen -----------------------
-DX_INIT_DOXYGEN($PACKAGE_NAME, [doc/Doxyfile], [doc/doxy])
+DX_DOXYGEN_FEATURE(ON)
+DX_DOT_FEATURE(OFF)
 DX_HTML_FEATURE(ON)
 DX_CHM_FEATURE(OFF)
 DX_CHI_FEATURE(OFF)
@@ -173,7 +174,7 @@
 DX_XML_FEATURE(OFF)
 DX_PDF_FEATURE(OFF)
 DX_PS_FEATURE(OFF)
-
+DX_INIT_DOXYGEN($PACKAGE_NAME, [Doxyfile], [doc/doxy])
 
 AX_CODE_COVERAGE
 
diff --git a/doc/doxygen.dox b/doc/doxygen.dox
index 07ee7ac..88fe86e 100644
--- a/doc/doxygen.dox
+++ b/doc/doxygen.dox
@@ -1,13 +1,4 @@
 /*!
- \mainpage TPM Software Stack 2.0
- This is an implementation of the TCG TPM Software Stack 2.0 specification.
- It includes several TCTI modules, Marshaling/Unmarshaling, SystemAPI and Enhanced System API.
-
- See https://trustedcomputinggroup.org/work-groups/software-stack/
- and https://trustedcomputinggroup.org/specifications-public-review/
-*/
-
-/*!
  \defgroup esys Enhanced System API
  \todo Description
 */
@@ -115,41 +106,41 @@
  The following function represent interactions with the corresponding TPM
  commands.
  \{
- \defgroup Esys_ActivateCredential
+ \defgroup Esys_ActivateCredential The ESAPI function for the TPM2_ActivateCredential command.
  \{
  \fn TSS2_RC Esys_ActivateCredential_async(ESYS_CONTEXT *esysContext, ESYS_TR activateHandle, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ID_OBJECT *credentialBlob, const TPM2B_ENCRYPTED_SECRET *secret)
  \fn TSS2_RC Esys_ActivateCredential(ESYS_CONTEXT *esysContext, ESYS_TR activateHandle, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ID_OBJECT *credentialBlob, const TPM2B_ENCRYPTED_SECRET *secret, TPM2B_DIGEST **certInfo)
  \fn TSS2_RC Esys_ActivateCredential_finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **certInfo)
  \}
- \defgroup Esys_Certify
+ \defgroup Esys_Certify The ESAPI function for the TPM2_Certify command.
  \{
  \fn TSS2_RC Esys_Certify_async(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme)
  \fn TSS2_RC Esys_Certify(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
  \fn TSS2_RC Esys_Certify_finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
  \}
- \defgroup Esys_CertifyCreation
+ \defgroup Esys_CertifyCreation The ESAPI function for the TPM2_CertifyCreation command.
  \{
  \fn TSS2_RC Esys_CertifyCreation_async(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPM2B_DIGEST *creationHash, const TPMT_SIG_SCHEME *inScheme, const TPMT_TK_CREATION *creationTicket)
  \fn TSS2_RC Esys_CertifyCreation(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPM2B_DIGEST *creationHash, const TPMT_SIG_SCHEME *inScheme, const TPMT_TK_CREATION *creationTicket, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
  \fn TSS2_RC Esys_CertifyCreation_finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
  \}
- \defgroup Esys_ChangeEPS
+ \defgroup Esys_ChangeEPS The ESAPI function for the TPM2_ChangeEPS command.
  \{
  \fn TSS2_RC Esys_ChangeEPS_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_ChangeEPS(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_ChangeEPS_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_ChangePPS
+ \defgroup Esys_ChangePPS The ESAPI function for the TPM2_ChangePPS command.
  \{
  \fn TSS2_RC Esys_ChangePPS_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_ChangePPS(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_ChangePPS_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_Clear
+ \defgroup Esys_Clear The ESAPI function for the TPM2_Clear command.
  \{
  \fn TSS2_RC Esys_Clear_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \}
- \defgroup Esys_ClearControl
+ \defgroup Esys_ClearControl The ESAPI function for the TPM2_ClearControl command.
  \{
  \fn TSS2_RC Esys_ClearControl_async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO disable)
  \fn TSS2_RC Esys_ClearControl(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO disable)
@@ -157,595 +148,595 @@
  \fn TSS2_RC Esys_Clear(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_Clear_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_ClockRateAdjust
+ \defgroup Esys_ClockRateAdjust The ESAPI function for the TPM2_ClockRateAdjust command.
  \{
  \fn TSS2_RC Esys_ClockRateAdjust_async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CLOCK_ADJUST rateAdjust)
  \fn TSS2_RC Esys_ClockRateAdjust(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CLOCK_ADJUST rateAdjust)
  \fn TSS2_RC Esys_ClockRateAdjust_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_ClockSet
+ \defgroup Esys_ClockSet The ESAPI function for the TPM2_ClockSet command.
  \{
  \fn TSS2_RC Esys_ClockSet_async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT64 newTime)
  \fn TSS2_RC Esys_ClockSet(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT64 newTime)
  \fn TSS2_RC Esys_ClockSet_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_Commit
+ \defgroup Esys_Commit The ESAPI function for the TPM2_Commit command.
  \{
  \fn TSS2_RC Esys_Commit_async(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *P1, const TPM2B_SENSITIVE_DATA *s2, const TPM2B_ECC_PARAMETER *y2)
  \fn TSS2_RC Esys_Commit(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *P1, const TPM2B_SENSITIVE_DATA *s2, const TPM2B_ECC_PARAMETER *y2, TPM2B_ECC_POINT **K, TPM2B_ECC_POINT **L, TPM2B_ECC_POINT **E, UINT16 *counter)
  \fn TSS2_RC Esys_Commit_finish(ESYS_CONTEXT *esysContext, TPM2B_ECC_POINT **K, TPM2B_ECC_POINT **L, TPM2B_ECC_POINT **E, UINT16 *counter)
  \}
- \defgroup Esys_ContextLoad
+ \defgroup Esys_ContextLoad The ESAPI function for the TPM2_ContextLoad command.
  \{
  \fn TSS2_RC Esys_ContextLoad_async(ESYS_CONTEXT *esysContext, const TPMS_CONTEXT *context)
  \fn TSS2_RC Esys_ContextLoad(ESYS_CONTEXT *esysContext, const TPMS_CONTEXT *context, ESYS_TR *loadedHandle)
  \fn TSS2_RC Esys_ContextLoad_finish(ESYS_CONTEXT *esysContext, ESYS_TR *loadedHandle)
  \}
- \defgroup Esys_ContextSave
+ \defgroup Esys_ContextSave The ESAPI function for the TPM2_ContextSave command.
  \{
  \fn TSS2_RC Esys_ContextSave_async(ESYS_CONTEXT *esysContext, ESYS_TR saveHandle)
  \fn TSS2_RC Esys_ContextSave(ESYS_CONTEXT *esysContext, ESYS_TR saveHandle, TPMS_CONTEXT **context)
  \fn TSS2_RC Esys_ContextSave_finish(ESYS_CONTEXT *esysContext, TPMS_CONTEXT **context)
  \}
- \defgroup Esys_Create
+ \defgroup Esys_Create The ESAPI function for the TPM2_Create command.
  \{
  \fn TSS2_RC Esys_Create_async(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_CREATE *inSensitive, const TPM2B_PUBLIC *inPublic, const TPM2B_DATA *outsideInfo, const TPML_PCR_SELECTION *creationPCR)
  \fn TSS2_RC Esys_Create(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_CREATE *inSensitive, const TPM2B_PUBLIC *inPublic, const TPM2B_DATA *outsideInfo, const TPML_PCR_SELECTION *creationPCR, TPM2B_PRIVATE **outPrivate, TPM2B_PUBLIC **outPublic, TPM2B_CREATION_DATA **creationData, TPM2B_DIGEST **creationHash, TPMT_TK_CREATION **creationTicket)
  \fn TSS2_RC Esys_Create_finish(ESYS_CONTEXT *esysContext, TPM2B_PRIVATE **outPrivate, TPM2B_PUBLIC **outPublic, TPM2B_CREATION_DATA **creationData, TPM2B_DIGEST **creationHash, TPMT_TK_CREATION **creationTicket)
  \}
- \defgroup Esys_CreatePrimary
+ \defgroup Esys_CreatePrimary The ESAPI function for the TPM2_CreatePrimary command.
  \{
  \fn TSS2_RC Esys_CreatePrimary_async(ESYS_CONTEXT *esysContext, ESYS_TR primaryHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_CREATE *inSensitive, const TPM2B_PUBLIC *inPublic, const TPM2B_DATA *outsideInfo, const TPML_PCR_SELECTION *creationPCR)
  \fn TSS2_RC Esys_CreatePrimary(ESYS_CONTEXT *esysContext, ESYS_TR primaryHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_CREATE *inSensitive, const TPM2B_PUBLIC *inPublic, const TPM2B_DATA *outsideInfo, const TPML_PCR_SELECTION *creationPCR, ESYS_TR *objectHandle, TPM2B_PUBLIC **outPublic, TPM2B_CREATION_DATA **creationData, TPM2B_DIGEST **creationHash, TPMT_TK_CREATION **creationTicket)
  \fn TSS2_RC Esys_CreatePrimary_finish(ESYS_CONTEXT *esysContext, ESYS_TR *objectHandle, TPM2B_PUBLIC **outPublic, TPM2B_CREATION_DATA **creationData, TPM2B_DIGEST **creationHash, TPMT_TK_CREATION **creationTicket)
  \}
- \defgroup Esys_DictionaryAttackLockReset
+ \defgroup Esys_DictionaryAttackLockReset The ESAPI function for the TPM2_DictionaryAttackLockReset command.
  \{
  \fn TSS2_RC Esys_DictionaryAttackLockReset_async(ESYS_CONTEXT *esysContext, ESYS_TR lockHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_DictionaryAttackLockReset(ESYS_CONTEXT *esysContext, ESYS_TR lockHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_DictionaryAttackLockReset_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_DictionaryAttackParameters
+ \defgroup Esys_DictionaryAttackParameters The ESAPI function for the TPM2_DictionaryAttackParameters command.
  \{
  \fn TSS2_RC Esys_DictionaryAttackParameters_async(ESYS_CONTEXT *esysContext, ESYS_TR lockHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT32 newMaxTries, UINT32 newRecoveryTime, UINT32 lockoutRecovery)
  \fn TSS2_RC Esys_DictionaryAttackParameters(ESYS_CONTEXT *esysContext, ESYS_TR lockHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT32 newMaxTries, UINT32 newRecoveryTime, UINT32 lockoutRecovery)
  \fn TSS2_RC Esys_DictionaryAttackParameters_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_Duplicate
+ \defgroup Esys_Duplicate The ESAPI function for the TPM2_Duplicate command.
  \{
  \fn TSS2_RC Esys_Duplicate_async(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR newParentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *encryptionKeyIn, const TPMT_SYM_DEF_OBJECT *symmetricAlg)
  \fn TSS2_RC Esys_Duplicate(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR newParentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *encryptionKeyIn, const TPMT_SYM_DEF_OBJECT *symmetricAlg, TPM2B_DATA **encryptionKeyOut, TPM2B_PRIVATE **duplicate, TPM2B_ENCRYPTED_SECRET **outSymSeed)
  \fn TSS2_RC Esys_Duplicate_finish(ESYS_CONTEXT *esysContext, TPM2B_DATA **encryptionKeyOut, TPM2B_PRIVATE **duplicate, TPM2B_ENCRYPTED_SECRET **outSymSeed)
  \}
- \defgroup Esys_ECC_Parameters
+ \defgroup Esys_ECC_Parameters The ESAPI function for the TPM2_ECC_Parameters command.
  \{
  \fn TSS2_RC Esys_ECC_Parameters_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ECC_CURVE curveID)
  \fn TSS2_RC Esys_ECC_Parameters(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ECC_CURVE curveID, TPMS_ALGORITHM_DETAIL_ECC **parameters)
  \fn TSS2_RC Esys_ECC_Parameters_finish(ESYS_CONTEXT *esysContext, TPMS_ALGORITHM_DETAIL_ECC **parameters)
  \}
- \defgroup Esys_ECDH_KeyGen
+ \defgroup Esys_ECDH_KeyGen The ESAPI function for the TPM2_ECDH_KeyGen command.
  \{
  \fn TSS2_RC Esys_ECDH_KeyGen_async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_ECDH_KeyGen(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_ECC_POINT **zPoint, TPM2B_ECC_POINT **pubPoint)
  \fn TSS2_RC Esys_ECDH_KeyGen_finish(ESYS_CONTEXT *esysContext, TPM2B_ECC_POINT **zPoint, TPM2B_ECC_POINT **pubPoint)
  \}
- \defgroup Esys_ECDH_ZGen
+ \defgroup Esys_ECDH_ZGen The ESAPI function for the TPM2_ECDH_ZGen command.
  \{
  \fn TSS2_RC Esys_ECDH_ZGen_async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *inPoint)
  \fn TSS2_RC Esys_ECDH_ZGen(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *inPoint, TPM2B_ECC_POINT **outPoint)
  \fn TSS2_RC Esys_ECDH_ZGen_finish(ESYS_CONTEXT *esysContext, TPM2B_ECC_POINT **outPoint)
  \}
- \defgroup Esys_EC_Ephemeral
+ \defgroup Esys_EC_Ephemeral The ESAPI function for the TPM2_EC_Ephemeral command.
  \{
  \fn TSS2_RC Esys_EC_Ephemeral_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ECC_CURVE curveID)
  \fn TSS2_RC Esys_EC_Ephemeral(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ECC_CURVE curveID, TPM2B_ECC_POINT **Q, UINT16 *counter)
  \fn TSS2_RC Esys_EC_Ephemeral_finish(ESYS_CONTEXT *esysContext, TPM2B_ECC_POINT **Q, UINT16 *counter)
  \}
- \defgroup Esys_EncryptDecrypt
+ \defgroup Esys_EncryptDecrypt The ESAPI function for the TPM2_EncryptDecrypt command.
  \{
  \fn TSS2_RC Esys_EncryptDecrypt_async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO decrypt, TPMI_ALG_SYM_MODE mode, const TPM2B_IV *ivIn, const TPM2B_MAX_BUFFER *inData)
  \fn TSS2_RC Esys_EncryptDecrypt(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO decrypt, TPMI_ALG_SYM_MODE mode, const TPM2B_IV *ivIn, const TPM2B_MAX_BUFFER *inData, TPM2B_MAX_BUFFER **outData, TPM2B_IV **ivOut)
  \fn TSS2_RC Esys_EncryptDecrypt_finish(ESYS_CONTEXT *esysContext, TPM2B_MAX_BUFFER **outData, TPM2B_IV **ivOut)
  \}
- \defgroup Esys_EventSequenceComplete
+ \defgroup Esys_EventSequenceComplete The ESAPI function for the TPM2_EventSequenceComplete command.
  \{
  \fn TSS2_RC Esys_EventSequenceComplete_async(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer)
  \fn TSS2_RC Esys_EventSequenceComplete(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer, TPML_DIGEST_VALUES **results)
  \fn TSS2_RC Esys_EventSequenceComplete_finish(ESYS_CONTEXT *esysContext, TPML_DIGEST_VALUES **results)
  \}
- \defgroup Esys_EvictControl
+ \defgroup Esys_EvictControl The ESAPI function for the TPM2_EvictControl command.
  \{
  \fn TSS2_RC Esys_EvictControl_async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_DH_PERSISTENT persistentHandle)
  \fn TSS2_RC Esys_EvictControl(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_DH_PERSISTENT persistentHandle, ESYS_TR *newObjectHandle)
  \fn TSS2_RC Esys_EvictControl_finish(ESYS_CONTEXT *esysContext, ESYS_TR *newObjectHandle)
  \}
- \defgroup Esys_FlushContext
+ \defgroup Esys_FlushContext The ESAPI function for the TPM2_FlushContext command.
  \{
  \fn TSS2_RC Esys_FlushContext_async(ESYS_CONTEXT *esysContext, TPMI_DH_CONTEXT flushHandle)
  \fn TSS2_RC Esys_FlushContext(ESYS_CONTEXT *esysContext, TPMI_DH_CONTEXT flushHandle)
  \fn TSS2_RC Esys_FlushContext_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_GetCapability
+ \defgroup Esys_GetCapability The ESAPI function for the TPM2_GetCapability command.
  \{
  \fn TSS2_RC Esys_GetCapability_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CAP capability, UINT32 property, UINT32 propertyCount)
  \fn TSS2_RC Esys_GetCapability(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CAP capability, UINT32 property, UINT32 propertyCount, TPMI_YES_NO *moreData, TPMS_CAPABILITY_DATA **capabilityData)
  \fn TSS2_RC Esys_GetCapability_finish(ESYS_CONTEXT *esysContext, TPMI_YES_NO *moreData, TPMS_CAPABILITY_DATA **capabilityData)
  \}
- \defgroup Esys_GetCommandAuditDigest
+ \defgroup Esys_GetCommandAuditDigest The ESAPI function for the TPM2_GetCommandAuditDigest command.
  \{
  \fn TSS2_RC Esys_GetCommandAuditDigest_async(ESYS_CONTEXT *esysContext, ESYS_TR privacyHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme)
  \fn TSS2_RC Esys_GetCommandAuditDigest(ESYS_CONTEXT *esysContext, ESYS_TR privacyHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, TPM2B_ATTEST **auditInfo, TPMT_SIGNATURE **signature)
  \fn TSS2_RC Esys_GetCommandAuditDigest_finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **auditInfo, TPMT_SIGNATURE **signature)
  \}
- \defgroup Esys_GetRandom
+ \defgroup Esys_GetRandom The ESAPI function for the TPM2_GetRandom command.
  \{
  \fn TSS2_RC Esys_GetRandom_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 bytesRequested)
  \fn TSS2_RC Esys_GetRandom(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 bytesRequested, TPM2B_DIGEST **randomBytes)
  \fn TSS2_RC Esys_GetRandom_finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **randomBytes)
  \}
- \defgroup Esys_GetSessionAuditDigest
+ \defgroup Esys_GetSessionAuditDigest The ESAPI function for the TPM2_GetSessionAuditDigest command.
  \{
  \fn TSS2_RC Esys_GetSessionAuditDigest_async(ESYS_CONTEXT *esysContext, ESYS_TR privacyAdminHandle, ESYS_TR signHandle, ESYS_TR sessionHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme)
  \fn TSS2_RC Esys_GetSessionAuditDigest(ESYS_CONTEXT *esysContext, ESYS_TR privacyAdminHandle, ESYS_TR signHandle, ESYS_TR sessionHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, TPM2B_ATTEST **auditInfo, TPMT_SIGNATURE **signature)
  \fn TSS2_RC Esys_GetSessionAuditDigest_finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **auditInfo, TPMT_SIGNATURE **signature)
  \}
- \defgroup Esys_GetTestResult
+ \defgroup Esys_GetTestResult The ESAPI function for the TPM2_GetTestResult command.
  \{
  \fn TSS2_RC Esys_GetTestResult_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_GetTestResult(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_MAX_BUFFER **outData, TPM2_RC *testResult)
  \fn TSS2_RC Esys_GetTestResult_finish(ESYS_CONTEXT *esysContext, TPM2B_MAX_BUFFER **outData, TPM2_RC *testResult)
  \}
- \defgroup Esys_GetTime
+ \defgroup Esys_GetTime The ESAPI function for the TPM2_GetTime command.
  \{
  \fn TSS2_RC Esys_GetTime_async(ESYS_CONTEXT *esysContext, ESYS_TR privacyAdminHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme)
  \fn TSS2_RC Esys_GetTime(ESYS_CONTEXT *esysContext, ESYS_TR privacyAdminHandle, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, TPM2B_ATTEST **timeInfo, TPMT_SIGNATURE **signature)
  \fn TSS2_RC Esys_GetTime_finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **timeInfo, TPMT_SIGNATURE **signature)
  \}
- \defgroup Esys_Hash
+ \defgroup Esys_Hash The ESAPI function for the TPM2_Hash command.
  \{
  \fn TSS2_RC Esys_Hash_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *data, TPMI_ALG_HASH hashAlg, TPMI_RH_HIERARCHY hierarchy)
  \fn TSS2_RC Esys_Hash(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *data, TPMI_ALG_HASH hashAlg, TPMI_RH_HIERARCHY hierarchy, TPM2B_DIGEST **outHash, TPMT_TK_HASHCHECK **validation)
  \fn TSS2_RC Esys_Hash_finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **outHash, TPMT_TK_HASHCHECK **validation)
  \}
- \defgroup Esys_HashSequenceStart
+ \defgroup Esys_HashSequenceStart The ESAPI function for the TPM2_HashSequenceStart command.
  \{
  \fn TSS2_RC Esys_HashSequenceStart_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg)
  \fn TSS2_RC Esys_HashSequenceStart(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg, ESYS_TR *sequenceHandle)
  \fn TSS2_RC Esys_HashSequenceStart_finish(ESYS_CONTEXT *esysContext, ESYS_TR *sequenceHandle)
  \}
- \defgroup Esys_HierarchyChangeAuth
+ \defgroup Esys_HierarchyChangeAuth The ESAPI function for the TPM2_HierarchyChangeAuth command.
  \{
  \fn TSS2_RC Esys_HierarchyChangeAuth_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth)
  \fn TSS2_RC Esys_HierarchyChangeAuth(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth)
  \fn TSS2_RC Esys_HierarchyChangeAuth_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_HierarchyControl
+ \defgroup Esys_HierarchyControl The ESAPI function for the TPM2_HierarchyControl command.
  \{
  \fn TSS2_RC Esys_HierarchyControl_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_RH_ENABLES enable, TPMI_YES_NO state)
  \fn TSS2_RC Esys_HierarchyControl(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_RH_ENABLES enable, TPMI_YES_NO state)
  \fn TSS2_RC Esys_HierarchyControl_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_HMAC
+ \defgroup Esys_HMAC The ESAPI function for the TPM2_HMAC command.
  \{
  \fn TSS2_RC Esys_HMAC_async(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer, TPMI_ALG_HASH hashAlg)
  \fn TSS2_RC Esys_HMAC(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer, TPMI_ALG_HASH hashAlg, TPM2B_DIGEST **outHMAC)
  \fn TSS2_RC Esys_HMAC_finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **outHMAC)
  \}
- \defgroup Esys_HMAC_Start
+ \defgroup Esys_HMAC_Start The ESAPI function for the TPM2_HMAC_Start command.
  \{
  \fn TSS2_RC Esys_HMAC_Start_async(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg)
  \fn TSS2_RC Esys_HMAC_Start(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg, ESYS_TR *sequenceHandle)
  \fn TSS2_RC Esys_HMAC_Start_finish(ESYS_CONTEXT *esysContext, ESYS_TR *sequenceHandle)
  \}
- \defgroup Esys_Import
+ \defgroup Esys_Import The ESAPI function for the TPM2_Import command.
  \{
  \fn TSS2_RC Esys_Import_async(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *encryptionKey, const TPM2B_PUBLIC *objectPublic, const TPM2B_PRIVATE *duplicate, const TPM2B_ENCRYPTED_SECRET *inSymSeed, const TPMT_SYM_DEF_OBJECT *symmetricAlg)
  \fn TSS2_RC Esys_Import(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *encryptionKey, const TPM2B_PUBLIC *objectPublic, const TPM2B_PRIVATE *duplicate, const TPM2B_ENCRYPTED_SECRET *inSymSeed, const TPMT_SYM_DEF_OBJECT *symmetricAlg, TPM2B_PRIVATE **outPrivate)
  \fn TSS2_RC Esys_Import_finish(ESYS_CONTEXT *esysContext, TPM2B_PRIVATE **outPrivate)
  \}
- \defgroup Esys_IncrementalSelfTest
+ \defgroup Esys_IncrementalSelfTest The ESAPI function for the TPM2_IncrementalSelfTest command.
  \{
  \fn TSS2_RC Esys_IncrementalSelfTest_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_ALG *toTest)
  \fn TSS2_RC Esys_IncrementalSelfTest(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_ALG *toTest, TPML_ALG **toDoList)
  \fn TSS2_RC Esys_IncrementalSelfTest_finish(ESYS_CONTEXT *esysContext, TPML_ALG **toDoList)
  \}
- \defgroup Esys_Load
+ \defgroup Esys_Load The ESAPI function for the TPM2_Load command.
  \{
  \fn TSS2_RC Esys_Load_async(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PRIVATE *inPrivate, const TPM2B_PUBLIC *inPublic)
  \fn TSS2_RC Esys_Load(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PRIVATE *inPrivate, const TPM2B_PUBLIC *inPublic, ESYS_TR *objectHandle)
  \}
- \defgroup Esys_LoadExternal
+ \defgroup Esys_LoadExternal The ESAPI function for the TPM2_LoadExternal command.
  \{
  \fn TSS2_RC Esys_LoadExternal_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE *inPrivate, const TPM2B_PUBLIC *inPublic, TPMI_RH_HIERARCHY hierarchy)
  \fn TSS2_RC Esys_LoadExternal(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE *inPrivate, const TPM2B_PUBLIC *inPublic, TPMI_RH_HIERARCHY hierarchy, ESYS_TR *objectHandle)
  \fn TSS2_RC Esys_LoadExternal_finish(ESYS_CONTEXT *esysContext, ESYS_TR *objectHandle)
  \fn TSS2_RC Esys_Load_finish(ESYS_CONTEXT *esysContext, ESYS_TR *objectHandle)
  \}
- \defgroup Esys_MakeCredential
+ \defgroup Esys_MakeCredential The ESAPI function for the TPM2_MakeCredential command.
  \{
  \fn TSS2_RC Esys_MakeCredential_async(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *credential, const TPM2B_NAME *objectName)
  \fn TSS2_RC Esys_MakeCredential(ESYS_CONTEXT *esysContext, ESYS_TR handle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *credential, const TPM2B_NAME *objectName, TPM2B_ID_OBJECT **credentialBlob, TPM2B_ENCRYPTED_SECRET **secret)
  \fn TSS2_RC Esys_MakeCredential_finish(ESYS_CONTEXT *esysContext, TPM2B_ID_OBJECT **credentialBlob, TPM2B_ENCRYPTED_SECRET **secret)
  \}
- \defgroup Esys_NV_Certify
+ \defgroup Esys_NV_Certify The ESAPI function for the TPM2_NV_Certify command.
  \{
  \fn TSS2_RC Esys_NV_Certify_async(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, UINT16 size, UINT16 offset)
  \fn TSS2_RC Esys_NV_Certify(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, UINT16 size, UINT16 offset, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
  \fn TSS2_RC Esys_NV_Certify_finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **certifyInfo, TPMT_SIGNATURE **signature)
  \}
- \defgroup Esys_NV_ChangeAuth
+ \defgroup Esys_NV_ChangeAuth The ESAPI function for the TPM2_NV_ChangeAuth command.
  \{
  \fn TSS2_RC Esys_NV_ChangeAuth_async(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth)
  \fn TSS2_RC Esys_NV_ChangeAuth(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth)
  \fn TSS2_RC Esys_NV_ChangeAuth_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_NV_DefineSpace
+ \defgroup Esys_NV_DefineSpace The ESAPI function for the TPM2_NV_DefineSpace command.
  \{
  \fn TSS2_RC Esys_NV_DefineSpace_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, const TPM2B_NV_PUBLIC *publicInfo)
  \fn TSS2_RC Esys_NV_DefineSpace(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *auth, const TPM2B_NV_PUBLIC *publicInfo, ESYS_TR *nvHandle)
  \fn TSS2_RC Esys_NV_DefineSpace_finish(ESYS_CONTEXT *esysContext, ESYS_TR *nvHandle)
  \}
- \defgroup Esys_NV_Extend
+ \defgroup Esys_NV_Extend The ESAPI function for the TPM2_NV_Extend command.
  \{
  \fn TSS2_RC Esys_NV_Extend_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_NV_BUFFER *data)
  \fn TSS2_RC Esys_NV_Extend(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_NV_BUFFER *data)
  \fn TSS2_RC Esys_NV_Extend_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_NV_GlobalWriteLock
+ \defgroup Esys_NV_GlobalWriteLock The ESAPI function for the TPM2_NV_GlobalWriteLock command.
  \{
  \fn TSS2_RC Esys_NV_GlobalWriteLock_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_GlobalWriteLock(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_GlobalWriteLock_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_NV_Increment
+ \defgroup Esys_NV_Increment The ESAPI function for the TPM2_NV_Increment command.
  \{
  \fn TSS2_RC Esys_NV_Increment_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_Increment(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_Increment_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_NV_Read
+ \defgroup Esys_NV_Read The ESAPI function for the TPM2_NV_Read command.
  \{
  \fn TSS2_RC Esys_NV_Read_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 size, UINT16 offset)
  \fn TSS2_RC Esys_NV_Read(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT16 size, UINT16 offset, TPM2B_MAX_NV_BUFFER **data)
  \fn TSS2_RC Esys_NV_Read_finish(ESYS_CONTEXT *esysContext, TPM2B_MAX_NV_BUFFER **data)
  \}
- \defgroup Esys_NV_ReadLock
+ \defgroup Esys_NV_ReadLock The ESAPI function for the TPM2_NV_ReadLock command.
  \{
  \fn TSS2_RC Esys_NV_ReadLock_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_ReadLock(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_ReadLock_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_NV_ReadPublic
+ \defgroup Esys_NV_ReadPublic The ESAPI function for the TPM2_NV_ReadPublic command.
  \{
  \fn TSS2_RC Esys_NV_ReadPublic_async(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_ReadPublic(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_NV_PUBLIC **nvPublic, TPM2B_NAME **nvName)
  \fn TSS2_RC Esys_NV_ReadPublic_finish(ESYS_CONTEXT *esysContext, TPM2B_NV_PUBLIC **nvPublic, TPM2B_NAME **nvName)
  \}
- \defgroup Esys_NV_SetBits
+ \defgroup Esys_NV_SetBits The ESAPI function for the TPM2_NV_SetBits command.
  \{
  \fn TSS2_RC Esys_NV_SetBits_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT64 bits)
  \fn TSS2_RC Esys_NV_SetBits(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT64 bits)
  \fn TSS2_RC Esys_NV_SetBits_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_NV_UndefineSpace
+ \defgroup Esys_NV_UndefineSpace The ESAPI function for the TPM2_NV_UndefineSpace command.
  \{
  \fn TSS2_RC Esys_NV_UndefineSpace_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_UndefineSpace(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_UndefineSpace_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_NV_UndefineSpaceSpecial
+ \defgroup Esys_NV_UndefineSpaceSpecial The ESAPI function for the TPM2_NV_UndefineSpaceSpecial command.
  \{
  \fn TSS2_RC Esys_NV_UndefineSpaceSpecial_async(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR platform, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_UndefineSpaceSpecial(ESYS_CONTEXT *esysContext, ESYS_TR nvIndex, ESYS_TR platform, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_UndefineSpaceSpecial_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_NV_Write
+ \defgroup Esys_NV_Write The ESAPI function for the TPM2_NV_Write command.
  \{
  \fn TSS2_RC Esys_NV_Write_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_NV_BUFFER *data, UINT16 offset)
  \fn TSS2_RC Esys_NV_Write(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_NV_BUFFER *data, UINT16 offset)
  \fn TSS2_RC Esys_NV_Write_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_NV_WriteLock
+ \defgroup Esys_NV_WriteLock The ESAPI function for the TPM2_NV_WriteLock command.
  \{
  \fn TSS2_RC Esys_NV_WriteLock_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_WriteLock(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_NV_WriteLock_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_ObjectChangeAuth
+ \defgroup Esys_ObjectChangeAuth The ESAPI function for the TPM2_ObjectChangeAuth command.
  \{
  \fn TSS2_RC Esys_ObjectChangeAuth_async(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth)
  \fn TSS2_RC Esys_ObjectChangeAuth(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_AUTH *newAuth, TPM2B_PRIVATE **outPrivate)
  \fn TSS2_RC Esys_ObjectChangeAuth_finish(ESYS_CONTEXT *esysContext, TPM2B_PRIVATE **outPrivate)
  \}
- \defgroup Esys_PCR_Allocate
+ \defgroup Esys_PCR_Allocate The ESAPI function for the TPM2_PCR_Allocate command.
  \{
  \fn TSS2_RC Esys_PCR_Allocate_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_PCR_SELECTION *pcrAllocation)
  \fn TSS2_RC Esys_PCR_Allocate(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_PCR_SELECTION *pcrAllocation, TPMI_YES_NO *allocationSuccess, UINT32 *maxPCR, UINT32 *sizeNeeded, UINT32 *sizeAvailable)
  \fn TSS2_RC Esys_PCR_Allocate_finish(ESYS_CONTEXT *esysContext, TPMI_YES_NO *allocationSuccess, UINT32 *maxPCR, UINT32 *sizeNeeded, UINT32 *sizeAvailable)
  \}
- \defgroup Esys_PCR_Event
+ \defgroup Esys_PCR_Event The ESAPI function for the TPM2_PCR_Event command.
  \{
  \fn TSS2_RC Esys_PCR_Event_async(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_EVENT *eventData)
  \fn TSS2_RC Esys_PCR_Event(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_EVENT *eventData, TPML_DIGEST_VALUES **digests)
  \fn TSS2_RC Esys_PCR_Event_finish(ESYS_CONTEXT *esysContext, TPML_DIGEST_VALUES **digests)
  \}
- \defgroup Esys_PCR_Extend
+ \defgroup Esys_PCR_Extend The ESAPI function for the TPM2_PCR_Extend command.
  \{
  \fn TSS2_RC Esys_PCR_Extend_async(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_DIGEST_VALUES *digests)
  \fn TSS2_RC Esys_PCR_Extend(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_DIGEST_VALUES *digests)
  \fn TSS2_RC Esys_PCR_Extend_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PCR_Read
+ \defgroup Esys_PCR_Read The ESAPI function for the TPM2_PCR_Read command.
  \{
  \fn TSS2_RC Esys_PCR_Read_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_PCR_SELECTION *pcrSelectionIn)
  \fn TSS2_RC Esys_PCR_Read(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_PCR_SELECTION *pcrSelectionIn, UINT32 *pcrUpdateCounter, TPML_PCR_SELECTION **pcrSelectionOut, TPML_DIGEST **pcrValues)
  \fn TSS2_RC Esys_PCR_Read_finish(ESYS_CONTEXT *esysContext, UINT32 *pcrUpdateCounter, TPML_PCR_SELECTION **pcrSelectionOut, TPML_DIGEST **pcrValues)
  \}
- \defgroup Esys_PCR_Reset
+ \defgroup Esys_PCR_Reset The ESAPI function for the TPM2_PCR_Reset command.
  \{
  \fn TSS2_RC Esys_PCR_Reset_async(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PCR_Reset(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PCR_Reset_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PCR_SetAuthPolicy
+ \defgroup Esys_PCR_SetAuthPolicy The ESAPI function for the TPM2_PCR_SetAuthPolicy command.
  \{
  \fn TSS2_RC Esys_PCR_SetAuthPolicy_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *authPolicy, TPMI_ALG_HASH hashAlg, TPMI_DH_PCR pcrNum)
  \fn TSS2_RC Esys_PCR_SetAuthPolicy(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *authPolicy, TPMI_ALG_HASH hashAlg, TPMI_DH_PCR pcrNum)
  \fn TSS2_RC Esys_PCR_SetAuthPolicy_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PCR_SetAuthValue
+ \defgroup Esys_PCR_SetAuthValue The ESAPI function for the TPM2_PCR_SetAuthValue command.
  \{
  \fn TSS2_RC Esys_PCR_SetAuthValue_async(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *auth)
  \fn TSS2_RC Esys_PCR_SetAuthValue(ESYS_CONTEXT *esysContext, ESYS_TR pcrHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *auth)
  \fn TSS2_RC Esys_PCR_SetAuthValue_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyAuthorize
+ \defgroup Esys_PolicyAuthorize The ESAPI function for the TPM2_PolicyAuthorize command.
  \{
  \fn TSS2_RC Esys_PolicyAuthorize_async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *approvedPolicy, const TPM2B_NONCE *policyRef, const TPM2B_NAME *keySign, const TPMT_TK_VERIFIED *checkTicket)
  \fn TSS2_RC Esys_PolicyAuthorize(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *approvedPolicy, const TPM2B_NONCE *policyRef, const TPM2B_NAME *keySign, const TPMT_TK_VERIFIED *checkTicket)
  \fn TSS2_RC Esys_PolicyAuthorize_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyAuthValue
+ \defgroup Esys_PolicyAuthValue The ESAPI function for the TPM2_PolicyAuthValue command.
  \{
  \fn TSS2_RC Esys_PolicyAuthValue_async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PolicyAuthValue(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PolicyAuthValue_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyCommandCode
+ \defgroup Esys_PolicyCommandCode The ESAPI function for the TPM2_PolicyCommandCode command.
  \{
  \fn TSS2_RC Esys_PolicyCommandCode_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_SH_POLICY policySession, TPM2_CC code)
  \fn TSS2_RC Esys_PolicyCommandCode(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_SH_POLICY policySession, TPM2_CC code)
  \fn TSS2_RC Esys_PolicyCommandCode_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyCounterTimer
+ \defgroup Esys_PolicyCounterTimer The ESAPI function for the TPM2_PolicyCounterTimer command.
  \{
  \fn TSS2_RC Esys_PolicyCounterTimer_async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_OPERAND *operandB, UINT16 offset, TPM2_EO operation)
  \fn TSS2_RC Esys_PolicyCounterTimer(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_OPERAND *operandB, UINT16 offset, TPM2_EO operation)
  \fn TSS2_RC Esys_PolicyCounterTimer_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyCpHash
+ \defgroup Esys_PolicyCpHash The ESAPI function for the TPM2_PolicyCpHash command.
  \{
  \fn TSS2_RC Esys_PolicyCpHash_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_SH_POLICY policySession, const TPM2B_DIGEST *cpHashA)
  \fn TSS2_RC Esys_PolicyCpHash(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_SH_POLICY policySession, const TPM2B_DIGEST *cpHashA)
  \fn TSS2_RC Esys_PolicyCpHash_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyDuplicationSelect
+ \defgroup Esys_PolicyDuplicationSelect The ESAPI function for the TPM2_PolicyDuplicationSelect command.
  \{
  \fn TSS2_RC Esys_PolicyDuplicationSelect_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_SH_POLICY policySession, const TPM2B_NAME *objectName, const TPM2B_NAME *newParentName, TPMI_YES_NO includeObject)
  \fn TSS2_RC Esys_PolicyDuplicationSelect(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_SH_POLICY policySession, const TPM2B_NAME *objectName, const TPM2B_NAME *newParentName, TPMI_YES_NO includeObject)
  \fn TSS2_RC Esys_PolicyDuplicationSelect_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyGetDigest
+ \defgroup Esys_PolicyGetDigest The ESAPI function for the TPM2_PolicyGetDigest command.
  \{
  \fn TSS2_RC Esys_PolicyGetDigest_async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PolicyGetDigest(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_DIGEST **policyDigest)
  \fn TSS2_RC Esys_PolicyGetDigest_finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **policyDigest)
  \}
- \defgroup Esys_PolicyLocality
+ \defgroup Esys_PolicyLocality The ESAPI function for the TPM2_PolicyLocality command.
  \{
  \fn TSS2_RC Esys_PolicyLocality_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_SH_POLICY policySession, TPMA_LOCALITY locality)
  \fn TSS2_RC Esys_PolicyLocality(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_SH_POLICY policySession, TPMA_LOCALITY locality)
  \fn TSS2_RC Esys_PolicyLocality_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyNameHash
+ \defgroup Esys_PolicyNameHash The ESAPI function for the TPM2_PolicyNameHash command.
  \{
  \fn TSS2_RC Esys_PolicyNameHash_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_SH_POLICY policySession, const TPM2B_DIGEST *nameHash)
  \fn TSS2_RC Esys_PolicyNameHash(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_SH_POLICY policySession, const TPM2B_DIGEST *nameHash)
  \fn TSS2_RC Esys_PolicyNameHash_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyNV
+ \defgroup Esys_PolicyNV The ESAPI function for the TPM2_PolicyNV command.
  \{
  \fn TSS2_RC Esys_PolicyNV_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_OPERAND *operandB, UINT16 offset, TPM2_EO operation)
  \fn TSS2_RC Esys_PolicyNV(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR nvIndex, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_OPERAND *operandB, UINT16 offset, TPM2_EO operation)
  \fn TSS2_RC Esys_PolicyNV_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyNvWritten
+ \defgroup Esys_PolicyNvWritten The ESAPI function for the TPM2_PolicyNvWritten command.
  \{
  \fn TSS2_RC Esys_PolicyNvWritten_async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO writtenSet)
  \fn TSS2_RC Esys_PolicyNvWritten(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO writtenSet)
  \fn TSS2_RC Esys_PolicyNvWritten_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyOR
+ \defgroup Esys_PolicyOR The ESAPI function for the TPM2_PolicyOR command.
  \{
  \fn TSS2_RC Esys_PolicyOR_async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_DIGEST *pHashList)
  \fn TSS2_RC Esys_PolicyOR(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_DIGEST *pHashList)
  \fn TSS2_RC Esys_PolicyOR_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyPassword
+ \defgroup Esys_PolicyPassword The ESAPI function for the TPM2_PolicyPassword command.
  \{
  \fn TSS2_RC Esys_PolicyPassword_async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PolicyPassword(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PolicyPassword_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyPCR
+ \defgroup Esys_PolicyPCR The ESAPI function for the TPM2_PolicyPCR command.
  \{
  \fn TSS2_RC Esys_PolicyPCR_async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *pcrDigest, const TPML_PCR_SELECTION *pcrs)
  \fn TSS2_RC Esys_PolicyPCR(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *pcrDigest, const TPML_PCR_SELECTION *pcrs)
  \fn TSS2_RC Esys_PolicyPCR_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyPhysicalPresence
+ \defgroup Esys_PolicyPhysicalPresence The ESAPI function for the TPM2_PolicyPhysicalPresence command.
  \{
  \fn TSS2_RC Esys_PolicyPhysicalPresence_async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PolicyPhysicalPresence(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PolicyPhysicalPresence_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicyRestart
+ \defgroup Esys_PolicyRestart The ESAPI function for the TPM2_PolicyRestart command.
  \{
  \fn TSS2_RC Esys_PolicyRestart_async(ESYS_CONTEXT *esysContext, ESYS_TR sessionHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PolicyRestart(ESYS_CONTEXT *esysContext, ESYS_TR sessionHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_PolicyRestart_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PolicySecret
+ \defgroup Esys_PolicySecret The ESAPI function for the TPM2_PolicySecret command.
  \{
  \fn TSS2_RC Esys_PolicySecret_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceTPM, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, INT32 expiration)
  \fn TSS2_RC Esys_PolicySecret(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceTPM, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, INT32 expiration, TPM2B_TIMEOUT **timeout, TPMT_TK_AUTH **policyTicket)
  \fn TSS2_RC Esys_PolicySecret_finish(ESYS_CONTEXT *esysContext, TPM2B_TIMEOUT **timeout, TPMT_TK_AUTH **policyTicket)
  \}
- \defgroup Esys_PolicySigned
+ \defgroup Esys_PolicySigned The ESAPI function for the TPM2_PolicySigned command.
  \{
  \fn TSS2_RC Esys_PolicySigned_async(ESYS_CONTEXT *esysContext, ESYS_TR authObject, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceTPM, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, INT32 expiration, const TPMT_SIGNATURE *auth)
  \fn TSS2_RC Esys_PolicySigned(ESYS_CONTEXT *esysContext, ESYS_TR authObject, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceTPM, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, INT32 expiration, const TPMT_SIGNATURE *auth, TPM2B_TIMEOUT **timeout, TPMT_TK_AUTH **policyTicket)
  \fn TSS2_RC Esys_PolicySigned_finish(ESYS_CONTEXT *esysContext, TPM2B_TIMEOUT **timeout, TPMT_TK_AUTH **policyTicket)
  \}
- \defgroup Esys_PolicyTicket
+ \defgroup Esys_PolicyTicket The ESAPI function for the TPM2_PolicyTicket command.
  \{
  \fn TSS2_RC Esys_PolicyTicket_async(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_TIMEOUT *timeout, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, const TPM2B_NAME *authName, const TPMT_TK_AUTH *ticket)
  \fn TSS2_RC Esys_PolicyTicket(ESYS_CONTEXT *esysContext, ESYS_TR policySession, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_TIMEOUT *timeout, const TPM2B_DIGEST *cpHashA, const TPM2B_NONCE *policyRef, const TPM2B_NAME *authName, const TPMT_TK_AUTH *ticket)
  \fn TSS2_RC Esys_PolicyTicket_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_PP_Commands
+ \defgroup Esys_PP_Commands The ESAPI function for the TPM2_PP_Commands command.
  \{
  \fn TSS2_RC Esys_PP_Commands_async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_CC *setList, const TPML_CC *clearList)
  \fn TSS2_RC Esys_PP_Commands(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPML_CC *setList, const TPML_CC *clearList)
  \fn TSS2_RC Esys_PP_Commands_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_Quote
+ \defgroup Esys_Quote The ESAPI function for the TPM2_Quote command.
  \{
  \fn TSS2_RC Esys_Quote_async(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, const TPML_PCR_SELECTION *PCRselect)
  \fn TSS2_RC Esys_Quote(ESYS_CONTEXT *esysContext, ESYS_TR signHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *qualifyingData, const TPMT_SIG_SCHEME *inScheme, const TPML_PCR_SELECTION *PCRselect, TPM2B_ATTEST **quoted, TPMT_SIGNATURE **signature)
  \fn TSS2_RC Esys_Quote_finish(ESYS_CONTEXT *esysContext, TPM2B_ATTEST **quoted, TPMT_SIGNATURE **signature)
  \}
- \defgroup Esys_ReadClock
+ \defgroup Esys_ReadClock The ESAPI function for the TPM2_ReadClock command.
  \{
  \fn TSS2_RC Esys_ReadClock_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_ReadClock(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMS_TIME_INFO **currentTime)
  \fn TSS2_RC Esys_ReadClock_finish(ESYS_CONTEXT *esysContext, TPMS_TIME_INFO **currentTime)
  \}
- \defgroup Esys_ReadPublic
+ \defgroup Esys_ReadPublic The ESAPI function for the TPM2_ReadPublic command.
  \{
  \fn TSS2_RC Esys_ReadPublic_async(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_ReadPublic(ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_PUBLIC **outPublic, TPM2B_NAME **name, TPM2B_NAME **qualifiedName)
  \fn TSS2_RC Esys_ReadPublic_finish(ESYS_CONTEXT *esysContext, TPM2B_PUBLIC **outPublic, TPM2B_NAME **name, TPM2B_NAME **qualifiedName)
  \}
- \defgroup Esys_Rewrap
+ \defgroup Esys_Rewrap The ESAPI function for the TPM2_Rewrap command.
  \{
  \fn TSS2_RC Esys_Rewrap_async(ESYS_CONTEXT *esysContext, ESYS_TR oldParent, ESYS_TR newParent, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PRIVATE *inDuplicate, const TPM2B_NAME *name, const TPM2B_ENCRYPTED_SECRET *inSymSeed)
  \fn TSS2_RC Esys_Rewrap(ESYS_CONTEXT *esysContext, ESYS_TR oldParent, ESYS_TR newParent, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PRIVATE *inDuplicate, const TPM2B_NAME *name, const TPM2B_ENCRYPTED_SECRET *inSymSeed, TPM2B_PRIVATE **outDuplicate, TPM2B_ENCRYPTED_SECRET **outSymSeed)
  \fn TSS2_RC Esys_Rewrap_finish(ESYS_CONTEXT *esysContext, TPM2B_PRIVATE **outDuplicate, TPM2B_ENCRYPTED_SECRET **outSymSeed)
  \}
- \defgroup Esys_RSA_Decrypt
+ \defgroup Esys_RSA_Decrypt The ESAPI function for the TPM2_RSA_Decrypt command.
  \{
  \fn TSS2_RC Esys_RSA_Decrypt_async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PUBLIC_KEY_RSA *cipherText, const TPMT_RSA_DECRYPT *inScheme, const TPM2B_DATA *label)
  \fn TSS2_RC Esys_RSA_Decrypt(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PUBLIC_KEY_RSA *cipherText, const TPMT_RSA_DECRYPT *inScheme, const TPM2B_DATA *label, TPM2B_PUBLIC_KEY_RSA **message)
  \fn TSS2_RC Esys_RSA_Decrypt_finish(ESYS_CONTEXT *esysContext, TPM2B_PUBLIC_KEY_RSA **message)
  \}
- \defgroup Esys_RSA_Encrypt
+ \defgroup Esys_RSA_Encrypt The ESAPI function for the TPM2_RSA_Encrypt command.
  \{
  \fn TSS2_RC Esys_RSA_Encrypt_async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PUBLIC_KEY_RSA *message, const TPMT_RSA_DECRYPT *inScheme, const TPM2B_DATA *label)
  \fn TSS2_RC Esys_RSA_Encrypt(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PUBLIC_KEY_RSA *message, const TPMT_RSA_DECRYPT *inScheme, const TPM2B_DATA *label, TPM2B_PUBLIC_KEY_RSA **outData)
  \fn TSS2_RC Esys_RSA_Encrypt_finish(ESYS_CONTEXT *esysContext, TPM2B_PUBLIC_KEY_RSA **outData)
  \}
- \defgroup Esys_SelfTest
+ \defgroup Esys_SelfTest The ESAPI function for the TPM2_SelfTest command.
  \{
  \fn TSS2_RC Esys_SelfTest_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO fullTest)
  \fn TSS2_RC Esys_SelfTest(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_YES_NO fullTest)
  \fn TSS2_RC Esys_SelfTest_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_SequenceComplete
+ \defgroup Esys_SequenceComplete The ESAPI function for the TPM2_SequenceComplete command.
  \{
  \fn TSS2_RC Esys_SequenceComplete_async(ESYS_CONTEXT *esysContext, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer, TPMI_RH_HIERARCHY hierarchy)
  \fn TSS2_RC Esys_SequenceComplete(ESYS_CONTEXT *esysContext, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer, TPMI_RH_HIERARCHY hierarchy, TPM2B_DIGEST **result, TPMT_TK_HASHCHECK **validation)
  \fn TSS2_RC Esys_SequenceComplete_finish(ESYS_CONTEXT *esysContext, TPM2B_DIGEST **result, TPMT_TK_HASHCHECK **validation)
  \}
- \defgroup Esys_SequenceUpdate
+ \defgroup Esys_SequenceUpdate The ESAPI function for the TPM2_SequenceUpdate command.
  \{
  \fn TSS2_RC Esys_SequenceUpdate_async(ESYS_CONTEXT *esysContext, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer)
  \fn TSS2_RC Esys_SequenceUpdate(ESYS_CONTEXT *esysContext, ESYS_TR sequenceHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_MAX_BUFFER *buffer)
  \fn TSS2_RC Esys_SequenceUpdate_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_SetAlgorithmSet
+ \defgroup Esys_SetAlgorithmSet The ESAPI function for the TPM2_SetAlgorithmSet command.
  \{
  \fn TSS2_RC Esys_SetAlgorithmSet_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT32 algorithmSet)
  \fn TSS2_RC Esys_SetAlgorithmSet(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, UINT32 algorithmSet)
  \fn TSS2_RC Esys_SetAlgorithmSet_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_SetCommandCodeAuditStatus
+ \defgroup Esys_SetCommandCodeAuditStatus The ESAPI function for the TPM2_SetCommandCodeAuditStatus command.
  \{
  \fn TSS2_RC Esys_SetCommandCodeAuditStatus_async(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ALG_HASH auditAlg, const TPML_CC *setList, const TPML_CC *clearList)
  \fn TSS2_RC Esys_SetCommandCodeAuditStatus(ESYS_CONTEXT *esysContext, ESYS_TR auth, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_ALG_HASH auditAlg, const TPML_CC *setList, const TPML_CC *clearList)
  \fn TSS2_RC Esys_SetCommandCodeAuditStatus_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_SetPrimaryPolicy
+ \defgroup Esys_SetPrimaryPolicy The ESAPI function for the TPM2_SetPrimaryPolicy command.
  \{
  \fn TSS2_RC Esys_SetPrimaryPolicy_async(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *authPolicy, TPMI_ALG_HASH hashAlg)
  \fn TSS2_RC Esys_SetPrimaryPolicy(ESYS_CONTEXT *esysContext, ESYS_TR authHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *authPolicy, TPMI_ALG_HASH hashAlg)
  \fn TSS2_RC Esys_SetPrimaryPolicy_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_Shutdown
+ \defgroup Esys_Shutdown The ESAPI function for the TPM2_Shutdown command.
  \{
  \fn TSS2_RC Esys_Shutdown_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_SU shutdownType)
  \fn TSS2_RC Esys_Shutdown(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_SU shutdownType)
  \fn TSS2_RC Esys_Shutdown_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_Sign
+ \defgroup Esys_Sign The ESAPI function for the TPM2_Sign command.
  \{
  \fn TSS2_RC Esys_Sign_async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *digest, const TPMT_SIG_SCHEME *inScheme, const TPMT_TK_HASHCHECK *validation)
  \fn TSS2_RC Esys_Sign(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *digest, const TPMT_SIG_SCHEME *inScheme, const TPMT_TK_HASHCHECK *validation, TPMT_SIGNATURE **signature)
  \fn TSS2_RC Esys_Sign_finish(ESYS_CONTEXT *esysContext, TPMT_SIGNATURE **signature)
  \}
- \defgroup Esys_StartAuthSession
+ \defgroup Esys_StartAuthSession The ESAPI function for the TPM2_StartAuthSession command.
  \{
  \fn TSS2_RC Esys_StartAuthSession_async(ESYS_CONTEXT *esysContext, ESYS_TR tpmKey, ESYS_TR bind, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceCaller, const TPM2B_ENCRYPTED_SECRET *encryptedSalt, TPM2_SE sessionType, const TPMT_SYM_DEF *symmetric, TPMI_ALG_HASH authHash)
  \fn TSS2_RC Esys_StartAuthSession(ESYS_CONTEXT *esysContext, ESYS_TR tpmKey, ESYS_TR bind, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_NONCE *nonceCaller, const TPM2B_ENCRYPTED_SECRET *encryptedSalt, TPM2_SE sessionType, const TPMT_SYM_DEF *symmetric, TPMI_ALG_HASH authHash, ESYS_TR *sessionHandle, TPM2B_NONCE **nonceTPM)
  \fn TSS2_RC Esys_StartAuthSession_finish(ESYS_CONTEXT *esysContext, ESYS_TR *sessionHandle, TPM2B_NONCE **nonceTPM)
  \}
- \defgroup Esys_Startup
+ \defgroup Esys_Startup The ESAPI function for the TPM2_Startup command.
  \{
  \fn TSS2_RC Esys_Startup_async(ESYS_CONTEXT *esysContext, TPM2_SU startupType)
  \fn TSS2_RC Esys_Startup(ESYS_CONTEXT *esysContext, TPM2_SU startupType)
  \fn TSS2_RC Esys_Startup_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_StirRandom
+ \defgroup Esys_StirRandom The ESAPI function for the TPM2_StirRandom command.
  \{
  \fn TSS2_RC Esys_StirRandom_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_DATA *inData)
  \fn TSS2_RC Esys_StirRandom(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_SENSITIVE_DATA *inData)
  \fn TSS2_RC Esys_StirRandom_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_TestParms
+ \defgroup Esys_TestParms The ESAPI function for the TPM2_TestParms command.
  \{
  \fn TSS2_RC Esys_TestParms_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPMT_PUBLIC_PARMS *parameters)
  \fn TSS2_RC Esys_TestParms(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPMT_PUBLIC_PARMS *parameters)
  \fn TSS2_RC Esys_TestParms_finish(ESYS_CONTEXT *esysContext)
  \}
- \defgroup Esys_Unseal
+ \defgroup Esys_Unseal The ESAPI function for the TPM2_Unseal command.
  \{
  \fn TSS2_RC Esys_Unseal_async(ESYS_CONTEXT *esysContext, ESYS_TR itemHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3)
  \fn TSS2_RC Esys_Unseal(ESYS_CONTEXT *esysContext, ESYS_TR itemHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_SENSITIVE_DATA **outData)
  \fn TSS2_RC Esys_Unseal_finish(ESYS_CONTEXT *esysContext, TPM2B_SENSITIVE_DATA **outData)
  \}
- \defgroup Esys_Vendor_TCG_Test
+ \defgroup Esys_Vendor_TCG_Test The ESAPI function for the TPM2_Vendor_TCG_Test command.
  \{
  \fn TSS2_RC Esys_Vendor_TCG_Test_async(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *inputData)
  \fn TSS2_RC Esys_Vendor_TCG_Test(ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DATA *inputData, TPM2B_DATA **outputData)
  \fn TSS2_RC Esys_Vendor_TCG_Test_finish(ESYS_CONTEXT *esysContext, TPM2B_DATA **outputData)
  \}
- \defgroup Esys_VerifySignature
+ \defgroup Esys_VerifySignature The ESAPI function for the TPM2_VerifySignature command.
  \{
  \fn TSS2_RC Esys_VerifySignature_async(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *digest, const TPMT_SIGNATURE *signature)
  \fn TSS2_RC Esys_VerifySignature(ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_DIGEST *digest, const TPMT_SIGNATURE *signature, TPMT_TK_VERIFIED **validation)
  \fn TSS2_RC Esys_VerifySignature_finish(ESYS_CONTEXT *esysContext, TPMT_TK_VERIFIED **validation)
  \}
- \defgroup Esys_ZGen_2Phase
+ \defgroup Esys_ZGen_2Phase The ESAPI function for the TPM2_ZGen_2Phase command.
  \{
  \fn TSS2_RC Esys_ZGen_2Phase_async(ESYS_CONTEXT *esysContext, ESYS_TR keyA, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *inQsB, const TPM2B_ECC_POINT *inQeB, TPMI_ECC_KEY_EXCHANGE inScheme, UINT16 counter)
  \fn TSS2_RC Esys_ZGen_2Phase(ESYS_CONTEXT *esysContext, ESYS_TR keyA, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_ECC_POINT *inQsB, const TPM2B_ECC_POINT *inQeB, TPMI_ECC_KEY_EXCHANGE inScheme, UINT16 counter, TPM2B_ECC_POINT **outZ1, TPM2B_ECC_POINT **outZ2)