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