esys_stubs.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * Various helper functions copy/pasted from tpm2-tss to help mock ESAPI
  3. * interfaces such that we can unit test our code.
  4. */
  5. #ifndef ESYS_STUBS_H
  6. #define ESYS_STUBS_H
  7. #include <string.h>
  8. #include <tss2/tss2_esys.h>
  9. #define TCTI_FAKE_MAGIC 0x46414b4500000000ULL /* 'FAKE\0' */
  10. #define TCTI_FAKE_VERSION 0x1
  11. typedef struct {
  12. uint64_t magic;
  13. uint32_t version;
  14. TSS2_TCTI_TRANSMIT_FCN transmit;
  15. TSS2_TCTI_RECEIVE_FCN receive;
  16. TSS2_RC(*finalize) (TSS2_TCTI_CONTEXT * tctiContext);
  17. TSS2_RC(*cancel) (TSS2_TCTI_CONTEXT * tctiContext);
  18. TSS2_RC(*getPollHandles) (TSS2_TCTI_CONTEXT * tctiContext,
  19. TSS2_TCTI_POLL_HANDLE * handles,
  20. size_t * num_handles);
  21. TSS2_RC(*setLocality) (TSS2_TCTI_CONTEXT * tctiContext, uint8_t locality);
  22. } TSS2_TCTI_CONTEXT_FAKE;
  23. TSS2_TCTI_POLL_HANDLE rev[] = {
  24. {.fd=66, .events=1, .revents=0},
  25. {.fd=99, .events=1, .revents=0}
  26. };
  27. static TSS2_RC
  28. tcti_fake_getpollhandles(TSS2_TCTI_CONTEXT * tctiContext,
  29. TSS2_TCTI_POLL_HANDLE * handles,
  30. size_t * num_handles)
  31. {
  32. (void) tctiContext;
  33. if (handles == NULL) {
  34. *num_handles = 2;
  35. return TSS2_RC_SUCCESS;
  36. }
  37. assert_int_equal(*num_handles, 2);
  38. memcpy(&handles[0], &rev[0], sizeof(rev));
  39. return TSS2_RC_SUCCESS;
  40. }
  41. static TSS2_RC
  42. tcti_fake_initialize(TSS2_TCTI_CONTEXT * tctiContext, size_t * contextSize)
  43. {
  44. TSS2_TCTI_CONTEXT_FAKE *tcti_fake =
  45. (TSS2_TCTI_CONTEXT_FAKE *) tctiContext;
  46. if (tctiContext == NULL && contextSize == NULL) {
  47. return TSS2_TCTI_RC_BAD_VALUE;
  48. } else if (tctiContext == NULL) {
  49. *contextSize = sizeof(*tcti_fake);
  50. return TSS2_RC_SUCCESS;
  51. }
  52. /* Init TCTI context */
  53. memset(tcti_fake, 0, sizeof(*tcti_fake));
  54. TSS2_TCTI_MAGIC(tctiContext) = TCTI_FAKE_MAGIC;
  55. TSS2_TCTI_VERSION(tctiContext) = TCTI_FAKE_VERSION;
  56. TSS2_TCTI_TRANSMIT(tctiContext) = (void*)1;
  57. TSS2_TCTI_RECEIVE(tctiContext) = (void*)1;
  58. TSS2_TCTI_FINALIZE(tctiContext) = NULL;
  59. TSS2_TCTI_CANCEL(tctiContext) = NULL;
  60. TSS2_TCTI_GET_POLL_HANDLES(tctiContext) = tcti_fake_getpollhandles;
  61. TSS2_TCTI_SET_LOCALITY(tctiContext) = NULL;
  62. return TSS2_RC_SUCCESS;
  63. }
  64. #endif /* ESYS_STUBS_H */