ecurve_sub
extern int ecurve_sub(_MIPT_ epoint *,epoint *);
函数功能:减法运算。
参数_MIPD_:可能为空,非空为miracl *类型。
参数p:epoint类型数据。
参数pa:epoint类型数据。
1. 源码分析
int ecurve_sub(_MIPD_ epoint *p,epoint *pa)
{
int r;
#ifdef MR_OS_THREADS
miracl *mr_mip=get_mip();
#endif
if (mr_mip->ERNUM) return MR_OVER;
MR_IN(104)
if (p==pa)
{
epoint_set(_MIPP_ NULL,NULL,0,pa);
MR_OUT
return MR_OVER;
}
if (p->marker==MR_EPOINT_INFINITY)
{
MR_OUT
return MR_ADD;
}
epoint_negate(_MIPP_ p); // 更新坐标
r=ecurve_add(_MIPP_ p,pa); // pa=pa+p
epoint_negate(_MIPP_ p);
MR_OUT
return r;
}
ecurve_add完成椭圆曲线上的两个点相加,pa=pa+p。
epoint_negate做两个数的减法运算,更新p的坐标。