| /* |
| * |
| * 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_ */ |