Blob Blame History Raw
From f9a2e69bbc0e5f11ec2fe351ed8e610853857aba Mon Sep 17 00:00:00 2001
From: Tadeusz Struk <tadeusz.struk@intel.com>
Date: Thu, 9 Jan 2020 14:16:50 -0800
Subject: [PATCH] esys: Check object handle node before calling
 compute_session_value()

Fixes: #1593
Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com>
---
 src/tss2-esys/api/Esys_ActivateCredential.c       | 15 +++++++++++----
 src/tss2-esys/api/Esys_Certify.c                  | 12 ++++++++++--
 src/tss2-esys/api/Esys_CertifyCreation.c          |  8 ++++++--
 src/tss2-esys/api/Esys_ChangeEPS.c                |  8 ++++++--
 src/tss2-esys/api/Esys_ChangePPS.c                |  6 +++++-
 src/tss2-esys/api/Esys_Clear.c                    |  6 +++++-
 src/tss2-esys/api/Esys_ClearControl.c             |  6 +++++-
 src/tss2-esys/api/Esys_ClockRateAdjust.c          |  8 ++++++--
 src/tss2-esys/api/Esys_ClockSet.c                 |  6 +++++-
 src/tss2-esys/api/Esys_Commit.c                   |  6 +++++-
 src/tss2-esys/api/Esys_Create.c                   |  7 ++++++-
 src/tss2-esys/api/Esys_CreateLoaded.c             |  6 +++++-
 src/tss2-esys/api/Esys_CreatePrimary.c            |  6 +++++-
 .../api/Esys_DictionaryAttackLockReset.c          |  6 +++++-
 .../api/Esys_DictionaryAttackParameters.c         |  6 +++++-
 src/tss2-esys/api/Esys_Duplicate.c                |  6 +++++-
 src/tss2-esys/api/Esys_ECDH_ZGen.c                |  6 +++++-
 src/tss2-esys/api/Esys_EncryptDecrypt.c           |  6 +++++-
 src/tss2-esys/api/Esys_EncryptDecrypt2.c          |  6 +++++-
 src/tss2-esys/api/Esys_EventSequenceComplete.c    | 15 +++++++++++----
 src/tss2-esys/api/Esys_EvictControl.c             |  6 +++++-
 src/tss2-esys/api/Esys_FieldUpgradeStart.c        |  6 +++++-
 src/tss2-esys/api/Esys_GetCommandAuditDigest.c    |  6 +++++-
 src/tss2-esys/api/Esys_GetSessionAuditDigest.c    |  6 +++++-
 src/tss2-esys/api/Esys_GetTime.c                  |  6 +++++-
 src/tss2-esys/api/Esys_HMAC.c                     |  6 +++++-
 src/tss2-esys/api/Esys_HMAC_Start.c               |  6 +++++-
 src/tss2-esys/api/Esys_HierarchyChangeAuth.c      |  6 +++++-
 src/tss2-esys/api/Esys_HierarchyControl.c         |  6 +++++-
 src/tss2-esys/api/Esys_Import.c                   |  6 +++++-
 src/tss2-esys/api/Esys_Load.c                     |  6 +++++-
 src/tss2-esys/api/Esys_NV_Certify.c               | 12 ++++++++++--
 src/tss2-esys/api/Esys_NV_ChangeAuth.c            |  6 +++++-
 src/tss2-esys/api/Esys_NV_DefineSpace.c           |  6 +++++-
 src/tss2-esys/api/Esys_NV_Extend.c                |  6 +++++-
 src/tss2-esys/api/Esys_NV_GlobalWriteLock.c       |  6 +++++-
 src/tss2-esys/api/Esys_NV_Increment.c             |  6 +++++-
 src/tss2-esys/api/Esys_NV_Read.c                  |  6 +++++-
 src/tss2-esys/api/Esys_NV_ReadLock.c              |  6 +++++-
 src/tss2-esys/api/Esys_NV_SetBits.c               |  6 +++++-
 src/tss2-esys/api/Esys_NV_UndefineSpace.c         |  6 +++++-
 src/tss2-esys/api/Esys_NV_UndefineSpaceSpecial.c  | 12 ++++++++++--
 src/tss2-esys/api/Esys_NV_Write.c                 |  6 +++++-
 src/tss2-esys/api/Esys_NV_WriteLock.c             |  6 +++++-
 src/tss2-esys/api/Esys_ObjectChangeAuth.c         |  6 +++++-
 src/tss2-esys/api/Esys_PCR_Allocate.c             |  6 +++++-
 src/tss2-esys/api/Esys_PCR_Event.c                |  6 +++++-
 src/tss2-esys/api/Esys_PCR_Extend.c               |  6 +++++-
 src/tss2-esys/api/Esys_PCR_Reset.c                |  6 +++++-
 src/tss2-esys/api/Esys_PCR_SetAuthPolicy.c        |  6 +++++-
 src/tss2-esys/api/Esys_PCR_SetAuthValue.c         |  6 +++++-
 src/tss2-esys/api/Esys_PP_Commands.c              |  6 +++++-
 src/tss2-esys/api/Esys_PolicyAuthorizeNV.c        |  6 +++++-
 src/tss2-esys/api/Esys_PolicyNV.c                 |  6 +++++-
 src/tss2-esys/api/Esys_PolicySecret.c             |  6 +++++-
 src/tss2-esys/api/Esys_Quote.c                    |  6 +++++-
 src/tss2-esys/api/Esys_RSA_Decrypt.c              |  6 +++++-
 src/tss2-esys/api/Esys_Rewrap.c                   |  6 +++++-
 src/tss2-esys/api/Esys_SequenceComplete.c         |  9 ++++++---
 src/tss2-esys/api/Esys_SequenceUpdate.c           |  9 ++++++---
 src/tss2-esys/api/Esys_SetAlgorithmSet.c          |  6 +++++-
 .../api/Esys_SetCommandCodeAuditStatus.c          |  6 +++++-
 src/tss2-esys/api/Esys_SetPrimaryPolicy.c         |  6 +++++-
 src/tss2-esys/api/Esys_Sign.c                     |  6 +++++-
 src/tss2-esys/api/Esys_Unseal.c                   |  6 +++++-
 src/tss2-esys/api/Esys_ZGen_2Phase.c              |  6 +++++-
 66 files changed, 363 insertions(+), 82 deletions(-)

diff --git a/src/tss2-esys/api/Esys_ActivateCredential.c b/src/tss2-esys/api/Esys_ActivateCredential.c
index 3d332521528e..9377ad2a0627 100644
--- a/src/tss2-esys/api/Esys_ActivateCredential.c
+++ b/src/tss2-esys/api/Esys_ActivateCredential.c
@@ -194,10 +194,17 @@ Esys_ActivateCredential_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
-                &activateHandleNode->rsrc.name, &activateHandleNode->auth);
-    iesys_compute_session_value(esysContext->session_tab[1],
-                &keyHandleNode->rsrc.name, &keyHandleNode->auth);
+    if (activateHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
+                    &activateHandleNode->rsrc.name, &activateHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
+    if (keyHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[1],
+                    &keyHandleNode->rsrc.name, &keyHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
     /* Generate the auth values and set them in the SAPI command buffer */
diff --git a/src/tss2-esys/api/Esys_Certify.c b/src/tss2-esys/api/Esys_Certify.c
index d34d70b88ff7..96c627606684 100644
--- a/src/tss2-esys/api/Esys_Certify.c
+++ b/src/tss2-esys/api/Esys_Certify.c
@@ -193,10 +193,18 @@ Esys_Certify_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (objectHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &objectHandleNode->rsrc.name, &objectHandleNode->auth);
-    iesys_compute_session_value(esysContext->session_tab[1],
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
+    if (signHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[1],
                 &signHandleNode->rsrc.name, &signHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
     /* Generate the auth values and set them in the SAPI command buffer */
diff --git a/src/tss2-esys/api/Esys_CertifyCreation.c b/src/tss2-esys/api/Esys_CertifyCreation.c
index 04c07a9bf33c..3135a49f77ca 100644
--- a/src/tss2-esys/api/Esys_CertifyCreation.c
+++ b/src/tss2-esys/api/Esys_CertifyCreation.c
@@ -209,8 +209,12 @@ Esys_CertifyCreation_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
-                &signHandleNode->rsrc.name, &signHandleNode->auth);
+    if (signHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
+                    &signHandleNode->rsrc.name, &signHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_ChangeEPS.c b/src/tss2-esys/api/Esys_ChangeEPS.c
index 954c442547f3..d76a613d417e 100644
--- a/src/tss2-esys/api/Esys_ChangeEPS.c
+++ b/src/tss2-esys/api/Esys_ChangeEPS.c
@@ -175,8 +175,12 @@ Esys_ChangeEPS_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
-                &authHandleNode->rsrc.name, &authHandleNode->auth);
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
+                    &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_ChangePPS.c b/src/tss2-esys/api/Esys_ChangePPS.c
index c182533cebc5..ea0f9746c247 100644
--- a/src/tss2-esys/api/Esys_ChangePPS.c
+++ b/src/tss2-esys/api/Esys_ChangePPS.c
@@ -175,8 +175,12 @@ Esys_ChangePPS_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_Clear.c b/src/tss2-esys/api/Esys_Clear.c
index 96ffb470309f..f5c0b827425a 100644
--- a/src/tss2-esys/api/Esys_Clear.c
+++ b/src/tss2-esys/api/Esys_Clear.c
@@ -174,8 +174,12 @@ Esys_Clear_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_ClearControl.c b/src/tss2-esys/api/Esys_ClearControl.c
index a9fcd1b5e2e9..a4d8b4d0bab6 100644
--- a/src/tss2-esys/api/Esys_ClearControl.c
+++ b/src/tss2-esys/api/Esys_ClearControl.c
@@ -181,8 +181,12 @@ Esys_ClearControl_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authNode->rsrc.name, &authNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_ClockRateAdjust.c b/src/tss2-esys/api/Esys_ClockRateAdjust.c
index cb25c8502d23..931645c95296 100644
--- a/src/tss2-esys/api/Esys_ClockRateAdjust.c
+++ b/src/tss2-esys/api/Esys_ClockRateAdjust.c
@@ -179,8 +179,12 @@ Esys_ClockRateAdjust_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
-                &authNode->rsrc.name, &authNode->auth);
+    if (authNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
+                    &authNode->rsrc.name, &authNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_ClockSet.c b/src/tss2-esys/api/Esys_ClockSet.c
index 7191576aec6b..b38219e7cbf3 100644
--- a/src/tss2-esys/api/Esys_ClockSet.c
+++ b/src/tss2-esys/api/Esys_ClockSet.c
@@ -179,8 +179,12 @@ Esys_ClockSet_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authNode->rsrc.name, &authNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_Commit.c b/src/tss2-esys/api/Esys_Commit.c
index 52298e4c7c6c..8992c20ca419 100644
--- a/src/tss2-esys/api/Esys_Commit.c
+++ b/src/tss2-esys/api/Esys_Commit.c
@@ -190,8 +190,12 @@ Esys_Commit_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (signHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &signHandleNode->rsrc.name, &signHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_Create.c b/src/tss2-esys/api/Esys_Create.c
index c7e59f7ed5ff..c21ed7bc7d42 100644
--- a/src/tss2-esys/api/Esys_Create.c
+++ b/src/tss2-esys/api/Esys_Create.c
@@ -204,8 +204,13 @@ Esys_Create_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+
+    if (parentHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &parentHandleNode->rsrc.name, &parentHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_CreateLoaded.c b/src/tss2-esys/api/Esys_CreateLoaded.c
index a92649cade27..7b366045e5eb 100644
--- a/src/tss2-esys/api/Esys_CreateLoaded.c
+++ b/src/tss2-esys/api/Esys_CreateLoaded.c
@@ -210,8 +210,12 @@ Esys_CreateLoaded_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (parentHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &parentHandleNode->rsrc.name, &parentHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_CreatePrimary.c b/src/tss2-esys/api/Esys_CreatePrimary.c
index 9eb19042e7bb..a9b9e8f2dfe6 100644
--- a/src/tss2-esys/api/Esys_CreatePrimary.c
+++ b/src/tss2-esys/api/Esys_CreatePrimary.c
@@ -223,8 +223,12 @@ Esys_CreatePrimary_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (primaryHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &primaryHandleNode->rsrc.name, &primaryHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_DictionaryAttackLockReset.c b/src/tss2-esys/api/Esys_DictionaryAttackLockReset.c
index 1e8207fe7cfc..bada24bd3dbd 100644
--- a/src/tss2-esys/api/Esys_DictionaryAttackLockReset.c
+++ b/src/tss2-esys/api/Esys_DictionaryAttackLockReset.c
@@ -176,8 +176,12 @@ Esys_DictionaryAttackLockReset_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (lockHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &lockHandleNode->rsrc.name, &lockHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_DictionaryAttackParameters.c b/src/tss2-esys/api/Esys_DictionaryAttackParameters.c
index f10aa2f06b46..a61a5b4d4f26 100644
--- a/src/tss2-esys/api/Esys_DictionaryAttackParameters.c
+++ b/src/tss2-esys/api/Esys_DictionaryAttackParameters.c
@@ -198,8 +198,12 @@ Esys_DictionaryAttackParameters_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (lockHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &lockHandleNode->rsrc.name, &lockHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_Duplicate.c b/src/tss2-esys/api/Esys_Duplicate.c
index d0e5799897e2..c587fd740af7 100644
--- a/src/tss2-esys/api/Esys_Duplicate.c
+++ b/src/tss2-esys/api/Esys_Duplicate.c
@@ -202,8 +202,12 @@ Esys_Duplicate_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (objectHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &objectHandleNode->rsrc.name, &objectHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_ECDH_ZGen.c b/src/tss2-esys/api/Esys_ECDH_ZGen.c
index 24e487363f0f..dad825960e62 100644
--- a/src/tss2-esys/api/Esys_ECDH_ZGen.c
+++ b/src/tss2-esys/api/Esys_ECDH_ZGen.c
@@ -171,8 +171,12 @@ Esys_ECDH_ZGen_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (keyHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &keyHandleNode->rsrc.name, &keyHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_EncryptDecrypt.c b/src/tss2-esys/api/Esys_EncryptDecrypt.c
index 506f22e68317..e3b6cc64f58a 100644
--- a/src/tss2-esys/api/Esys_EncryptDecrypt.c
+++ b/src/tss2-esys/api/Esys_EncryptDecrypt.c
@@ -196,8 +196,12 @@ Esys_EncryptDecrypt_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (keyHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &keyHandleNode->rsrc.name, &keyHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_EncryptDecrypt2.c b/src/tss2-esys/api/Esys_EncryptDecrypt2.c
index a6fa4b1f2185..bdbae8392f57 100644
--- a/src/tss2-esys/api/Esys_EncryptDecrypt2.c
+++ b/src/tss2-esys/api/Esys_EncryptDecrypt2.c
@@ -190,8 +190,12 @@ Esys_EncryptDecrypt2_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (keyHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &keyHandleNode->rsrc.name, &keyHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_EventSequenceComplete.c b/src/tss2-esys/api/Esys_EventSequenceComplete.c
index c318a67a4369..6ee7904a358d 100644
--- a/src/tss2-esys/api/Esys_EventSequenceComplete.c
+++ b/src/tss2-esys/api/Esys_EventSequenceComplete.c
@@ -189,11 +189,18 @@ Esys_EventSequenceComplete_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (pcrHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &pcrHandleNode->rsrc.name, &pcrHandleNode->auth);
-    iesys_compute_session_value(esysContext->session_tab[1],
-                sequenceHandleNode ? &sequenceHandleNode->rsrc.name : NULL,
-                sequenceHandleNode ? &sequenceHandleNode->auth : NULL);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
+    if (sequenceHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[1],
+                &sequenceHandleNode->rsrc.name, &sequenceHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
     /* Generate the auth values and set them in the SAPI command buffer */
diff --git a/src/tss2-esys/api/Esys_EvictControl.c b/src/tss2-esys/api/Esys_EvictControl.c
index fe7aaaccf888..faade51c7060 100644
--- a/src/tss2-esys/api/Esys_EvictControl.c
+++ b/src/tss2-esys/api/Esys_EvictControl.c
@@ -209,8 +209,12 @@ Esys_EvictControl_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authNode->rsrc.name, &authNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_FieldUpgradeStart.c b/src/tss2-esys/api/Esys_FieldUpgradeStart.c
index 27f963accf40..2e1a07e29700 100644
--- a/src/tss2-esys/api/Esys_FieldUpgradeStart.c
+++ b/src/tss2-esys/api/Esys_FieldUpgradeStart.c
@@ -196,8 +196,12 @@ Esys_FieldUpgradeStart_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authorizationNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authorizationNode->rsrc.name, &authorizationNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_GetCommandAuditDigest.c b/src/tss2-esys/api/Esys_GetCommandAuditDigest.c
index 0c3b642b3c51..714b3706bf40 100644
--- a/src/tss2-esys/api/Esys_GetCommandAuditDigest.c
+++ b/src/tss2-esys/api/Esys_GetCommandAuditDigest.c
@@ -196,8 +196,12 @@ Esys_GetCommandAuditDigest_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (privacyHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &privacyHandleNode->rsrc.name, &privacyHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1],
                 &signHandleNode->rsrc.name, &signHandleNode->auth);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
diff --git a/src/tss2-esys/api/Esys_GetSessionAuditDigest.c b/src/tss2-esys/api/Esys_GetSessionAuditDigest.c
index 9d7ef314a637..38a62787d892 100644
--- a/src/tss2-esys/api/Esys_GetSessionAuditDigest.c
+++ b/src/tss2-esys/api/Esys_GetSessionAuditDigest.c
@@ -210,8 +210,12 @@ Esys_GetSessionAuditDigest_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (privacyAdminHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &privacyAdminHandleNode->rsrc.name, &privacyAdminHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1],
                 &signHandleNode->rsrc.name, &signHandleNode->auth);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
diff --git a/src/tss2-esys/api/Esys_GetTime.c b/src/tss2-esys/api/Esys_GetTime.c
index 2142b8ec47df..6948dcbdcba6 100644
--- a/src/tss2-esys/api/Esys_GetTime.c
+++ b/src/tss2-esys/api/Esys_GetTime.c
@@ -194,8 +194,12 @@ Esys_GetTime_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (privacyAdminHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &privacyAdminHandleNode->rsrc.name, &privacyAdminHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1],
                 &signHandleNode->rsrc.name, &signHandleNode->auth);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
diff --git a/src/tss2-esys/api/Esys_HMAC.c b/src/tss2-esys/api/Esys_HMAC.c
index 0d92f1c0c363..0e57c647d959 100644
--- a/src/tss2-esys/api/Esys_HMAC.c
+++ b/src/tss2-esys/api/Esys_HMAC.c
@@ -177,8 +177,12 @@ Esys_HMAC_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (handleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &handleNode->rsrc.name, &handleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_HMAC_Start.c b/src/tss2-esys/api/Esys_HMAC_Start.c
index afecbfbaf0a6..b129be39a4d2 100644
--- a/src/tss2-esys/api/Esys_HMAC_Start.c
+++ b/src/tss2-esys/api/Esys_HMAC_Start.c
@@ -194,8 +194,12 @@ Esys_HMAC_Start_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (handleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &handleNode->rsrc.name, &handleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_HierarchyChangeAuth.c b/src/tss2-esys/api/Esys_HierarchyChangeAuth.c
index 90d87bb5d76c..39672ed6823b 100644
--- a/src/tss2-esys/api/Esys_HierarchyChangeAuth.c
+++ b/src/tss2-esys/api/Esys_HierarchyChangeAuth.c
@@ -194,8 +194,12 @@ Esys_HierarchyChangeAuth_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_HierarchyControl.c b/src/tss2-esys/api/Esys_HierarchyControl.c
index 16fd593a6484..55207f20e6d2 100644
--- a/src/tss2-esys/api/Esys_HierarchyControl.c
+++ b/src/tss2-esys/api/Esys_HierarchyControl.c
@@ -189,8 +189,12 @@ Esys_HierarchyControl_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_Import.c b/src/tss2-esys/api/Esys_Import.c
index d7c36352b21f..8c24ed410c37 100644
--- a/src/tss2-esys/api/Esys_Import.c
+++ b/src/tss2-esys/api/Esys_Import.c
@@ -199,8 +199,12 @@ Esys_Import_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (parentHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &parentHandleNode->rsrc.name, &parentHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_Load.c b/src/tss2-esys/api/Esys_Load.c
index b695991924c8..410d9c8bcc73 100644
--- a/src/tss2-esys/api/Esys_Load.c
+++ b/src/tss2-esys/api/Esys_Load.c
@@ -191,8 +191,12 @@ Esys_Load_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (parentHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &parentHandleNode->rsrc.name, &parentHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_Certify.c b/src/tss2-esys/api/Esys_NV_Certify.c
index 8f0eb6e65536..8b79fb69dae0 100644
--- a/src/tss2-esys/api/Esys_NV_Certify.c
+++ b/src/tss2-esys/api/Esys_NV_Certify.c
@@ -215,10 +215,18 @@ Esys_NV_Certify_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (signHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &signHandleNode->rsrc.name, &signHandleNode->auth);
-    iesys_compute_session_value(esysContext->session_tab[1],
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[1],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
     /* Generate the auth values and set them in the SAPI command buffer */
diff --git a/src/tss2-esys/api/Esys_NV_ChangeAuth.c b/src/tss2-esys/api/Esys_NV_ChangeAuth.c
index d2aced330113..3004a3dd4b1d 100644
--- a/src/tss2-esys/api/Esys_NV_ChangeAuth.c
+++ b/src/tss2-esys/api/Esys_NV_ChangeAuth.c
@@ -190,8 +190,12 @@ Esys_NV_ChangeAuth_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (nvIndexNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &nvIndexNode->rsrc.name, &nvIndexNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_DefineSpace.c b/src/tss2-esys/api/Esys_NV_DefineSpace.c
index 01b6a3e3fd7b..70ae2a73d0be 100644
--- a/src/tss2-esys/api/Esys_NV_DefineSpace.c
+++ b/src/tss2-esys/api/Esys_NV_DefineSpace.c
@@ -213,8 +213,12 @@ Esys_NV_DefineSpace_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_Extend.c b/src/tss2-esys/api/Esys_NV_Extend.c
index 23eeabddc24d..0b3d61b99405 100644
--- a/src/tss2-esys/api/Esys_NV_Extend.c
+++ b/src/tss2-esys/api/Esys_NV_Extend.c
@@ -194,8 +194,12 @@ Esys_NV_Extend_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_GlobalWriteLock.c b/src/tss2-esys/api/Esys_NV_GlobalWriteLock.c
index f84ec4f0994e..56a9b1171462 100644
--- a/src/tss2-esys/api/Esys_NV_GlobalWriteLock.c
+++ b/src/tss2-esys/api/Esys_NV_GlobalWriteLock.c
@@ -176,8 +176,12 @@ Esys_NV_GlobalWriteLock_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_Increment.c b/src/tss2-esys/api/Esys_NV_Increment.c
index 17504c6db1f1..6248b4b6c007 100644
--- a/src/tss2-esys/api/Esys_NV_Increment.c
+++ b/src/tss2-esys/api/Esys_NV_Increment.c
@@ -195,8 +195,12 @@ Esys_NV_Increment_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_Read.c b/src/tss2-esys/api/Esys_NV_Read.c
index f97784f72b85..40f54ec7fea4 100644
--- a/src/tss2-esys/api/Esys_NV_Read.c
+++ b/src/tss2-esys/api/Esys_NV_Read.c
@@ -192,8 +192,12 @@ Esys_NV_Read_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_ReadLock.c b/src/tss2-esys/api/Esys_NV_ReadLock.c
index ee15450f3e09..529446a02b30 100644
--- a/src/tss2-esys/api/Esys_NV_ReadLock.c
+++ b/src/tss2-esys/api/Esys_NV_ReadLock.c
@@ -195,8 +195,12 @@ Esys_NV_ReadLock_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_SetBits.c b/src/tss2-esys/api/Esys_NV_SetBits.c
index a3d5508c0cbe..17d769880e16 100644
--- a/src/tss2-esys/api/Esys_NV_SetBits.c
+++ b/src/tss2-esys/api/Esys_NV_SetBits.c
@@ -200,8 +200,12 @@ Esys_NV_SetBits_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_UndefineSpace.c b/src/tss2-esys/api/Esys_NV_UndefineSpace.c
index e816299dddbf..14a04789eb6e 100644
--- a/src/tss2-esys/api/Esys_NV_UndefineSpace.c
+++ b/src/tss2-esys/api/Esys_NV_UndefineSpace.c
@@ -193,8 +193,12 @@ Esys_NV_UndefineSpace_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_UndefineSpaceSpecial.c b/src/tss2-esys/api/Esys_NV_UndefineSpaceSpecial.c
index c3df73f80a25..bd5aa2ef838d 100644
--- a/src/tss2-esys/api/Esys_NV_UndefineSpaceSpecial.c
+++ b/src/tss2-esys/api/Esys_NV_UndefineSpaceSpecial.c
@@ -195,10 +195,18 @@ Esys_NV_UndefineSpaceSpecial_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (nvIndexNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &nvIndexNode->rsrc.name, &nvIndexNode->auth);
-    iesys_compute_session_value(esysContext->session_tab[1],
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
+    if (platformNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[1],
                 &platformNode->rsrc.name, &platformNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
     /* Generate the auth values and set them in the SAPI command buffer */
diff --git a/src/tss2-esys/api/Esys_NV_Write.c b/src/tss2-esys/api/Esys_NV_Write.c
index f18e9d9724d7..c132def44c4a 100644
--- a/src/tss2-esys/api/Esys_NV_Write.c
+++ b/src/tss2-esys/api/Esys_NV_Write.c
@@ -198,8 +198,12 @@ Esys_NV_Write_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_NV_WriteLock.c b/src/tss2-esys/api/Esys_NV_WriteLock.c
index b2a8f646aaf4..c8b7ef4d2bc6 100644
--- a/src/tss2-esys/api/Esys_NV_WriteLock.c
+++ b/src/tss2-esys/api/Esys_NV_WriteLock.c
@@ -195,8 +195,12 @@ Esys_NV_WriteLock_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_ObjectChangeAuth.c b/src/tss2-esys/api/Esys_ObjectChangeAuth.c
index e7e018893f68..408b354f057a 100644
--- a/src/tss2-esys/api/Esys_ObjectChangeAuth.c
+++ b/src/tss2-esys/api/Esys_ObjectChangeAuth.c
@@ -183,8 +183,12 @@ Esys_ObjectChangeAuth_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (objectHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &objectHandleNode->rsrc.name, &objectHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_PCR_Allocate.c b/src/tss2-esys/api/Esys_PCR_Allocate.c
index ea82b45182ae..d9a426ce8bab 100644
--- a/src/tss2-esys/api/Esys_PCR_Allocate.c
+++ b/src/tss2-esys/api/Esys_PCR_Allocate.c
@@ -194,8 +194,12 @@ Esys_PCR_Allocate_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_PCR_Event.c b/src/tss2-esys/api/Esys_PCR_Event.c
index 30ef453adc17..a01335629141 100644
--- a/src/tss2-esys/api/Esys_PCR_Event.c
+++ b/src/tss2-esys/api/Esys_PCR_Event.c
@@ -176,8 +176,12 @@ Esys_PCR_Event_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (pcrHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &pcrHandleNode->rsrc.name, &pcrHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_PCR_Extend.c b/src/tss2-esys/api/Esys_PCR_Extend.c
index bbb1e4133aa2..8e2d4ad39403 100644
--- a/src/tss2-esys/api/Esys_PCR_Extend.c
+++ b/src/tss2-esys/api/Esys_PCR_Extend.c
@@ -179,8 +179,12 @@ Esys_PCR_Extend_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (pcrHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &pcrHandleNode->rsrc.name, &pcrHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_PCR_Reset.c b/src/tss2-esys/api/Esys_PCR_Reset.c
index ed5a9aa49089..178a7924632c 100644
--- a/src/tss2-esys/api/Esys_PCR_Reset.c
+++ b/src/tss2-esys/api/Esys_PCR_Reset.c
@@ -175,8 +175,12 @@ Esys_PCR_Reset_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (pcrHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &pcrHandleNode->rsrc.name, &pcrHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_PCR_SetAuthPolicy.c b/src/tss2-esys/api/Esys_PCR_SetAuthPolicy.c
index a98817d36cd6..a7197c945103 100644
--- a/src/tss2-esys/api/Esys_PCR_SetAuthPolicy.c
+++ b/src/tss2-esys/api/Esys_PCR_SetAuthPolicy.c
@@ -184,8 +184,12 @@ Esys_PCR_SetAuthPolicy_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_PCR_SetAuthValue.c b/src/tss2-esys/api/Esys_PCR_SetAuthValue.c
index 8bd1e37b3bc5..68e7c8a6d95f 100644
--- a/src/tss2-esys/api/Esys_PCR_SetAuthValue.c
+++ b/src/tss2-esys/api/Esys_PCR_SetAuthValue.c
@@ -175,8 +175,12 @@ Esys_PCR_SetAuthValue_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (pcrHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &pcrHandleNode->rsrc.name, &pcrHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_PP_Commands.c b/src/tss2-esys/api/Esys_PP_Commands.c
index 188a5a459124..a7b803482a19 100644
--- a/src/tss2-esys/api/Esys_PP_Commands.c
+++ b/src/tss2-esys/api/Esys_PP_Commands.c
@@ -189,8 +189,12 @@ Esys_PP_Commands_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authNode->rsrc.name, &authNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_PolicyAuthorizeNV.c b/src/tss2-esys/api/Esys_PolicyAuthorizeNV.c
index bf52ec0d7041..4b71768872d7 100644
--- a/src/tss2-esys/api/Esys_PolicyAuthorizeNV.c
+++ b/src/tss2-esys/api/Esys_PolicyAuthorizeNV.c
@@ -199,8 +199,12 @@ Esys_PolicyAuthorizeNV_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_PolicyNV.c b/src/tss2-esys/api/Esys_PolicyNV.c
index 752856e2eda7..cfff5fc33da1 100644
--- a/src/tss2-esys/api/Esys_PolicyNV.c
+++ b/src/tss2-esys/api/Esys_PolicyNV.c
@@ -206,8 +206,12 @@ Esys_PolicyNV_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_PolicySecret.c b/src/tss2-esys/api/Esys_PolicySecret.c
index 671c40cdba0c..c755578e9da7 100644
--- a/src/tss2-esys/api/Esys_PolicySecret.c
+++ b/src/tss2-esys/api/Esys_PolicySecret.c
@@ -208,8 +208,12 @@ Esys_PolicySecret_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_Quote.c b/src/tss2-esys/api/Esys_Quote.c
index 3c3f7f10f852..44ba57f2fe1a 100644
--- a/src/tss2-esys/api/Esys_Quote.c
+++ b/src/tss2-esys/api/Esys_Quote.c
@@ -185,8 +185,12 @@ Esys_Quote_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (signHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &signHandleNode->rsrc.name, &signHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_RSA_Decrypt.c b/src/tss2-esys/api/Esys_RSA_Decrypt.c
index 30ec54e3d0d2..a4c953be1f3b 100644
--- a/src/tss2-esys/api/Esys_RSA_Decrypt.c
+++ b/src/tss2-esys/api/Esys_RSA_Decrypt.c
@@ -182,8 +182,12 @@ Esys_RSA_Decrypt_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (keyHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &keyHandleNode->rsrc.name, &keyHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_Rewrap.c b/src/tss2-esys/api/Esys_Rewrap.c
index f31538d008fc..f1127ce47706 100644
--- a/src/tss2-esys/api/Esys_Rewrap.c
+++ b/src/tss2-esys/api/Esys_Rewrap.c
@@ -197,8 +197,12 @@ Esys_Rewrap_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (oldParentNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &oldParentNode->rsrc.name, &oldParentNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_SequenceComplete.c b/src/tss2-esys/api/Esys_SequenceComplete.c
index c6afd9097366..2227afc1f453 100644
--- a/src/tss2-esys/api/Esys_SequenceComplete.c
+++ b/src/tss2-esys/api/Esys_SequenceComplete.c
@@ -190,9 +190,12 @@ Esys_SequenceComplete_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
-                sequenceHandleNode ? &sequenceHandleNode->rsrc.name : NULL,
-                sequenceHandleNode ? &sequenceHandleNode->auth : NULL);
+    if (sequenceHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
+                &sequenceHandleNode->rsrc.name, &sequenceHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_SequenceUpdate.c b/src/tss2-esys/api/Esys_SequenceUpdate.c
index add3ec4f33bf..c1bc93daeb03 100644
--- a/src/tss2-esys/api/Esys_SequenceUpdate.c
+++ b/src/tss2-esys/api/Esys_SequenceUpdate.c
@@ -175,9 +175,12 @@ Esys_SequenceUpdate_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
-                sequenceHandleNode ? &sequenceHandleNode->rsrc.name : NULL,
-                sequenceHandleNode ? &sequenceHandleNode->auth : NULL);
+    if (sequenceHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
+                &sequenceHandleNode->rsrc.name, &sequenceHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_SetAlgorithmSet.c b/src/tss2-esys/api/Esys_SetAlgorithmSet.c
index d73771e3f74a..4716f04b8793 100644
--- a/src/tss2-esys/api/Esys_SetAlgorithmSet.c
+++ b/src/tss2-esys/api/Esys_SetAlgorithmSet.c
@@ -182,8 +182,12 @@ Esys_SetAlgorithmSet_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_SetCommandCodeAuditStatus.c b/src/tss2-esys/api/Esys_SetCommandCodeAuditStatus.c
index 1290a87b7563..38268b94e1cb 100644
--- a/src/tss2-esys/api/Esys_SetCommandCodeAuditStatus.c
+++ b/src/tss2-esys/api/Esys_SetCommandCodeAuditStatus.c
@@ -196,8 +196,12 @@ Esys_SetCommandCodeAuditStatus_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authNode->rsrc.name, &authNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_SetPrimaryPolicy.c b/src/tss2-esys/api/Esys_SetPrimaryPolicy.c
index 51272d57c8e2..73b676870704 100644
--- a/src/tss2-esys/api/Esys_SetPrimaryPolicy.c
+++ b/src/tss2-esys/api/Esys_SetPrimaryPolicy.c
@@ -183,8 +183,12 @@ Esys_SetPrimaryPolicy_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (authHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &authHandleNode->rsrc.name, &authHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_Sign.c b/src/tss2-esys/api/Esys_Sign.c
index 06a0a451e4d9..374c17d35543 100644
--- a/src/tss2-esys/api/Esys_Sign.c
+++ b/src/tss2-esys/api/Esys_Sign.c
@@ -188,8 +188,12 @@ Esys_Sign_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (keyHandleNode != NULL)
+       iesys_compute_session_value(esysContext->session_tab[0],
                 &keyHandleNode->rsrc.name, &keyHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_Unseal.c b/src/tss2-esys/api/Esys_Unseal.c
index 1ac785809fe8..b3203a0e5aae 100644
--- a/src/tss2-esys/api/Esys_Unseal.c
+++ b/src/tss2-esys/api/Esys_Unseal.c
@@ -172,8 +172,12 @@ Esys_Unseal_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (itemHandleNode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &itemHandleNode->rsrc.name, &itemHandleNode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
diff --git a/src/tss2-esys/api/Esys_ZGen_2Phase.c b/src/tss2-esys/api/Esys_ZGen_2Phase.c
index cb30880c3c71..c59996d35aea 100644
--- a/src/tss2-esys/api/Esys_ZGen_2Phase.c
+++ b/src/tss2-esys/api/Esys_ZGen_2Phase.c
@@ -190,8 +190,12 @@ Esys_ZGen_2Phase_Async(
     /* Calculate the cpHash Values */
     r = init_session_tab(esysContext, shandle1, shandle2, shandle3);
     return_state_if_error(r, _ESYS_STATE_INIT, "Initialize session resources");
-    iesys_compute_session_value(esysContext->session_tab[0],
+    if (keyANode != NULL)
+        iesys_compute_session_value(esysContext->session_tab[0],
                 &keyANode->rsrc.name, &keyANode->auth);
+    else
+        iesys_compute_session_value(esysContext->session_tab[0], NULL, NULL);
+
     iesys_compute_session_value(esysContext->session_tab[1], NULL, NULL);
     iesys_compute_session_value(esysContext->session_tab[2], NULL, NULL);
 
-- 
2.27.0