tctildr-nodl.c 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /*
  2. * SPDX-License-Identifier: BSD-2-Clause
  3. * Copyright 2018, Fraunhofer SIT sponsored by Infineon Technologies AG
  4. * Copyright 2019, Intel Corporation
  5. * All rights reserved.
  6. */
  7. #ifdef HAVE_CONFIG_H
  8. #include <config.h>
  9. #endif
  10. #include <stdio.h>
  11. #include <stddef.h>
  12. #include <stdlib.h>
  13. #include <dlfcn.h>
  14. #include <setjmp.h>
  15. #include <cmocka.h>
  16. #include "tss2_tcti.h"
  17. #include "tss2-tcti/tctildr-interface.h"
  18. #include "tss2-tcti/tctildr-nodl.h"
  19. #define LOGMODULE test
  20. #include "util/log.h"
  21. TSS2_RC
  22. __wrap_Tss2_Tcti_Device_Init(TSS2_TCTI_CONTEXT *tctiContext, size_t *size,
  23. const char *config)
  24. {
  25. return TSS2_RC_SUCCESS;
  26. }
  27. TSS2_RC
  28. __wrap_Tss2_Tcti_Mssim_Init(TSS2_TCTI_CONTEXT *tctiContext, size_t *size,
  29. const char *config)
  30. {
  31. return TSS2_RC_SUCCESS;
  32. }
  33. TSS2_RC
  34. __wrap_tcti_from_init(TSS2_TCTI_INIT_FUNC init,
  35. const char* conf,
  36. TSS2_TCTI_CONTEXT **tcti)
  37. {
  38. if (tcti != NULL)
  39. *tcti = mock_type (TSS2_TCTI_CONTEXT*);
  40. return mock_type (TSS2_RC);
  41. }
  42. void
  43. test_tctildr_get_default_null_param (void **state)
  44. {
  45. TSS2_RC rc;
  46. rc = tctildr_get_default (NULL, NULL);
  47. assert_int_equal (rc, TSS2_TCTI_RC_BAD_REFERENCE);
  48. }
  49. void
  50. test_tctildr_get_default_all_fail (void **state)
  51. {
  52. TSS2_RC rc;
  53. TSS2_TCTI_CONTEXT *tcti_ctx = NULL;
  54. #define TEST_RC 0x65203563
  55. /* device:/dev/tpm0 */
  56. will_return (__wrap_tcti_from_init, tcti_ctx);
  57. will_return (__wrap_tcti_from_init, TEST_RC);
  58. /* device:/dev/tpmrm0 */
  59. will_return (__wrap_tcti_from_init, tcti_ctx);
  60. will_return (__wrap_tcti_from_init, TEST_RC);
  61. /* swtpm */
  62. will_return (__wrap_tcti_from_init, tcti_ctx);
  63. will_return (__wrap_tcti_from_init, TEST_RC);
  64. #if defined (TCTI_MSSIM) && defined (TCTI_SWTPM)
  65. /* second swtpm if enabled */
  66. will_return (__wrap_tcti_from_init, tcti_ctx);
  67. will_return (__wrap_tcti_from_init, TEST_RC);
  68. #endif
  69. rc = tctildr_get_default (&tcti_ctx, NULL);
  70. assert_int_equal (rc, TSS2_TCTI_RC_IO_ERROR);
  71. }
  72. static TSS2_TCTI_CONTEXT_COMMON_V2 test_ctx = { 0, };
  73. void
  74. test_get_tcti_null_tcti (void **state)
  75. {
  76. TSS2_RC rc = tctildr_get_tcti (NULL, NULL, NULL, NULL);
  77. assert_int_equal (rc, TSS2_TCTI_RC_BAD_REFERENCE);
  78. }
  79. void
  80. test_get_tcti_default_success (void **state)
  81. {
  82. TSS2_RC rc;
  83. TSS2_TCTI_CONTEXT *tcti_ctx = NULL;
  84. will_return (__wrap_tcti_from_init, &test_ctx);
  85. will_return (__wrap_tcti_from_init, TSS2_RC_SUCCESS);
  86. rc = tctildr_get_tcti (NULL, NULL, &tcti_ctx, NULL);
  87. assert_int_equal (rc, TSS2_RC_SUCCESS);
  88. assert_ptr_equal (tcti_ctx, &test_ctx);
  89. }
  90. void
  91. test_get_tcti_match_second (void **state)
  92. {
  93. TSS2_RC rc;
  94. TSS2_TCTI_CONTEXT *tcti_ctx = NULL;
  95. will_return (__wrap_tcti_from_init, &test_ctx);
  96. will_return (__wrap_tcti_from_init, TSS2_RC_SUCCESS);
  97. rc = tctildr_get_tcti ("libtss2-tcti-device.so", NULL, &tcti_ctx, NULL);
  98. assert_int_equal (rc, TSS2_RC_SUCCESS);
  99. assert_ptr_equal (tcti_ctx, &test_ctx);
  100. }
  101. void
  102. test_get_tcti_match_none (void **state)
  103. {
  104. TSS2_RC rc;
  105. TSS2_TCTI_CONTEXT *tcti_ctx = NULL;
  106. rc = tctildr_get_tcti ("foo", NULL, &tcti_ctx, NULL);
  107. assert_int_equal (rc, TSS2_TCTI_RC_IO_ERROR);
  108. }
  109. void
  110. test_finalize_data (void **state)
  111. {
  112. tctildr_finalize_data (NULL);
  113. }
  114. void
  115. test_get_info (void **state)
  116. {
  117. TSS2_RC rc = tctildr_get_info (NULL, NULL, NULL);
  118. assert_int_equal (rc, TSS2_TCTI_RC_NOT_SUPPORTED);
  119. }
  120. int
  121. main(void)
  122. {
  123. const struct CMUnitTest tests[] = {
  124. cmocka_unit_test (test_tctildr_get_default_null_param),
  125. cmocka_unit_test (test_tctildr_get_default_all_fail),
  126. cmocka_unit_test (test_get_tcti_null_tcti),
  127. cmocka_unit_test (test_get_tcti_default_success),
  128. cmocka_unit_test (test_get_tcti_match_second),
  129. cmocka_unit_test (test_get_tcti_match_none),
  130. cmocka_unit_test (test_finalize_data),
  131. cmocka_unit_test (test_get_info),
  132. };
  133. return cmocka_run_group_tests (tests, NULL, NULL);
  134. }