#ifndef __SCP03_TOOLS_H__
#define __SCP03_TOOLS_H__

#include <stdint.h>
#include <string.h>
#include "SCP03_kdf.h"
#include "SCP03.h"

#define ICVCMD 1
#define ICVRSP 2

SCPSTATUS verifyCardChallenge(uint8_t* Key_ENC, uint8_t* cardChallenge, uint8_t* sequenceCounter, uint8_t* AID, int AIDLength);
SCPSTATUS verifyCardCryptogram(uint8_t* S_MAC, uint8_t* cardCryptogram, uint8_t* hostChallenge, uint8_t* cardChallenge);
void genFinalApdu(p_secEse_7816_cpdu_t pCpdu, uint8_t* C_MAC);
void genICV(uint8_t* ICV, uint8_t* S_ENC, int encryptionCounter, int ICV_type);
void genEncSensitiveData(uint8_t* Key_DEK, uint8_t* inputData, int inputDataLength, uint8_t* outputData);
void genApduC_MAC(uint8_t* S_MAC, uint8_t* MCV, p_secEse_7816_cpdu_t pCpdu, uint8_t* C_MAC);
void genApduR_MAC(uint8_t* S_RMAC, uint8_t* MCV, p_secEse_7816_rpdu_t pRpdu, uint8_t* R_MAC);

#endif

