| /* Copyright 2020 NXP |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <nxLog_App.h> |
| #include <se05x_APDU.h> |
| |
| #include "se05x_TransportAuth.h" |
| |
| static ex_sss_boot_ctx_t gex_sss_transport_unlock_boot_ctx; |
| |
| #define EX_SSS_BOOT_PCONTEXT (&gex_sss_transport_unlock_boot_ctx) |
| #define EX_SSS_BOOT_DO_ERASE 0 |
| #define EX_SSS_BOOT_EXPOSE_ARGC_ARGV 0 |
| |
| static sss_status_t se05x_TransportUnLock(Se05xSession_t *pSe05xSession); |
| |
| #include <ex_sss_main_inc.h> |
| sss_status_t ex_sss_entry(ex_sss_boot_ctx_t *pCtx) |
| { |
| sss_status_t status = kStatus_SSS_Fail; |
| sss_se05x_session_t *pSession = (sss_se05x_session_t *)&pCtx->session; |
| Se05xSession_t *pSe05xSession; |
| sss_session_t txSession = {0}; |
| sss_tunnel_t txTunnel = {0}; |
| |
| /* Create transport object in host */ |
| status = se05x_TA_CreateHostKey(pCtx); |
| if (kStatus_SSS_Success != status) { |
| LOG_E("Failed to set transport object in host!!!"); |
| goto cleanup; |
| } |
| pSe05xSession = &pSession->s_ctx; |
| |
| status = se05x_TA_OpenAuthSession(pCtx, &txSession, &txTunnel); |
| |
| if (kStatus_SSS_Success == status) { |
| pSe05xSession = &((sss_se05x_session_t *)&txSession)->s_ctx; |
| status = se05x_TransportUnLock(pSe05xSession); |
| } |
| |
| sss_session_close(&txSession); |
| |
| cleanup: |
| if (kStatus_SSS_Success == status) { |
| LOG_I("se05x_TransportUnLock Example Success !!!..."); |
| } |
| else { |
| LOG_E("se05x_TransportUnLock Example Failed !!!..."); |
| } |
| return status; |
| } |
| |
| static sss_status_t se05x_TransportUnLock(Se05xSession_t *pSe05xSession) |
| { |
| sss_status_t status = kStatus_SSS_Fail; |
| smStatus_t sw_status; |
| /* Persistent Lock */ |
| SE05x_LockIndicator_t lockIndicator = kSE05x_LockIndicator_PERSISTENT_LOCK; |
| /* Unlock during Transport */ |
| SE05x_LockState_t lockState = kSE05x_LockState_NA; |
| |
| sw_status = Se05x_API_SetLockState(pSe05xSession, lockIndicator, lockState); |
| if (SM_OK != sw_status) { |
| LOG_E("Failed Se05x_API_SetLockState"); |
| goto cleanup; |
| } |
| else { |
| LOG_W("Se05x_API_SetLockState UnLock Transport feature is success!!!"); |
| status = kStatus_SSS_Success; |
| } |
| |
| cleanup: |
| return status; |
| } |