#include "Encryption_AES.h"

uint16_t AES_Encrypt(uint8_t* in, uint16_t len, uint8_t *out)
{
	uint8_t* aes_buff = calloc(len+1,1);
	
	WORD key[60];
	aes_key_setup(AES_KEY, key, AES_KEY_LEN);
	
	aes_encrypt_cbc(in, len, aes_buff, key, AES_KEY_LEN, AES_IV);
	
	//dy_syslog_hex(LOG_DEBUG, aes_buff, len, "aes_buff:%s", aes_buff);
	memcpy(out, aes_buff, len);
	free(aes_buff);
		
	return len;
}

uint16_t AES_Decrypt(uint8_t* in, uint16_t len)
{
	size_t len_t;
	uint16_t i;
	
	uint8_t* b64_s;
	
	b64_s = calloc(len+64, 1);
	memcpy(b64_s, in, len);
	
	WORD key[60];
	aes_key_setup(AES_KEY, key, AES_KEY_LEN);
	aes_decrypt_cbc(b64_s, len, in, key, AES_KEY_LEN, AES_IV);
	
	len_t = 0;
	for(i = 0; i < len; i++)
	{
		if(in[i] == '\\' || in[i] == 10) continue;
		*(b64_s + len_t ++) = in[i];
		if(in[i] == '}') break;
	}
	memset(in, 0, len);
	len = len_t;
	memcpy(in, b64_s, len);
	free(b64_s);
	
	return len;
}
