⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 biginttest.c

📁 iscsi源代码 UNH的progect 有initiator端和target端的源码
💻 C
字号:
/* * biginttest.c * Chong Zhang * March 11, 2003 * testing procedures for  * the big integer operation. */#include <stdio.h>#include "bigint.h"static unsigned char bin_a[] =    { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,0x0D, 0x0E, 0x0F };static unsigned char bin_b[] =    { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,0xFF, 0xFF, 0xFF };static unsigned char bin_c[] =    { 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,0xFF, 0xFF, 0xFF };voidbasic_test(){	struct bigint_t *a;	struct bigint_t *b;	struct bigint_t *c;	struct bigint_t *d;	struct bigint_t *e;	struct bigint_t *f;	struct bigint_t *r;	char bins[256];	int len, i;/*	printf("testing bigint_new with size 0");	if ((a = bigint_new(0)) == NULL)	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(a);		bigint_free(a);	}	printf("testing bigint_new with size 1\n");	if ((a = bigint_new(1)) == NULL)	{		printf("error\n");	}	else	{		printf("succeeded\n");		bigint_print(a);		bigint_free(a);	}	printf("testing bigint_new with size 10000000\n");	if ((a = bigint_new(10000000)) == NULL)	{		printf("error\n");	}	else	{		printf("succeeded\n");		bigint_print(a);		bigint_free(a);	}	printf("testing bigint_extend\n");	printf("create a bigint with size 0");	if ((a = bigint_new(0)) == NULL)	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(a);	}	bigint_checkmemory();	printf("extend it to size 1000000\n");	if (!bigint_extend(a, 1000000))	{		printf("failed\n");		bigint_free(a);		return;	}	else	{		printf("succeeded\n");	}	bigint_checkmemory();	printf("extend it to size 100\n");	if (!bigint_extend(a, 100))	{		printf("failed\n");		bigint_free(a);		return;	}	else	{		printf("succeeded\n");	}	bigint_checkmemory();	printf("extend it to size 10000\n");	if (!bigint_extend(a, 10000))	{		printf("failed\n");		bigint_free(a);		return;	}	else	{		printf("succeeded\n");	}	printf("extend it to size 10000000\n");	if (!bigint_extend(a, 10000000))	{		printf("failed\n");		bigint_free(a);		return;	}	else	{		printf("succeeded\n");	}	bigint_free(a);	bigint_checkmemory();	printf("create bigint a from a integer 0x12345678\n");	if ((a = bigint_new_uint(0x12345678)) == NULL)	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(a);		bigint_free(a);	}	printf("create bigint a from a integer 0x00\n");	if ((a = bigint_new_uint(0x00)) == NULL)	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(a);		bigint_free(a);	}	printf("create bigint a from binary bin_c\n");	if ((a = bigint_new_bin(bin_c, 15)) == NULL)	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(a);		bigint_free(a);	}	printf("create bigint a from binary bin_a\n");	if ((a = bigint_new_bin(bin_a, 15)) == NULL)	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(a);	}	printf("test non-zero bigint\n");	printf("check bigint_bits\n");	printf("total bits: %d\n", bigint_bits(a));	printf("check bigint_bytes\n");	printf("total bytes: %d\n", bigint_bytes(a));	printf("check bigint_binlen\n");	len = bigint_binlen(a);	printf("total bytes: %d\n", len);	printf("check bigint_tobin\n");	bigint_tobin(a, bins);	printf("binary is: ");	for (i = 0;i < len;i ++)		printf("%02x ", bins[i]);	printf("\n");	printf("test bigint_clear");	if (!bigint_clear(a))	{		printf("failed\n");		bigint_free(a);	}	else	{		printf("succeeded");		bigint_print(a);	}	printf("test zero bigint\n");	printf("check bigint_bits\n");	printf("total bits: %d\n", bigint_bits(a));	printf("check bigint_bytes\n");	printf("total bytes: %d\n", bigint_bytes(a));	printf("check bigint_binlen\n");	len = bigint_binlen(a);	printf("total bytes: %d\n", len);	printf("check bigint_tobin\n");	bigint_tobin(a, bins);	printf("binary is: ");	for (i = 0;i < len;i ++)		printf("%02x ", bins[i]);	printf("\n");	bigint_free(a);	printf("create bigint a from binary\n");	if ((a = bigint_new_bin(bin_a, 15)) == NULL)	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(a);	}	printf("create bigint b from binary\n");	if ((b = bigint_new_bin(bin_b, 15)) == NULL)	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(b);	}	printf("create bigint c from binary\n");	if ((c = bigint_new_bin(bin_c, 15)) == NULL)	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(c);	}	printf("test bigint_cmp a < b\n");	if (bigint_cmp(a, b) < 0)	{		printf("succeeded\n");	}	else	{		printf("failed\n");	}	printf("test bigint_cmp b > c\n");	if (bigint_cmp(b, c) > 0)	{		printf("succeeded\n");	}	else	{		printf("failed\n");	}	printf("test bigint_cmp b = b\n");	if (bigint_cmp(b, b) == 0)	{		printf("succeeded\n");	}	else	{		printf("failed\n");	}	printf("test bigint_cpy a to b\n");	if (!bigint_cpy(b, a))	{		printf("failed\n");	}	else	{		if (bigint_cmp(a, b) == 0)		{			printf("succeeded\n");			bigint_print(b);		}		else		{			printf("failed\n");		}	}	printf("test rsh\n");	printf("right shit c to b by 1 bit\n");	printf("before shift\n");	bigint_print(c);	printf("after shift\n");	if (!bigint_rsh(b, c, 1))	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(b);	}	printf("right shit c to b by 34 bit\n");	printf("before shift\n");	bigint_print(c);	printf("after shift\n");	if (!bigint_rsh(b, c, 34))	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(b);	}	printf("right shit c to c by 1 bit\n");	printf("before shift\n");	bigint_print(c);	printf("after shift\n");	if (!bigint_rsh(c, c, 1))	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(c);	}	printf("right shit c to c by 34 bit\n");	printf("before shift\n");	bigint_print(c);	printf("after shift\n");	if (!bigint_rsh(c, c, 34))	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(c);	}	printf("test lsh\n");	printf("left shit c to b by 1 bit\n");	printf("before shift\n");	bigint_print(c);	printf("after shift\n");	if (!bigint_lsh(b, c, 1))	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(b);	}	printf("left shit c to b by 34 bit\n");	printf("before shift\n");	bigint_print(c);	printf("after shift\n");	if (!bigint_lsh(b, c, 34))	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(b);	}	printf("left shit c to c by 1 bit\n");	printf("before shift\n");	bigint_print(c);	printf("after shift\n");	if (!bigint_lsh(c, c, 1))	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(c);	}	printf("left shit c to c by 34 bit\n");	printf("before shift\n");	bigint_print(c);	printf("after shift\n");	if (!bigint_lsh(c, c, 34))	{		printf("failed\n");	}	else	{		printf("succeeded\n");		bigint_print(c);	}	bigint_free(a);	bigint_free(b);	bigint_free(c);*///      printf("test add\n");	a = bigint_new_bin(bin_a, 15);	b = bigint_new_bin(bin_b, 15);	c = bigint_new_bin(bin_c, 15);	d = bigint_new_uint(0x05);	e = bigint_new_uint(0x08);	f = bigint_new_uint(0x37);	r = bigint_new(0);/*	printf("test a + d\n");	for (i = 0;i < 15;i ++)	{		if (!bigint_lsh(d, d, 8))		{			printf("bigint_lsh failed\n");			goto out;		}		if (!bigint_add(r, a, d))		{			printf("failed\n");		}		else		{			printf("succeeded\n");			printf("big integer a\n");			bigint_print(a);			printf("big integer d\n");			bigint_print(d);			printf("big integer r = a + d\n");			bigint_print(r);		}	}	printf("big integer a\n");	bigint_print(a);	printf("big integer b\n");	bigint_print(b);	if (!bigint_add(a, b, a))	{		printf("failed\n");	}	else	{		printf("succeeded\n");		printf("big integer a = a + b");		bigint_print(a);	}	printf("testing sub\n");	for (i = 0;i < 15;i ++)	{		if (!bigint_rsh(d, d, 8))		{			printf("bigint_rsh failed\n");			goto out;		}		if (!bigint_sub(r, a, d))		{			printf("bigint_sub failed\n");		}		else		{			printf("succeeded\n");			printf("bigint a\n");			bigint_print(a);			printf("bigint d\n");			bigint_print(d);			printf(" r = a - d\n");			bigint_print(r);		}	}	printf("integer b\n");	bigint_print(b);	printf("integer a\n");	bigint_print(a);	printf("integer r = a -b\n");	if (!bigint_sub(r, a, b))	{		printf("bigint_sub failed\n");	}	else	{		printf("succeeded\n");		bigint_print(r);	}	printf("integer b\n");	bigint_print(b);	printf("integer c\n");	bigint_print(c);	printf("integer r = b -c\n");	if (!bigint_sub(r, c, b))	{		printf("bigint_sub failed\n");	}	else	{		printf("succeeded\n");		bigint_print(r);	}	printf("integer a\n");	bigint_print(a);	printf("integer d\n");	bigint_print(d);	printf("integer r = a * d\n");	if (!bigint_mul(r, a, d))	{		printf("bigint_mul failed\n");		goto out;	}	else	{		printf("succeeded\n");		bigint_print(r);	}	printf("integer a\n");	bigint_print(a);	printf("integer e\n");	bigint_print(e);	printf("integer r = a * e\n");	if (!bigint_mul(r, a, e))	{		printf("bigint_mul failed\n");		goto out;	}	else	{		printf("succeeded\n");		bigint_print(r);	}	printf("integer a\n");	bigint_print(a);	printf("integer f\n");	bigint_print(c);	printf("integer r = a * c\n");	if (!bigint_mul(r, a, c))	{		printf("bigint_mul failed\n");		goto out;	}	else	{		printf("succeeded\n");		bigint_print(r);	}	if (!bigint_sub(r, e, d))	{		printf("bigint_sub failed\n");	}	else	{		printf("succeeded\n");		bigint_print(r);	}	if (!bigint_fix(r, a))	{		printf("bigint_fix failed\n");	}	else	{		printf("succeeded\n");		bigint_print(r);	}*/	printf("integer f\n");	bigint_print(f);	printf("integer e\n");	bigint_print(e);	printf("integer d\n");	bigint_print(d);	printf("r = f^d | e\n");/*	for (i = 0;i < 10; i++)	{	if (!bigint_mod_mul(r, f, d, e))	{		printf("bigint_mod failded\n");	}	else	{		printf("succeeded\n");		bigint_print(r);	}	}*/	if (!bigint_mod_exp(r, f, d, e)) {		printf("bigint_exp_mod failed\n");	} else {		printf("test succeeded\n");		bigint_print(r);	}      out:	bigint_free(a);	bigint_free(b);	bigint_free(c);	bigint_free(d);	bigint_free(e);	bigint_free(f);	bigint_free(r);	bigint_checkmemory();}intmain(void){	basic_test();	return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -