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