blob: 2541e8ad3aa27987ddbab242130c47533fcaca30 [file] [log] [blame]
/*
*
* Copyright 2019 NXP
* SPDX-License-Identifier: Apache-2.0
*/
/* Common, Re-Usable main implementation */
/* Include this header file only once in the application */
/*
* Applications control the boot flow by defining these varaibles.
*
*
* - EX_SSS_BOOT_PCONTEXT : Pointer to ex_sss_boot_ctx_t
* - EX_SSS_BOOT_DO_ERASE : Delete all objects on boot up if 1
* - EX_SSS_BOOT_EXPOSE_ARGC_ARGV : Expose ARGC & ARGV from Command Line to Application
*
*
*
*/
#include <ex_sss.h>
#include <ex_sss_boot.h>
#include <nxLog_App.h>
#ifdef EX_SSS_BOOT_PCONTEXT
#define PCONTEXT EX_SSS_BOOT_PCONTEXT
#else
#define PCONTEXT (NULL)
#endif
#if !defined(EX_SSS_BOOT_EXPOSE_ARGC_ARGV)
#error EX_SSS_BOOT_EXPOSE_ARGC_ARGV must be set to 0 or 1
#endif
#if EX_SSS_BOOT_EXPOSE_ARGC_ARGV
static int gex_sss_argc;
static const char **gex_sss_argv;
#endif
#if !defined(EX_SSS_BOOT_OPEN_HOST_SESSION)
#define EX_SSS_BOOT_OPEN_HOST_SESSION 1
#endif
int CreateAndRunDemoTask()
{
int ret = 1;
sss_status_t status;
const char *portName;
status = ex_sss_boot_connectstring(0, NULL, &portName);
if (kStatus_SSS_Success != status) {
LOG_E("ex_sss_boot_connectstring Failed");
goto cleanup;
}
status = ex_sss_boot_open((PCONTEXT), portName);
if (kStatus_SSS_Success != status) {
LOG_E("ex_sss_session_open Failed");
goto cleanup;
}
#if EX_SSS_BOOT_DO_ERASE
status = ex_sss_boot_factory_reset((PCONTEXT));
#endif
status = ex_sss_key_store_and_object_init((PCONTEXT));
if (kStatus_SSS_Success != status) {
LOG_E("ex_sss_key_store_and_object_init Failed");
goto cleanup;
}
#if EX_SSS_BOOT_OPEN_HOST_SESSION && SSS_HAVE_HOSTCRYPTO_ANY
ex_sss_boot_open_host_session((PCONTEXT));
#endif
status = ex_sss_entry((PCONTEXT));
if (kStatus_SSS_Success != status) {
LOG_E("ex_sss_entry Failed");
goto cleanup;
}
ret = 0;
cleanup:
return ret;
}