Crypto ++中的椭圆曲线点加法和乘法

时间:2019-05-23 08:42:08

标签: c++ crypto++ elliptic-curve

如何使用Crypto ++库在椭圆曲线上使用点加法和乘法功能?

我尝试了以下代码,其中Basepointpoint是椭圆曲线上的点。

const ECP::Point& ECP::Add(&Basepoint, &point);

ECP::Point& result = ECP::Add(Basepoint, point);

const int result = ECP::Point ECP::Add(&Basepoint, &point);

结果为:

  

错误:E0245非静态成员引用必须相对于   特定对象

1 个答案:

答案 0 :(得分:1)

  

ECP :: Point&result = ECP :: Add(Basepoint,point);

您将ECP::Add称为ECP的静态成员,错误表明没有静态的 Add ,您需要将其应用于ECP实例

当我看着documentation时,我只会看到

  

const Point&Add(const Point&P,const Point&Q)const

这不是静态的

  

const ECP :: Point&ECP :: Add(&Basepoint,&point);

     

const int result = ECP :: Point ECP :: Add(&Basepoint,&point);

是无效的表格。

即使只有ECP::Add(&Basepoint, &point);也是错误的,因为操作不是静态的,并且参数是指向与操作参数不兼容的 Point 的指针。可能您必须看看C ++文档/教程中的引用是什么

有效代码可以是

ECP ecp;
Point basepoint;
Point point;

// set ecp, basepoint and point to be the ones you want

const Point & r1 = ecp.Add(basepoint, point); // do not copy the result
Point r2 = ecp.Add(basepoint, point); // copy result in non const to be able to modify it later etc