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