[svn] / ecrypt / trunk / submissions / tsc-3 / ref / unused / test.c  

svn: ecrypt/trunk/submissions/tsc-3/ref/unused/test.c

File: [svn] / ecrypt / trunk / submissions / tsc-3 / ref / unused / test.c (download) (as text)
Revision: 1, Sun Jun 26 18:46:26 2005 UTC (7 years, 10 months ago) by cdecanni
File size: 4375 byte(s)
* imported original ECRYPT submissions after first automatic cleanup.
#include <stdio.h>
#include <stdlib.h>
#include "ecrypt-sync.h"

void generate_testvector (void);
void test_vec_sub (u8 *key, u8 *iv, u32 keysize, u32 ivsize, FILE *fp);

void test_vec_sub (u8 *key, u8 *iv, u32 keysize, u32 ivsize, FILE *fp)
{
	ECRYPT_ctx state;
	u8 text[256];
	u32 i;

	fprintf (fp, "%3i-bit key: ", keysize);
	for (i = 20; i != keysize/8; )
	{
		i--;
		fprintf (fp, "  ");
		if (i == 4*(i/4)) fprintf (fp, " ");
	}		
	for (i = keysize/8; i != 0; )
	{
		i--;
		fprintf (fp, "%.2x", key[i]);
		if (i == 4*(i/4)) fprintf (fp, " ");
	}
	fprintf (fp, "\n");
	fprintf (fp, "%3i-bit iv : ", ivsize);
	for (i = 20; i != ivsize/8; )
	{
		i--;
		fprintf (fp, "  ");
		if (i == 4*(i/4)) fprintf (fp, " ");
	}		
	for (i = ivsize/8; i != 0; )
	{
		i--;
		fprintf (fp, "%.2x", iv[i]);
		if (i == 4*(i/4)) fprintf (fp, " ");
	}
	fprintf (fp, "\n");
	fprintf (fp, " keystream :\n");
	ECRYPT_keysetup (&state, key, keysize, ivsize);
	ECRYPT_ivsetup (&state, iv);
	ECRYPT_keystream_blocks (&state, text, 64);
	for (i = 0; i < 256; i++)
	{
		fprintf (fp, "%.2x ", text[i]);
		if ((i+1) == 4*((i+1)/4)) fprintf (fp, " ");
		if ((i+1) == 16*((i+1)/16)) fprintf (fp, "\n");
	}
	for (i = 0; i < 0x100000; i++)
	{
		ECRYPT_keystream_blocks (&state, text, 1);
		if (i == ((i>>18)<<18)) printf (".");
	}
	fprintf (fp, "        ..... 4 x 2^20 bytes omitted .....\n");
	ECRYPT_keystream_blocks (&state, text, 16);
	for (i = 0; i < 64; i++)
	{
		fprintf (fp, "%.2x ", text[i]);
		if ((i+1) == 4*((i+1)/4)) fprintf (fp, " ");
		if ((i+1) == 16*((i+1)/16)) fprintf (fp, "\n");
	}
	fprintf (fp, "\n\n");

	return;
}

void generate_testvector (void)
{
	FILE *fp;
	u8 key[20], iv[20];
	u32 keysize, ivsize, i;

	fp = fopen ("testvec.txt", "w");
	fprintf (fp,
		"\n"
		"All numbers are in hexadecimal notation.\n"
		"Key and IV are written with MSB to the left and LSB to the right.\n"
		"Keystream is written as byte sequence, extending from left to right.\n\n\n"
		);
	printf (
		"Test vectors are being created.\n"
		"Results are stored in the file \"testvec.txt\"\n"
		"You will have to wait until you see 44 dots below.\n"
		);

	/**************/

	keysize = 160; ivsize = 32;
	for (i = 0; i < keysize/8; i++) key[i] = 0;
	for (i = 0; i <  ivsize/8; i++)  iv[i] = 0;
	test_vec_sub (key, iv, keysize, ivsize, fp);

	keysize = 160; ivsize = 32;
	for (i = 0; i < keysize/8; i++) key[i] = i;
	for (i = 0; i <  ivsize/8; i++)  iv[i] = 0;
	test_vec_sub (key, iv, keysize, ivsize, fp);

	keysize = 160; ivsize = 32;
	for (i = 0; i < keysize/8; i++) key[i] = (u8) ( 7*i+3);
	for (i = 0; i <  ivsize/8; i++)  iv[i] = 0;
	test_vec_sub (key, iv, keysize, ivsize, fp);

	keysize = 128; ivsize = 32;
	for (i = 0; i < keysize/8; i++) key[i] = i;
	for (i = 0; i <  ivsize/8; i++)  iv[i] = 0;
	test_vec_sub (key, iv, keysize, ivsize, fp);

	keysize = 128; ivsize = 32;
	for (i = 0; i < keysize/8; i++) key[i] = 0;
	for (i = 0; i <  ivsize/8; i++)  iv[i] = i;
	test_vec_sub (key, iv, keysize, ivsize, fp);

	keysize = 128; ivsize = 32;
	for (i = 0; i < keysize/8; i++) key[i] = (u8) ( 7*i+13);
	for (i = 0; i <  ivsize/8; i++)  iv[i] = (u8) (13*i+ 3);
	test_vec_sub (key, iv, keysize, ivsize, fp);

	keysize = 96; ivsize = 64;
	for (i = 0; i < keysize/8; i++) key[i] = 0;
	for (i = 0; i <  ivsize/8; i++)  iv[i] = i;
	test_vec_sub (key, iv, keysize, ivsize, fp);

	keysize = 96; ivsize = 64;
	for (i = 0; i < keysize/8; i++) key[i] = i;
	for (i = 0; i <  ivsize/8; i++)  iv[i] = 0;
	test_vec_sub (key, iv, keysize, ivsize, fp);

	keysize = 96; ivsize = 64;
	for (i = 0; i < keysize/8; i++) key[i] = (u8) ( 7*i+ 3);
	for (i = 0; i <  ivsize/8; i++)  iv[i] = (u8) (13*i+17);
	test_vec_sub (key, iv, keysize, ivsize, fp);

	/**************/

	fprintf (fp,
		"===========================================================\n\n"
		"160-bit IVs do not conform to cipher specification.\n"
		"But the following vectors are provided, as they could be useful.\n\n"
		);

	keysize = 160; ivsize = 160;
	for (i = 0; i < keysize/8; i++) key[i] = (u8) (13*i+ 5);
	for (i = 0; i <  ivsize/8; i++)  iv[i] = (u8) (11*i+17);
	test_vec_sub (key, iv, keysize, ivsize, fp);

	keysize = 160; ivsize = 160;
	for (i = 0; i < keysize/8; i++) key[i] = (u8) (21*i+5);
	for (i = 0; i <  ivsize/8; i++)  iv[i] = (u8) ( 7*i+3);
	test_vec_sub (key, iv, keysize, ivsize, fp);

	/**************/

	fclose (fp);
	printf ("\n");

	return;
}

eSTREAM Project

Powered by ViewCVS 1.0-dev
(Powered by Apache)

ViewCVS and CVS Help