/* * * Copyright 2018 NXP * SPDX-License-Identifier: Apache-2.0 */ #ifndef NXSCP03_APIS_H_ #define NXSCP03_APIS_H_ /* ************************************************************************** */ /* Defines */ /* ************************************************************************** */ /* ************************************************************************** */ /* Includes */ /* ************************************************************************** */ #ifdef __cplusplus extern "C" { #endif #include "nxScp03_Types.h" #include "nxScp03_Const.h" /* ************************************************************************** */ /* Structrues and Typedefs */ /* ************************************************************************** */ /* ************************************************************************** */ /* Global Variables */ /* ************************************************************************** */ /* ************************************************************************** */ /* Functions */ /* ************************************************************************** */ /** * To Secure the on going communicatation */ /** * To Verify SE */ sss_status_t nxScp03_HostLocal_VerifyCardCryptogram( sss_object_t *keyObj, uint8_t *hostChallenge, uint8_t *cardChallenge, uint8_t *cardCryptogram); /** * To Verify Host */ sss_status_t nxScp03_HostLocal_CalculateHostCryptogram( sss_object_t *keyObj, uint8_t *hostChallenge, uint8_t *cardChallenge, uint8_t *hostCryptogram); /** * To sending secure Command APDU */ sss_status_t nxSCP03_Encrypt_CommandAPDU( NXSCP03_DynCtx_t *pdySCP03SessCtx, uint8_t *cmdBuf, size_t *cmdBufLen); /** * To provide additional Security with MAC as CRC */ sss_status_t nxpSCP03_CalculateMac_CommandAPDU( NXSCP03_DynCtx_t *pdySCP03SessCtx, uint8_t *pCmdBuf, size_t pCmdBufLen, uint8_t *mac, size_t *macLen); /** * To get Plain Response APDU */ uint16_t nxpSCP03_Decrypt_ResponseAPDU( NXSCP03_DynCtx_t *pdySCP03SessCtx, size_t cmdBufLen, uint8_t *rspBuf, size_t *pRspBufLen, uint8_t hasle); /* * To set the derivation data */ void nxScp03_setDerivationData( uint8_t ddA[], uint16_t *pDdALen, uint8_t ddConstant, uint16_t ddL, uint8_t iCounter, uint8_t *context, uint16_t contextLen); /** * To Generate Session Keys */ sss_status_t nxScp03_Generate_SessionKey( sss_object_t *keyObj, uint8_t *inData, uint32_t inDataLen, uint8_t *outSignature, uint32_t *outSignatureLen); /** * To Maintain count of commands */ void nxpSCP03_Inc_CommandCounter(NXSCP03_DynCtx_t *pdySCP03SessCtx); #ifdef __cplusplus } /* extern "c"*/ #endif #endif /* NXSCP03_APIS_H_ */