亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bn_mul.c

?? openssl包含TLS
?? C
?? 第 1 頁 / 共 2 頁
字號:
	bn_mul_recursive(r,a,b,n,&(t[0]));	if (n >= BN_MUL_LOW_RECURSIVE_SIZE_NORMAL)		{		bn_mul_low_recursive(&(t[0]),&(a[0]),&(b[n]),n,&(t[n2]));		bn_add_words(&(r[n]),&(r[n]),&(t[0]),n);		bn_mul_low_recursive(&(t[0]),&(a[n]),&(b[0]),n,&(t[n2]));		bn_add_words(&(r[n]),&(r[n]),&(t[0]),n);		}	else		{		bn_mul_low_normal(&(t[0]),&(a[0]),&(b[n]),n);		bn_mul_low_normal(&(t[n]),&(a[n]),&(b[0]),n);		bn_add_words(&(r[n]),&(r[n]),&(t[0]),n);		bn_add_words(&(r[n]),&(r[n]),&(t[n]),n);		}	}/* a and b must be the same size, which is n2. * r needs to be n2 words and t needs to be n2*2 * l is the low words of the output. * t needs to be n2*3 */void bn_mul_high(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, BN_ULONG *l, int n2,	     BN_ULONG *t)	{	int i,n;	int c1,c2;	int neg,oneg,zero;	BN_ULONG ll,lc,*lp,*mp;# ifdef BN_COUNT	printf(" bn_mul_high %d * %d\n",n2,n2);# endif	n=n2/2;	/* Calculate (al-ah)*(bh-bl) */	neg=zero=0;	c1=bn_cmp_words(&(a[0]),&(a[n]),n);	c2=bn_cmp_words(&(b[n]),&(b[0]),n);	switch (c1*3+c2)		{	case -4:		bn_sub_words(&(r[0]),&(a[n]),&(a[0]),n);		bn_sub_words(&(r[n]),&(b[0]),&(b[n]),n);		break;	case -3:		zero=1;		break;	case -2:		bn_sub_words(&(r[0]),&(a[n]),&(a[0]),n);		bn_sub_words(&(r[n]),&(b[n]),&(b[0]),n);		neg=1;		break;	case -1:	case 0:	case 1:		zero=1;		break;	case 2:		bn_sub_words(&(r[0]),&(a[0]),&(a[n]),n);		bn_sub_words(&(r[n]),&(b[0]),&(b[n]),n);		neg=1;		break;	case 3:		zero=1;		break;	case 4:		bn_sub_words(&(r[0]),&(a[0]),&(a[n]),n);		bn_sub_words(&(r[n]),&(b[n]),&(b[0]),n);		break;		}			oneg=neg;	/* t[10] = (a[0]-a[1])*(b[1]-b[0]) */	/* r[10] = (a[1]*b[1]) */# ifdef BN_MUL_COMBA	if (n == 8)		{		bn_mul_comba8(&(t[0]),&(r[0]),&(r[n]));		bn_mul_comba8(r,&(a[n]),&(b[n]));		}	else# endif		{		bn_mul_recursive(&(t[0]),&(r[0]),&(r[n]),n,&(t[n2]));		bn_mul_recursive(r,&(a[n]),&(b[n]),n,&(t[n2]));		}	/* s0 == low(al*bl)	 * s1 == low(ah*bh)+low((al-ah)*(bh-bl))+low(al*bl)+high(al*bl)	 * We know s0 and s1 so the only unknown is high(al*bl)	 * high(al*bl) == s1 - low(ah*bh+s0+(al-ah)*(bh-bl))	 * high(al*bl) == s1 - (r[0]+l[0]+t[0])	 */	if (l != NULL)		{		lp= &(t[n2+n]);		c1=(int)(bn_add_words(lp,&(r[0]),&(l[0]),n));		}	else		{		c1=0;		lp= &(r[0]);		}	if (neg)		neg=(int)(bn_sub_words(&(t[n2]),lp,&(t[0]),n));	else		{		bn_add_words(&(t[n2]),lp,&(t[0]),n);		neg=0;		}	if (l != NULL)		{		bn_sub_words(&(t[n2+n]),&(l[n]),&(t[n2]),n);		}	else		{		lp= &(t[n2+n]);		mp= &(t[n2]);		for (i=0; i<n; i++)			lp[i]=((~mp[i])+1)&BN_MASK2;		}	/* s[0] = low(al*bl)	 * t[3] = high(al*bl)	 * t[10] = (a[0]-a[1])*(b[1]-b[0]) neg is the sign	 * r[10] = (a[1]*b[1])	 */	/* R[10] = al*bl	 * R[21] = al*bl + ah*bh + (a[0]-a[1])*(b[1]-b[0])	 * R[32] = ah*bh	 */	/* R[1]=t[3]+l[0]+r[0](+-)t[0] (have carry/borrow)	 * R[2]=r[0]+t[3]+r[1](+-)t[1] (have carry/borrow)	 * R[3]=r[1]+(carry/borrow)	 */	if (l != NULL)		{		lp= &(t[n2]);		c1= (int)(bn_add_words(lp,&(t[n2+n]),&(l[0]),n));		}	else		{		lp= &(t[n2+n]);		c1=0;		}	c1+=(int)(bn_add_words(&(t[n2]),lp,  &(r[0]),n));	if (oneg)		c1-=(int)(bn_sub_words(&(t[n2]),&(t[n2]),&(t[0]),n));	else		c1+=(int)(bn_add_words(&(t[n2]),&(t[n2]),&(t[0]),n));	c2 =(int)(bn_add_words(&(r[0]),&(r[0]),&(t[n2+n]),n));	c2+=(int)(bn_add_words(&(r[0]),&(r[0]),&(r[n]),n));	if (oneg)		c2-=(int)(bn_sub_words(&(r[0]),&(r[0]),&(t[n]),n));	else		c2+=(int)(bn_add_words(&(r[0]),&(r[0]),&(t[n]),n));		if (c1 != 0) /* Add starting at r[0], could be +ve or -ve */		{		i=0;		if (c1 > 0)			{			lc=c1;			do	{				ll=(r[i]+lc)&BN_MASK2;				r[i++]=ll;				lc=(lc > ll);				} while (lc);			}		else			{			lc= -c1;			do	{				ll=r[i];				r[i++]=(ll-lc)&BN_MASK2;				lc=(lc > ll);				} while (lc);			}		}	if (c2 != 0) /* Add starting at r[1] */		{		i=n;		if (c2 > 0)			{			lc=c2;			do	{				ll=(r[i]+lc)&BN_MASK2;				r[i++]=ll;				lc=(lc > ll);				} while (lc);			}		else			{			lc= -c2;			do	{				ll=r[i];				r[i++]=(ll-lc)&BN_MASK2;				lc=(lc > ll);				} while (lc);			}		}	}#endif /* BN_RECURSION */int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)	{	int top,al,bl;	BIGNUM *rr;	int ret = 0;#if defined(BN_MUL_COMBA) || defined(BN_RECURSION)	int i;#endif#ifdef BN_RECURSION	BIGNUM *t;	int j,k;#endif#ifdef BN_COUNT	printf("BN_mul %d * %d\n",a->top,b->top);#endif	bn_check_top(a);	bn_check_top(b);	bn_check_top(r);	al=a->top;	bl=b->top;	if ((al == 0) || (bl == 0))		{		if (!BN_zero(r)) goto err;		return(1);		}	top=al+bl;	BN_CTX_start(ctx);	if ((r == a) || (r == b))		{		if ((rr = BN_CTX_get(ctx)) == NULL) goto err;		}	else		rr = r;	rr->neg=a->neg^b->neg;#if defined(BN_MUL_COMBA) || defined(BN_RECURSION)	i = al-bl;#endif#ifdef BN_MUL_COMBA	if (i == 0)		{# if 0		if (al == 4)			{			if (bn_wexpand(rr,8) == NULL) goto err;			rr->top=8;			bn_mul_comba4(rr->d,a->d,b->d);			goto end;			}# endif		if (al == 8)			{			if (bn_wexpand(rr,16) == NULL) goto err;			rr->top=16;			bn_mul_comba8(rr->d,a->d,b->d);			goto end;			}		}#endif /* BN_MUL_COMBA */#ifdef BN_RECURSION	if ((al >= BN_MULL_SIZE_NORMAL) && (bl >= BN_MULL_SIZE_NORMAL))		{		if (i == 1 && !BN_get_flags(b,BN_FLG_STATIC_DATA) && bl<b->dmax)			{#if 0	/* tribute to const-ification, bl<b->dmax above covers for this */			if (bn_wexpand(b,al) == NULL) goto err;#endif			b->d[bl]=0;			bl++;			i--;			}		else if (i == -1 && !BN_get_flags(a,BN_FLG_STATIC_DATA) && al<a->dmax)			{#if 0	/* tribute to const-ification, al<a->dmax above covers for this */			if (bn_wexpand(a,bl) == NULL) goto err;#endif			a->d[al]=0;			al++;			i++;			}		if (i == 0)			{			/* symmetric and > 4 */			/* 16 or larger */			j=BN_num_bits_word((BN_ULONG)al);			j=1<<(j-1);			k=j+j;			t = BN_CTX_get(ctx);			if (al == j) /* exact multiple */				{				if (bn_wexpand(t,k*2) == NULL) goto err;				if (bn_wexpand(rr,k*2) == NULL) goto err;				bn_mul_recursive(rr->d,a->d,b->d,al,t->d);				rr->top=top;				goto end;				}#if 0	/* tribute to const-ification, rsa/dsa performance is not affected */			else				{				if (bn_wexpand(a,k) == NULL ) goto err;				if (bn_wexpand(b,k) == NULL ) goto err;				if (bn_wexpand(t,k*4) == NULL ) goto err;				if (bn_wexpand(rr,k*4) == NULL ) goto err;				for (i=a->top; i<k; i++)					a->d[i]=0;				for (i=b->top; i<k; i++)					b->d[i]=0;				bn_mul_part_recursive(rr->d,a->d,b->d,al-j,j,t->d);				}			rr->top=top;			goto end;#endif			}		}#endif /* BN_RECURSION */	if (bn_wexpand(rr,top) == NULL) goto err;	rr->top=top;	bn_mul_normal(rr->d,a->d,al,b->d,bl);#if defined(BN_MUL_COMBA) || defined(BN_RECURSION)end:#endif	bn_fix_top(rr);	if (r != rr) BN_copy(r,rr);	ret=1;err:	BN_CTX_end(ctx);	return(ret);	}void bn_mul_normal(BN_ULONG *r, BN_ULONG *a, int na, BN_ULONG *b, int nb)	{	BN_ULONG *rr;#ifdef BN_COUNT	printf(" bn_mul_normal %d * %d\n",na,nb);#endif	if (na < nb)		{		int itmp;		BN_ULONG *ltmp;		itmp=na; na=nb; nb=itmp;		ltmp=a;   a=b;   b=ltmp;		}	rr= &(r[na]);	rr[0]=bn_mul_words(r,a,na,b[0]);	for (;;)		{		if (--nb <= 0) return;		rr[1]=bn_mul_add_words(&(r[1]),a,na,b[1]);		if (--nb <= 0) return;		rr[2]=bn_mul_add_words(&(r[2]),a,na,b[2]);		if (--nb <= 0) return;		rr[3]=bn_mul_add_words(&(r[3]),a,na,b[3]);		if (--nb <= 0) return;		rr[4]=bn_mul_add_words(&(r[4]),a,na,b[4]);		rr+=4;		r+=4;		b+=4;		}	}void bn_mul_low_normal(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n)	{#ifdef BN_COUNT	printf(" bn_mul_low_normal %d * %d\n",n,n);#endif	bn_mul_words(r,a,n,b[0]);	for (;;)		{		if (--n <= 0) return;		bn_mul_add_words(&(r[1]),a,n,b[1]);		if (--n <= 0) return;		bn_mul_add_words(&(r[2]),a,n,b[2]);		if (--n <= 0) return;		bn_mul_add_words(&(r[3]),a,n,b[3]);		if (--n <= 0) return;		bn_mul_add_words(&(r[4]),a,n,b[4]);		r+=4;		b+=4;		}	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类调教123区 | www国产精品av| 蜜臀av一区二区三区| www一区二区| 欧美成人vr18sexvr| 色综合久久88色综合天天免费| 亚洲高清在线精品| 日本一区二区三区四区在线视频| 日本道色综合久久| 国产一区二区三区电影在线观看| 一区二区三区四区中文字幕| 久久精品夜色噜噜亚洲a∨| 欧美视频在线观看一区二区| 国产91丝袜在线观看| 日本亚洲一区二区| 亚洲乱码国产乱码精品精的特点| 精品国产91久久久久久久妲己| 在线观看不卡一区| av一区二区三区四区| 国产精品一区二区三区99| 午夜视频一区二区| 亚洲欧美aⅴ...| 国产精品国模大尺度视频| 日韩精品一区二区三区在线观看| 欧美丝袜第三区| 日韩精品一区二区三区视频| 国产日韩欧美不卡在线| 亚洲精品乱码久久久久久| 三级亚洲高清视频| 日韩精品电影一区亚洲| 激情综合五月天| 免费精品视频在线| 日韩av中文字幕一区二区三区| 蜜桃视频第一区免费观看| 成人午夜电影小说| 成人中文字幕合集| 欧美日韩一区在线| 欧美日韩国产一级片| 欧美三级电影精品| 国产亚洲一区字幕| 亚洲成人av一区| 蜜桃一区二区三区四区| 99精品国产视频| av一区二区不卡| 日韩三级中文字幕| 精品久久免费看| 亚洲亚洲人成综合网络| 国产福利91精品一区| caoporm超碰国产精品| 欧美日本视频在线| 亚洲欧美日韩综合aⅴ视频| 久久成人免费日本黄色| 欧美亚洲禁片免费| 国产精品久久久久久久久久久免费看| 日韩不卡一区二区| 欧美午夜一区二区| 亚洲久本草在线中文字幕| 国产盗摄一区二区| 精品国产一区二区三区久久久蜜月| 亚洲猫色日本管| 成人网页在线观看| 久久综合成人精品亚洲另类欧美| 日本中文字幕一区二区视频| 一本久道久久综合中文字幕 | 久久久欧美精品sm网站| 国产精品久久久久影院亚瑟| 久久精品国产色蜜蜜麻豆| 欧美午夜精品久久久久久孕妇| 国产精品不卡视频| 成人午夜免费视频| 中文字幕av一区二区三区高| 亚洲影视在线播放| 国产呦萝稀缺另类资源| 日韩一区二区不卡| 久久成人麻豆午夜电影| 精品成人佐山爱一区二区| 轻轻草成人在线| www日韩大片| 国产剧情在线观看一区二区| 国产视频一区二区在线观看| 国产一区欧美一区| 国产精品美女久久久久aⅴ国产馆| 亚洲成av人片在线| 欧美猛男超大videosgay| 日韩三级高清在线| 精品一区二区三区影院在线午夜| 欧美大胆人体bbbb| 国产麻豆成人精品| 国产精品久久99| 欧美综合一区二区| 五月天网站亚洲| 欧美一区二区精品久久911| 中文字幕一区二区三区在线不卡 | 欧美一级片免费看| 乱一区二区av| 中文字幕欧美三区| 91在线视频免费91| 日韩黄色小视频| 欧美精品一区二区三区蜜臀| 国产ts人妖一区二区| 亚洲特黄一级片| 粉嫩13p一区二区三区| 亚洲日本青草视频在线怡红院| 欧美三级电影一区| 国产不卡在线播放| 亚洲一区电影777| 欧美成人精品3d动漫h| 成人黄页在线观看| 国产精品久久久久久久久免费丝袜 | 免费在线观看不卡| 中文字幕久久午夜不卡| 欧美亚洲另类激情小说| 国产一区二区不卡在线| 亚洲品质自拍视频| 日韩午夜三级在线| 色久优优欧美色久优优| 日韩欧美自拍偷拍| 韩国三级电影一区二区| 欧美一区二区二区| 91视频在线观看| 亚洲人成网站色在线观看| 欧美日韩国产bt| 丁香另类激情小说| 日本女人一区二区三区| 亚洲欧美另类久久久精品| 26uuuu精品一区二区| 91激情五月电影| 成人自拍视频在线| 黄色日韩三级电影| 日韩福利视频导航| 一区二区三区欧美亚洲| 国产精品日韩成人| 欧美精品一区二区在线观看| 欧美区一区二区三区| 91免费视频观看| 成人免费视频播放| 国产尤物一区二区在线| 久久疯狂做爰流白浆xx| 舔着乳尖日韩一区| 亚洲一卡二卡三卡四卡无卡久久| 久久视频一区二区| 欧美精品一区二区在线观看| 日韩西西人体444www| 欧美精品1区2区3区| 在线观看不卡一区| 欧美亚洲国产一区二区三区| 一本一道波多野结衣一区二区| 不卡av在线免费观看| 不卡欧美aaaaa| 成人高清在线视频| www.成人网.com| 丁香婷婷综合激情五月色| 国产综合色视频| 国产成人夜色高潮福利影视| 国产伦精一区二区三区| 国产精品一区二区三区99| 国产激情精品久久久第一区二区 | 亚洲综合一区在线| 亚洲精品视频在线观看网站| 一区二区欧美视频| 中文字幕在线不卡一区二区三区| 日韩美女视频一区二区| 亚洲免费电影在线| 午夜国产精品一区| 精品一二三四区| 国产成人亚洲综合a∨婷婷 | 欧美一区二区三区视频在线观看 | 91黄色小视频| 精品视频免费看| 91精品国产综合久久久蜜臀图片 | 日韩高清不卡在线| 麻豆91在线看| 国产成人啪午夜精品网站男同| 国产在线不卡一区| 91蜜桃婷婷狠狠久久综合9色| 日本久久精品电影| 日韩一区二区麻豆国产| 久久久精品黄色| 亚洲乱码国产乱码精品精的特点| 日韩和欧美一区二区| 国产真实乱偷精品视频免| 成人国产精品免费观看动漫| 欧美在线视频全部完| 精品久久久久久久久久久久久久久| 国产性天天综合网| 亚洲一二三区在线观看| 精品在线你懂的| 91同城在线观看| 精品久久国产字幕高潮| 亚洲欧美韩国综合色| 久久精品久久99精品久久| 99久久国产免费看| 日韩一区二区中文字幕| 国产精品毛片大码女人| 午夜成人在线视频| 99精品视频一区二区| www激情久久| 午夜精品久久久久久久久久久| 国产精品羞羞答答xxdd| 欧美伦理影视网|