#include "encrypt.h"
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>

#define TEST_LEN 16
#define TEST_VAL "This is a test!"


int main(void) {
	int i,x;
	unsigned char key[256];
	unsigned char *data, *crypted, *decrypt;
	data=calloc(TEST_LEN, 1);
	crypted=calloc(TEST_LEN, 1);
	decrypt=calloc(TEST_LEN, 1);
	for (i=0;i<=1000;i++) {
		memcpy(data,TEST_VAL,TEST_LEN);
		memcpy(key,generatekey(),256);
		memcpy(crypted,cryptdata(key, data, TEST_LEN), TEST_LEN);
		memcpy(decrypt,decryptdata(key, crypted, TEST_LEN), TEST_LEN);
		if (crypted[0]==crypted[1] || crypted[0]==crypted[2] || crypted[0] == crypted[3] || crypted[1]==crypted[2] || crypted[1]==crypted[3] || crypted[2]==crypted[3]) {
			printf("!!! WARNING !!!\n");
			for (x=0;x<256;x++)
				printf("%2x ",key[x]);
			printf("\n");
		}
		if ( memcmp(data,decrypt,5) !=0) {
			printf("!!! ERROR !!!\n%s != %s\n",data, decrypt);
		}
		for (x=0;x<TEST_LEN;x++)
			printf("0x%-2x ",crypted[x]);
		printf("\n");
		free(decrypt);
		free(crypted);
	}
	free(data);
	free(crypted);
	free(decrypt);
	return(0);
}
