blob: 74c4e0feddc3c434253170e42c6499a8498ddf9a [file] [log] [blame]
/*
*
* 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_ */