miracl椭圆曲线函数

对miracl库中关于椭圆曲线的函数进行总结。

miracl椭圆曲线函数

ebrick_init

函数原型:BOOL ebric_init(binst,x,y,a,b,n,w,nb)

参数类型:ebrick *binst; big x,y; big a,b,n; int w,nb;

参数意义:指向当前实例binst的指针,线上的不动点G=(x,y),y2=x3+ax+b,模n,以及指数nb中要使用的最大位数

函数作用:曲初始化一个计算前GF(p)椭圆曲线乘法的梳状方法的实例,内部内存被分配给2^w个椭圆曲线点,这些点将被用于计算和存储

返回值:如果一切顺利,则返回TRUE;如果出现问题,返回FALSE。

ebrick2_init

函数原型:BOOL ebrick2_init(binst,x,y,A,B,m,a,b,c,nb)

参数类型:ebrick2 *binst; big x,y; big A,B; int m,a,b,c,nb;

参数意义:指向当前实例binst的指针、曲线y2 + xy = x3 + Ax2 + B上的固定点G=(x,y)、字段参数m、a、B、c以及指数nb中要使用的最大位数。对于三项式基础,设置b = 0。

函数作用:初始化带预计算的GF(2m)椭圆曲线乘法的梳状法实例

返回值:如果一切顺利,则返回TRUE;如果出现问题,返回FALSE

ecurve_add

函数原型: void ecurve_add(p,pa)

参数类型: epoint *p,*pa;

函数作用:(素域上)点的加法运算,pa=pa+p

ecurve2_add

函数原型:void ecurve2_add(p,pa)

参数类型:epoint *p,*pa;

函数作用:在GF(2^m)椭圆曲线上. pa=pa+p

ecurve_init

函数原型:void ecurve_init(A,B,p,type)

参数类型:big A,B,p; int type;

函数作用:初始化当前活动GF(p)椭圆曲线的内部参数,y2 =x3 + Ax + B mod p,type为MR_PROJECTIVE or MR_AFFINE,

ecurve2_init

ecurve_mult

函数原型:void ecurve_mult(k,p,pa)

参数类型: big k; epoint *p,*pa;

函数作用:将GP(p)椭圆曲线上的点乘以一个整数, pa=k*p.

ecurve2_mult

ecurve_mult2

函数原型:void ecurve_mult2(k1,p1,k2,p2,pa)

参数类型:big k1,k2; epoint *p1,*p2,*pa;

函数作用:点乘加快速运算。计算GF(p)椭圆曲线上的点k1*p1+k2*p2。这比进行两次单独的乘法和加法要快。 pa = k1*p1+k2*p2

ecurve2_mult2

ecurve_multi_add

函数原型:void ecurve_multi_add(m,x,w)

参数类型:int m; epoint **x,**w;

函数作用: w[i]=w[i]+x[i] , i =0 - m-1 (使用仿射坐标)

ecurve2_multi_add

ecurve_multn

函数原型:void ecurve_multn(n,k,p,pa)

参数类型: int n; big *k; epoint **p

参数意义:整数n,n个大数字k[]的数组,n个点的数组。结果在pa中返回。

函数作用:在GF(p)上计算 k[0]*p[0] + k[1]*p[1] + … + k[n-1]*p[n-1] , n>2

ecurve2_multn

ecurve_sub

函数原型:void ecurve_sub(p,pa)

参数类型:epoint *p,*pa;

参数意义:GF(p)上两点

函数作用:pa = pa-p.

ecurve2_sub

epoint_comp

函数原型:BOOL epoint_comp(p1,p2)

参数类型:epoint\ *p1,*p2;

函数作用:比较当前在GF(p)椭圆曲线上的两点

返回值:如果点数相同,则返回TRUE,否则返回ALSE。

epoint2_comp

epoint_copy *

函数原型:void epoint_copy(p1,p2)

参数类型:epoint *p1,*p2;

函数作用:将GF(p)椭圆曲线上的一个点复制到另一个点,p2=p1

epoint2_copy *

epoint_free *

函数原型:void epoint_free(p)

参数类型:epoint *p;

函数作用:释放与GF(p)椭圆曲线上的点p相关联的内存

epoint_get

???

函数原型:int epoint_get(p,x,y)

参数类型:epoint *p; big x,y;

函数作用:取出p点的x,y坐标

返回值:y的最低有效位

epoint2_get

epoint_getxyz

函数原型:void epoint_getxyz(p,x,y,z)

参数类型:epoint *p; big x,y,z;

函数作用:提取活动**GF(p)**椭圆曲线上一点的原始(x,y,z)坐标

epoint2_getxyz

epoint_init

函数原型:epoint* epoint_init()

函数作用:将内存分配给GF(p)椭圆曲线上的一个点,并将其初始化为“无穷远点”

返回值:返回epoint类型点

1
C=epoint_init();

确保通过调用该函数初始化的所有椭圆曲线点最终通过调用epoint_free被释放。否则将导致内存泄漏

epoint_init_mem

epoint2_norm

epoint_set

函数原型: BOOL epoint_set(x,y,lsb,p)

参数类型: big x,y; int lsb; epoint *p;

参数意义:

函数作用:设置点p的(x,y)坐标,(x,y)在曲线上则返回true

1
2
3
p=epoint_init(); 
epoint_set(x,x,1,p);
/* decompress p */

epoint2_set

epoint_x

函数原型: BOOL epoint_x(x)

参数类型:big x;

函数作用:测试参数x是否是曲线上一点的有效坐标。用这种方法先测试一个x坐标,要比直接通过调用epoint_set在曲线上设置快,因为这样可以避免昂贵的模平方根。

返回值:如果x是曲线点的坐标,则为真,否则为假

mul_brick

mul2_brick

point_at_infinity *

函数原型:BOOL point_at_infinity(p)

参数类型:epoint *p;

函数作用:测试椭圆曲线点是否是“无穷远点”。

返回值:如果p是无穷远点,则为True,否则为false

sha256_init

函数原型:sha256_init(psh)

参数类型:sha256 *psh

函数功能:初始化安全哈希算法SHA-256的实例。必须在重新使用前调用。

sha256_process

函数原型:void shs256_process(psh,ch)

参数类型:sha256 *psh; int ch;

函数功能:处理单个字节。通常调用多次以向哈希进程提供输入。所有已处理字节的哈希值可通过后续调用shs256_hash来检索。

sha256_hash

函数原型:void shs256_hash(psh,hash)

参数类型:sha256 *psh; char hash[32];

函数功能:在提供的数组中生成一个32字节(256位)的哈希值

参考文献:

1.官方文档

2.https://www.cnblogs.com/Higgerw/p/10164179.html

3.https://blog.csdn.net/weixin_30734435/article/details/95364200


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!