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 |
|
确保通过调用该函数初始化的所有椭圆曲线点最终通过调用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 |
|
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 协议 ,转载请注明出处!