esys-tpm-tests.int.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /* SPDX-License-Identifier: BSD-2-Clause */
  2. /*******************************************************************************
  3. * Copyright 2017-2018, Fraunhofer SIT sponsored by Infineon Technologies AG
  4. * All rights reserved.
  5. *******************************************************************************/
  6. #ifdef HAVE_CONFIG_H
  7. #include <config.h>
  8. #endif
  9. #include <stdlib.h>
  10. #include "tss2_esys.h"
  11. #include "esys_iutil.h"
  12. #define LOGMODULE test
  13. #include "util/log.h"
  14. #include "util/aux_util.h"
  15. /** Test the ESYS functions for TPM tests.
  16. *
  17. * Tested ESYS commands:
  18. * - Esys_GetTestResult() (M)
  19. * - Esys_IncrementalSelfTest() (M)
  20. * - Esys_SelfTest() (M)
  21. *
  22. * @param[in,out] esys_context The ESYS_CONTEXT.
  23. * @retval EXIT_FAILURE
  24. * @retval EXIT_SUCCESS
  25. */
  26. int
  27. test_esys_tpm_tests(ESYS_CONTEXT * esys_context)
  28. {
  29. TSS2_RC r;
  30. esys_context->state = _ESYS_STATE_INIT;
  31. r = Esys_SelfTest(esys_context,
  32. ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE, 0);
  33. goto_if_error(r, "Error SelfTest did fail", error);
  34. TPML_ALG alg_list = { .count = 1 , .algorithms = { TPM2_ALG_SHA256 }};
  35. TPML_ALG *toDoList;
  36. esys_context->state = _ESYS_STATE_INIT;
  37. r = Esys_IncrementalSelfTest(esys_context,
  38. ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE,
  39. &alg_list, &toDoList);
  40. goto_if_error(r, "Error IncrementalSelfTest did not fail", error);
  41. free(toDoList);
  42. TPM2B_MAX_BUFFER *outData;
  43. TPM2_RC testResult;
  44. esys_context->state = _ESYS_STATE_INIT;
  45. r = Esys_GetTestResult(esys_context,
  46. ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE,
  47. &outData, &testResult);
  48. goto_if_error(r, "Error GetTestResult did fail", error);
  49. free(outData);
  50. return EXIT_SUCCESS;
  51. error:
  52. return EXIT_FAILURE;
  53. }
  54. int
  55. test_invoke_esys(ESYS_CONTEXT * esys_context) {
  56. return test_esys_tpm_tests(esys_context);
  57. }