1*758e9fbaSOystein Eftevaag /* SPDX-License-Identifier: BSD-2-Clause */ 2*758e9fbaSOystein Eftevaag /*********************************************************************** 3*758e9fbaSOystein Eftevaag * Copyright (c) 2017-2018, Intel Corporation 4*758e9fbaSOystein Eftevaag * 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 <stdbool.h> 12*758e9fbaSOystein Eftevaag #include <stdlib.h> 13*758e9fbaSOystein Eftevaag 14*758e9fbaSOystein Eftevaag #define LOGMODULE test 15*758e9fbaSOystein Eftevaag #include "tss2_sys.h" 16*758e9fbaSOystein Eftevaag #include "util/log.h" 17*758e9fbaSOystein Eftevaag #include "test.h" 18*758e9fbaSOystein Eftevaag #include "test-options.h" 19*758e9fbaSOystein Eftevaag #include "context-util.h" 20*758e9fbaSOystein Eftevaag 21*758e9fbaSOystein Eftevaag /** 22*758e9fbaSOystein Eftevaag * This program is a template for integration tests (ones that use the TCTI 23*758e9fbaSOystein Eftevaag * and the SAPI contexts / API directly). It does nothing more than parsing 24*758e9fbaSOystein Eftevaag * command line options that allow the caller (likely a script) to specify 25*758e9fbaSOystein Eftevaag * which TCTI to use for the test. 26*758e9fbaSOystein Eftevaag */ 27*758e9fbaSOystein Eftevaag int main(int argc,char * argv[])28*758e9fbaSOystein Eftevaagmain (int argc, 29*758e9fbaSOystein Eftevaag char *argv[]) 30*758e9fbaSOystein Eftevaag { 31*758e9fbaSOystein Eftevaag TSS2_SYS_CONTEXT *sapi_context; 32*758e9fbaSOystein Eftevaag int ret; 33*758e9fbaSOystein Eftevaag test_opts_t opts = { 34*758e9fbaSOystein Eftevaag .tcti_type = TCTI_DEFAULT, 35*758e9fbaSOystein Eftevaag .device_file = DEVICE_PATH_DEFAULT, 36*758e9fbaSOystein Eftevaag .socket_address = HOSTNAME_DEFAULT, 37*758e9fbaSOystein Eftevaag .socket_port = PORT_DEFAULT, 38*758e9fbaSOystein Eftevaag }; 39*758e9fbaSOystein Eftevaag 40*758e9fbaSOystein Eftevaag (void) argc; 41*758e9fbaSOystein Eftevaag (void) argv; 42*758e9fbaSOystein Eftevaag 43*758e9fbaSOystein Eftevaag get_test_opts_from_env (&opts); 44*758e9fbaSOystein Eftevaag if (sanity_check_test_opts (&opts) != 0) { 45*758e9fbaSOystein Eftevaag LOG_ERROR("Checking test options"); 46*758e9fbaSOystein Eftevaag return 99; /* fatal error */ 47*758e9fbaSOystein Eftevaag } 48*758e9fbaSOystein Eftevaag sapi_context = sapi_init_from_opts (&opts); 49*758e9fbaSOystein Eftevaag if (sapi_context == NULL) { 50*758e9fbaSOystein Eftevaag LOG_ERROR("SAPI context not initialized"); 51*758e9fbaSOystein Eftevaag return 99; /* fatal error */ 52*758e9fbaSOystein Eftevaag } 53*758e9fbaSOystein Eftevaag 54*758e9fbaSOystein Eftevaag ret = Tss2_Sys_Startup(sapi_context, TPM2_SU_CLEAR); 55*758e9fbaSOystein Eftevaag if (ret != TSS2_RC_SUCCESS && ret != TPM2_RC_INITIALIZE) { 56*758e9fbaSOystein Eftevaag LOG_ERROR("TPM Startup FAILED! Response Code : 0x%x", ret); 57*758e9fbaSOystein Eftevaag exit(1); 58*758e9fbaSOystein Eftevaag } 59*758e9fbaSOystein Eftevaag 60*758e9fbaSOystein Eftevaag ret = test_invoke (sapi_context); 61*758e9fbaSOystein Eftevaag 62*758e9fbaSOystein Eftevaag sapi_teardown_full (sapi_context); 63*758e9fbaSOystein Eftevaag 64*758e9fbaSOystein Eftevaag return ret; 65*758e9fbaSOystein Eftevaag } 66