blob: 8f7739494f05c155877b50a129fae11c49c6deee [file] [log] [blame]
/*
*
* Copyright 2018,2019 NXP
* SPDX-License-Identifier: Apache-2.0
*/
/* ************************************************************************** */
/* Includes */
/* ************************************************************************** */
#include <ex_sss_boot.h>
#include <nxLog_App.h>
#include <sm_const.h>
#include <stdio.h>
#if SSS_HAVE_APPLET_SE05X_IOT
#include <fsl_sss_se05x_types.h>
#include <se05x_APDU.h>
#endif
#include "ex_sss_boot_int.h"
#if AX_EMBEDDED
#include <app_boot.h>
#endif
#include "ex_sss_auth.h"
/* ************************************************************************** */
/* Local Defines */
/* ************************************************************************** */
/* ************************************************************************** */
/* Structures and Typedefs */
/* ************************************************************************** */
/* ************************************************************************** */
/* Global Variables */
/* ************************************************************************** */
#define SSS_EX_SE05x_AUTH_MECH kSSS_AuthType_SCP03
#define SSS_EX_CONNECTION_TYPE kSSS_ConnectionType_Encrypted
/* ************************************************************************** */
/* Static function declarations */
/* ************************************************************************** */
/* ************************************************************************** */
/* Public Functions */
/* ************************************************************************** */
/* ************************************************************************** */
/* Private Functions */
/* ************************************************************************** */
#if SSS_HAVE_SE
sss_status_t ex_sss_boot_se_open(ex_sss_boot_ctx_t *pCtx, const char *portName)
{
sss_status_t status = kStatus_SSS_Fail;
SE_Connect_Ctx_t *pConnectCtx = NULL;
#if SSS_HAVE_APPLET_SE05X_IOT || SSS_HAVE_APPLET_LOOPBACK
pConnectCtx = &pCtx->se05x_open_ctx;
#endif
#if defined(SMCOM_JRCP_V1)
if (ex_sss_boot_isSocketPortName(portName)) {
pConnectCtx->connType = kType_SE_Conn_Type_JRCP_V1;
pConnectCtx->portName = portName;
}
#endif
#if defined(SMCOM_JRCP_V2)
if (ex_sss_boot_isSocketPortName(portName)) {
pConnectCtx->connType = kType_SE_Conn_Type_JRCP_V2;
pConnectCtx->portName = portName;
}
#endif
#if defined(RJCT_VCOM)
if (ex_sss_boot_isSerialPortName(portName)) {
pConnectCtx->connType = kType_SE_Conn_Type_VCOM;
pConnectCtx->portName = portName;
}
#endif
#if defined(SCI2C)
#error "Not a valid combination"
#endif
#if defined(T1oI2C)
pConnectCtx->connType = kType_SE_Conn_Type_T1oI2C;
pConnectCtx->portName = NULL;
#endif
#if defined(SMCOM_PCSC)
pConnectCtx->connType = kType_SE_Conn_Type_PCSC;
pConnectCtx->portName = NULL;
#endif
#if defined(SMCOM_PN7150)
pConnectCtx->connType = kType_SE_Conn_Type_NFC;
pConnectCtx->portName = NULL;
#endif
#if SSS_HAVE_HOSTCRYPTO_ANY && SSS_HAVE_APPLET_SE05X_IOT
status = ex_sss_se_prepare_host(
&pCtx->host_session, &pCtx->host_ks, pConnectCtx, &pCtx->ex_se05x_auth, SSS_EX_SE05x_AUTH_MECH);
if (kStatus_SSS_Success != status) {
LOG_E("ex_sss_se05x_prepare_host failed");
goto cleanup;
}
cleanup:
#elif SSS_HAVE_APPLET_LOOPBACK
status = kStatus_SSS_Success;
#endif // SSS_HAVE_HOSTCRYPTO_ANY
return status;
}
#endif