1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*******************************************************************************
3 * Copyright 2018, Fraunhofer SIT sponsored by Infineon Technologies AG
4 * All rights reserved.
5 ******************************************************************************/
6
7 #ifdef HAVE_CONFIG_H
8 #include <config.h>
9 #endif
10
11 #include <stdarg.h>
12 #include <inttypes.h>
13 #include <string.h>
14 #include <stdlib.h>
15
16 #include <setjmp.h>
17 #include <cmocka.h>
18
19 #include "tss2_esys.h"
20
21 #define LOGMODULE tests
22 #include "util/log.h"
23
24 #define TCTI_FAKE_MAGIC 0x46414b4500000000ULL /* 'FAKE\0' */
25 #define TCTI_FAKE_VERSION 0x1
26
27 typedef TSS2_TCTI_CONTEXT_COMMON_V1 TSS2_TCTI_CONTEXT_FAKE;
28
29 void
tcti_fake_finalize(TSS2_TCTI_CONTEXT * tctiContext)30 tcti_fake_finalize(TSS2_TCTI_CONTEXT *tctiContext)
31 {
32 (void)(tctiContext);
33 }
34
35 TSS2_RC
__wrap_Tss2_TctiLdr_Initialize(const char * nameConf,TSS2_TCTI_CONTEXT ** tcti)36 __wrap_Tss2_TctiLdr_Initialize (const char *nameConf,
37 TSS2_TCTI_CONTEXT **tcti)
38 {
39 if (tcti == NULL)
40 return TSS2_BASE_RC_GENERAL_FAILURE;
41
42 /* This is to calm down scan-build */
43 TSS2_TCTI_CONTEXT_FAKE **faketcti = (TSS2_TCTI_CONTEXT_FAKE **) tcti;
44
45 *faketcti = calloc(1, sizeof(TSS2_TCTI_CONTEXT_FAKE));
46 TSS2_TCTI_MAGIC(*faketcti) = TCTI_FAKE_MAGIC;
47 TSS2_TCTI_VERSION(*faketcti) = TCTI_FAKE_VERSION;
48 TSS2_TCTI_TRANSMIT(*faketcti) = (void*)1;
49 TSS2_TCTI_RECEIVE(*faketcti) = (void*)1;
50 TSS2_TCTI_FINALIZE(*faketcti) = tcti_fake_finalize;
51 TSS2_TCTI_CANCEL(*faketcti) = NULL;
52 TSS2_TCTI_GET_POLL_HANDLES(*faketcti) = NULL;
53 TSS2_TCTI_SET_LOCALITY(*faketcti) = NULL;
54
55 return TSS2_RC_SUCCESS;
56 }
57
58 void
__wrap_Tss2_TctiLdr_Finalize(TSS2_TCTI_CONTEXT ** tcti)59 __wrap_Tss2_TctiLdr_Finalize (TSS2_TCTI_CONTEXT **tcti)
60 {
61 free(*tcti);
62 *tcti = NULL;
63 }
64
65 static void
test(void ** state)66 test(void **state)
67 {
68 TSS2_RC r;
69 ESYS_CONTEXT *ectx;
70
71 r = Esys_Initialize(&ectx, NULL, NULL);
72 assert_int_equal(r, TSS2_RC_SUCCESS);
73
74 Esys_Finalize(&ectx);
75
76 assert_ptr_equal(ectx, NULL);
77 }
78
79 int
main(int argc,char * argv[])80 main(int argc, char *argv[])
81 {
82 const struct CMUnitTest tests[] = {
83 cmocka_unit_test(test),
84 };
85 return cmocka_run_group_tests(tests, NULL, NULL);
86 }
87