FAPI: Extend policy test with a HMAC session.

* The test case policy undefine special was modified.
  Instead of EYS_TR_NONE a HMAC session is used for policy commands to check
  whether the usage of the session name of HMAC computation works.

Signed-off-by: Juergen Repp <repp@pc-repp.sit.fraunhofer.de>
diff --git a/test/integration/esys-policy-nv-undefine-special.int.c b/test/integration/esys-policy-nv-undefine-special.int.c
index 54dff41..4d756b0 100644
--- a/test/integration/esys-policy-nv-undefine-special.int.c
+++ b/test/integration/esys-policy-nv-undefine-special.int.c
@@ -44,6 +44,7 @@
     TSS2_RC r;
     ESYS_TR nvHandle = ESYS_TR_NONE;
     ESYS_TR policySession = ESYS_TR_NONE;
+    ESYS_TR session = ESYS_TR_NONE;
     int failure_return = EXIT_FAILURE;
     /*
      * First the policy value for NV_UndefineSpaceSpecial has to be
@@ -146,6 +147,20 @@
                    21, 22, 23, 24, 25, 26, 27, 28, 29, 30}
     };
 
+    /* Create HMAC session to test HMAC with session name for policy sessions */
+    r = Esys_StartAuthSession(esys_context, ESYS_TR_NONE, ESYS_TR_NONE,
+                              ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE,
+                              &policyNonceCaller,
+                              TPM2_SE_HMAC, &policySymmetric, TPM2_ALG_SHA1,
+                              &session);
+    goto_if_error(r, "Error: During initialization of session", error);
+
+    TPMA_SESSION sessionAttributes = TPMA_SESSION_AUDIT |
+                                     TPMA_SESSION_CONTINUESESSION;
+
+    r = Esys_TRSess_SetAttributes(esys_context, session, sessionAttributes, 0xFF);
+    goto_if_error(r, "Error: During SetAttributes", error);
+
     r = Esys_StartAuthSession(esys_context, ESYS_TR_NONE, ESYS_TR_NONE,
                               ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE,
                               &policyNonceCaller,
@@ -155,7 +170,7 @@
 
     r = Esys_PolicyAuthValue(esys_context,
                              policySession,
-                             ESYS_TR_NONE,
+                             session,
                              ESYS_TR_NONE,
                              ESYS_TR_NONE
                              );
@@ -163,7 +178,7 @@
 
     r = Esys_PolicyCommandCode(esys_context,
                                policySession,
-                               ESYS_TR_NONE,
+                               session,
                                ESYS_TR_NONE,
                                ESYS_TR_NONE,
                                TPM2_CC_NV_UndefineSpaceSpecial
@@ -190,6 +205,9 @@
     r = Esys_FlushContext(esys_context, sessionTrial);
     goto_if_error(r, "Flushing context", error);
 
+    r = Esys_FlushContext(esys_context, session);
+    goto_if_error(r, "Flushing context", error);
+
     r = Esys_FlushContext(esys_context, policySession);
     goto_if_error(r, "Flushing context", error);
 
@@ -203,6 +221,12 @@
         }
     }
 
+    if (session != ESYS_TR_NONE) {
+        if (Esys_FlushContext(esys_context, session) != TSS2_RC_SUCCESS) {
+            LOG_ERROR("Cleanup session failed.");
+        }
+    }
+
     if (policySession != ESYS_TR_NONE) {
         if (Esys_FlushContext(esys_context, policySession) != TSS2_RC_SUCCESS) {
             LOG_ERROR("Cleanup policySession failed.");