ESYS TEST: Fix checking of esys return values.

* Return values of optional commands are checked to skip this
  tests if the commands are not available.
* Return values of commands with platform authorization are checked
  to skip this tests if platform hierarchy is disabled
* Only EXIT_SUCCESS (0), EXIT_FAILURE (1), or EXIT_SKIP(77)
  will be returned by the test function. Erroneously return codes
  of esys commands were returned before.

Signed-off-by: Juergen Repp <Juergen.Repp@sit.fraunhofer.de>
diff --git a/test/integration/esys-audit.int.c b/test/integration/esys-audit.int.c
index 926fc4e..3e9a0fe 100644
--- a/test/integration/esys-audit.int.c
+++ b/test/integration/esys-audit.int.c
@@ -4,9 +4,12 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -22,7 +25,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     /* Compute a signing key */
     TPM2B_AUTH authValuePrimary = {
@@ -163,6 +167,13 @@
         &inScheme,
         &auditInfo,
         &signature);
+
+    if (r == TPM2_RC_COMMAND_CODE) {
+        LOG_WARNING("Command TPM2_GetCommandAuditDigest not supported by TPM.");
+        failure_return = EXIT_SKIP;
+        goto error;
+    }
+
     goto_if_error(r, "Error: GetCommandAuditDigest", error);
 
     r = Esys_GetSessionAuditDigest(
@@ -192,6 +203,14 @@
         auditAlg,
         &setList,
         &clearList);
+
+    if (r == (TPM2_RC_BAD_AUTH | TPM2_RC_S | TPM2_RC_1)) {
+        /* Platform authorization not possible test will be skipped */
+        LOG_WARNING("Platform authorization not possible.");
+        failure_return =  EXIT_SKIP;
+        goto error;
+    }
+
     goto_if_error(r, "Error: SetCommandCodeAuditStatus", error);
 
     r = Esys_FlushContext(esys_context, signHandle);
@@ -200,8 +219,8 @@
     r = Esys_FlushContext(esys_context, session);
     goto_if_error(r, "Error during FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return failure_return;
 }
diff --git a/test/integration/esys-certify-creation.int.c b/test/integration/esys-certify-creation.int.c
index 717bc91..ddb82fe 100644
--- a/test/integration/esys-certify-creation.int.c
+++ b/test/integration/esys-certify-creation.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -19,7 +21,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -136,8 +138,8 @@
     r = Esys_FlushContext(esys_context,signHandle);
     goto_if_error(r, "Error: FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-certify.int.c b/test/integration/esys-certify.int.c
index 811edbe..e050327 100644
--- a/test/integration/esys-certify.int.c
+++ b/test/integration/esys-certify.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -19,7 +21,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -135,8 +137,8 @@
     r = Esys_FlushContext(esys_context,signHandle);
     goto_if_error(r, "Error: FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-change-eps.int.c b/test/integration/esys-change-eps.int.c
index d335ac7..87404c6 100644
--- a/test/integration/esys-change-eps.int.c
+++ b/test/integration/esys-change-eps.int.c
@@ -4,9 +4,12 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -14,7 +17,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     ESYS_TR authHandle = ESYS_TR_RH_PLATFORM;
 
@@ -24,10 +27,23 @@
         ESYS_TR_PASSWORD,
         ESYS_TR_NONE,
         ESYS_TR_NONE);
+
+    if (r == TPM2_RC_COMMAND_CODE) {
+        LOG_WARNING("Command TPM2_ChangeEPS not supported by TPM.");
+        return  EXIT_SKIP;
+        goto error;
+    }
+
+    if (r == (TPM2_RC_BAD_AUTH | TPM2_RC_S | TPM2_RC_1)) {
+        /* Platform authorization not possible test will be skipped */
+        LOG_WARNING("Platform authorization not possible.");
+        return EXIT_SKIP;
+    }
+
     goto_if_error(r, "Error: ChangeEPS", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return r;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-clear-control.int.c b/test/integration/esys-clear-control.int.c
index baeaf34..19ee10f 100644
--- a/test/integration/esys-clear-control.int.c
+++ b/test/integration/esys-clear-control.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -19,7 +21,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     ESYS_TR auth_handle = ESYS_TR_RH_PLATFORM;
     TPMI_YES_NO disable = TPM2_YES;
@@ -54,8 +56,8 @@
 
     goto_if_error(r, "Error: ClearControl", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-clear.int.c b/test/integration/esys-clear.int.c
index 500b24f..4aa97ad 100644
--- a/test/integration/esys-clear.int.c
+++ b/test/integration/esys-clear.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -15,7 +17,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
 #ifdef TEST_SESSION
     ESYS_TR session;
@@ -60,8 +62,8 @@
     goto_if_error(r, "Error: FlushContext", error);
 #endif
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-clockset.int.c b/test/integration/esys-clockset.int.c
index d490a0c..071e12c 100644
--- a/test/integration/esys-clockset.int.c
+++ b/test/integration/esys-clockset.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -15,7 +17,7 @@
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
 
-    uint32_t r = 0;
+    TSS2_RC r;
 
     ESYS_TR auth_handle = ESYS_TR_RH_OWNER;
     UINT64 newTime = 0xffffff;
@@ -49,8 +51,8 @@
                        &currentTime);
     goto_if_error(r, "Error: ReadClock", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-commit.int.c b/test/integration/esys-commit.int.c
index c6ef8f9..b0e5c1e 100644
--- a/test/integration/esys-commit.int.c
+++ b/test/integration/esys-commit.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -19,7 +21,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r;
+    TSS2_RC r;
     ESYS_TR session;
     TPMT_SYM_DEF symmetric = {
         .algorithm = TPM2_ALG_AES,
@@ -142,9 +144,9 @@
     r = Esys_FlushContext(esys_context, session);
     goto_if_error(r, "Error: FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
     LOG_ERROR("\nError Code: %x\n", r);
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-create-fail.int.c b/test/integration/esys-create-fail.int.c
index 6d5222f..9744e73 100644
--- a/test/integration/esys-create-fail.int.c
+++ b/test/integration/esys-create-fail.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "test-esapi.h"
@@ -21,7 +23,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -190,8 +192,8 @@
     r = Esys_FlushContext(esys_context, primaryHandle_handle);
     goto_if_error(r, "Error during FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-create-password-auth.int.c b/test/integration/esys-create-password-auth.int.c
index 0347804..cbe4e85 100644
--- a/test/integration/esys-create-password-auth.int.c
+++ b/test/integration/esys-create-password-auth.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -23,7 +25,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -294,8 +296,8 @@
     r = Esys_FlushContext(esys_context, loadedKeyHandle);
     goto_if_error(r, "Error during FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-create-primary-hmac.int.c b/test/integration/esys-create-primary-hmac.int.c
index 1ade429..91cabd5 100644
--- a/test/integration/esys-create-primary-hmac.int.c
+++ b/test/integration/esys-create-primary-hmac.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -19,7 +21,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r;
+    TSS2_RC r;
     ESYS_TR session;
     TPMT_SYM_DEF symmetric = { .algorithm = TPM2_ALG_NULL };
 
@@ -168,9 +170,9 @@
     goto_if_error(r, "Error during FlushContext", error);
 
     LOG_INFO("Done with handle 0x%08x...", objectHandle_node->rsrc.handle);
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
     LOG_ERROR("\nError Code: %x\n", r);
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-create-session-auth.int.c b/test/integration/esys-create-session-auth.int.c
index 750a5ba..279773a 100644
--- a/test/integration/esys-create-session-auth.int.c
+++ b/test/integration/esys-create-session-auth.int.c
@@ -29,7 +29,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -390,8 +390,8 @@
     r = Esys_FlushContext(esys_context, loadedKeyHandle);
     goto_if_error(r, "Error during FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-createloaded.int.c b/test/integration/esys-createloaded.int.c
index 4293863..bf9a993 100644
--- a/test/integration/esys-createloaded.int.c
+++ b/test/integration/esys-createloaded.int.c
@@ -4,10 +4,13 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 #include "tss2_mu.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -20,7 +23,9 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
 #ifdef TEST_SESSION
     ESYS_TR session;
@@ -207,30 +212,26 @@
         &outPublic2
         );
     if (r == TPM2_RC_COMMAND_CODE) {
-        LOG_INFO("Command TPM2_CreateLoaded not supported by TPM.");
-
-        r = Esys_FlushContext(esys_context, primaryHandle_handle);
-        goto_if_error(r, "Flushing context", error);
-
-        r = 77; /* Skip */
+        LOG_WARNING("Command TPM2_CreateLoaded not supported by TPM.");
+        failure_return = EXIT_SKIP;
         goto error;
-    } else {
-        goto_if_error(r, "Error During CreateLoaded", error);
-
-        r = Esys_FlushContext(esys_context, primaryHandle_handle);
-        goto_if_error(r, "Flushing context", error);
-
-        r = Esys_FlushContext(esys_context, objectHandle_handle);
-        goto_if_error(r, "Flushing context", error);
     }
 
+    goto_if_error(r, "Error During CreateLoaded", error);
+
+    r = Esys_FlushContext(esys_context, primaryHandle_handle);
+    goto_if_error(r, "Flushing context", error);
+
+    r = Esys_FlushContext(esys_context, objectHandle_handle);
+    goto_if_error(r, "Flushing context", error);
+
 #ifdef TEST_SESSION
     r = Esys_FlushContext(esys_context, session);
     goto_if_error(r, "Error: FlushContext", error);
 #endif
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return r;
+    return failure_return;
 }
diff --git a/test/integration/esys-duplicate.int.c b/test/integration/esys-duplicate.int.c
index 70f9fc5..1dc1052 100644
--- a/test/integration/esys-duplicate.int.c
+++ b/test/integration/esys-duplicate.int.c
@@ -4,10 +4,13 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 #include "tss2_mu.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -23,7 +26,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     /*
      * First the policy value to be able to use Esys_Duplicate for an object has to be
@@ -372,6 +376,12 @@
                     &outDuplicate,
                     &outSymSeed2);
 
+    if (r == TPM2_RC_COMMAND_CODE) {
+        LOG_WARNING("Command TPM2_Rewrap not supported by TPM.");
+        failure_return = EXIT_SKIP;
+        goto error;
+    }
+
     goto_if_error(r, "Error: Rewrap", error);
 
     r = Esys_FlushContext(esys_context, primaryHandle_handle);
@@ -383,8 +393,8 @@
     r = Esys_FlushContext(esys_context, loadedKeyHandle);
     goto_if_error(r, "Flushing context", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return failure_return;
 }
diff --git a/test/integration/esys-ecc-parameters.int.c b/test/integration/esys-ecc-parameters.int.c
index 6890544..721023c 100644
--- a/test/integration/esys-ecc-parameters.int.c
+++ b/test/integration/esys-ecc-parameters.int.c
@@ -4,9 +4,12 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -14,7 +17,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     TPMI_ECC_CURVE curveID  = TPM2_ECC_NIST_P256;
     TPMS_ALGORITHM_DETAIL_ECC *parameters;
@@ -29,13 +33,13 @@
 
     if (r == TPM2_RC_CURVE + TPM2_RC_P + TPM2_RC_1) {
         LOG_WARNING("Curve TPM2_ECC_NIST_P256 supported by TPM.");
-        r = 77; /* Skip */
+        failure_return = EXIT_SKIP;
         goto error;
     }
     goto_if_error(r, "Error: ECC_Parameters", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return r;
+    return failure_return;
 }
diff --git a/test/integration/esys-ecdh-keygen.int.c b/test/integration/esys-ecdh-keygen.int.c
index 0040528..1fb2a26 100644
--- a/test/integration/esys-ecdh-keygen.int.c
+++ b/test/integration/esys-ecdh-keygen.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -18,7 +20,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r;
+    TSS2_RC r;
     ESYS_TR session;
     TPMT_SYM_DEF symmetric = {.algorithm = TPM2_ALG_AES,.keyBits = {.aes =
                                                                     128},.mode =
@@ -141,9 +143,9 @@
     r = Esys_FlushContext(esys_context, eccHandle);
     goto_if_error(r, "Error during FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
     LOG_ERROR("\nError Code: %x\n", r);
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-ecdh-zgen.int.c b/test/integration/esys-ecdh-zgen.int.c
index 9cc9a38..968ee54 100644
--- a/test/integration/esys-ecdh-zgen.int.c
+++ b/test/integration/esys-ecdh-zgen.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -18,7 +20,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r;
+    TSS2_RC r;
     ESYS_TR session;
     TPMT_SYM_DEF symmetric = {
         .algorithm = TPM2_ALG_AES,
@@ -159,9 +161,9 @@
     r = Esys_FlushContext(esys_context, eccHandle);
     goto_if_error(r, "Error during FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
     LOG_ERROR("\nError Code: %x\n", r);
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-encrypt-decrypt.int.c b/test/integration/esys-encrypt-decrypt.int.c
index ebafd7b..b0fa5ba 100644
--- a/test/integration/esys-encrypt-decrypt.int.c
+++ b/test/integration/esys-encrypt-decrypt.int.c
@@ -4,9 +4,12 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -20,7 +23,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -243,6 +247,13 @@
         outData,
         &outData2,
         &ivOut2);
+
+    if (r == TPM2_RC_COMMAND_CODE) {
+        LOG_WARNING("Command TPM2_EncryptDecrypt not supported by TPM.");
+        failure_return = EXIT_SKIP;
+        goto error;
+    }
+
     goto_if_error(r, "Error: EncryptDecrypt", error);
 
     LOGBLOB_DEBUG(&outData2->buffer[0], outData2->size, "** Decrypted data **");
@@ -259,8 +270,8 @@
     r = Esys_FlushContext(esys_context, loadedKeyHandle);
     goto_if_error(r, "Error during FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return failure_return;
 }
diff --git a/test/integration/esys-event-sequence-complete.int.c b/test/integration/esys-event-sequence-complete.int.c
index 24985da..1fbc490 100644
--- a/test/integration/esys-event-sequence-complete.int.c
+++ b/test/integration/esys-event-sequence-complete.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -18,7 +20,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH auth = {.size = 20,
                        .buffer={10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
@@ -67,8 +69,8 @@
         &results);
     goto_if_error(r, "Error: EventSequenceComplete", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-evict-control-serialization.int.c b/test/integration/esys-evict-control-serialization.int.c
index 1cb9872..da888cc 100644
--- a/test/integration/esys-evict-control-serialization.int.c
+++ b/test/integration/esys-evict-control-serialization.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -23,7 +25,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -235,8 +237,8 @@
                           permanentHandle, &new_primary_handle1);
     goto_if_error(r, "Error Esys EvictControl", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-field-upgrade.int.c b/test/integration/esys-field-upgrade.int.c
index b0d4540..43761a1 100644
--- a/test/integration/esys-field-upgrade.int.c
+++ b/test/integration/esys-field-upgrade.int.c
@@ -4,9 +4,12 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -14,7 +17,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     TPM2B_MAX_BUFFER fuData = {
         .size = 20,
@@ -34,7 +38,7 @@
         &firstDigest);
     if (r == TPM2_RC_COMMAND_CODE) {
         LOG_INFO("Command TPM2_FieldUpgradeData not supported by TPM.");
-        r = 77; /* Skip */
+        failure_return = EXIT_SKIP;
         goto error;
     }
 
@@ -58,8 +62,8 @@
         &manifestSignature);
     goto_if_error(r, "Error: FieldUpgradeStart", error);
     */
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return r;
+    return failure_return;
 }
diff --git a/test/integration/esys-firmware-read.int.c b/test/integration/esys-firmware-read.int.c
index 32b9e5e..44e29a0 100644
--- a/test/integration/esys-firmware-read.int.c
+++ b/test/integration/esys-firmware-read.int.c
@@ -4,9 +4,12 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -14,7 +17,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     UINT32 sequenceNumber = 0;
     TPM2B_MAX_BUFFER *fuData;
@@ -28,13 +32,13 @@
 
     if (r == TPM2_RC_COMMAND_CODE) {
         LOG_INFO("Command TPM2_FieldUpgradeData not supported by TPM.");
-        r = 77; /* Skip */
+        failure_return = EXIT_SKIP;
         goto error;
     }
     goto_if_error(r, "Error: FirmwareRead", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return r;
+    return failure_return;
 }
diff --git a/test/integration/esys-get-capability.int.c b/test/integration/esys-get-capability.int.c
index dd2daf2..59c9f48 100644
--- a/test/integration/esys-get-capability.int.c
+++ b/test/integration/esys-get-capability.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -17,7 +19,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
     TPM2_CAP                       capability = TPM2_CAP_TPM_PROPERTIES;
     UINT32                         property = TPM2_PT_LOCKOUT_COUNTER;
     UINT32                         propertyCount = 1;
@@ -32,8 +34,8 @@
 
     goto_if_error(r, "Error esys get capability", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-get-time.int.c b/test/integration/esys-get-time.int.c
index 042af24..0ea9e36 100644
--- a/test/integration/esys-get-time.int.c
+++ b/test/integration/esys-get-time.int.c
@@ -4,9 +4,12 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -20,7 +23,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -144,10 +148,10 @@
         &timeInfo,
         &signature);
     if (r == TPM2_RC_COMMAND_CODE) {
-        LOG_INFO("Command TPM2_GetTime not supported by TPM.");
+        LOG_WARNING("Command TPM2_GetTime not supported by TPM.");
         r = Esys_FlushContext(esys_context, signHandle);
         goto_if_error(r, "Flushing context", error);
-        r = 77; /* Skip */
+        failure_return = EXIT_SKIP;
         goto error;
     }
     goto_if_error(r, "Error: GetTime", error);
@@ -155,8 +159,8 @@
     r = Esys_FlushContext(esys_context, signHandle);
     goto_if_error(r, "Error: FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return r;
+    return failure_return;
 }
diff --git a/test/integration/esys-hashsequencestart.int.c b/test/integration/esys-hashsequencestart.int.c
index 0993237..5e64a77 100644
--- a/test/integration/esys-hashsequencestart.int.c
+++ b/test/integration/esys-hashsequencestart.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -18,7 +20,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
 #ifdef TEST_SESSION
     ESYS_TR session;
@@ -104,8 +106,8 @@
     goto_if_error(r, "Error: FlushContext", error);
 #endif
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-hierarchy-control.int.c b/test/integration/esys-hierarchy-control.int.c
index 71962d0..7f0ca85 100644
--- a/test/integration/esys-hierarchy-control.int.c
+++ b/test/integration/esys-hierarchy-control.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -19,7 +21,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     ESYS_TR authHandle_handle = ESYS_TR_RH_PLATFORM;
     TPMI_RH_ENABLES enable = TPM2_RH_OWNER;
@@ -33,6 +35,13 @@
         ESYS_TR_NONE,
         enable,
         state);
+
+    if (r == (TPM2_RC_BAD_AUTH | TPM2_RC_S | TPM2_RC_1)) {
+        /* Platform authorization not possible test will be skipped */
+        LOG_WARNING("Platform authorization not possible.");
+        return EXIT_SKIP;
+    }
+
     goto_if_error(r, "Error: HierarchyControl", error);
 
     ESYS_TR auth_handle = ESYS_TR_RH_OWNER;
@@ -58,8 +67,8 @@
         state);
     goto_if_error(r, "Error: HierarchyControl", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-hierarchychangeauth.int.c b/test/integration/esys-hierarchychangeauth.int.c
index ddb8091..6bfae29 100644
--- a/test/integration/esys-hierarchychangeauth.int.c
+++ b/test/integration/esys-hierarchychangeauth.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -11,7 +13,7 @@
 #include "util/log.h"
 
 /*
- * This test is intended to test then change of an authorization value of
+ * This test is intended to test the change of an authorization value of
  * a hierarchy.
  * To check whether the change was successful a primary key is created
  * with the handle of this hierarchy and the new authorization.
@@ -22,7 +24,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
     ESYS_TR authHandle_handle = ESYS_TR_RH_OWNER;
     TPM2B_AUTH newAuth = {
         .size = 5,
@@ -137,8 +139,8 @@
                                  &emptyAuth);
     goto_if_error(r, "Error: HierarchyChangeAuth", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
 error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-hmacsequencestart.int.c b/test/integration/esys-hmacsequencestart.int.c
index 7695653..39e9017 100644
--- a/test/integration/esys-hmacsequencestart.int.c
+++ b/test/integration/esys-hmacsequencestart.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -18,7 +20,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
 #ifdef TEST_SESSION
     ESYS_TR session;
@@ -165,8 +167,8 @@
     goto_if_error(r, "Error: FlushContext", error);
 #endif
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-import.int.c b/test/integration/esys-import.int.c
index ec5b25f..2728164 100644
--- a/test/integration/esys-import.int.c
+++ b/test/integration/esys-import.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 #include "tss2_mu.h"
 
@@ -23,7 +25,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     /*
      * Firth the policy value to be able to use Esys_Duplicate for an object has to be
@@ -391,8 +393,8 @@
     r = Esys_FlushContext(esys_context, loadedKeyHandle);
     goto_if_error(r, "Flushing context", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-lock.int.c b/test/integration/esys-lock.int.c
index ac656e6..85248a0 100644
--- a/test/integration/esys-lock.int.c
+++ b/test/integration/esys-lock.int.c
@@ -4,9 +4,12 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -15,7 +18,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     r = Esys_DictionaryAttackLockReset(
         esys_context,
@@ -38,10 +41,16 @@
 
     r = Esys_NV_GlobalWriteLock(esys_context, ESYS_TR_RH_PLATFORM,
                                 ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
+
+    if (r == (TPM2_RC_BAD_AUTH | TPM2_RC_S | TPM2_RC_1)) {
+        /* Platform authorization not possible test will be skipped */
+        LOG_WARNING("Platform authorization not possible.");
+        return 77;
+    }
     goto_if_error(r, "Error: NV_GlobalWriteLock", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
   error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-make-credential.int.c b/test/integration/esys-make-credential.int.c
index 6e4378b..77f8152 100644
--- a/test/integration/esys-make-credential.int.c
+++ b/test/integration/esys-make-credential.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -23,7 +25,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
 #ifdef TEST_SESSION
     ESYS_TR session;
@@ -353,8 +355,8 @@
     r = Esys_FlushContext(esys_context, loadedKeyHandle);
     goto_if_error(r, "Error esys flush context", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-nv-certify.int.c b/test/integration/esys-nv-certify.int.c
index 955b470..6b2c67f 100644
--- a/test/integration/esys-nv-certify.int.c
+++ b/test/integration/esys-nv-certify.int.c
@@ -4,9 +4,12 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -19,7 +22,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -183,6 +187,13 @@
         0,
         &certifyInfo,
         &signature);
+
+    if (r == TPM2_RC_COMMAND_CODE) {
+        LOG_WARNING("Command TPM2_NV_Certify not supported by TPM.");
+        failure_return = EXIT_SKIP;
+        goto error;
+    }
+
     goto_if_error(r, "Error: NV_Certify", error);
 
     r = Esys_NV_UndefineSpace(esys_context,
@@ -197,8 +208,8 @@
     r = Esys_FlushContext(esys_context,signHandle);
     goto_if_error(r, "Error: FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return failure_return;
 }
diff --git a/test/integration/esys-nv-ram-counter.int.c b/test/integration/esys-nv-ram-counter.int.c
index 6d2061a..50f7ab2 100644
--- a/test/integration/esys-nv-ram-counter.int.c
+++ b/test/integration/esys-nv-ram-counter.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -18,7 +20,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 #ifdef TEST_SESSION
     ESYS_TR session;
     TPMT_SYM_DEF symmetric = {.algorithm = TPM2_ALG_AES,
@@ -190,8 +192,8 @@
     r = Esys_FlushContext(esys_context, session);
     goto_if_error(r, "Error: FlushContext", error);
 #endif
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-nv-ram-extend-index.int.c b/test/integration/esys-nv-ram-extend-index.int.c
index 059f949..74d5a77 100644
--- a/test/integration/esys-nv-ram-extend-index.int.c
+++ b/test/integration/esys-nv-ram-extend-index.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -20,7 +22,7 @@
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
 
-    uint32_t r = 0;
+    TSS2_RC r;
 #ifdef TEST_SESSION
     ESYS_TR session;
     TPMT_SYM_DEF symmetric = {.algorithm = TPM2_ALG_AES,
@@ -198,8 +200,9 @@
                               );
     goto_if_error(r, "Error: NV_UndefineSpace", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-nv-ram-ordinary-index.int.c b/test/integration/esys-nv-ram-ordinary-index.int.c
index 37d2a67..99c4855 100644
--- a/test/integration/esys-nv-ram-ordinary-index.int.c
+++ b/test/integration/esys-nv-ram-ordinary-index.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -23,7 +25,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 #ifdef TEST_SESSION
     ESYS_TR session;
     TPMT_SYM_DEF symmetric = {.algorithm = TPM2_ALG_AES,
@@ -297,8 +299,8 @@
     r = Esys_FlushContext(esys_context, session);
     goto_if_error(r, "Error: FlushContext", error);
 #endif
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-nv-ram-set-bits.int.c b/test/integration/esys-nv-ram-set-bits.int.c
index 909af34..9f76e5b 100644
--- a/test/integration/esys-nv-ram-set-bits.int.c
+++ b/test/integration/esys-nv-ram-set-bits.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -18,7 +20,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 #ifdef TEST_SESSION
     ESYS_TR session;
     TPMT_SYM_DEF symmetric = {.algorithm = TPM2_ALG_AES,
@@ -194,8 +196,8 @@
     goto_if_error(r, "Error: FlushContext", error);
 #endif
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-object-changeauth.int.c b/test/integration/esys-object-changeauth.int.c
index 102e1c3..595a544 100644
--- a/test/integration/esys-object-changeauth.int.c
+++ b/test/integration/esys-object-changeauth.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -19,7 +21,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_PUBLIC inPublic = {
         .size = 0,
@@ -222,8 +224,8 @@
     r = Esys_FlushContext(esys_context, primaryHandle_handle);
     goto_if_error(r, "Error during FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-pcr-auth-value.int.c b/test/integration/esys-pcr-auth-value.int.c
index 77e1bd9..5667e99 100644
--- a/test/integration/esys-pcr-auth-value.int.c
+++ b/test/integration/esys-pcr-auth-value.int.c
@@ -4,10 +4,13 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
 #include "test-esapi.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -18,7 +21,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     /*
      * PCR register 20 belongs to the policy group and the auth value group.
@@ -40,6 +44,14 @@
         ESYS_TR_NONE,
         &auth
         );
+
+
+    if (r == TPM2_RC_COMMAND_CODE) {
+        LOG_WARNING("Command TPM2_PCR_SetAuthValue not supported by TPM.");
+        failure_return = EXIT_SKIP;
+        goto error;
+    }
+
     goto_if_error(r, "Error: PCR_SetAuthValue", error);
 
     TPM2B_DIGEST authPolicy = {
@@ -57,10 +69,17 @@
         &authPolicy,
         TPM2_ALG_SHA1,
         pcrHandle_handle);
+
+    if (r == (TPM2_RC_BAD_AUTH | TPM2_RC_S | TPM2_RC_1)) {
+        /* Platform authorization not possible test will be skipped */
+        LOG_WARNING("Platform authorization not possible.");
+        failure_return = EXIT_SKIP;
+    }
+
     goto_if_error(r, "Error: PCR_SetAuthPolicy", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return r;
+    return failure_return;
 }
diff --git a/test/integration/esys-pcr-basic.int.c b/test/integration/esys-pcr-basic.int.c
index b547d86..877da6f 100644
--- a/test/integration/esys-pcr-basic.int.c
+++ b/test/integration/esys-pcr-basic.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -18,7 +20,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     ESYS_TR  pcrHandle_handle = 16;
     TPML_DIGEST_VALUES digests
@@ -114,11 +116,16 @@
         &sizeNeeded,
         &sizeAvailable);
 
+    if (r == (TPM2_RC_BAD_AUTH | TPM2_RC_S | TPM2_RC_1)) {
+        /* Platform authorization not possible test will be skipped */
+        LOG_WARNING("Platform authorization not possible.");
+    }
+
     goto_if_error(r, "Error: PCR_Allocate", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 
 }
diff --git a/test/integration/esys-policy-authorize.int.c b/test/integration/esys-policy-authorize.int.c
index f2df2c0..2d7333b 100644
--- a/test/integration/esys-policy-authorize.int.c
+++ b/test/integration/esys-policy-authorize.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 #include "tss2_mu.h"
 
@@ -18,7 +20,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     /*
      * 1. Create Primary. This primary will be used for PolicyAuthorize.
@@ -179,8 +181,8 @@
     r = Esys_FlushContext(esys_context, primaryHandle_handle);
     goto_if_error(r, "Error: FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-policy-nv-changeauth.int.c b/test/integration/esys-policy-nv-changeauth.int.c
index 5627c6d..7307140 100644
--- a/test/integration/esys-policy-nv-changeauth.int.c
+++ b/test/integration/esys-policy-nv-changeauth.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -24,7 +26,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
     /*
      * Firth the policy value for changing the auth value of an NV index has to be
      * determined with a policy trial session.
@@ -166,8 +168,8 @@
                               );
     goto_if_error(r, "Error: NV_UndefineSpace", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-policy-nv-undefine-special.int.c b/test/integration/esys-policy-nv-undefine-special.int.c
index 857fe08..dea6016 100644
--- a/test/integration/esys-policy-nv-undefine-special.int.c
+++ b/test/integration/esys-policy-nv-undefine-special.int.c
@@ -4,9 +4,12 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -21,7 +24,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
     /*
      * First the policy value for NV_UndefineSpaceSpecial has to be
      * determined with a policy trial session.
@@ -149,10 +153,18 @@
                                      ESYS_TR_PASSWORD,
                                      ESYS_TR_NONE
                                      );
+
+    if (r == (TPM2_RC_BAD_AUTH | TPM2_RC_S | TPM2_RC_1)) {
+        /* Platform authorization not possible test will be skipped */
+        LOG_WARNING("Platform authorization not possible.");
+        failure_return = EXIT_SKIP;
+        goto error;
+    }
+
     goto_if_error(r, "Error: NV_UndefineSpace", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return failure_return;
 }
diff --git a/test/integration/esys-policy-password.int.c b/test/integration/esys-policy-password.int.c
index df26da8..399a2b0 100644
--- a/test/integration/esys-policy-password.int.c
+++ b/test/integration/esys-policy-password.int.c
@@ -4,9 +4,12 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -23,7 +26,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
     /*
      * Firth the policy value for changing the auth value of an NV index has to be
      * determined with a policy trial session.
@@ -260,8 +263,8 @@
     r = Esys_FlushContext(esys_context, primaryHandle_handle);
     goto_if_error(r, "Error: FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-policy-regression.int.c b/test/integration/esys-policy-regression.int.c
index 7b0a234..43dafe4 100644
--- a/test/integration/esys-policy-regression.int.c
+++ b/test/integration/esys-policy-regression.int.c
@@ -31,7 +31,7 @@
                   char *comment, bool flush_session)
 {
 
-    uint32_t r = 0;
+    TSS2_RC r;
     TPM2B_DIGEST *policyDigest;
 
     r = Esys_PolicyGetDigest(esys_context,
@@ -66,7 +66,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     /* Dummy parameters for trial sessoin  */
     ESYS_TR sessionTrial;
diff --git a/test/integration/esys-policy-ticket.int.c b/test/integration/esys-policy-ticket.int.c
index 31aef08..fbf9134 100644
--- a/test/integration/esys-policy-ticket.int.c
+++ b/test/integration/esys-policy-ticket.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 #include "tss2_mu.h"
 
@@ -20,7 +22,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     /*
      * 1. Create Primary. This primary will be used as signing key.
@@ -273,8 +275,8 @@
     r = Esys_FlushContext(esys_context, primaryHandle_handle);
     goto_if_error(r, "Error: FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-pp-commands.int.c b/test/integration/esys-pp-commands.int.c
index 4c1212e..ab12105 100644
--- a/test/integration/esys-pp-commands.int.c
+++ b/test/integration/esys-pp-commands.int.c
@@ -4,8 +4,11 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
+#include "test-esapi.h"
 #include "esys_iutil.h"
 #define LOGMODULE test
 #include "util/log.h"
@@ -18,7 +21,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     ESYS_TR auth_handle = ESYS_TR_RH_PLATFORM;
     TPML_CC setList = {
@@ -30,14 +34,26 @@
     r = Esys_PP_Commands(esys_context, auth_handle,
                          ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE,
                          &setList, &clearList);
+
+    if (r == TPM2_RC_COMMAND_CODE) {
+        LOG_WARNING("Command TPM2_PP_Commands not supported by TPM.");
+        failure_return = EXIT_SKIP;
+    }
+
     if (r == (TPM2_RC_WARN  | TPM2_RC_PP)) {
         LOG_INFO("Command TPM2_PP_Commands requires physical presence.");
-        return 0;
+        return EXIT_SUCCESS;
+    }
+
+    if (r == (TPM2_RC_BAD_AUTH | TPM2_RC_S | TPM2_RC_1)) {
+        /* Platform authorization not possible test will be skipped */
+        LOG_WARNING("Platform authorization not possible.");
+        failure_return = EXIT_SKIP;
     }
     goto_if_error(r, "Error: PP_Commands", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return r;
+    return failure_return;
 }
diff --git a/test/integration/esys-quote.int.c b/test/integration/esys-quote.int.c
index ffd0b4d..7e60db6 100644
--- a/test/integration/esys-quote.int.c
+++ b/test/integration/esys-quote.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -20,7 +22,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -157,5 +159,5 @@
     return 0;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-rsa-encrypt-decrypt.int.c b/test/integration/esys-rsa-encrypt-decrypt.int.c
index d832a79..5f094bb 100644
--- a/test/integration/esys-rsa-encrypt-decrypt.int.c
+++ b/test/integration/esys-rsa-encrypt-decrypt.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -21,7 +23,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -164,8 +166,8 @@
         r = Esys_FlushContext(esys_context, primaryHandle_handle);
         goto_if_error(r, "Error: FlushContext", error);
     }
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-save-and-load-context.int.c b/test/integration/esys-save-and-load-context.int.c
index 0aa8154..08caa41 100644
--- a/test/integration/esys-save-and-load-context.int.c
+++ b/test/integration/esys-save-and-load-context.int.c
@@ -4,6 +4,8 @@
  * rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -23,7 +25,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -305,8 +307,8 @@
     r = Esys_FlushContext(esys_context, loadedKeyHandle2);
     goto_if_error(r, "Error: FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-set-algorithm-set.int.c b/test/integration/esys-set-algorithm-set.int.c
index dce6471..168f6ff 100644
--- a/test/integration/esys-set-algorithm-set.int.c
+++ b/test/integration/esys-set-algorithm-set.int.c
@@ -4,9 +4,12 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
+#include "test-esapi.h"
 #define LOGMODULE test
 #include "util/log.h"
 
@@ -15,7 +18,8 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
+    int failure_return = EXIT_FAILURE;
 
     UINT32 algorithmSet = 0;
 
@@ -26,10 +30,17 @@
         ESYS_TR_NONE,
         ESYS_TR_NONE,
         algorithmSet);
+
+    if (r == (TPM2_RC_BAD_AUTH | TPM2_RC_S | TPM2_RC_1)) {
+        /* Platform authorization not possible test will be skipped */
+        LOG_WARNING("Platform authorization not possible.");
+        failure_return = EXIT_SKIP;
+    }
+
     goto_if_error(r, "Error: SetAlgorithmSet", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return r;
+    return failure_return;
 }
diff --git a/test/integration/esys-stir-random.int.c b/test/integration/esys-stir-random.int.c
index 759d349..b914a75 100644
--- a/test/integration/esys-stir-random.int.c
+++ b/test/integration/esys-stir-random.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -14,7 +16,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_SENSITIVE_DATA inData  = {
         .size = 20,
@@ -30,8 +32,8 @@
         &inData);
     goto_if_error(r, "Error: StirRandom", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return r;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-testparms.int.c b/test/integration/esys-testparms.int.c
index 494a1a2..8ce7753 100644
--- a/test/integration/esys-testparms.int.c
+++ b/test/integration/esys-testparms.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 
 #include "esys_iutil.h"
@@ -14,7 +16,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPMT_PUBLIC_PARMS parameters = {
         .type = TPM2_ALG_RSA,
@@ -44,8 +46,8 @@
         );
     goto_if_error(r, "Error: TestParms", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-tpm-tests.int.c b/test/integration/esys-tpm-tests.int.c
index 61c3e3c..2c6701c 100644
--- a/test/integration/esys-tpm-tests.int.c
+++ b/test/integration/esys-tpm-tests.int.c
@@ -15,7 +15,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     esys_context->state = _ESYS_STATE_INIT;
     r = Esys_SelfTest(esys_context,
@@ -42,8 +42,8 @@
     goto_if_error(r, "Error GetTestResult did fail", error);
     free(outData);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-tr-fromTpmPublic-key.int.c b/test/integration/esys-tr-fromTpmPublic-key.int.c
index a2bff96..130896a 100644
--- a/test/integration/esys-tr-fromTpmPublic-key.int.c
+++ b/test/integration/esys-tr-fromTpmPublic-key.int.c
@@ -21,7 +21,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * ectx)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     ESYS_TR primaryHandle;
     ESYS_TR keyHandle;
@@ -137,12 +137,12 @@
     free(name1);
     free(name2);
 
-    return 0;
+    return EXIT_SUCCESS;
 
 error_name2:
     free(name2);
 error_name1:
     free(name1);
 error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-tr-fromTpmPublic-nv.int.c b/test/integration/esys-tr-fromTpmPublic-nv.int.c
index 1957b39..373a2bc 100644
--- a/test/integration/esys-tr-fromTpmPublic-nv.int.c
+++ b/test/integration/esys-tr-fromTpmPublic-nv.int.c
@@ -21,7 +21,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * ectx)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     ESYS_TR nvHandle;
     TPM2B_NAME *name1, *name2;
@@ -78,12 +78,12 @@
     free(name1);
     free(name2);
 
-    return 0;
+    return EXIT_SUCCESS;
 
 error_name2:
     free(name2);
 error_name1:
     free(name1);
 error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-tr-getName-hierarchy.int.c b/test/integration/esys-tr-getName-hierarchy.int.c
index 12600c7..32618ff 100644
--- a/test/integration/esys-tr-getName-hierarchy.int.c
+++ b/test/integration/esys-tr-getName-hierarchy.int.c
@@ -22,7 +22,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * ectx)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_NAME name1, *name2;
     size_t offset = 0;
@@ -40,13 +40,13 @@
     {
         free(name2);
         LOG_ERROR("Names mismatch between NV_GetPublic and TR_GetName");
-        return 1;
+        return EXIT_FAILURE;
     }
 
     free(name2);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-unseal-password-auth.int.c b/test/integration/esys-unseal-password-auth.int.c
index 0a8b4d0..316c3b8 100644
--- a/test/integration/esys-unseal-password-auth.int.c
+++ b/test/integration/esys-unseal-password-auth.int.c
@@ -38,7 +38,7 @@
     /*
      * 1. Create Primary
      */
-    uint32_t r = 0;
+    TSS2_RC r;
 
     TPM2B_AUTH authValuePrimary = {
         .size = 5,
@@ -291,8 +291,8 @@
     r = Esys_FlushContext(esys_context, loadedKeyHandle);
     goto_if_error(r, "Error during FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
     error:
-        return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-verify-signature.int.c b/test/integration/esys-verify-signature.int.c
index 3267700..8b6000d 100644
--- a/test/integration/esys-verify-signature.int.c
+++ b/test/integration/esys-verify-signature.int.c
@@ -4,6 +4,8 @@
  * All rights reserved.
  *******************************************************************************/
 
+#include <stdlib.h>
+
 #include "tss2_esys.h"
 #include "tss2_mu.h"
 
@@ -18,7 +20,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r = 0;
+    TSS2_RC r;
 
     /*
      * 1. Create Primary. This primary will be used as signing key.
@@ -166,8 +168,8 @@
     r = Esys_FlushContext(esys_context, primaryHandle_handle);
     goto_if_error(r, "Error: FlushContext", error);
 
-    return 0;
+    return EXIT_SUCCESS;
 
  error:
-    return 1;
+    return EXIT_FAILURE;
 }
diff --git a/test/integration/esys-zgen-2phase.int.c b/test/integration/esys-zgen-2phase.int.c
index be2cae3..328d9cb 100644
--- a/test/integration/esys-zgen-2phase.int.c
+++ b/test/integration/esys-zgen-2phase.int.c
@@ -18,7 +18,7 @@
 int
 test_invoke_esapi(ESYS_CONTEXT * esys_context)
 {
-    uint32_t r;
+    TSS2_RC r;
     ESYS_TR session;
     TPMT_SYM_DEF symmetric = {
         .algorithm = TPM2_ALG_AES,
diff --git a/test/integration/test-esapi.h b/test/integration/test-esapi.h
index df82631..27f3844 100644
--- a/test/integration/test-esapi.h
+++ b/test/integration/test-esapi.h
@@ -11,6 +11,8 @@
 #define TSS_SAPI_FIRST_FAMILY 2
 #define TSS_SAPI_FIRST_LEVEL 1
 #define TSS_SAPI_FIRST_VERSION 108
+#define EXIT_SKIP 77
+#define EXIT_XFAIL 99
 
 #define goto_error_if_not_failed(rc,msg,label)                          \
     if (rc == TSS2_RC_SUCCESS) {                                        \