#ifndef __SCP03_CRYPTO_H__
#define __SCP03_CRYPTO_H__

#include "SCP03.h"
#ifndef CMAC_AES_H
#define CMAC_AES_H
#include <stdint.h>
#include <stdarg.h>
#include "openssl/aes/aes.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

uint16_t  scp03_gen_random( uint8_t *out, uint32_t size );

int SCP03_AES_CMAC(unsigned char *key, unsigned char *input, int length, unsigned char *mac);

#endif

#define PADDING 1
#define NO_PADDING 0

void scp03_aes_encrypt (uint8_t* enc_key, uint8_t* data, int data_length_byte, uint8_t* encrypted_data, uint8_t* IV, int padding_type);
void scp03_aes_decrypt (uint8_t* dec_key, uint8_t* encrypted_data, uint16_t encrypted_data_length_byte, uint8_t* original_data, int* original_data_len, uint8_t* IV_dec, int padding_type);

#endif

