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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? curve.c

?? The Stanford IBE library is a C implementation of the Boneh-Franklin identity-based encryption sche
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
static void pts_get_tangent(fp2_ptr v,	point_ptr A, point_ptr P, mpz_t z, mpz_t p){    //note: z is in F_p so we can multiply by arbitrary    //powers of z because it gets killed by Tate exp.    //to derive what I have: x --> x/z^2, y/z^3 and then multiply    //by appropriate power of z    mpz_t a, b, c;    mpz_t temp, temp2;    fp2_t f1, f2;    fp2_init(f1);    fp2_init(f2);    //it should be    //a = -slope_tangent(P.x, P.y);    //b = 1;    //c = -(P.y + a * P.x);    //but we multiply by 2*P.y to avoid division    assert(!P->infinity); //(could handle with a = b = 0; c = 1;)    assert(!fp2_is_0(P->y)); // need to be wary of points of order 2    //could handle with pts_get_vertical(v, A, P, z);    mpz_init(a);    mpz_init(b);    mpz_init(c);    mpz_init(temp);    mpz_init(temp2);    //a = -3x^2 * z^2 (assume a2 = a4 = 0)#if 1    zp_mul(temp2, P->x->a, P->x->a, p);    zp_add(temp, temp2, temp2, p);    zp_add(temp, temp, temp2, p);    zp_neg(a, temp, p);#else    mpz_mul(temp2, P->x->a, P->x->a);    mpz_add(temp, temp2, temp2);    mpz_add(temp, temp, temp2);    mpz_neg(a, temp);    mpz_mod(a, a, p);#endif    zp_mul(temp2, z, z, p);    zp_mul(a, a, temp2, p);    zp_mul(temp2, temp2, z, p);    //b = (y + y)z^3;    zp_add(b, P->y->a, P->y->a, p);    zp_mul(b, b, temp2, p);    //c = - (2y) * y - (-3x^2) * x;    zp_mul(c, temp, P->x->a, p);    zp_mul(temp2, P->y->a, P->y->a, p);    zp_add(temp2, temp2, temp2, p);    zp_sub(c, c, temp2, p);    assert(!A->infinity);    fp2_mul_mpz(f1, A->x, a, p);    fp2_mul_mpz(f2, A->y, b, p);    fp2_add(f1, f1, f2, p);    //zp_mul(b, A->y->a, b, p);    //zp_add(f1->a, f1->a, b, p);    zp_add(f1->a, f1->a, c, p);    fp2_mul(v, v, f1, p);    fp2_clear(f1);    fp2_clear(f2);    mpz_clear(a);    mpz_clear(b);    mpz_clear(c);    mpz_clear(temp);    mpz_clear(temp2);    return;}static void tate_get_vertical(fp2_ptr v, point_ptr A, point_ptr P, mpz_t p){    fp2_t temp;    fp2_init(temp);    if (A->infinity) {	fprintf(stderr, "can't evaluate at O!\n");	//fp2_set_0(v);	return;    }    if (P->infinity) {	//a = b = 0; c = 1;	return;    }    //a = 1; b = 0; c = -P.x;    fp2_sub(temp, A->x, P->x, p);    fp2_mul(v, v, temp, p);    fp2_clear(temp);}static void tate_get_tangent(fp2_ptr v, point_ptr A, point_ptr P, mpz_t p){    fp2_t a, b, c;    fp2_t temp, temp2;    //it should be    //a = -slope_tangent(P.x, P.y);    //b = 1;    //c = -(P.y + a * P.x);    //but we multiply by 2*P.y to avoid division    //a = -Px * (Px + Px + Px + *twicea2) - *a4;    //assume a2 = a4 = 0    if (P->infinity) {	//a = b = 0; c = 1;	return;    }    fp2_init(temp);    //need to be wary of points of order 2    if (fp2_is_0(P->y)) {	//a = 1; b = 0; c = -P.x;	fp2_sub(temp, A->x, P->x, p);	fp2_mul(v, v, temp, p);	fp2_clear(temp);	return;    }    fp2_init(a);    fp2_init(b);    fp2_init(c);    fp2_init(temp2);    fp2_add(temp, P->x, P->x, p);    fp2_add(temp, temp, P->x, p);    fp2_mul(temp, temp, P->x, p);    fp2_neg(a, temp, p);    //b = Py + Py;    fp2_add(b, P->y, P->y, p);    //c = - b * Py - a * Px;    fp2_mul(temp, b, P->y, p);    fp2_mul(c, a, P->x, p);    fp2_add(c, c, temp, p);    fp2_neg(c, c, p);    if (A->infinity) {	fprintf(stderr, "can't evaluate at O!\n");	//fp2_mul(v, v, b, p);    } else {	fp2_mul(temp, a, A->x, p);	fp2_mul(temp2, b, A->y, p);	fp2_add(temp, temp, temp2, p);	fp2_add(temp, temp, c, p);	fp2_mul(v, v, temp, p);    }    fp2_clear(a);    fp2_clear(b);    fp2_clear(c);    fp2_clear(temp);    fp2_clear(temp2);    return;}static void tate_get_line(fp2_ptr v, point_ptr A, point_ptr P, point_ptr Q, mpz_t p){    fp2_t a, b, c;    fp2_t temp, temp2;    //cases involving O    if (P->infinity) {	tate_get_vertical(v, A, Q, p);	return;    }    if (Q->infinity) {	tate_get_vertical(v, A, P, p);	return;    }    fp2_init(temp);    //check if we need a tangent or vertical    if (fp2_equal(P->x, Q->x)) {	fp2_neg(temp, Q->y, p);	if (fp2_equal(P->y, temp)) {	    //a = 1; b = 0; c = -P.x;	    fp2_sub(temp, A->x, P->x, p);	    fp2_mul(v, v, temp, p);	    fp2_clear(temp);	    return;	}	//othewise P = Q	fp2_clear(temp);	tate_get_tangent(v, A, P, p);	return;    }    //normal case (P != Q)    fp2_init(a);    fp2_init(b);    fp2_init(c);    fp2_init(temp2);    //it should be    //a = -(Q.y - P.y) / (Q.x - P.x);    //b = 1;    //c = -(P.y + a * P.x);    //but we'll multiply by Q.x - P.x to avoid division    fp2_sub(b, Q->x, P->x, p);    fp2_sub(a, P->y, Q->y, p);    fp2_mul(temp, b, P->y, p);    fp2_mul(c, a, P->x, p);    fp2_add(c, c, temp, p);    fp2_neg(c, c, p);    if (A->infinity) {	fprintf(stderr, "can't evaluate at O!\n");    } else {	fp2_mul(temp, a, A->x, p);	fp2_mul(temp2, b, A->y, p);	fp2_add(temp, temp, temp2, p);	fp2_add(temp, temp, c, p);	fp2_mul(v, v, temp, p);    }    fp2_clear(a);    fp2_clear(b);    fp2_clear(c);    fp2_clear(temp);    fp2_clear(temp2);}static void get_vertical(fp2_ptr v, fp2_ptr vdenom,	point_ptr A, point_ptr B, point_ptr P, mpz_t p){    fp2_t temp;    fp2_init(temp);    if (A->infinity || B->infinity) {	fprintf(stderr, "can't evaluate at O!\n");	//fp2_set_0(v);	//fp2_set_0(vdenom);	return;    }    if (P->infinity) {	//a = b = 0; c = 1;	return;    }    //a = 1; b = 0; c = -P.x;    fp2_sub(temp, A->x, P->x, p);    fp2_mul(v, v, temp, p);    fp2_sub(temp, B->x, P->x, p);    fp2_mul(vdenom, vdenom, temp, p);    fp2_clear(temp);}static void get_tangent(fp2_ptr v, fp2_ptr vdenom,	point_ptr A, point_ptr B, point_ptr P, mpz_t p){    fp2_t a, b, c;    fp2_t temp, temp2;    //it should be    //a = -slope_tangent(P.x, P.y);    //b = 1;    //c = -(P.y + a * P.x);    //but we multiply by 2*P.y to avoid division    //a = -Px * (Px + Px + Px + *twicea2) - *a4;    //assume a2 = a4 = 0    if (P->infinity) {	//a = b = 0; c = 1;	return;    }    fp2_init(temp);    //need to be wary of points of order 2    if (fp2_is_0(P->y)) {	//a = 1; b = 0; c = -P.x;	fp2_sub(temp, A->x, P->x, p);	fp2_mul(v, v, temp, p);	fp2_sub(temp, B->x, P->x, p);	fp2_mul(vdenom, vdenom, temp, p);	fp2_clear(temp);	return;    }    fp2_init(a);    fp2_init(b);    fp2_init(c);    fp2_init(temp2);    fp2_add(temp, P->x, P->x, p);    fp2_add(temp, temp, P->x, p);    fp2_mul(temp, temp, P->x, p);    fp2_neg(a, temp, p);    //b = Py + Py;    fp2_add(b, P->y, P->y, p);    //c = - b * Py - a * Px;    fp2_mul(temp, b, P->y, p);    fp2_mul(c, a, P->x, p);    fp2_add(c, c, temp, p);    fp2_neg(c, c, p);    if (A->infinity) {	fprintf(stderr, "can't evaluate at O!\n");    } else {	fp2_mul(temp, a, A->x, p);	fp2_mul(temp2, b, A->y, p);	fp2_add(temp, temp, temp2, p);	fp2_add(temp, temp, c, p);	fp2_mul(v, v, temp, p);    }    if (B->infinity) {	fprintf(stderr, "can't evaluate at O!\n");    } else {	fp2_mul(temp, a, B->x, p);	fp2_mul(temp2, b, B->y, p);	fp2_add(temp, temp, temp2, p);	fp2_add(temp, temp, c, p);	fp2_mul(vdenom, vdenom, temp, p);    }    fp2_clear(a);    fp2_clear(b);    fp2_clear(c);    fp2_clear(temp);    fp2_clear(temp2);    return;}static void get_line(fp2_ptr v, fp2_ptr vdenom,	point_ptr A, point_ptr B, point_ptr P, point_ptr Q, mpz_t p){    fp2_t a, b, c;    fp2_t temp, temp2;    //cases involving O    if (P->infinity) {	get_vertical(v, vdenom, A, B, Q, p);	return;    }    if (Q->infinity) {	get_vertical(v, vdenom, A, B, P, p);	return;    }    fp2_init(temp);    //check if we need a tangent or vertical    if (fp2_equal(P->x, Q->x)) {	fp2_neg(temp, Q->y, p);	if (fp2_equal(P->y, temp)) {	    //a = 1; b = 0; c = -P.x;	    fp2_sub(temp, A->x, P->x, p);	    fp2_mul(v, v, temp, p);	    fp2_sub(temp, B->x, P->x, p);	    fp2_mul(vdenom, vdenom, temp, p);	    fp2_clear(temp);	    return;	}	//othewise P = Q	fp2_clear(temp);	get_tangent(v, vdenom, A, B, P, p);	return;    }    //normal case (P != Q)    fp2_init(a);    fp2_init(b);    fp2_init(c);    fp2_init(temp2);    //it should be    //a = -(Q.y - P.y) / (Q.x - P.x);    //b = 1;    //c = -(P.y + a * P.x);    //but we'll multiply by Q.x - P.x to avoid division    fp2_sub(b, Q->x, P->x, p);    fp2_sub(a, P->y, Q->y, p);    fp2_mul(temp, b, P->y, p);    fp2_mul(c, a, P->x, p);    fp2_add(c, c, temp, p);    fp2_neg(c, c, p);    if (A->infinity) {	fprintf(stderr, "can't evaluate at O!\n");	//fp2_mul(v, v, b, p);    } else {	fp2_mul(temp, a, A->x, p);	fp2_mul(temp2, b, A->y, p);	fp2_add(temp, temp, temp2, p);	fp2_add(temp, temp, c, p);	fp2_mul(v, v, temp, p);    }    if (B->infinity) {	fprintf(stderr, "can't evaluate at O!\n");	//fp2_mul(vdenom, vdenom, b, p);    } else {	fp2_mul(temp, a, B->x, p);	fp2_mul(temp2, b, B->y, p);	fp2_add(temp, temp, temp2, p);	fp2_add(temp, temp, c, p);	fp2_mul(vdenom, vdenom, temp, p);    }    fp2_clear(a);    fp2_clear(b);    fp2_clear(c);    fp2_clear(temp);    fp2_clear(temp2);}int simple_miller(fp2_ptr res, point_ptr P, point_ptr Phat,	point_ptr Qhat, point_ptr R1, point_ptr R2, curve_t curve){    int m;    fp2_t f1;    fp2_t v, vdenom;    point_t Z;    mpz_ptr p = curve->p;    point_init(Z);    point_set_O(Z);    fp2_init(f1);    fp2_init(v);    fp2_init(vdenom);    fp2_set_1(v);    fp2_set_1(vdenom);    get_vertical(v, vdenom, Qhat, R2, Phat, p);    get_line(v, vdenom, R2, Qhat, P, R1, p);    fp2_div(f1, v, vdenom, p);    fp2_set_1(v);    fp2_set_1(vdenom);    m = mpz_sizeinbase(curve->q, 2) - 1;    for(;;) {	if (mpz_tstbit(curve->q, m)) {	    fp2_mul(v, v, f1, p);	    //g	    get_line(v, vdenom, Qhat, R2, Z, P, p);	    //h	    point_add(Z, Z, P, curve);	    get_vertical(v, vdenom, R2, Qhat, Z, p);	}	if (m == 0) break;	m--;	fp2_sqr(v, v, p);	fp2_sqr(vdenom, vdenom, p);	//g	get_line(v, vdenom, Qhat, R2, Z, Z, p);	//h	point_add(Z, Z, Z, curve);	get_vertical(v, vdenom, R2, Qhat, Z, p);    }    fp2_div(res, v, vdenom, p);    fp2_clear(f1);    fp2_clear(v);    fp2_clear(vdenom);    point_clear(Z);    return 1;}int general_miller(fp2_ptr res, point_ptr P, point_ptr Phat,	point_ptr Qhat, point_ptr R1, point_ptr R2, curve_t curve){    //TODO: use NAF    //use sliding-window method    fp2_t g[2*windowsizepower+2];    point_t bP[2*windowsizepower+2];    fp2_t vdenom, v;    point_t Z;    int i, j, k, l, m;    mpz_ptr p = curve->p;    fp2_init(vdenom);    fp2_init(v);    fp2_set_1(v);    fp2_set_1(vdenom);    //work out f_1    get_vertical(v, vdenom, Qhat, R2, Phat, p);    get_line(v, vdenom, R2, Qhat, P, R1, p);    if (fp2_is_0(v) || fp2_is_0(vdenom)) goto bad_R;    fp2_init(g[1]);    fp2_div(g[1], v, vdenom, p);    point_init(bP[1]);    point_set(bP[1], P);    fp2_set_1(v);    fp2_set_1(vdenom);    //work out f_2    point_init(bP[2]);    point_add(bP[2], P, P, curve);    //get_line(v, vdenom, Qhat, R2, P, P);    get_tangent(v, vdenom, Qhat, R2, P, p);    get_vertical(v, vdenom, R2, Qhat, bP[2], p);    if (fp2_is_0(v) || fp2_is_0(vdenom)) goto bad_R;    fp2_init(g[2]);    fp2_sqr(g[2], g[1], p);    fp2_mul(g[2], g[2], v, p);    fp2_div(g[2], g[2], vdenom, p);    fp2_set_1(v);    fp2_set_1(vdenom);    //work out rest of g[], bP[]    for (i=1; i<=windowsizepower; i++) {	j = 2 * i + 1;	k = j - 2;	point_init(bP[j]);	point_add(bP[j], bP[k], bP[2], curve);	get_line(v, vdenom, Qhat, R2, bP[k], bP[2], p);	get_vertical(v, vdenom, R2, Qhat, bP[j], p);	if (fp2_is_0(v) || fp2_is_0(vdenom)) goto bad_R;	fp2_init(g[j]);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色偷偷一区二区三区| 久久亚区不卡日本| 在线观看欧美黄色| 色婷婷亚洲一区二区三区| aa级大片欧美| av电影在线观看一区| 不卡av电影在线播放| 成人av网站在线| 99久久综合狠狠综合久久| 国产91色综合久久免费分享| 国产精品资源在线| 懂色av一区二区三区免费看| 国产91在线看| www.欧美色图| 欧美主播一区二区三区| 欧美三级电影精品| 91精品国产综合久久蜜臀| 日韩免费在线观看| 国产网站一区二区| 亚洲欧洲精品一区二区三区| 日韩理论电影院| 亚洲男女毛片无遮挡| 亚洲一区二区三区在线看| 午夜精品123| 精品影院一区二区久久久| 国产精品99久久久久久有的能看 | 尤物在线观看一区| 亚洲伊人色欲综合网| 日韩精品免费视频人成| 国产一区二区成人久久免费影院 | 一本大道久久a久久综合| 欧美色图免费看| 日韩一级片在线播放| 26uuu成人网一区二区三区| 中文字幕免费不卡| 亚洲午夜免费福利视频| 久久精品国产一区二区三区免费看| 国产精品系列在线播放| 91老司机福利 在线| 欧美一区二区精品久久911| 国产色产综合色产在线视频| 亚洲免费在线视频一区 二区| 日韩影院精彩在线| 国产精品69毛片高清亚洲| 色综合久久88色综合天天免费| 777亚洲妇女| 欧美国产一区二区| 日韩中文字幕区一区有砖一区| 国产精品一区二区在线看| 欧美调教femdomvk| 精品女同一区二区| 亚洲免费观看高清完整| 激情久久五月天| 在线视频一区二区免费| 久久丝袜美腿综合| 亚洲欧洲综合另类在线| 理论电影国产精品| 91国偷自产一区二区开放时间| 精品国产制服丝袜高跟| 亚洲综合激情网| 岛国一区二区三区| 日韩一卡二卡三卡四卡| 亚洲免费观看高清完整版在线观看 | 成人aa视频在线观看| 欧美日韩美女一区二区| 久久久久久久免费视频了| 午夜不卡在线视频| 成人av网在线| 久久伊99综合婷婷久久伊| 亚洲观看高清完整版在线观看 | 欧美一区二区三区成人| 国产精品久久久久久久久快鸭 | 日韩欧美国产一区二区在线播放| 中文字幕一区二区视频| 国产精品原创巨作av| 欧美顶级少妇做爰| 一区二区三区毛片| 成人激情午夜影院| 精品国产成人系列| 免费成人小视频| 欧美午夜寂寞影院| 亚洲婷婷国产精品电影人久久| 国产一区免费电影| 日韩欧美国产精品一区| 日韩国产成人精品| 在线观看视频一区| 欧美va亚洲va香蕉在线| 日韩国产一二三区| 欧美日韩一区二区欧美激情| ...xxx性欧美| 国产成人亚洲精品青草天美| 精品剧情v国产在线观看在线| 五月婷婷激情综合| 欧美日韩国产片| 亚洲一区二区美女| 欧美午夜精品免费| 亚洲影院理伦片| 色拍拍在线精品视频8848| 国产精品卡一卡二卡三| 成人午夜激情片| 国产精品全国免费观看高清| 国产精品综合二区| 国产午夜精品福利| 成人小视频在线| 中文字幕+乱码+中文字幕一区| 国产成人免费av在线| 国产色产综合色产在线视频| 国产成人精品一区二区三区网站观看| 久久久综合视频| 国产91精品久久久久久久网曝门| 国产视频一区二区在线| 国产成人在线视频免费播放| 中文字幕一区二区5566日韩| www.日韩av| 亚洲一区二区三区影院| 欧美日韩情趣电影| 美洲天堂一区二卡三卡四卡视频| 日韩欧美资源站| 国产一区二区三区免费播放| 欧美激情中文字幕| 91网站在线播放| 亚洲精品视频在线| 欧美精品精品一区| 麻豆中文一区二区| 日本一区二区三区视频视频| 成人av综合在线| 亚洲午夜私人影院| 日韩欧美国产综合在线一区二区三区| 国产乱码精品一区二区三| 亚洲欧洲在线观看av| 欧美三级视频在线观看| 麻豆高清免费国产一区| 欧美高清在线视频| 色8久久精品久久久久久蜜| 日韩国产精品大片| 久久奇米777| 色综合天天综合网国产成人综合天 | 亚洲精品乱码久久久久久黑人| 日本大香伊一区二区三区| 日本成人中文字幕| 国产精品久久久久久妇女6080 | 国产亚洲一二三区| 91香蕉视频污在线| 蜜臀精品一区二区三区在线观看| 国产亚洲精品bt天堂精选| 在线观看亚洲精品| 久久99精品国产麻豆婷婷洗澡| 中文字幕不卡一区| 在线播放欧美女士性生活| 国产精品亚洲综合一区在线观看| 一区二区三区日韩欧美精品| 26uuu亚洲综合色| 日本久久精品电影| 麻豆成人在线观看| 亚洲美女视频在线| 精品国一区二区三区| 色哟哟日韩精品| 国产一区二区三区日韩 | 国产一二三精品| 夜夜操天天操亚洲| 久久精品一级爱片| 欧美酷刑日本凌虐凌虐| 成人黄色在线视频| 日韩成人午夜电影| 亚洲欧美日韩综合aⅴ视频| 精品久久人人做人人爱| 在线看国产一区二区| 国产乱码精品一区二区三区五月婷| 亚洲国产成人高清精品| 国产精品乱码一区二区三区软件| 欧美猛男男办公室激情| av网站一区二区三区| 久久99久久99| 亚洲成人午夜影院| 亚洲色图.com| 国产日韩高清在线| 欧美成人伊人久久综合网| 91精品办公室少妇高潮对白| 国产成人精品免费网站| 麻豆精品一二三| 亚洲成人av中文| 亚洲精品国产品国语在线app| 久久精品在线观看| 欧美变态凌虐bdsm| 欧美久久久久久久久久| 欧洲精品中文字幕| 精品人伦一区二区色婷婷| 精品视频1区2区| 色吧成人激情小说| av男人天堂一区| 成人爽a毛片一区二区免费| 国内成+人亚洲+欧美+综合在线 | 欧美色成人综合| 色婷婷久久一区二区三区麻豆| 成人深夜视频在线观看| 国产一区二区三区观看| 精品一区精品二区高清| 久久成人免费日本黄色| 日韩高清电影一区| 午夜精品福利在线|