#include <stdio.h>

#include <mclcrypto/mclcrypto.h>
#include <mclssl/mclssl.h>

/**
 * TLS1 Pseudo Random Function.
 *
 * @param   md1_id      identifier of first message digest
 * @param   md2_id      identifier of second message digest
 * @param   key         hash key
 * @param   key_len     hash key length
 * @param   label       PRF label
 * @param   label_len   PRF label length
 * @param   seed        PRF seed
 * @param   seed_len    PRF seed length
 * @param   buf         return PRF data
 * @param   len         number of bytes to return
 * @return  0
 */
int tls1_PRF(int md1_id, int md2_id, const uint8_t * key, int key_len,
		const uint8_t * label, int label_len, const uint8_t * seed,
		int seed_len, uint8_t * buf, int len);

int print_hex(unsigned char *buf, int len) {
	int i;
	int n;

	printf(" ");

	for (i = 0, n = 0; i < len; i++) {
		if (n > 7) {
			printf("\n ");
			n = 0;
		}
		printf("0x%02x ", buf[i]);
		n++;
	}
	printf("\n");

	return (0);
}

int main() {
	char *key = "abcdefgh";
	int key_len = 8;

	char *label = "1234567890";
	int label_len = 10;

	char *seed = "xyz";
	int seed_len = 3;

	char dgst[128];
	int dgst_len = 16;

	tls1_PRF(MD_MD5, MD_SHA1, key, key_len, label, label_len, seed, seed_len,
			dgst, dgst_len);

	print_hex(dgst, dgst_len);

	return (0);
}
