/** * @file ax_scp.h * @author NXP Semiconductors * @version 1.0 * @par License * * Copyright 2017 NXP * SPDX-License-Identifier: Apache-2.0 * * @par Description * API to setup an SCP03 communication channel * @par History * 1.0 26-march-2014 : Initial version * *****************************************************************************/ #ifndef _AX_SSS_SCP_H_ #define _AX_SSS_SCP_H_ #if defined(SSS_USE_FTR_FILE) #include "fsl_sss_ftr.h" #else #include "fsl_sss_ftr_default.h" #endif #include #include #include #include #include "sm_types.h" #include #include #include "nxScp03_Types.h" #if SSS_HAVE_SCP_SCP03_SSS #define SM_SCP03 0x01 //!< Global Platform's Secure Channel Protocol 03 #define SM_SCP02 0x02 //!< Global Platform's Secure Channel Protocol 02 U16 SCP_SSS_Authenticate(SM_SECURE_SCP03_KEYOBJ * params, U8 *sCounter, U16 *sCounterLen); U16 SCP_SSS_HostLocal_CalculateSessionKeys(ChannelId_t channelId,SM_SECURE_SCP03_KEYOBJ * params, U8 *hostChallenge, U8 *cardChallenge); U16 SCP_SSS_HostLocal_VerifyCardCryptogram(ChannelId_t channelId, U8 *hostChallenge, U8 *cardChallenge, U8 *cardCryptoGram); U16 SCP_SSS_HostLocal_CalculateHostCryptogram(ChannelId_t channelId, U8 *hostChallenge, U8 *cardChallenge, U8 *hostCryptogram); U16 SCP_SSS_GP_ExternalAuthenticate(ChannelId_t channelId, U8* hostCryptogram); U16 SCP_SSS_HostLocal_SetDefaultValueIcvCCounter(ChannelId_t channelId); U16 SCP_SSS_HostLocal_GetSessionState(ChannelId_t channelId, Scp03_SSS_SessionState_t *pSession); U16 SCP_SSS_HostLocal_SetMacChainingValue(ChannelId_t channelId, U8 *mcv); U16 SCP_SSS_HostLocal_ResetMacChainingValue(ChannelId_t channelId); U16 SCP_SSS_HostLocal_IncIcvCCounter(ChannelId_t channelId); HLSE_RET_CODE SCP_SSS_CalculateCMAC(sss_object_t key, U8* inData, U32 inDataLen, U8* outSignature, U32* outSignatureLen); U16 SCP_SSS_Save_SessionKeyObj(sss_object_t *keyObj, U8 *Sessionkey); U16 SM_ChannelAuthenticate(SM_SECURE_SCP03_KEYOBJ *scp03Params, U8 *cCounter); #endif //#if SSS_HAVE_SCP_SCP03_SSS #endif